是否有可能镜像条纹LVM逻辑卷?

我有一个条形逻辑卷,当前分为两个物理驱动器( /dev/sda1/dev/sdb1 )。 我现在想把这个卷镜像到已经添加到卷组中的第三个设备( /dev/sdc1 )上。 我发现的许多参考文献(例如, 是否有可能将带状逻辑卷转换成线性逻辑卷? )表明这可以通过以下命令来实现:

 lvconvert -m 1 /dev/volgroup/volume /dev/sdc1 

但是对于我来说,这会导致以下错误:

 '--mirrors/-m' is not compatible with striped 

为什么这不适合我?

LVM版本

 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 

在这里输入图像说明