如何在连续的物理范围上对齐逻辑卷?

use*_*812 7 linux lvm

我最初在一个卷组中创建了 2 个逻辑卷。2 个逻辑卷占据整个卷组并位于连续的物理盘区上。

但是,在我缩小第一个逻辑卷 (LV_root) 后,它变得更小,并且在 2 个逻辑卷之间出现空的物理区。这是“pvdisplay”命令的输出:

$ sudo pvdisplay --maps

  --- Physical volume ---
  PV Name               /dev/sda5
  VG Name               VG_i5_2500
  PV Size               99.65 GiB / not usable 2.00 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              25510
  Free PE               3025
  Allocated PE          22485
  PV UUID               3nRvBS-qq10-8XZZ-n3x9-gfHx-hrxN-AouB3q

  --- Physical Segments ---
  Physical extent 0 to 18431:
    Logical volume  /dev/VG_i5_2500/LV_root
    Logical extents 0 to 18431
  Physical extent 18432 to 21456:
    FREE
  Physical extent 21457 to 25509:
    Logical volume  /dev/VG_i5_2500/LV_swap
    Logical extents 0 to 4052
Run Code Online (Sandbox Code Playgroud)

我想知道有没有办法将 LV_swap 移向 LV_root,这样它们之间就没有空的物理盘区(即一般来说,如何在同一卷组中移动逻辑卷以便为连续的空闲物理盘区腾出更多空间) .) ?

此外,在卷组中创建新的逻辑卷时是否需要连续可用的物理盘区?

小智 12

根据pvmove手册页,可以在同一设备上移动范围:

If the source and destination are on the same disk, the anywhere allocation policy would be needed, like this:

pvmove --alloc anywhere /dev/sdb1:1000-1999 /dev/sdb1:0-999
Run Code Online (Sandbox Code Playgroud)

也许禁止重叠区域,但您可以分两步移动音量:

pvmove --alloc anywhere /dev/sda5:21457-24481 /dev/sda:18432-21456
pvmove --alloc anywhere /dev/sda5:24482-25509 /dev/sda:21457-22484
Run Code Online (Sandbox Code Playgroud)


Pau*_*aul 1

标准 LVM 中没有lvmove命令(尽管 HP 在自定义版本中可能有一个命令)。

执行此操作的方法是将卷的内容移到其他位置,然后将其删除并重新创建,然后复制回来。

由于您的卷是交换的,因此不需要移动内容。您可以swapoff删除该卷,然后创建新的交换卷swapon

然而,LVM 的目标可以说不必为这些烦恼。创建卷不需要连续的物理范围,它只需插入到间隙中即可。您遭受性能损失的主要时间是如果您有一个跨越非连续范围的文件,因此在读取时需要额外的查找。