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