Linux中对lvm逻辑卷分区大小的调整教程(针对xfs与ext4不同文件系统)
前言
当我们在安装系统的时候,由于没有合理分配分区空间,在后续维护过程中,发现有些分区空间不够使用,而有的分区空间却有很多剩余空间。如果这些分区在装系统的时候使用了lvm(前提是这些分区要是lvm逻辑卷分区),那么就可以轻松进行扩容或缩容!不同文件系统类型所对应的创建、检查、调整命令不同,下面就针对xfs和ext2/3/4文件系统的lvm分区空间的扩容和缩容的操作做一记录:
------------------------------------------------------------------------------------------
特别注意的是:
- resize2fs命令 针对的是ext2、ext3、ext4文件系统
- xfs_growfs命令 针对的是xfs文件系统
------------------------------------------------------------------------------------------
1)ext2/ext3/ext4文件系统的调整命令是resize2fs(增大和减小都支持)
lvextend-L120G/dev/mapper/centos-home//增大至120G lvextend-L+20G/dev/mapper/centos-home//增加20G lvreduce-L50G/dev/mapper/centos-home//减小至50G lvreduce-L-8G/dev/mapper/centos-home//减小8G resize2fs/dev/mapper/centos-home//执行调整
2)xfs文件系统的调整命令是xfs_growfs(只支持增大)
lvextend-L120G/dev/mapper/centos-home//增大至120G lvextend-L+20G/dev/mapper/centos-home//增加20G xfs_growfs/dev/mapper/centos-home//执行调整
就是说:xfs文件系统只支持增大分区空间的情况,不支持减小的情况(切记!!!!!)。
硬要减小的话,只能在减小后将逻辑分区重新通过mkfs.xfs命令重新格式化才能挂载上,这样的话这个逻辑分区上原来的数据就丢失了。如果有重要文件,那就歇菜喽~~~
实例1(当系统上还有空闲空间的时候)
1)查看分区空间。如下可知是xfs文件系统(df的-T参数就能看出文件格式)。
[root@localhost~]#df-hT 文件系统类型容量已用可用已用%挂载点 /dev/mapper/centos-rootxfs200G2.2G198G2%/ devtmpfsdevtmpfs32G032G0%/dev tmpfstmpfs32G032G0%/dev/shm tmpfstmpfs32G49M32G1%/run tmpfstmpfs32G032G0%/sys/fs/cgroup /dev/sda1xfs197M139M59M71%/boot tmpfstmpfs6.3G06.3G0%/run/user/0 /dev/mapper/centos-homexfs628G33M718G1%/home
2)使用vgdisplay命令查看系统上的空闲空间
root@localhost~]#vgdisplay ---Volumegroup--- VGNamecentos SystemID Formatlvm2 MetadataAreas1 MetadataSequenceNo6 VGAccessread/write VGStatusresizable MAXLV0 CurLV3 OpenLV3 MaxPV0 CurPV1 ActPV1 VGSize930.80GiB PESize4.00MiB TotalPE238285 AllocPE/Size212736/831.00GiB FreePE/Size25549/99.80GiB//这一项表示目前该系统上还存在99.80G的空闲空间(25549) VGUUIDa5hiAh-LB8M-9lRv-Ps1a-z35L-J4fk-sP3KrF
3)将上面查到的空闲空间中的90G增减到/home分区上
[root@localhost~]#lvextend-L+90G/dev/mapper/centos-home//或者使用-l参数(跟PE数量),即lvextend-l+25500/dev/mapper/centos-home Sizeoflogicalvolumecentos/homechangedfrom628.00GiB(160768extents)to718.00GiB(183808extents). Logicalvolumecentos/homesuccessfullyresized. [root@localhost~]#xfs_growfs/dev/mapper/centos-home meta-data=/dev/mapper/centos-homeisize=512agcount=4,agsize=41156608blks =sectsz=512attr=2,projid32bit=1 =crc=1finobt=0spinodes=0 data=bsize=4096blocks=164626432,imaxpct=25 =sunit=0swidth=0blks naming=version2bsize=4096ascii-ci=0ftype=1 log=internalbsize=4096blocks=80384,version=2 =sectsz=512sunit=0blks,lazy-count=1 realtime=noneextsz=4096blocks=0,rtextents=0 datablockschangedfrom164626432to188219392
4)再次看着系统分区,发现home分区已经增加了90G(这种方式增加后,home分区之前的数据还不会丢失)
[root@localhost~]#df-h 文件系统容量已用可用已用%挂载点 /dev/mapper/centos-root200G2.2G198G2%/ devtmpfs32G032G0%/dev tmpfs32G032G0%/dev/shm tmpfs32G49M32G1%/run tmpfs32G032G0%/sys/fs/cgroup /dev/sda1197M139M59M71%/boot tmpfs6.3G06.3G0%/run/user/0 /dev/mapper/centos-home718G33M718G1%/home
虽然xfs文件系统只支持增加,不支持减少。但并不是说在xfs系统文件下不能减小,只是减小后,需要重新格式化才能挂载上。这样原来的数据就丢失了!
实例2:这种情况只适用于系统刚安装好,逻辑分区内没有什么数据或数据不多且不重要可以删除或拷贝的情况下
系统安装好后,发现home分区过大,想从home分区中拿出100G给/分区
[root@localhost~]#df-hT 文件系统类型容量已用可用已用%挂载点 /dev/mapper/centos-rootxfs205G2.2G203G2%/ devtmpfsdevtmpfs32G032G0%/dev tmpfstmpfs32G032G0%/dev/shm tmpfstmpfs32G49M32G1%/run tmpfstmpfs32G032G0%/sys/fs/cgroup /dev/sda1xfs197M139M59M71%/boot tmpfstmpfs6.3G06.3G0%/run/user/0 /dev/mapper/centos-homexfs718G33M718G1%/home [root@localhost~]#umount/home/ [root@localhost~]#lvreduce-L-100G/dev/mapper/centos-home WARNING:Reducingactivelogicalvolumeto618.00GiB. THISMAYDESTROYYOURDATA(filesystemetc.) Doyoureallywanttoreducecentos/home?[y/n]:y Sizeoflogicalvolumecentos/homechangedfrom718.00GiB(183808extents)to618.00GiB(158208extents). Logicalvolumecentos/homesuccessfullyresized.
如下,很显然xfs文件系统不能执行分区减小的调整!
[root@localhost~]#xfs_growfs/dev/mapper/centos-home xfs_growfs:/dev/mapper/centos-homeisnotamountedXFSfilesystem [root@localhost~]#mount/dev/mapper/centos-home/home/ mount:/dev/mapper/centos-home:不能读超级块
这样,只能通过重新格式化这个分区,格式化后才能再次挂载到home下
[root@localhost~]#mkfs.xfs/dev/mapper/centos-home-f meta-data=/dev/mapper/centos-homeisize=512agcount=4,agsize=41156608blks =sectsz=512attr=2,projid32bit=1 =crc=1finobt=0,sparse=0 data=bsize=4096blocks=164626432,imaxpct=25 =sunit=0swidth=0blks naming=version2bsize=4096ascii-ci=0ftype=1 log=internallogbsize=4096blocks=80384,version=2 =sectsz=512sunit=0blks,lazy-count=1 realtime=noneextsz=4096blocks=0,rtextents=0 [root@localhost~]#mount/dev/mapper/centos-home/home/
再次查看分区,发现home分区已经减小了100G,只不过这个分区里之前的数据都没有了。
[root@localhost~]#df-hT 文件系统类型容量已用可用已用%挂载点 /dev/mapper/centos-rootxfs205G2.2G203G2%/ devtmpfsdevtmpfs32G032G0%/dev tmpfstmpfs32G032G0%/dev/shm tmpfstmpfs32G49M32G1%/run tmpfstmpfs32G032G0%/sys/fs/cgroup /dev/sda1xfs197M139M59M71%/boot tmpfstmpfs6.3G06.3G0%/run/user/0 /dev/mapper/centos-homexfs618G73M578G1%/home
---------------------------------------------------------------------------
上面在重新格式的时候,也可以将这个格式化为ext4格式。
[root@localhost~]#mkfs.ext4/dev/mapper/centos-home [root@localhost~]#cat/etc/fstab//将home分区的开机挂载设置里的xfs改为ext4
---------------------------------------------------------------------------
然后将上面从home分区拿出的100G放到/分区下
[root@localhost~]#vgdisplay ---Volumegroup--- VGNamecentos SystemID Formatlvm2 MetadataAreas1 MetadataSequenceNo9 VGAccessread/write VGStatusresizable MAXLV0 CurLV3 OpenLV3 MaxPV0 CurPV1 ActPV1 VGSize930.80GiB PESize4.00MiB TotalPE238285 AllocPE/Size211456/826.00GiB FreePE/Size26829/104.80GiB VGUUIDa5hiAh-LB8M-9lRv-Ps1a-z35L-J4fk-sP3KrF [root@localhost~]#lvextend-L+100G/dev/mapper/centos-root Sizeoflogicalvolumecentos/rootchangedfrom205.00GiB(52480extents)to305.00GiB(78080extents). Logicalvolumecentos/rootsuccessfullyresized. [root@localhost~]#xfs_growfs/dev/mapper/centos-root meta-data=/dev/mapper/centos-rootisize=256agcount=5,agsize=13107200blks =sectsz=512attr=2,projid32bit=1 =crc=0finobt=0spinodes=0 data=bsize=4096blocks=53739520,imaxpct=25 =sunit=0swidth=0blks naming=version2bsize=4096ascii-ci=0ftype=0 log=internalbsize=4096blocks=25600,version=2 =sectsz=512sunit=0blks,lazy-count=1 realtime=noneextsz=4096blocks=0,rtextents=0 datablockschangedfrom53739520to79953920 [root@localhost~]#df-hT 文件系统类型容量已用可用已用%挂载点 /dev/mapper/centos-rootxfs305G2.2G203G2%/ devtmpfsdevtmpfs32G032G0%/dev tmpfstmpfs32G032G0%/dev/shm tmpfstmpfs32G49M32G1%/run tmpfstmpfs32G032G0%/sys/fs/cgroup /dev/sda1xfs197M139M59M71%/boot tmpfstmpfs6.3G06.3G0%/run/user/0 /dev/mapper/centos-homexfs618G73M578G1%/hom
----------------------------------------温馨提示--------------------------------------------
若是减小分区空间,减小前必须要先卸载这个分区。如果卸载有问题,解决如下:
[root@localhost~]#umount/home/ umount:/home:deviceisbusy. (Insomecasesusefulinfoaboutprocessesthatuse thedeviceisfoundbylsof(8)orfuser(1))
提示无法卸载,则是有进程占用/home,使用如下命令来终止占用进程:
[root@localhost~]#fuser-m-k/home /home:14091519ce1531e1532e1533e1534e1535e1536e1537e1538e1539e1541e1543e1544e1545e1546e1547e1548e1549e1550e1601m
再次卸载home分区就成功了。
[root@localhost~]#umount/home/
-k表示自动把霸占home分区的进程kill掉!
如果你不是很明确是否要杀死所有霸占设备的程序,还可以加一个-i参数,这样每杀死一个程序前,都会询问!(即fuser-m-v-i-k/home)
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对毛票票的支持。