Tak 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
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. 😉
wlasciwie wymiana raid 5 jest taka sama
Świetny tutorial. Przydał się z pomyślnym skutkiem.
Pozdrawiam