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żeli 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