如何在Linux上使用LVM扩展根文件系统
欢迎我们对如何在Linux上使用LVM扩展根文件系统的教程。
这将介绍ext4和XFS文件系统根分区扩展。
要演示完整的LVM生命周期,我们将执行以下操作:创建LVM物理卷,卷组和逻辑卷。
创建逻辑VolumEstEnd LVM逻辑卷(root和非根文件系统)上的XFS和Ext4文件系统
LVM允许我们在运行系统上创建,调整大小或者删除分区,而无需任何重新启动。
因此,请检查以下步骤以在Linux中使用LVM扩展根文件系统。
我们可以跳过一些不适用于使用的步骤。
如果我们未使用LVM,请查看下面的教程。
如何在没有LVM的情况下调整ext2/3/4和xfs根分区的大小
第1步:在分发中确认磁盘分区。
在我们可以执行任何扩展之前,让我们确认磁盘布局/分区方案。
$lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sr0 11:0 1 1024M 0 rom vda 252:0 0 30G 0 disk ├─vda1 252:1 0 1G 0 part /boot └─vda2 252:2 0 29G 0 part ├─rhel-root 253:0 0 26.9G 0 lvm / └─rhel-swap 253:1 0 2.1G 0 lvm [SWAP]
如上所述,我们在/dev/vda2物理卷上有一个根文件系统。
$sudo pvs PV VG Fmt Attr PSize PFree /dev/vda2 rhel lvm2 a-- <29.00g 0
第2步:扩展OS根磁盘
如步骤1所示,我的根文件系统位于30GB磁盘上。
通过扩展虚拟磁盘(VM磁盘设备),我将升至40GB。
我使用KVM虚拟化技术,因此本教程适用于我:如何扩展/增加KVM虚拟机(VM)磁盘大小
$lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sr0 11:0 1 1024M 0 rom vda 252:0 0 40G 0 disk ├─vda1 252:1 0 1G 0 part /boot └─vda2 252:2 0 29G 0 part ├─rhel-root 253:0 0 26.9G 0 lvm / └─rhel-swap 253:1 0 2.1G 0 lvm [SWAP]
如果我们在另一个虚拟化平台上,请参阅其文档,了解如何扩展OS磁盘。
一旦调整了OS块设备,SSH向Linux机器并扩展LVM以使用新添加的磁盘容量。
下面的命令将展开最后一个分区(分区2),如252:2所示,在磁盘(/dev/vda)上显示到磁盘提供的最大大小。
安装云实用程序
对于那些新的Growpart,它是一个Linux命令行工具,用于扩展分区表中的分区以填充可用空间。
此命令由Cloud Utils包提供。
在Ubuntu/Debian系统上,运行
sudo apt -y install cloud-guest-utils
对于CentOS服务器,运行
sudo yum -y install cloud-utils-growpart
通过通过帮助页面 -h
争论
# growpart -h growpart disk partition rewrite partition table so that partition takes up all the space it can options: -h | --help print Usage and exit --fudge F if part could be resized, but change would be less than 'F' bytes, do not resize (default: 1048576) -N | --dry-run only report what would be done, show new 'sfdisk -d' -v | --verbose increase verbosity/debug -u | --update R update the the kernel partition table info after growing this requires kernel support and 'partx --update' R is one of: - 'auto' : [default] update partition if possible - 'force' : try despite sanity checks (fail on failure) - 'off' : do not attempt - 'on' : fail if sanity checks indicate no support Example: - growpart /dev/sda 1 Resize partition 1 on /dev/sd
现在使用Growpart扩展分区。
$sudo growpart /dev/vda 2 CHANGED: partition=2 start=2099200 old: size=18872320 end=20971520 new: size=60815327,end=62914527
这将在/dev/vda上调整分区2的大小。
验证更改。
$lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sr0 11:0 1 1024M 0 rom vda 252:0 0 40G 0 disk ├─vda1 252:1 0 1G 0 part /boot └─vda2 252:2 0 39G 0 part ├─rhel-root 253:0 0 26.9G 0 lvm / └─rhel-swap 253:1 0 2.1G 0 lvm [SWAP]
第3步:调整根逻辑卷大小以占据所有空间
调整物理量大小。
$sudo pvresize /dev/vda2 Physical volume "/dev/vda2" changed 1 physical volume(s) resized or updated/0 physical volume(s) not resized $sudo pvs PV VG Fmt Attr PSize PFree /dev/vda2 rhel lvm2 a-- <39.00g 10.00g
检查已配置的卷组大小。
$sudo vgs VG #PV #LV #SN Attr VSize VFree rhel 1 2 0 wz--n- <39.00g 10.00g
然后使用调整大小的卷组调整root逻辑卷大小
sudo lvextend -l +100%FREE /dev/name-of-volume-group/root
在我的例子中,这将是:
$df -hT | grep mapper /dev/mapper/rhel-root xfs 27G 1.9G 26G 8% / $sudo lvextend -l +100%FREE /dev/mapper/rhel-root Size of logical volume rhel/root changed from <26.93 GiB (6893 extents) to <36.93 GiB (9453 extents). Logical volume rhel/root successfully resized.
我们可以用MB中的首选空间替换100%的免费命令,例如,添加256 MB用+ 256M替换它。
第4步:更新文件系统上的更改
根文件系统仍将显示旧尺寸。
$df -hT | grep mapper /dev/mapper/rhel-root xfs 27G 1.9G 26G 8% /
让我们让文件系统报告实际大小,包括扩展。
对于ext4文件系统
sudo resize2fs /dev/name-of-volume-group/root
对于XFS文件系统
$sudo xfs_growfs / meta-data=/dev/mapper/rhel-root isize=512 agcount=4, agsize=1764608 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=1, sparse=1, rmapbt=0 = reflink=1 data = bsize=4096 blocks=7058432, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0, ftype=1 log =internal log bsize=4096 blocks=3446, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 data blocks changed from 7058432 to 9679872