Wymiana dysku software raid linux.
W przypadku uszkodzenia dysku fizycznego należy go wymienić i odbudować macierz RAID.
Status wszystkich macierzy RAID możemy zobaczyć poprzez wyświetlanie wpisów /proc/mdstat
a więc wpisujemy komendę:
cat /proc/mdstat
Literki U oznaczają:
UU – macierz RAID jest sprawna
U lub U – dysk został usunięty z macierzy
Przykładowy wynik danych:
Personalities : [raid1] md0 : active raid1 sdc1[1] sdb1[0] 110099392 blocks [2/2] [UU] bitmap: 0/1 pages [0KB], 65536KB chunk unused devices:
Na tym przykładzie możemy wywnioskować, że:
1. Wszystkie macierze software RAID na tym serwerze są sprawne – znaczniki [UU],
2. Na serwerze jest 1 macierz RAID (md0).
3. Macierz RAID jest aktywna i działa w trybie RAID1.
Aby uzyskać pełniejsze dane na temat stanu konkretnej macierzy wydajemy komendę:
mdadm -D /dev/md0
gdzie md0 to nazwa macierzy, o którą pytamy.
I otrzymujemy wynik:
/dev/md0: Version : 0.90 Creation Time : Wed Jan 2 03:12:03 2019 Raid Level : raid1 Array Size : 110099392 (105.00 GiB 112.74 GB) Used Dev Size : 110099392 (105.00 GiB 112.74 GB) Raid Devices : 2 Total Devices : 2 Preferred Minor : 0 Persistence : Superblock is persistent Intent Bitmap : Internal Update Time : Wed Jan 2 04:44:43 2019 State : clean Active Devices : 2 Working Devices : 2 Failed Devices : 0 Spare Devices : 0 Consistency Policy : bitmap UUID : f8980145:b67d061f:bfe78010:bc810f04 (local to host localhost.localdomain) Events : 0.450 Number Major Minor RaidDevice State 0 8 17 0 active sync /dev/sdb1 1 8 33 1 active sync /dev/sdc1
Jak widzimy RAID jest sprawny.
W przypadku gdyby jeden dysk był uszkodzony wpis w wierszu State: miałby status degraded. Jeżeli dysk ulega awarii system automatycznie oznaczy go jako uszkodzony. Jeżeli by się tak nie stało możemy zrobić to sami wydajać komendę:
mdadm -d /dev/md0 /dev/sdc1
gdzie /dev/md0 – to nazwa macierzy RAID, która uległa uszkodzeniu,
a /dev/sdc1 to nazwa urządzenia/dysku, które uległo uszkodzeniu i system ma je oznaczyć jako wadliwe.
Po takiej operacji szczegóły macierzy RAID to:
/dev/md0: Version : 0.90 Creation Time : Wed Jan 2 03:12:03 2019 Raid Level : raid1 Array Size : 110099392 (105.00 GiB 112.74 GB) Used Dev Size : 110099392 (105.00 GiB 112.74 GB) Raid Devices : 2 Total Devices : 2 Preferred Minor : 0 Persistence : Superblock is persistent Intent Bitmap : Internal Update Time : Wed Jan 2 05:45:19 2019 State : clean, degraded Active Devices : 1 Working Devices : 1 Failed Devices : 1 Spare Devices : 0 Consistency Policy : bitmap UUID : f8980145:b67d061f:bfe78010:bc810f04 (local to host localhost.localdomain) Events : 0.452 Number Major Minor RaidDevice State 0 8 17 0 active sync /dev/sdb1 - 0 0 1 removed 2 8 33 - faulty /dev/sdc1
Dysk sdc jest oznaczony jako wadliwy.
Następnie usuwany wadliwy dysk.
mdadm -r /dev/md0 /dev/sdc1
Teraz możemy podmienić wadliwy dysk. I ponownie uruchomić serwer. Jeżeli oba dyski są identyczne możemy skopiować układ partycji. W naszym przypadku dyskiem uszkodzonym był dysk sdc, a dobrym sdb, w związku z tym wykonujemy backup mbr z dysku sdb do pliku
sfdisk --dump /dev/sdb > sdb_mbr.bak
i zaczytujemy go do dysku sdc:
sfdisk /dev/sdc < sdb_mbr.bak
Informujemy kernel o zmianach za pomocą komendy:
partprobe
Ostatecznie można ponownie uruchomić serwer.
Po wykonaniu polecenia:
fdisk -l
układ partycji powinien być identyczny.
Disk /dev/sdb: 112.7 GB, 112742891520 bytes, 220200960 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos Disk identifier: 0x47a25a66 Device Boot Start End Blocks Id System /dev/sdb1 2048 220200959 110099456 fd Linux raid autodetect Disk /dev/sdc: 112.7 GB, 112742891520 bytes, 220200960 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos Disk identifier: 0xf96a16d5 Device Boot Start End Blocks Id System /dev/sdc1 2048 220200959 110099456 fd Linux raid autodetect Disk /dev/mapper/centos-root: 53.7 GB, 53687091200 bytes, 104857600 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes
Na sam koniec dodajemy nowy dysk do macierzy RAID.
mdadm /dev/md0 --add /dev/sdc1
Aby sprawdzić stan synchronizacji macierzy znowu podglądamy proces mdstat
cat /proc/mdstat
I czekamy na zakończenie synchronizacji dysków.
W naszym przypadku około 30 minut.
Personalities : [raid1] md0 : active raid1 sdc1[2] sdb1[0] 110099392 blocks [2/1] [U_] [>....................] recovery = 0.1% (183552/110099392) finish=29.9min speed=61184K/sec bitmap: 0/1 pages [0KB], 65536KB chunk