Coraz więcej płyt głównych ma tylko UEFI i trafia się, że nie ma wsparcia dla boot z legacy. Dyski mamy też coraz większe i używamy partycji GPT. Postanowiłem uzupełnić opisy o soft RAID1 z mdadm i wymianę dysku kiedy mamy UEFI i dysk z układem partycji GPT. W momencie instalacji systemu możemy utworzyć programowy RAID 1 z użyciem mdadm, ale tylko jeden dysk będzie mógł wykonać boot systemu. Z tego względu, że UEFI nie rozpoznaje partycji Linux RAID czyli partycja boot z efi nie może być tego typu rodzaju partycją (musi być np. FAT32). Jeden dysk zawierać będzie partycje boot/efi (partycja EFI SYSTEM), a drugi nie. Czyli z jednego dysku system się uruchomi, a z drugiego nie. Rozwiązaniem tego problemu jest utworzenie partycji boot/efi (EFI SYSTEM) na drugim dysku i skopiowanie zawartości partycji boot efi z pierwszego dysku na drugi (np. przy użyciu narzędzia dd). Poniżej przykład jak to zrobić przy wymianie dysku w macierzy.
W tym przykładzie dysk ma dwie partycje gdzie sda1 to partycja EFI SYSTEM z BOOT dla UEFI oraz sda2 z partycją LINUX RAID AUTODETECT gdzie jest to partycja dla soft RAID 1.
Sprawdzamy stan macierzy:
cat /proc/mdstat
wynik polecenia może być podobny do tego poniżej:
Personalities : [raid1] md0 : active raid1 sda2[2] sdb2[3] 976630464 blocks super 1.2 [2/2] [U_] unused devices: <none>
md0 to nazwa macierzy
Literki U oznaczają wg. kolejności dysków:
UU – macierz ok
_U – dysk usunięty z macierzy (usunięty z macierzy sda2)
U_ – dysk usunięty z macierzy (usunięty z macierzy sdb2)
W tym przypadku usunięty z macierzy jest dysk sdb2.
Używając poniższego polecenia wyświetli się stan macierzy:
mdadm -D /dev/md0
/dev/md0 to nazwa macierzy więc należy to zastąpić nazwą macierzy, którą chcemy sprawdzić.
Jeżeli, któryś dysk jest oznaczony jako removed, failed itp. to należy go wymienić.
Opcjonalnie możemy też samodzielnie oznaczyć dysk jako uszkodzony w macierzy poleceniem
mdadm -f
np.
mdadm -f /dev/md0 /dev/sdb2
/dev/md0 to nazwa macierzy, a /dev/sdb2 to nazwa dysku. Nie trzeba tego robić jeżeli danego dysku i tak już nie ma w macierzy.
Możemy dodatkowo użyć polecenia
mdadm --manage--remove
do usunięcia dysku z macierzy (nie jest to warunek konieczny, bo jak dysk padnie to powinien automatycznie być oznaczony jako brakujący) np.
mdadm --manage /dev/md0 --remove /dev/sdb2
Powyższe polecenie usunie z macierzy /dev/md0 dysk /dev/sdb2
Do obsługi dysków GPT potrzebujemy odpowiedniego narzędzia. Proponuję zainstalować sgdisk
W Debianie
apt-get install gdisk
W Centosie
yum install gdisk
Jak już mamy sgdisk to kopiujemy układ partycji z działającego prawidłowo dysku używając polecenia sgdisk. Składnia to
sgdisk --backup=nazwa_pliku dysk_źrodłowy
Poniższe polecenie należy wykonać jako root
sgdisk --backup=/root/partitions /dev/sda
Powyższe polecenie zachowa w lokalizacji /root/partitions układ partycji dysku /dev/sda. Teraz czas na wymianę uszkodzonego dysku na dysk, który jest sprawny. Po wymianie uszkodzonego dysku na nowy i uruchomieniu systemu z działającego dysku sprawdzamy fdiskiem lub parted czy jest widoczny nowy dysk oraz sprawdzamy oznaczenia partycji BOOT UEFI na dysku z którego uruchomił się system (w tym przykładzie będą to partycje sda1 oraz partycja RAID sda2).
Wgrywamy skopiowany układ partycji na nowy dysk. Składnia
sgdisk --load-backup=
czyli
sgdisk --load-backup=/root/partitions /dev/sdb
Ustawiamy nowy GUID na nowym dysku poleceniem
sgdisk -G
czyli
sgdisk -G /dev/sdb
Teraz kopiowanie zawartości partycji BOOT EFI na nowy dysk przy pomocy polecenia
dd if=of=
Czyli w tym przykładzie będzie to jak poniżej:
dd if=/dev/sda1 of=/dev/sdb1
Dodajemy partycję Linux software RAID do aktualnej macierzy poleceniem:
mdadm--add
czyli
mdadm /dev/md0 --add /dev/sdb2
Sprawdzamy macierz poleceniem
mdadm -D /dev/md0
Powinny być widoczne już dwie partycje w macierzy.
Żeby sprawdzić postęp odbudowy RAIDa używamy polecenia:
cat /proc/mdstat
Wyświetlą się informacje o macierzach i status podobny do tego poniżej
md0 : active raid1 sda2[0] sdb2[1] 44418688 blocks [2/1] [U_] [=>..................] recovery = 1.0% (9766304/976630464 ) finish=153.5min speed=63620K/sec
To wszystko. Teraz macierz się odbudowuje i jak odbudowa się zakończy to dzięki skopiowanej partycji EFI z działającego dysku na nowy dysk, mamy możliwość uruchomienia systemu (boot) z obu dysków.
Witam, padł mi jeden z dysków NVMe w serwerze i został wymieniony na nowy…
Męczyłem się najpierw z sfdiskiem aby skopiować tablicę partycji z działającego dysku, na szczęście znalazłem tą stronę i użyłem sgdiska.
RAID już się pięknie odbudował, wielkie dzięki!
super wpis, dzięki