Sprawdzanie statusu macierzy¶
Aby sprawdzić status utworzonych urządzeń używamy lvs PokażUkryj
lvs -a -o name,copy_percent,health_status,devices vg_name
- wymiana uszkodzonego PV bez wskazania zamiennika PokażUkryj
lvconvert --repair /dev/vg/lv
- wymiana działającego PV (przed zniknięciem) PokażUkryj
lvconvert --replace /dev/sdb2 my_vg/my_lv # Wskazanie zamiennika usuwamy /dev/sdb1 dodajemy /dev/sdd1 lvconvert --replace /dev/sdb1 my_vg/my_lv /dev/sdd1
Przywracanie RAID nie posiadającego wystarczającej ilości urządzeń PV np. po awarii kontrolera czy przypadkowym odłączenie dysku PokażUkryj
Sprawdzamy z jakich urządzeń składa się RAID
lvs -a -o name,copy_percent,health_status,devices lxc-test 100,00 partial lxc-test_rimage_0(0),lxc-test_rimage_1(0),lxc-test_rimage_2(0),lxc-test_rimage_3(0) [lxc-test_rimage_0] /dev/sda5(31799) [lxc-test_rimage_0] /dev/sda5(94093) [lxc-test_rimage_1] /dev/sdb2(147555) [lxc-test_rimage_2] partial [unknown](37473) [lxc-test_rimage_3] /dev/sdc2(130144) [lxc-test_rmeta_0] /dev/sda5(31798) [lxc-test_rmeta_1] /dev/sdb2(147554) [lxc-test_rmeta_2] partial [unknown](37472) [lxc-test_rmeta_3] /dev/sdc2(130143)Powyżej mamy brakując LV
- dane: rimage_2
- metadate: rmeta_2
Aktywujemy LV z meta danymi celem zrobienia dump
lvchange -ay vg/lxc-test_rmeta_0 lvchange -ay vg/lxc-test_rmeta_1 lvchange -ay vg/lxc-test_rmeta_3
Wykonujemy dump danych
dd bs=1 count=512 if=/dev/vg-lxc5/lxc--test_rmeta_0 of=/home/lxc-test/rmeta_0 dd bs=1 count=512 if=/dev/vg-lxc5/lxc--test_rmeta_1 of=/home/lxc-test/rmeta_1 dd bs=1 count=512 if=/dev/vg-lxc5/lxc--test_rmeta_3 of=/home/lxc-test/rmeta_3
Dalej odczytujemy zawartość w hex np. przy użyciu ghex. Jeśli nie ma rozjechanych danych a np. urządzenie jest tylko ustawione jako fault poprawiamy bity.
Uszkodzone urządzenia bit 0x18 przedstawia wartość w HEX np. 0C to 0000 1100, liczymy bity od prawej, "n-1" czyli 2 i 3, a 04 to 0000 0100, więc uszkodzony PV to numer 2.
Aby ustawić PV jako aktywne podmieniamy wartość na rmeta_0 i rmeta_1 zmieniając wartość z 0C na 04
Wgrywamy poprawione metadate
dd bs=1 count=512 if=/home/lxc-test/rmeta_0 of=/dev/vg-lxc5/lxc--test_rmeta_0 dd bs=1 count=512 if=/home/lxc-test/rmeta_1 of=/dev/vg-lxc5/lxc--test_rmeta_1 dd bs=1 count=512 if=/home/lxc-test/rmeta_3 of=/dev/vg-lxc5/lxc--test_rmeta_3
Dezaktywujemy LV, inaczej LVM nie pozwala na uruchomienie raid
lvchange -an vg/lxc-test_rmeta_0 lvchange -an vg/lxc-test_rmeta_1 lvchange -an vg/lxc-test_rmeta_3
Startujemy LV
lvchange -ay -v vg/lxc-test
W logach zobaczymy
[dec11 00:07] device-mapper: raid: Failed to read superblock of device at position 2 [ +0,004843] md/raid:mdX: device dm-56 operational as raid disk 0 [ +0,000175] md/raid:mdX: device dm-58 operational as raid disk 1 [ +0,000165] md/raid:mdX: device dm-67 operational as raid disk 3 [ +0,002126] md/raid:mdX: raid level 5 active with 3 out of 4 devices, algorithm 2 [ +0,047383] device-mapper: raid: raid456 discard support disabled due to discard_zeroes_data uncertainty. [ +0,000228] device-mapper: raid: Set dm-raid.devices_handle_discard_safely=Y to override.
Montujemy aby sprawdzić czy dane są namiejscu, dla XFS dostaniemy logi
[ +19,615354] XFS (dm-68): Mounting V5 Filesystem [ +0,033494] XFS (dm-68): Starting recovery (logdev: internal) [ +0,082395] XFS (dm-68): Ending recovery (logdev: internal)
Proponuje w tym momencie wykonać backup danych a następnie reperujemy LV
lvconvert --repair vg/lxc-test
Należy naprawić w ten sposób wszystkie LV aby móc dalej pracować na VG. Do czasu naprawy wszystkich LV VG zostaje zablokowany na tworzenie nowych LV czy też konwersje istniejących. Po naprawie wszystkich LV należy z VG usunąć nie istniejący PV PokażUkryj
vgreduce --removemissing vg_name