CentOS 7 调整XFS格式的LVM大小
记录一次对LVM虚拟化的XFS磁盘格式的调整过程
先介绍一下Linux的LVM以及相应的背景。
LVM(Logical Volume Manager),把机器的一块硬盘分为两个区sda1和sda2,其中分区sda1作为系统盘/boot挂载,少量空间;sda2作为一个物理卷并且完全作为逻辑卷组VG(Volume Group)centos,在这个逻辑卷组centos中建立三个逻辑卷LV(Logical Volume)root和home还有swap,分别挂载到根目录
/
和/home
以及swap。而两个分区sda1和sda2上都建立了文件系统XFS,文件系统XFS作为RedHat的默认文件系统也有它的考虑,成为继ext3,ext4之后的主流文件系统。
几个概念的关系:N个物理硬盘HD或者物理硬盘中的分区一起组建为一个逻辑卷组VG及存储池,在卷组VG中创建N个逻辑卷LV,在一个逻辑卷LV中创建文件系统比如xfs。物理硬盘/分区、逻辑卷有最小基本寻址单元,CentOS7默认的大小为4MB,二者一一对应,类似于链接或者变量引用,但是一个二者关系并非一直不变,因为物理硬盘可能发生变化而逻辑卷自动调整。创建卷组和逻辑卷,会类似于创建分区一样在磁盘开始位置写入卷的信息VGDA(卷组描述符区域,Volume Group Descriptor Area)用于识别。逻辑卷的好处在于屏蔽物理底层支撑,可自由扩展变更,而不用担心硬盘或者分区的物理空间局限,也就不会存在为了扩展分区大小而去备份/扩展分区重新格式化硬盘等问题。
Cent0S 7默认启用LVM(Logical Volume Manager)支持,可以更加简便地扩大和缩小分区,在CentOS 7默认安装的过程中,其根目录/
只会分配50GB的空间,在大多数的使用场景中这个空间还算可以,但免不了需要对其扩容的情况(虽然你可以扔在/home
下面2333333333)。同时XFS是centos7默认的文件系统,不像其他文件系统ext3,ext4或者reiserfs等,有命令(resize2fs,resize_reiserfs)直接支持缩小文件系统的大小,XFS支持扩展增大但是不支持缩小空间,所以在必须缩小LVM的情况下,需要利用xfsdump/xfsrestore等工具,备份与还原资料,实现对根目录/
的扩容。
备份原来的/home
如果你没啥资料的话也可以跳过,因为重建/home
会清除/home
下所有文件,还是建议备份一下
安装xfsdump
1 | yum -y install xfsdump |
将文件备份到/
目录下(或者你希望的其他地方)
1 | xfsdump -f /home.xfsdump /home |
缩小原有的/home分区
先移除/home
分区的挂载
1 | umount /home |
如果提示被占用的话,可以使用 -l
参数强制移除
1 | umount -l /home |
缩减原有/home
分区,分出500G空闲空间
1 | lvreduce -L -500G /dev/mapper/centos-home |
拓展/根目录
将剩余的空闲空间都分配给根目录
1 | lvextend -l +100%FREE /dev/centos/root |
恢复/home的内容
格式化/home
分区
1 | mkfs.xfs -f /dev/mapper/centos-home |
重新挂载/home
分区
1 | mount /home |
恢复备份过的文件
1 | xfsrestore -f /home.xfsdump /home |