我知道你可以在文件系统的末尾添加空间,但是中间呢?例如,如果 FS 位于跨多个驱动器的逻辑卷上。
[logical-volume]
| | |
[sda][sdb][sdc]
就像 sdb 驱动器上以前未使用的空间变得可用一样?
PS 我猜如果可能的话,这将由 LVM 本身而不是文件系统来处理。
答案1
找到了。
简短版本:使用pvmove
。详细版本:
如果可能返回的情况lvdisplay --maps
如下:
--- Logical volume ---
LV Path /dev/main/data
Current LE 300
Segments 3
(redacted)
--- Segments ---
Logical extent 0 to 99:
Physical volume /dev/sda1
Physical extents 0 to 99
Logical extent 100 to 199:
Physical volume /dev/sdb1
Physical extents 0 to 99
Logical extent 200 to 299:
Physical volume /dev/sdc1
Physical extents 0 to 99
然后,如您所见,逻辑卷分布在 3 个磁盘上,每个磁盘上占用 100 个区段。“区段”是 LVM 的扇区版本;它们是 LVM 通常关注的最小单位。
但如果我们看看下面的物理体积:
pvdisplay
--- Physical volume ---
PV Name /dev/sda1
Total PE 100
Free PE 0
Allocated PE 100
--- Physical volume ---
PV Name /dev/sdb1
Total PE 300
Free PE 200
Allocated PE 100
--- Physical volume ---
PV Name /dev/sdc1
Total PE 100
Free PE 0
Allocated PE 100
...我们可以看到第二个磁盘的分区(/dev/sdb1
)有相当多的额外空间。
现在,我们可以直接将其添加到逻辑卷中,虽然这可能在大多数情况下就足够了,但它会使卷处于不必要的碎片状态。逻辑卷的末尾将位于中间磁盘上。这就是命令的作用所在pvmove
。
pvmove
允许我们任意重新排列逻辑卷的配置,而其中的文件系统并不知道这一点。
警告:pvmove
可能导致数据丢失。最好在继续操作之前备份文件系统。
继续操作之前请确保逻辑卷已被卸载。
基本语法:pvmove SourcePhysicalVolume:PE-PE DestinationPhysicalVolume:PE-PE
第一个命令:将范围从 重新附加sdc1
到sdb1
,从而使所有内容连续:
pvmove /dev/sdc1:0-99 /dev/sdb1:100-199
之后lvdisplay --maps
给出:
--- Logical volume ---
LV Path /dev/main/data
Current LE 300
Segments 2
(redacted)
--- Segments ---
Logical extent 0 to 99:
Physical volume /dev/sda1
Physical extents 0 to 99
Logical extent 100 to 299:
Physical volume /dev/sdb1
Physical extents 0 to 199
/dev/sdb1
现在,只需通过剩余空间和现在完全空的来扩展逻辑卷即可/dev/sdc1
。这要简单得多。下一个命令告诉 lvm 将我们的逻辑卷扩展到这些分区上所有剩余的可用范围。
lvextend -l +100%free /dev/main/data /dev/sdb1 /dev/sdc1
之后逻辑卷将会像这样:
--- Logical volume ---
LV Path /dev/main/data
Current LE 500
Segments 2
(redacted)
--- Segments ---
Logical extent 0 to 99:
Physical volume /dev/sda1
Physical extents 0 to 99
Logical extent 100 to 399:
Physical volume /dev/sdb1
Physical extents 0 to 299
Logical extent 400 to 499:
Physical volume /dev/sdc1
Physical extents 0 to 99
它很漂亮,而且尽可能的无缝。
现在我们可以将文件系统扩展到新的空间。
resize2fs /dev/main/data
结论:该pvmove
命令非常强大,允许人们利用 lvm 提供的所有抽象功能。它允许您任意重新排列逻辑卷所在的物理空间。