我有一个条形逻辑卷,当前分为两个物理驱动器( /dev/sda1和/dev/sdb1 )。 我现在想把这个卷镜像到已经添加到卷组中的第三个设备( /dev/sdc1 )上。 我发现的许多参考文献(例如, 是否有可能将带状逻辑卷转换成线性逻辑卷? )表明这可以通过以下命令来实现:
lvconvert -m 1 /dev/volgroup/volume /dev/sdc1
但是对于我来说,这会导致以下错误:
'--mirrors/-m' is not compatible with striped
为什么这不适合我?
LVM version: 2.02.133(2) (2015-10-30) Library version: 1.02.110 (2015-10-30) Driver version: 4.34.0
像这样尝试
lvconvert -m1 /dev/volgroup/volume
以下是我testing的命令日志。 我做了回环设备
创build3个回送设备
dd if=/dev/zero of=disk1 bs=1M count=100 dd if=/dev/zero of=disk2 bs=1M count=100 dd if=/dev/zero of=disk3 bs=1M count=200 [root@localhost ~]# losetup -f /root/disk1 [root@localhost ~]# losetup -f /root/disk2 [root@localhost ~]# losetup -f /root/disk3 [root@localhost ~]# losetup -a /dev/loop0: [64768]:17900481 (/root/disk1) /dev/loop1: [64768]:17900482 (/root/disk2) /dev/loop2: [64768]:17900483 (/root/disk3)
创buildPV
[root@localhost ~]# pvcreate /dev/loop0 Physical volume "/dev/loop0" successfully created [root@localhost ~]# pvcreate /dev/loop1 Physical volume "/dev/loop1" successfully created [root@localhost ~]# pvcreate /dev/loop2 Physical volume "/dev/loop2" successfully created [root@localhost ~]# pvs PV VG Fmt Attr PSize PFree /dev/loop0 lvm2 --- 100.00m 100.00m /dev/loop1 lvm2 --- 100.00m 100.00m /dev/loop2 lvm2 --- 200.00m 200.00m /dev/sda2 centos lvm2 a-- 7.51g 40.00m
用2个条纹创buildVG和LV
vgcreate StripedVG /dev/loop0 /dev/loop1 lvcreate -l +100%FREE -i2 -n StripedLV StripedVG Using default stripesize 64.00 KiB. Logical volume "StripedLV" created.
格式化和挂载
mkfs /dev/mapper/StripedVG-StripedLV mount /dev/mapper/StripedVG-StripedLV /mnt
现在让我们将第三个PV添加到VG
vgextend StripedVG /dev/loop2 Volume group "StripedVG" successfully extended
现在转换
[root@localhost ~]# lvconvert -m1 StripedVG/StripedLV StripedVG/StripedLV: Converted: 0.0% StripedVG/StripedLV: Converted: 83.3% StripedVG/StripedLV: Converted: 100.0%
去除镜子上的条纹部分
[root@localhost ~]# lvconvert -m0 StripedVG/StripedLV /dev/loop0 /dev/loop1 Logical volume StripedLV converted.
现在摆脱/ dev / loop0和/ dev / loop1
[root@localhost ~]# vgreduce StripedVG /dev/loop0 Removed "/dev/loop0" from volume group "StripedVG" [root@localhost ~]# vgreduce StripedVG /dev/loop1 Removed "/dev/loop1" from volume group "StripedVG" [root@localhost ~]# pvremove /dev/loop0 /dev/loop1 Labels on physical volume "/dev/loop0" successfully wiped Labels on physical volume "/dev/loop1" successfully wiped
所以我们最后是这样的
编辑1:
我在上面描述的是CentOS 6,但在CentOS 7上无法使用。
我猜在CentOS 7这个规则踢了。
由于条纹!=线性,它失败。
我只是从源代码重新编译lvm rpm包,但增加了额外的debugging
这里是输出
[root@localhost x86_64]# lvconvert -m1 StripedVG/StripedLV '--mirrors/-m' is not compatible with striped arg_count = 1 seg_is_linear = 0 seg_is_mirrored = 0
所以基本上所有3个条件评估为真,我们进入error handling块。
arg_count=1 !seg_is_linear = !(0) = 1 !seg_is_mirrored = !(0) = 1
编辑2 :
我find了CentOS 7的解决scheme,而不是RAID 1 – 我们需要使用–type镜像
lvconvert --type mirror -m 1 StripedVG/StripedLV
然后将其转换为Linear,并select要删除的PV
lvconvert -m0 StripedVG/StripedLV /dev/loop0 /dev/loop1