将逻辑卷从一个卷组移动到另一个卷组


18

是否可以将逻辑卷从一个卷组整体移到另一个卷组?

可以创建一个(或多或少)匹配的lv并复制数据,但是仅凭LVM工具有什么方法可以做到这一点吗?

如果不是,是否有理论原因或技术限制(范围大小)?

Answers:


13

卷组由整个物理卷组成。物理卷由许多扩展区组成(扩展区通常为4MB)。每个扩展区可能属于不同的逻辑卷。要将逻辑卷转移到另一个组,您不能简单地转移盘区,因为这可能会在源VG和目标VG之间拆分物理卷。

您可以执行以下命令,将一个或多个PV从源VG传输到目标VG vgsplit。您可以指定要转移的PV或LV(一次只能转移一个)。如果指定一个LV,则它和源VG中的其他LV必须位于单独的PV上。如果不存在具有指定名称的VG,将创建目标VG。

vgsplit -n source_group/volume_to_copy source_group target_group
vgsplit source_group target_group /dev/sdy99 /dev/sdz99

您可能需要先使用pvmove来安排要移动的逻辑卷在单独的PV上。

如果您打算保留VG的物理边界并移动数据,则没有内置工具,但是可以制作一个镜像然后将其移除


看起来target_group可以是预先存在的一个?
XTL 2012年

8

如在Debian的拉伸(9.0),即2.02.168-2的LVM的,有可能使用的组合,以做跨卷组的逻辑卷的副本vgmergelvconvertvgsplit。由于移动是复制和删除的组合,因此这也适用于移动。

或者,您可以使用pvmove来移动音量。

使用循环设备的完整自包含示例会话及其后 lvconvert

摘要:我们创建卷组vg1逻辑卷lv1,并vg2lv2,使副本lv1vg2

创建文件。

truncate pv1 --size 100MB
truncate pv2 --size 100MB

在文件上设置循环设备。

losetup /dev/loop1 pv1
losetup /dev/loop2 pv2

在循环设备上创建物理卷(初始化循环设备以供LVM使用)。

pvcreate /dev/loop1 /dev/loop2

分别在/ dev / loop1和/ dev / loop2上创建卷组vg1和vg2。

vgcreate vg1 /dev/loop1
vgcreate vg2 /dev/loop2

分别在vg1和vg2上创建逻辑卷lv1和lv2。

lvcreate -L 10M -n lv1 vg1
lvcreate -L 10M -n lv2 vg2

在lv1和lv2上创建ext4文件系统。

mkfs.ext4 -j /dev/vg1/lv1
mkfs.ext4 -j /dev/vg2/lv2

(可选)在lv1上写一些内容,以便以后可以检查副本是否已正确创建。使vg1不活动。

vgchange -a n vg1

在测试模式下运行merge命令。这会将vg1合并到vg2。

vgmerge -A y -l -t -v <<destination-vg>> <<source-vg>>
vgmerge -A y -l -t -v vg2 vg1

然后是真实的。

vgmerge -A y -l -v vg2 vg1

然后从创建RAID 1反射镜对lv1使用lvconvert。该 dest-pv参数告诉lvconvert您将镜像复制到/dev/loop2

lvconvert --type raid1 --mirrors 1 <<source-lv>> <<dest-pv>>
lvconvert --type raid1 --mirrors 1 /dev/vg2/lv1 /dev/loop2

然后分裂镜子。现在是新的LV lv1_copy

lvconvert --splitmirrors 1 --name <<source-lv-copy>> <<source-lv>>
lvconvert --splitmirrors 1 --name lv1_copy /dev/vg2/lv1

使其vg2/lv1不活动。

lvchange -a n /dev/vg2/lv1

然后(测试模式)

vgsplit -t -v <<source-vg>> <<destination-vg>> <<moved-to-pv>>
vgsplit -t -v /dev/vg2 /dev/vg1 /dev/loop1

真的

vgsplit -v /dev/vg2 /dev/vg1 /dev/loop1

结果输出:

lvs
[...]
lv1        vg1       -wi-a-----  12.00m
lv1_copy   vg2       -wi-a-----  12.00m
lv2        vg2       -wi-a-----  12.00m

笔记:

1)这些命令大多数将需要以root用户身份运行。

2)如果两个卷组中逻辑卷的名称重复,vgmerge将拒绝继续。

3)合并时,in中的逻辑卷vg1必须处于非活动状态。并且在拆分时,vg2属于的逻辑卷vg1必须处于非活动状态。在我们的情况下,这是lv1


2

我将提供自己的:

umount /somedir/

lvdisplay /dev/vgsource/lv0 --units b

lvcreate -L 12345b -n lv0 vgtarget

dd if=/dev/vgsource/lv0 of=/dev/vgtarget/lv0 bs=1024K conv=noerror,sync status=progress

mount /dev/vgtarget/lv0 /somedir/

如果一切都很好,请删除源

lvremove vgsource/lv0

这几乎与问题相反。重点是移动卷,而不是将数据复制到新卷。
XTL
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.