我最初在卷组中创建了 2 个逻辑卷。这两个逻辑卷占据整个卷组,并位于连续的物理范围上。
但是,在我缩小第一个逻辑卷 (LV_root) 后,它变得更小,并且两个逻辑卷之间出现了空的物理范围。以下是“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
我想知道是否有办法将 LV_swap 移向 LV_root 以便它们之间没有空的物理范围(即通常如何移动同一个卷组内的逻辑卷以便为连续的空闲物理范围腾出更多空间)?
此外,在卷组中创建新的逻辑卷时,是否需要连续的空闲物理范围?
答案1
标准 LVM 中没有lvmove
命令(尽管 HP 在定制版本中可能有一个)。
执行此操作的方法是将卷的内容移到其他地方,然后删除并重新创建,然后复制回来。
由于您的卷是交换卷,因此无需移动内容。您可以swapoff
删除该卷,然后创建新的交换卷并swapon
。
但是,可以说 LVM 的目标就是不必考虑这些。创建卷不需要连续的物理范围,只需将其插入间隙即可。主要的性能损失是如果您有一个文件跨越非连续范围,因此在读取时需要额外的寻道。
答案2
根据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
也许重叠区域是被禁止的,但你可以分两步移动你的卷:
pvmove --alloc anywhere /dev/sda5:21457-24481 /dev/sda:18432-21456
pvmove --alloc anywhere /dev/sda5:24482-25509 /dev/sda:21457-22484