包含数据和日志的LVM镜像镜像在同一台设备上

我试图设置只有2个设备的LVM镜像。 当我为镜像日志添加第三个设备,或者使用corelog时,它可以正常工作。 但只有2个设备和 – 随处可用 LVM几乎总是在一个设备上创build两个镜像。

情况

  • 2个50GB的设备/ dev / xvdf和/ dev / xvdg
  • 我需要在/ dev / xvdf上的1 x 40GB分区,它将在/ dev / xvdg上镜像
  • 我不想要2个单独的驱动器用于镜像日志,我想在/ dev / xvdf和/ dev / xvdg上镜像日志(在某些盘区)

问题

几乎总是LVM(如果我理解lvs命令输出正确)在/ dev / xvdf上创build镜像,在/ dev / xvdg上创build镜像日志(是:-(

我使用的命令

情况1 – 最简单:

$ lvcreate -m 1 --mirrorlog mirrored -L40G -n test forfiter --alloc anywhere $ lvs -a -o +devices LV VG Attr LSize Origin Snap% Move Log Copy% Convert Devices test forfiter mwa-a- 40,00g test_mlog 7,09 test_mimage_0(0),test_mimage_1(0) [test_mimage_0] forfiter Iwi-ao 40,00g /dev/xvdf(0) [test_mimage_1] forfiter Iwi-ao 40,00g /dev/xvdf(10240) [test_mimage_1] forfiter Iwi-ao 40,00g /dev/xvdg(2) [test_mlog] forfiter mwa-ao 4,00m 100,00 test_mlog_mimage_0(0),test_mlog_mimage_1(0) [test_mlog_mimage_0] forfiter iwi-ao 4,00m /dev/xvdg(0) [test_mlog_mimage_1] forfiter iwi-ao 4,00m /dev/xvdg(1) 

正如你所看到的,test_mimage_1部分位于/ dev / xvdf,部分位于/ dev / xvdf。在xvdg上分配了12799个PE,在xvdg上分配了7683个PE。

最有趣的是,LVM也在一台设备上创build了mlog

场景2 – 我试图指定要使用的盘区数量:

 $ lvcreate -m 1 --mirrorlog mirrored -L 40G -n test forfiter /dev/xvdf:6-12700 /dev/xvdg:6-12700 /dev/xvdf:0-4 /dev/xvdg:0-4 --alloc anywhere $ lvs -a -o +devices LV VG Attr LSize Origin Snap% Move Log Copy% Convert Devices test forfiter mwa-a- 40,00g test_mlog 2,79 test_mimage_0(0),test_mimage_1(0) [test_mimage_0] forfiter Iwi-ao 40,00g /dev/xvdf(6) [test_mimage_1] forfiter Iwi-ao 40,00g /dev/xvdf(10246) [test_mimage_1] forfiter Iwi-ao 40,00g /dev/xvdf(0) [test_mimage_1] forfiter Iwi-ao 40,00g /dev/xvdg(7) [test_mlog] forfiter mwa-ao 4,00m 100,00 test_mlog_mimage_0(0),test_mlog_mimage_1(0) [test_mlog_mimage_0] forfiter iwi-ao 4,00m /dev/xvdg(6) [test_mlog_mimage_1] forfiter iwi-ao 4,00m /dev/xvdg(0) 

没有成功:-)

我阅读了许多教程 – 任何地方的作者都build议使用 – 在任何地方都可以使用,但是对于我来说,结果看起来很奇怪(镜像可以工作,但并不像我预期的那样)

我想将raid1从MDADM迁移到LVM。

使用分区编辑器(如partedcfdiskfdisk来创build分区: /dev/xvdf1/dev/xvdf2等,并将它们放入您的forfiter VG中。

在这个例子中,我使用/dev/mapper/loop0p1

 pvcreate /dev/mapper/loop1p1 Physical volume "/dev/mapper/loop1p1" successfully created pvcreate /dev/mapper/loop1p2 Physical volume "/dev/mapper/loop1p2" successfully created vgcreate forfiter /dev/mapper/loop0p1 Volume group "forfiter" successfully created vgextend forfiter /dev/mapper/loop1p1 Volume group "forfiter" successfully extended vgextend forfiter /dev/mapper/loop0p2 Volume group "forfiter" successfully extended vgextend forfiter /dev/mapper/loop1p2 Volume group "forfiter" successfully extended vgs forfiter VG #PV #LV #SN Attr VSize VFree forfiter 4 0 0 wz--n- 248.00m 248.00m ls -l /dev/mapper/loop0p1 lrwxrwxrwx 1 root root 8 Apr 18 08:59 /dev/mapper/loop0p1 -> ../dm-21 vgdisplay -v forfiter | tail -n mumble --- Physical volumes --- PV Name /dev/dm-21 PV UUID uFJpEH-dLFA-gJiM-cnao-cFFm-DEZG-RnNvSM PV Status allocatable Total PE / Free PE 15 / 15 PV Name /dev/dm-23 PV UUID 1T7DIL-Xw4s-4tVy-CVQc-lKDp-aUNA-lyk8v2 PV Status allocatable Total PE / Free PE 15 / 15 PV Name /dev/dm-22 PV UUID T0prpa-KKEO-uWUb-zQU3-cosM-uyEI-ext9F7 PV Status allocatable Total PE / Free PE 16 / 16 PV Name /dev/dm-24 PV UUID PC2aCZ-eKdU-p8eS-SBDc-uWzY-54gG-952ndg PV Status allocatable Total PE / Free PE 16 / 16 lvcreate -m 1 --mirrorlog mirrored -L64M -n test forfiter The link /dev/forfiter/test_mlog should had been created by udev but it was not found. Falling back to direct link creation. The link /dev/forfiter/test_mlog should have been removed by udev but it is still present. Falling back to direct link removal. Logical volume "test" created lvs -a -o +devices forfiter LV VG Attr LSize Origin Snap% Move Log Copy% Convert Devices test forfiter mwi-a- 64.00m test_mlog 100.00 test_mimage_0(0),test_mimage_1(0) [test_mimage_0] forfiter iwi-ao 64.00m /dev/dm-22(0) [test_mimage_1] forfiter iwi-ao 64.00m /dev/dm-24(0) [test_mlog] forfiter mwi-ao 4.00m 100.00 test_mlog_mimage_0(0),test_mlog_mimage_1(0) [test_mlog_mimage_0] forfiter iwi-ao 4.00m /dev/dm-21(0) [test_mlog_mimage_1] forfiter iwi-ao 4.00m /dev/dm-23(0) 

没有创build分区,你的问题是你正在使用相同的命令"--mirrorlog mirrored and --alloc anywhere"

我使用"--mirrorlog mirrored"在suse 11上遇到同样的问题,但是我用下面的方法解决了lvm命令:

 lvcreate -m 1 --mirrorlog mirrored -L40G -n test forfiter /dev/xvdb /dev/xvdc 

在redhat或者centos中你可以在lvm.conf中find这个注释

 # Set to 1 to guarantee that mirror logs will always be placed on # different PVs from the mirror images. This was the default # until version 2.02.85. mirror_logs_require_separate_pvs = 0 

有很多方法可以解决这个问题,而不需要创build分区。