Назад | Перейти на главную страницу

Зеркало LVM с данными и журналами, отраженными на тех же 2 устройствах

Я пытаюсь настроить зеркалирование LVM только на 2 устройства. Он отлично работает, когда я добавляю третье устройство для зеркального журнала или использую corelog. Но всего с 2 устройствами и --распределить где угодно LVM почти всегда создает оба зеркала на одном устройстве.

Ситуация:

Проблема:

LVM почти всегда (если я правильно понимаю вывод команды lvs) создает оба зеркала на / dev / xvdf и mirrorlog на / dev / xvdg (да :-(

Команды, которые я использую:

Сценарий 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. 12799 PE размещены на xvdf и 7683 размещены на xvdg.

Самое смешное, что LVM создал 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)    

Безуспешно :-)

Я прочитал много руководств - везде авторы предлагают использовать --распределить где угодно, но для меня результаты выглядят довольно странно (зеркалирование работает, но не так, как я ожидал)

Я хочу перенести raid1 с MDADM на LVM.

Без создания раздела ваша проблема в том, что вы используете ту же команду "--mirrorlog mirrored and --alloc anywhere"

У меня была такая же проблема с suse 11, используя "--mirrorlog mirrored" но я решил использовать команду lvm ​​следующим образом:

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

В redhat или centos вы можете найти этот комментарий в lvm.conf

# 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

Есть много способов решить эту проблему без создания раздела.

Используйте редактор разделов, например parted, cfdisk или fdisk для создания перегородок: /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)