wtorek, 19 października 2010

Dodanie nowego dysku do macierzy RAID 1, po awarii jednego z dysków

Co zrobić gdy wypadnie nam jeden dysk z RAID'u.

Mam skonfigurowany na maszynie wirtualnej RAID z następującym układem partycji:
/dev/md2 6,3G 1,1G 5,0G 18% /
/dev/md0 992M 40M 902M 5% /boot
tmpfs 292M 0 292M 0% /dev/shm


Miałem skonfigurowany RAID 1 (odbicie lustrzane pierwszego dysku na dysku drugim).
Usunąłem drugi dysk twardy z maszyny wirtualnej i dodałem trzeci dysk (konfiguracja tak, jakby była awaria drugiego dysku i dołożyłbym po prostu inny dysk).

Wynik wykonania polecenia cat /proc/mdstat:
Personalities : [raid1]
md0 : active raid1 hda1[0]
1048704 blocks [2/1] [U_]

md1 : active raid1 hda2[0]
524096 blocks [2/1] [U_]

md2 : active raid1 hda3[0]
6815488 blocks [2/1] [U_]



Jak widać każda partycja jest dodana do RAID'u (/, /boot, tmpfs).
Informacje widoczne w nawiasie [U_] oznaczają awarię dysku drugiego a w szczególności znak "_" przez niektórych nazywany podkreślnikiem .

Sprawdzam za pomocą fdisk -l czy nowo dodany dysk jest widoczny i jakie ma przypisane oznaczenia.
w moim przypadku jest to hdd
kopiuje układ partycji z hda na hdd:
sfdisk -d /dev/hda | sfdisk /dev/hdd
Checking that no-one is using this disk right now ...
OK

Disk /dev/hdd: 16644 cylinders, 16 heads, 63 sectors/track

sfdisk: ERROR: sector 0 does not have an msdos signature
/dev/hdd: unrecognized partition table type
Old situation:
No partitions found
New situation:
Units = sectors of 512 bytes, counting from 0

Device Boot Start End #sectors Id System
/dev/hdd1 * 63 2097647 2097585 fd Linux raid autodetect
/dev/hdd2 2097648 3145967 1048320 fd Linux raid autodetect
/dev/hdd3 3145968 16777151 13631184 fd Linux raid autodetect
/dev/hdd4 0 - 0 0 Empty
Successfully wrote the new partition table

Re-reading the partition table ...

If you created or changed a DOS partition, /dev/foo7, say, then use dd(1)
to zero the first 512 bytes: dd if=/dev/zero of=/dev/foo7 bs=512 count=1
(See fdisk(8).)

Przystępuję do odbudowania macierzy:
mdadm /dev/md0 -a /dev/hdd1
mdadm: added /dev/hdd1

Sprawdzam czy wszystkiego nie popsułem:
cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 hdd1[2] hda1[0]
1048704 blocks [2/1] [U_]
[===============>.....] recovery = 76.7% (806528/1048704) finish=0.1min speed=36660K/sec

md1 : active raid1 hda2[0]
524096 blocks [2/1] [U_]

md2 : active raid1 hda3[0]
6815488 blocks [2/1] [U_]

Jak widać, wszystko wydaje się przebiegać pomyślnie.
Po chwili jeszcze raz sprawdzam czy wszystko ok:
cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 hdd1[1] hda1[0]
1048704 blocks [2/2] [UU]

md1 : active raid1 hda2[0]
524096 blocks [2/1] [U_]

md2 : active raid1 hda3[0]
6815488 blocks [2/1] [U_]

unused devices:



Teraz dodaję root'a czyli "/":
mdadm /dev/md2 -a /dev/hdd3
mdadm: added /dev/hdd3

Sprawdzam postęp odbudowy macierzy:
md0 : active raid1 hdd1[1] hda1[0]
1048704 blocks [2/2] [UU]

md1 : active raid1 hda2[0]
524096 blocks [2/1] [U_]

md2 : active raid1 hdd3[2] hda3[0]
6815488 blocks [2/1] [U_]
[==>..................] recovery = 13.5% (924736/6815488) finish=3.4min speed=28689K/sec


Po zakończeniu cat /proc/mdstat pokazuje następujące informacje:
Personalities : [raid1]
md0 : active raid1 hdd1[1] hda1[0]
1048704 blocks [2/2] [UU]

md1 : active raid1 hda2[0]
524096 blocks [2/1] [U_]

md2 : active raid1 hdd3[1] hda3[0]
6815488 blocks [2/2] [UU]

unused devices:

Pozostaje jeszcze dodać md1 czyli tmpfs do RAID'a:
mdadm /dev/md1 -a /dev/hdd2
mdadm: added /dev/hdd2


Pozostaje jeszcze sprawdzenie czy wszystko jest teoretycznie ok:
md0 : active raid1 hdd1[1] hda1[0]
1048704 blocks [2/2] [UU]

md1 : active raid1 hdd2[1] hda2[0]
524096 blocks [2/2] [UU]

md2 : active raid1 hdd3[1] hda3[0]
6815488 blocks [2/2] [UU]

unused devices:

Wygląda na to że się udało. Coś za łatwo poszło :/.
No to przeprowadzę jeszcze crash test, uruchomienie systemu z /dev/hdd, hda będzie odłączony całkowicie.

Lol wiedziałem, że coś za łatwo poszło, przy uruchomieniu z hdd pojawił się komunikat FATAL: No bootable medium found! System halted.

Najprawdopodobniej trzeba jeszcze zainstalować gruba (uruchamiam system z dwoma podłączonymi dyskami twardymi).
Zastosowałem do tego celu metodę delikatną (metoda mniej delikatna jest wykonywana za pomocą dd):
grub
root (hd1,0)
setup (hd1)

Pojawiło się kilka komunikatów, na końcu było succeeded więc, więc odłączam hda zostawiam hdd i sprawdzam co się będzie działo.

Tadam działa, system uruchomił się normalnie.

Sprawdzam czy faktycznie wykaże, że system został uruchomiony z drugiego dysku:
cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 hda1[1]
1048704 blocks [2/1] [_U]

md1 : active raid1 hda2[1]
524096 blocks [2/1] [_U]

md2 : active raid1 hda3[1]
6815488 blocks [2/1] [_U]

Jak widać wykazuje, że wszystko jest ok brakuje pierwszego dysku.

Jeżeli będziecie kiedykolwiek komuś konfigurować RAID'a najlepiej jest od razu zainstalować grub'a na drugim dysku, oszczędzicie sobie sporo czasu w przyszłości gdy padnie dysk pierwszy.

Brak komentarzy:

Prześlij komentarz