一个磁盘由盘片和磁道组成,磁道有无数个扇区,一个扇区512b,注:硬盘最小单位就是扇区,并不是最小存储单位-block(4k)
分区的类型为3类:
主分区:从硬盘上直接划分出来的,可以直接格式化使用的分区
扩展分区:直接从硬盘上划分,但是不直接格式化使用,而是在上面创建多个小分区
逻辑分区:逻辑分区就是扩展分区创建的小分区
分区表,只记录 主分区+扩展分区,每记录一个分区消耗16b
主分区扩展分区<=4 且扩展分区<=1
如果想划分多个分区,至少你得留一定的空间作为扩展分区,在上面划分更多个逻辑分区
MBR–>兼容性好,但是不能用于>2T硬盘
GPT–>可以有128个主分区,兼容性差一些,但是可以用大大于2T的硬盘
决定使用MBR结构还是GPT结构,这个选择叫做“初始化磁盘标签”
fdisk–>mbr结构
gdisg–>gpt结构
parted–>兼而有之
如果输入fdisk -l命令没有找到新的磁盘,按下面步骤操作
1)进入到cd /sys/class/scsi_host/
2)echo “- - -” > host0/scan #接口扫描新加磁盘即可,如果输入命令还是没有找到则将host0改为host1、host2都试试
有2种分区方法,图形化和命令行(不建议用图形化分区)
图形化分区:点击菜单栏-工具-磁盘-点击新添加磁盘-设置中格式化
分区中-选择格式化为MBR格式还是GPT格式-选好后点击格式化即可;
格式化为gpt格式:parted 硬盘设备名(lsblk查看) mklabel 格式(gpt) , 会提示格式化后数据会丢失 输入yes即可:
格式化为mbr格式:parted 硬盘设备名(lsblk查看) mklabel msdos , 会提示格式化后数据会丢失 输入yes即可:
如果不要提示 加上参数-s 即可:
取消之前格式化的格式: parted -s 硬盘设备名 mklabel loop:
如果要格式化大于2T的文件,参考文档:https://blog.csdn.net/cuichongxin/article/details/101369217
fdisk -l :查看所有磁盘信息
fdisk -l 硬盘设备名 :查看单独的磁盘信息 如:fdisk -l /dev/sdb2
mbr结构(DOS)创建分区: fdisk 分区磁盘设备名, 输入m 获取帮助
d:删除一个分区
l(L):列出磁盘类型
m:显示当前菜单
n:新划一个分区
p:打印分区表
q:不保存退出
w:保存提出
t:转换类型
如果没有新化分区直接p打印分区表是空白的:
开始新化分区 n :
注:分区大小本身是以扇区来计算的,一个扇区0.5k,所以如果需要划分2G,就要慢慢推算扇区大小:2048(g大小)+2(g数量)*1024(M)*1024(k)2(扇区)-1(起始位),很麻烦,所以直接 +#G 即可:
我们划分区的时候,一般是默认起始扇区的(直接回车就是默认),所以建立多个之间并不会有空隙,如,第一块建了2G,第一块的结尾+1就是第二块的开始,但如果我们手动指定扇区了,就是并不是以第一块结尾+1为起始扇区,这里留了8个扇区(0.58=4k),这时候再建第三快分区的时候,如果是默认起始扇区,就是以第一次留下的扇区为起始扇区,在划分2个G,就会提示超出范围,因为这时候的扇区是第一块分区结束和第二块分区起始之间的空间,起始和结尾都直接回车(默认,如果结尾直接回车就是全部空间都给该分区),就会发现 实际只能分4K大小,所以,我们划分区手动指定扇区的时候,一定要注意起始扇区: (图中第一块扇区结尾有误:是4196351)
所以这时候就需要用p查看第二块的结尾扇区,然后+1 就是新的起始扇区。
假如我们有一个20G的硬盘,我们4块都划分为2G的主分区,那么剩下的12G就没法使用了:
所以我们需要把最后一块建成扩展分区 e (如果已经创建了4个主分区,d 删除第4个分区),并且全部空间都分给扩展分区(结束扇区直接回车即可),MBR总分区<=4,主分区<=4(就是可以全部分为主分区),扩展分区<=1:
从扩展分区中继续建的属于逻辑分区,逻辑分区是不询问的,直接从5开始累加:
分区根据用途还可以进行一些分类:有的是普通的linux分区→不管是逻辑分区还是主分区都可以直接格式化使用 , 但有的分区作为交换分区,有的分区用来配置lv(逻辑分区),有的分区用来配置raid,有的分区用来做扩展分分区, 输入 t 转换类型,L查看所有类型,如:现在把几个linux类型改为lv卷:
纪录好需要转换的类型id号后再次输入t,就可以直接输入id号修改为定义的格式了:
定义完以后输入 w 保存退出 , 保存后,输入 partprobe 分区设备名(刷新分区表):
全部完成以后输入 lsblk是看不出主分区或扩展分区等类型的,需要输入 fdisk -l 设备名 ,才能看到刚才定义的类型:
图形化界面也可以直观看出:
分区完成以后 需要格式化后才能正常使用:
输入mkds. 然后tab就可以查看所有支持的类型:(也可以mkds -t 类型,如mkds -t xfs …,但建议使用mkds.**)
定义成什么,直接mkfs.**即可,以xfs为例: mkfs.xfs -f /dev/sdb1 (-f 是强制转换,如果之前已经定义了一次,不输入-f就会报错):
不加f再次定义报错:
可以自定义block(默认是4k)mkfs.xfs -f -b size=大小 设备名 ,即可:
ext4定义block:mkfs.ext4 -b 大小 设备名 ,即可:
格式定义完以后磁盘分区就完成了。
完成以后需要挂载呀? 挂载有2种,一种是临时挂载 mount 设备名 挂载文件(挂载文件可以mkdir新建到任何设备名中),第二种是永久挂载,把信息写进 /etc/fstab中,永久挂载中有一栏需要知道 类型,类型查看有2种方法,第一种先临时挂载磁盘,然后df -Th 即可, 第二种 直接blkid ,后面有所有分区的类型:
如果/etc/fstab文件中类型错误会导致系统无法开机,如何识别是否正确写入,编辑完保存以后,mount -a 如果磁盘能自动挂载便成功(如果使用的是网络设备挂载,建议用uuid的方式,因为网络设备有可能会发生磁盘的窜位,导致磁盘无法正常使用):
查看uuid有2种方式,一种是blkid,查看所有分区的uid,另外一种是xfs_admin -u 设备名 :查看单独一个分区的uuid, 修改uuid : 先 uuidgen 生成一个随机id,然后xfs_admin -U 新uuid 设备名 即可:
分区已经创建好以后,查看文件系统的属性:xfs_info 挂载设备名 :
swa管理pswap–交换分区—虚拟内存 —不过已经被淘汰了
可以手动设置交换分区大小,交换分区就是当实际物理内存不够用了,会临时调用swap分区。
查看交换分区大小:swapon -s / cat /proc/swaps
也可以自定义某分为为swap分区,但需要提前划分类型为swap, fdisk -l 设备名称 查看:
mkswap 设备名:设置swap交换分区
swapon 设备名:刷新交换分区
swaoff 设备名:卸载分区
swapon -p 优先级数 设备名 :定义优先级并挂载(需要先卸载)
上述是临时挂载,永久挂载需要把信息写入到/etc/fstab中 保存后输入swapon -a 自动挂载:
注:swap属于特殊文件,mount -a 是不会自动挂载的,需要输入swapon -a 才会自动挂载
如果电脑中已经没有更多的分区可以划分为交换分区了:可以创建一个文件,使用该文件作为交换分区:如在根目录下创建一个自定义名称用于当做交换分区文件:
给刚才创建的文件赋予600权限:chmod 600 /swapfile
挂载并刷新即可:
不要使用普通的标准分区装系统,而是要使用lv的方式, 因为lv的空间是可变的(注:/boot分区是不能放在lv中的)。
物理磁盘是不能直接使用逻辑卷的,需要把物理磁盘转为pv,在创建卷组vg,最后才划为lv, 流程就是 pv→vg→lv。
/dev/sd*是硬盘
pv是物理卷
vg是卷组
pv是逻辑卷
创建之前需要把磁盘格式转换为lvm,fdisk -l 设备名查看
pvsan / pvs:查看系统中是否有pv
pvcreate 设备名 : 添加pv
pvremove 设备名 : 删除pv
vgsan / vgs:查看vg卷组
vgcreate 卷组名 设备名 :创建卷(vm)组
vgreduce 卷组名 设备名:剔除卷组vg
vgdisplay 卷名:查看卷组vg详细,不加卷名直接vgdisplay就是查看所有卷组
默认卷大小是4m,就是说存储必须是4的整数倍,如果存了5M 实际占用空间是8M。
默认卷是可以更改的,但只能在创建vg的时候定义,创建成功以后便不能更改,定义卷大小参数-s ,如 定义一个8m的卷大小:vgcreate -s 8 vg0 /dev/sdb9
后期增加vg大小:vgextend vg名 磁盘设备名
注意:新盘划分区的时候 需要t转换为lvm格式(8e) :fdisk 设备名
vg名查看:vgdisplay
fdisk 设备名: n-p(划分区)-t-8e(可以输入-L查看所有格式id号)-p(看是否为LVM了)-w:
这时候fdisk -l 就可以看到新磁盘了
增加vg大小:vgextend vg名 磁盘设备名 ,如这里的vg名(vgdisplay可以查看)是cl 新划分区名是:/dev/sda3 ,则:vgextend cl /dev/sda3 把容量划到vg中:
输入vgdisplay :就可以看到vg中新增后的总容量了
如果添加成功以后fdisk -l 可以看到盘,添加找不到新设备名 这是系统bug,重启即可,也可以等待几个小时等待系统后台数据库自动更新也可。
新增完以后就可以正常划分新的lv使用了:创建lv-格式化lv-挂载lv;
在这种系统不会自动更新磁盘信息的情况下:如果我们新建一个主分区 格式化 后可以直接使用,但挂载信息可能会和fdisk中创建的不符,
如果重启后,信息就会更新,但这时就会发现 该硬盘分区不能挂载了,提示不能读取超级快:
这种情况是因为 格式化硬盘时读取的值是之前112G的状态,重启以后该信息不见了,所以导致无法正常使用,需要重新格式化,但直接格式化会失败,所以需要加个-f,强制格式化:
当前系统是centos7,这些问题是系统bug的原因,后面7.6上并不会出现这种问题,感谢 西藏于总 耐心分析和无私分享几十年的经验 给我解决了所有的疑问。
lvscan / lvs:查看lv逻辑卷
lv创建格式:lvcreate -L 大小(M,G) -n lv名称 卷名(vgs查看) :就是在vg卷中提取指定大小空间创建为lv(大小需要为pe size (默认卷)的整数倍 如果不是,会自动增加到pesize的整数倍,如,4m的默认卷,创建了98M,会自动分配为100M):
lvcreate -l(L) 默认卷数量 -n 卷名 vg名:根据定义的默认卷数量自动分配空间,如默认卷是4m的情况下,分配25个默认卷,则是100M的空间:lvcreate -l 25 -n lv1 vg0:
lvcreate -l 数字%free -n lv名 卷名:根据百分比自动分配剩余空间,如分配剩余空间的30%:lvcreate -l 30%free -n lv2 vg0 :
删除lv:lvremove /dev/卷名/lv名(lvscan可以查看),提示中输入y确定删除即可(如果不要提示,加上参数-f即可:lvremove -f /dev// :
lv创建完成以后,就可以直接格式化后使用了:
mkfs.** lv设备名 ,mkfs.tab一下,就会出现很多很多格式,根据需要的格式选择就行:如,把lv0格式化为xfs并挂在到根目录的123文件中:mkfs.xfs /dev/vg0/lv0 , mkdir /123 , mount /dev/vo0/lv0 /123 :
lvextend -L +大小 lv设备名:在原有大小上扩容制定大小,如给lv0扩容100M:lvextend -L +100M /dev/vg0/lv0 :
虽然查看lv已经扩容成功的,但df -Th查看的时候 实际容量没有变化,因为还需要单独扩容文件:xfs格式是:xfs_growfs 文件名
扩容文件 ext4格式为:resize2fs 设备名:
总结一下:就是扩容需要扩容2个地方,第一个是lv(lvextend -L +大小 lv设备名),第二个是文件(sfs: sfs_growfs 文件名,exte:resize2fs lv设备全名)注:扩展lv的时候,是可以在线扩展的(就是不需要卸载的情况)
注:xfs文件系统是不支持fs的缩小的!!!!!!
lv容量的减少必须按照以下4个步骤来做:
要先卸载磁盘: umount
磁盘完整性检查:fsck -f 设备名,如:fsck -f /dev/vg0/lv0
缩小文件容量(ext4格式): resize2fs 设备名 大小(最终大小,而不是减掉的大小) ,如:resize2fs /dev/vg0/lv0 80M
把多余的lv给缩小
先在之前挂载的lv中创建一个50M大小的文件:dd if=/dev/zero of=/aa/file bs=1M count=50
快照语法:lvcreate -n 自定义名字 -L 大小(后面总共可用大小) -s /dev/卷组/lv名(需要备份的名称)
创建好快照以后,务必不要对快照格式化。 而且 创建好的快照是可以直接使用的,就是直接挂载到某一个文件中,访问到的内容和被做快照lv中内容是一模一样的:
快照虽然创建好了,但如果我们查看lv容量和挂载容量的时候,发现不一样,其实这是正常的,虽然容量不一样但并不影响通过快照挂载的文件访问被快照里面的内容,相当于快照中这个只是一个链接,访问快照中文件的时候,实际是映射到快照前文件的内容,所以大小虽然不一样,但访问的内容是一样的。删除快照中以前的内容之后,在从新创建相同文件名也不能看到以前文件的内容了(删除快照中内容并不会影响被快照中的文件),快照中后面创建的内容(新增的,改变的数据)是存放在快照内存中的(可用容量是创建快照的时候定义的),与被快照的内容也没有关系。
如果快照里面的内容被误删了,是可以通过原数据从新备份的,这种情况可以直接写进脚本中,跑下脚步即可完成自动重新做一份快照数据:
脚本内容 vi /aa.sh :
lvconvert --merge 快照名称 :恢复该快照中的内容,但恢复后该快照会消失,如果还需要改快照,就需要重新就一次快照。 一般用于数据库 比如星期一到星期五每天做一次快照,如果不小心把星期三的数据删除了,那么恢复星期三保存的快照,该天的数据即可恢复。