Matrix RAID - scenariusz awarii

Poniższy artykuł‚ jest kontynuacją… Matrix RAID na Debianie, opisywane polecenia ściśle odnoszą się™ do ukł‚adu partycji tam opisanego, ale oczywiś›cie można je dostosować‡ analogicznie do wł‚asnych potrzeb.

Z awariami bywa tak, że nic do koń„ca nie da się™ przewidzieć‡, dla instalacji opisanej w artykule Matrix RAID na Debianie spodziewam się™ poniższego scenariusza, w dwóch wariantach wykrycia problemów z dyskiem macierzy.

1) wariant pierwszy gdy jeszcze wszystko dział‚a, ale podejrzewamy problemy z jednym z dysków np. sda i postanawiamy go wymienić‡.

Z doświadczenia zaobserwowałem, że przed awarią mdadm lubi wyrzucać z Matrix'a jakiś dysk, można go ponownie podmontować i zsynchronizować a za parę dni znów wypada.

1a) kopiujemy dane z RAID0 w inne miejsce, jeżeli to jeszcze możliwe ;)
1b) odłą…czamy partycję™ utworzoną… na RAID0 i zatrzymujemy.

#umount /dev/md1
#mdadm --stop /dev/md1

jeże›li okazał‚oby się™, że dysk jest w porzą…dku i trzeba bę™dzie ponownie włą…czyć‡ nasz RAID0 (TYLKO jeż›li nic nie dotykaliś›my na partycjach) użyjemy polecenia:

#mdadm --assemble --auto==yes /dev/md1 /dev/sd[abc]3

1c) usuwamy wadliwy dysk z pozostał‚ych macierzy RAID1 i RAID5

#mdadm /dev/md2 -f /dev/sda4
#mdadm /dev/md0 -f /dev/sda2

1d) wyłą…czamy komputer i wymieniamy dysk

2) wariant drugi - dysk rozpada się™ podczas pracy, mdadm to wykrywa i reaguje odłą…czeniem dysku:

lub wszystko się™ sypie (w zależnoś›co od tego jaką… funkcję™ peł‚ni RAID0), a po restarcie dysk juz się™ nie podnosi i dostajemy monit o problemach z systemem plików:

Potwierdzamy kontynuację™ (CTRL+D) i sprawdzamy którego dysku brakuje poleceniem:
#mdadm --detail /dev/md0

W tym momencie jesteś›my w tym samym miejscu co punkt 1d) - należy wyłą…czyć‡ komputer i wymienić‡ dysk

Procedura naprawy, odtworzenia partycji na nowym dysku i dołą…czenia do ukł‚adu

3) Formatowanie nowego dysku
3a) odczytujemy ukł‚ad partycji na pozostał‚ych dyskach poleceniem:

#fdisk -l
Disk /dev/sda: 4294 MB, 4294967296 bytes
255 heads, 63 sectors/track, 522 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x0000d751

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1          31      248976   82  Linux swap / Solaris
/dev/sda2              32          62      249007+  fd  Linux raid autodetect
/dev/sda3              63         184      979965   fd  Linux raid autodetect
/dev/sda4             185         522     2714985   fd  Linux raid autodetect

3b) odtwarzamy go identycznie na czystym dysku:

#fdisk /dev/sda

i przy pomocy komend
n - nowa partycja
t - typ partycji ustawiamy na - fd Linux raid auto

4) tworzymy od nowa RAID0 - stary rozleciał‚ się™ wraz z awarią… dysku
4a) jeżeli RAID0 jest jakimś› cudem podniesiony, najbezpieczniej bę™dzie zatrzymać‡ go i utworzyć od nowa:

#mdadm --stop /dev/md1
#mdadm --create -l0 -n3 /dev/md1 /dev/sd[abc]3

(tworzy RAID poziomu 0 na 3 partycji z 3 urzą…dzeń„ sda, sdb i sdc)

4b) tworzymy system plików na naszym nowym urzą…dzeniu md1:

#mkfs.ext3 /dev/md1

4c) montujemy:

#mount /dev/md1

5) podpinamy nowe partycje do RAID1 i RAID5

#mdadm /dev/md0 -a /dev/sda2
#mdadm /dev/md2 -a /dev/sda4

(NIC NIE FORMATUJEMY !!! macierze same odbudują… swoje systemy plików)

postę™p sprawdzamy poleceniem:
#cat /proc/mdstat

raid:~# cat /proc/mdstat
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4]
md2 : active raid5 sda4[3] sdb4[1] sdc4[2]
      5429760 blocks level 5, 64k chunk, algorithm 2 [3/2] [_UU]
      [===>.................]  recovery = 19.5% (531072/2714880) finish=2.8min speed=12736K/sec

md1 : inactive sdb3[1] sdc3[2]
      1959680 blocks

md0 : active raid1 sdb2[1] sdc2[2]
      248896 blocks [3/2] [_UU]

unused devices: 

6) tworzymy i podłą…czamy SWAP, tak aby zachować‡ ukł‚ad analogiczny jak na pozostał‚ych dyskach.

#swapon -s

wylistuje przestrzeń„ SWAP

raid:~# swapon -s
Filename                                Type            Size    Used    Priority
/dev/sda1                               partition       248968  0       -1
/dev/sdb1                               partition       248968  0       -2
/dev/sdc1                               partition       248968  0       -3

Tworzymy nową… partycję™ SWAP
#mkswap /dev/sda1

Podłą…czamy:
#swapon -p -3 /dev/sda1

7) ponownie instalujemy grub na naszej lustrzanej partycji boot tak aby dopisać‚ się™ do nowego dysku:
#grub-install /dev/md0

Searching for GRUB installation directory ... found: /boot/grub
Installation finished. No error reported.
This is the contents of the device map /boot/grub/device.map.
Check if this is correct or not. If any of the lines is incorrect,
fix it and re-run the script `grub-install'.

(hd0)   /dev/sda
(hd1)   /dev/sdb

8) zapisujemy nową… konfigurację™ w pliku mdadm.conf jednocześ›nie usuwamy stare wpisy opisują…ce naszą… macierz RAID:

#mcedit /etc/mdadm/mdadm.conf

# definitions of existing MD arrays
#ARRAY /dev/md0 level=raid1 num-devices=3 UUID=ec33824f:092ec5fc:a43fa790:7ab2da58
#ARRAY /dev/md1 level=raid0 num-devices=3 UUID=53c604c5:9b06e8d2:55345ffd:c44e12db
#ARRAY /dev/md2 level=raid5 num-devices=3 UUID=4a1c8aad:77c7e599:d8e85d2a:d747715a

i tworzymy nowe wpisy:
#mdadm --detail --scan >> /etc/mdadm/mdadm.conf

Dane odtworzone ;) mił‚ej pracy