Jeżeli korzystamy z softwarowego raid poziomu 1 w Ubuntu, powinniśmy co jakich czas sprawdzać jaki jest jego stan. Możemy to uczynić poniższym poleceniem:
root@server:# cat /proc/mdstat
po jego wydaniu z konsoli powinniśmy otrzymać coś podobnego:
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] md0 : active raid1 sda1[0] sdb1[1] 3905524 blocks super 1.2 [2/2] [UU] md1 : active raid1 sda2[0] sdb2[1] 1943747448 blocks super 1.2 [2/2] [UU] unused devices: <none>
powyższe oznacza, że obie macierze md0 i md1 są aktywne i oba dyski w każdej macierzy są zsynchronizowane:
Szczegóły dla każdej macierzy możemy uzyskać wydając z konsoli poniższe polecenie:
root@server:# mdadm --detail /dev/md0
w jego wyniku otrzymamy coś zbliżonego do poniższego:
/dev/md0: Version : 1.2 Creation Time : Wed May 25 23:50:25 2012 Raid Level : raid1 Array Size : 3904500 (3.72 GiB 4.00 GB) Used Dev Size : 3904500 (3.72 GiB 4.00 GB) Raid Devices : 2 Total Devices : 2 Persistence : Superblock is persistent Update Time : Wed Jan 2 20:26:37 2013 State : clean Active Devices : 2 Working Devices : 2 Failed Devices : 0 Spare Devices : 0 Name : server:1 (local to host server) UUID : f068f485:77ceddce:238a697e:2b43391d Events : 178 Number Major Minor RaidDevice State 0 8 18 0 active sync /dev/sda1 1 8 2 1 active sync /dev/sdb1
lub dla macierzy md1:
root@server:# mdadm --detail /dev/md1
wynik będzie podobny jak wcześniej.
Jeśli po wydaniu polecenia cat /proc/mdstat otrzymany komunikat jest podobny do poniższego:
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] md0 : active raid1 sda1[0] 3904500 blocks super 1.2 [2/1] [U_] md1 : active raid1 sda2[0] 728665976 blocks super 1.2 [2/1] [U_] unused devices: <none>
oznacza to, że obie macierze są uszkodzone i musimy je naprawić. Przyczyną prawdopodobnie jest uszkodzenie jednego z dysków lub w najlepszym wypadku brak synchronizacji w macierzach – w tym przypadku wykonujemy tylko punkt drugi.
W pierwszej kolejności wymieniamy uszkodzony dysk na sprawny i tworzymy na nim dokładnie takie partycje jakie są na dysku sprawnym.Można to zrobić programem fdisk:
root@server:# fdisk /dev/sdb
W drugim kroku, po utworzeniu partycji dodajemy do macierzy kolejno, każdą nowo utworzoną partycję:
root@server: mdadm /dev/md1 -a /dev/sdb2
root@server: mdadm /dev/md0 -a /dev/sdb1
Po wydaniu powyższych poleceń macierz będzie się odbudowywała. Status możemy w każdej chwili sprawdzić wydając poniższe polecenie:
root@server:# cat /proc/mdstat
po jego wydaniu powinniśmy otrzymać wynik podobny do poniższego:
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] md1 : active raid1 sda2[0] sdb2[1] 728665976 blocks super 1.2 [2/1] [U_] [===========>.........] recovery = 58.8% (429044480/728665976) finish=66.8min speed=74722K/sec md0 : active raid1 sda1[0] sdb1[1] 3904500 blocks super 1.2 [2/1] [U_] resync=DELAYED unused devices: <none>
z powyższego widać, że macierz md1 jest odbudowywana, stan zaawansowania to 58,8%, a pozostały czas do zakończenia procesu to 66,8min. Druga macierz md0 czeka w kolejce do synchronizacji, która się rozpocznie po zakończeniu pierwszego procesu.
Jeżeli chce śledzić proces odbudowy macierzy możemy użyć poniższego polecenia wydanego z konsoli:
root@server:# watch cat /proc/mdstat
Jeżeli musimy uruchomić serwer, a właśnie trwa sprawdzanie macierzy wystarczy wydać poniższe polecenie żeby zatrzymać test (poniżej dla raid md0).
root@server:# echo idle > /sys/block/md0/md/sync_action
Na zakończenie warto jeszcze zadbać o uruchomienie systemu w przypadku uszkodzenia podstawowego dysku, z którego startuje system. W tym celu wystarczy zainstalować GRUB’a na drugim, nowo dodanym dysku:
root@server:# grub-install /dev/sdb
oraz w pliku /etc/initramfs-tools/conf.d/mdadm ustawić:
BOOT_DEGRADED=true
i zaktualizować initramfs:
update-initramfs -u
Dodatkowo możemy jeszcze wykonać kopię MBR pierwszego i drugiego dysku poleceniem:
root@server:# dd if=/dev/sda of=/home/administrator/mbr_sda.bak bs=512 count=1
root@server:# dd if=/dev/sdb of=/home/administrator/mbr_sdb.bak bs=512 count=1
W przypadku awarii dysku, możemy przywrócić rekord rozruchowy wraz z tablicą partycji dla dysku sda poniższym poleceniem:
root@server:# dd if=/home/administrator/mbr_sda.bak of=/dev/sda bs=512 count=1
lub bez tablicy partycji dla dysku sda w przypadku zmiany na dysk o innym rozmiarze:
root@server:# dd if=/home/administrator/mbr_sda.bak of=/dev/sda bs=446 count=1
Po przywróceniu partycji z kopii, aby były one widoczne dla systemu bez jego ponownego uruchamiania, należy wykonać polecenie:
root@server: hdparm -z /dev/sda
Ponowną konfigurację mdadm możemy wykonać poleceniem:
root@server: dpkg-reconfigure mdadm
Zatrzymanie utworzonej wcześniej macierzy:
root@server: mdadm --stop /dev/md1
Usunięcie dysku z działającej macierzy:
root@server: mdadm /dev/md1 --fail /dev/sda1 --remove /dev/sda1
Dodanie dysków z utworzoną macierzą na innym komputerze:
root@server: mdadm --assemble --scan