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

Leave a comment