Answers:
卷组由整个物理卷组成。物理卷由许多扩展区组成(扩展区通常为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的物理边界并移动数据,则没有内置工具,但是可以制作一个镜像然后将其移除。
如在Debian的拉伸(9.0),即2.02.168-2的LVM的,有可能使用的组合,以做跨卷组的逻辑卷的副本vgmerge
,lvconvert
和vgsplit
。由于移动是复制和删除的组合,因此这也适用于移动。
或者,您可以使用pvmove
来移动音量。
使用循环设备的完整自包含示例会话及其后
lvconvert
。
摘要:我们创建卷组vg1
逻辑卷lv1
,并vg2
用lv2
,使副本lv1
在vg2
。
创建文件。
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
。
我将提供自己的:
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