Linux: UEFI, GPT wymiana dysku w soft RAID 1 (mdadm)

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.

You can skip to the end and leave a response. Pinging is currently not allowed.

2 komentarze to “Linux: UEFI, GPT wymiana dysku w soft RAID 1 (mdadm)”

  1. Rowert pisze:

    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!

  2. gosc pisze:

    super wpis, dzięki

Leave a Reply

You must be logged in to post a comment.

Powered by WordPress | Designed by: NewWpThemes | Provided by Free WordPress Themes