Linux: wymiana dysku w soft RAID 1 (mdadm) (LEGACY, MBR)

linux_2Tak się niestety trafiło, że musiałem podziałać z soft RAIDem w moim domowym serwerze (boot LEGACY, dyski z MBR) na którym mam utworzony RAID 1 na dane. Ostatnio jak sprawdziłem stan RAID 1 okazało się, że działa on tylko z jednym dyskiem. Dodałem do serwera nowy dysk i teraz przyszła zabawa na dodanie tego nowego dysku do istniejącej już macierzy. W przypadku RAID 1 nie jest to właściwie trudne. U mnie na serwerze utworzony mam soft RAID. Czyli przechodzimy do działania przy użyciu mdadm i sfdisk (nie zadziała kiedy mamy boot UEFI i partycje GPT na dysku. Z GPT i UEFI trzeba zrobić to inaczej niż tutaj jest opisane. Jakby ktoś się zastanawiał to mdadm z UEFI jest jak najbardziej możliwy i działający). Najpierw sprawdzamy informacje i stan macierzy.

Dla UEFI i partycji GPT opis w poniższym linku:
Linux: UEFI, GPT wymiana dysku w soft RAID 1 (mdadm)

U mnie RAID 1 jest widoczny jako md0. Najpierw sprawdźmy informacje RAID:

mdadm -D /dev/md0

To wyświetli informacje na temat md0 (ile jest dysków, jaki jest stan macierzy itd.)
Stan RAID sprawdzić możemy komendą

cat /proc/mdstat

Literki U oznaczają:
UU – macierz ok
_U – dysk usunięty z macierzy
U_ – dysk usunięty z macierzy

Jeśli dysk uległ awarii to automatycznie system usunie go z macierzy jak tylko to wykryje. Jeśli my to wykryjemy to możemy sami usunąć uszkodzony dysk z macierzy i dodać nowy sprawny

Oznaczamy wadliwy dysk (jak jest więcej partycji to kolejno wszystkie trzeba oznaczyć. W tym przykładzie jest tylko jedna) w tym przypadku sdc1:

mdadm -f /dev/md0 /dev/sdc1

Usuwamy wadliwy dysk:

mdadm -r /dev/md0 /dev/sdc1

Teraz fizycznie podmieniamy dysk w serwerze (uszkodzony na nowy).
Uruchamiamy serwer i przechodzimy do tworzenia partycji. Do tego celu możemy wykorzystać narzędzie sfdisk. Sprawny dysk z danymi w RAID 1 to sdb, a nowy dysk, który wpiąłem został ponownie oznaczony jako sdc.

Czyli najpierw kopiuje układ partycji z sdb do pliku:

sfdisk -d /dev/sdb > sdb.part

Następnie wgrywam układ partycji z pliku na dysk sdc

 sfdisk /dev/sdc < sdb.part

Informujemy kernel o zmianach przy użyciu komendy

partprobe 

Jak ktoś nie ma to musi zainstalować pakiet parted ( apt-get install parted ). Ewentualnie można po prostu ponownie uruchomić serwer (reset).

Wynik działań możemy sprawdzić wydając komendę:

 fdisk -l 

Układ partycji, typ partycji powinien być na dysku sdb i sdc identyczny.

Przypominam, że dyski do RAID 1 powinny być identycznej pojemności i wtedy sfdisk się tutaj sprawdzi. Jeśli montowany dysk jest większy wówczas należy manualnie utworzyć wymagane partycje na nowym dysku tak aby odpowiadały one układem partycjom na dysku obecnym w RAID 1 przy czym pamiętać trzeba, że do RAID jest potrzebny typ partycji Linux RAID  (trochę pomocy przy tworzeniu partycji jest tutaj https://www.howtoforge.com/software-raid1-grub-boot-debian-etch).

W celu usunięcia  pozostałości oznaczeń po poprzednich macierzach RAID (gdy mam jakiś dysk na podmianę nieużywany, ale z innej macierzy) to używamy komendy:

mdadm --zero-superblock /dev/sdc1

Jeśli nie ma śladów macierzy na “nowym” dysku to pojawić się może komunikat:

mdadm: Unrecognised md component device - /dev/sdc1

Nie ma się czym przejmować i jest wszystko OK.

Jak już nowy dysk jest gotowy należy go dodać do obecnej macierzy:

mdadm /dev/md0 --add /dev/sdc1

U mnie dysk sdb i sdc posiada tylko jedną partycję więc dodaję tylko sdc1. Jeśli ktoś ma więcej partycji na dysku to powinien to odpowiednio wykonać dla kolejnych partycji dodając je do macierzy.

Sprawdzamy status RAID:

 mdadm -D /dev/md0

Powinno się pojawić, że są dwa dyski w macierzy. Jeden powinien być active sync, a drugi jako spare, recovery gdy dane są synchronizowane z dysku już obecnego w macierzy na nowy dysk, który został dodany.  Stan synchronizacji możemy podejrzeć komendą:

cat /proc/mdstat

Tutaj się pojawi np. taka informacja

[=>..................] recovery = 0.8% (143392/312438976) finish=227.5min speed=41120K/sec

Stan i czas będą się zmieniać raz na krótszy, raz na dłuższy. Odbudowa RAID może potrwać nawet kilka godzin.
Po zakończonym działaniu po wydaniu komendy cat /proc/mdstat pojawi się np.:


Personalities : [raid1]
md0 : active raid1 sdc1[2] sdb1[1]
312438976 blocks super 1.2 [2/2] [UU]

unused devices: <none>

Po wydaniu komendy

 mdadm -D /dev/md0 

na samym dole będzie widoczna taka informacja:

Number Major Minor RaidDevice State
  2      8    33       0      active sync /dev/sdc1
  1      8    17       1      active sync /dev/sdb1

To oznacza, że wszystko jest OK i macierz działa prawidłowo. W czasie gdy RAID się odbudowuje dane są dostępne, ale musimy brać pod uwagę obniżoną wydajność z racji, że RAID zajmuje pewne zasoby na potrzeby odbudowy/synchronizacji.

Ostatnim krokiem jest skopiowanie MBR/GRUB na nowy dysk

dd if=/dev/sdb1 of=/dev/sdc1 bs=512 count=1

Opcjonalnie możemy sami manualnie przekopiować zawartość partycji boot (jeżeli taką mamy) na nowy dysk poleceniem

dd if=/dev/sdx1 of=/dev/sdz1 status=progress

You can leave a response, or trackback from your own site.

3 komentarze to “Linux: wymiana dysku w soft RAID 1 (mdadm) (LEGACY, MBR)”

  1. Pablo pisze:

    Wielkie dzięki !

    Poleciał mi RAID1 i bez najmniejszego problemu udało się przenieść dane na nowy dysk.
    Jak by się dało jeszcze dopisać jak zrobić automatyczny start systemu z obu dysków (tak, żeby po awarii jednego z nich system wstał) to było by idealnie. 😉

  2. eee pisze:

    wlasciwie wymiana raid 5 jest taka sama

  3. Damian pisze:

    Świetny tutorial. Przydał się z pomyślnym skutkiem.
    Pozdrawiam

Leave a Reply to Pablo

You must be logged in to post a comment.

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