假设我创建了以下 Linux LVM 卷组和逻辑卷:
$ sudo vgcreate vg1 /dev/sdb1
$ sudo lvcreate -L 10G -n lv1 vg1
$ sudo lvcreate -L 10G -n lv2 vg1
$ sudo lvcreate -L 10G -n lv3 vg1
$ sudo mkfs.ext4 /dev/mapper/vg1-lv1
$ sudo mkfs.ext4 /dev/mapper/vg1-lv2
$ sudo mkfs.ext4 /dev/mapper/vg1-lv3
我最终得到以下内容,它们都将使用 ext4 文件系统:
$ sudo lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv1 vg1 -wi-a----- 10.00g
lv2 vg1 -wi-a----- 10.00g
lv3 vg1 -wi-a----- 10.00g
我想将lv1 大小从 10G减少到 5G,并将lv2大小从 10G 增加到 15G。这意味着 lv2 需要向磁盘的前端增长。
$ sudo lvreduce --resizefs --size 5G /dev/mapper/vg1-lv1
fsck from util-linux 2.36.1
/dev/mapper/vg1-lv1: clean, 11/655360 files, 66753/2621440 blocks
resize2fs 1.46.3 (27-Jul-2021)
Resizing the filesystem on /dev/mapper/vg1-lv1 to 1310720 (4k) blocks.
The filesystem on /dev/mapper/vg1-lv1 is now 1310720 (4k) blocks long.
Size of logical volume vg1/lv1 changed from 10.00 GiB (2560 extents) to 5.00 GiB (1280 extents).
Logical volume vg1/lv1 successfully resized.
降低 lv1 似乎奏效了。我现在如何成长lv2?
是的,有可能。lvm 的一个要点是它将磁盘从分区中抽象出来,因此即使您在磁盘末尾(或者在这种情况下在下一个分区开始之前)释放块,lvm 也允许您将其添加到现有的分区,因为它在内部映射块。唯一棘手的一点是缩小 lv1,因为它已经在 iit 上有一个文件系统,而 ext4 文件系统不能在线缩小。
我认为所有块设备操作都存在一定程度的风险,并建议在尝试之前进行备份作为最佳实践。
没有歌曲正确的解决方案,而且我不在我的电脑上,所以我无法测试我的 dyntax,但我会做的方式是 -
卸载 lvm1 / 使其进入卸载状态(如果它是根分区,您可能需要使用 USB 磁盘)
将其上的文件系统缩小,然后最终应缩小(您可以使用 resize2fs/resize4fs 来缩小未安装的卷)
使用 lvreduce yo 将 lvm1 缩小到所需的大小。Tjis 不能小于调整大小的 ext4 分区。
Resize4fs (resize2fs) 扩展lvm1上的文件系统。
(严格来说,如果你的数学是正确的,你不需要将体积调整得更小然后扩展它,但我发现使用 512/1024/2048 字节块更容易)。至此,困难的部分完成了。