如何扩展中间的文件系统?(LVM)

如何扩展中间的文件系统?(LVM)

我知道你可以在文件系统的末尾添加空间,但是中间呢?例如,如果 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

第一个命令:将范围从 重新附加sdc1sdb1,从而使所有内容连续:

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 提供的所有抽象功能。它允许您任意重新排列逻辑卷所在的物理空间。

相关内容