Vervangen kapotte disk in RAID

  LVM / filesystemen / RAID / DISK

Vervangen van een kapotte Hard Disk in een Software RAID array

Dit document beschrijft het vervangen van een Harddisk in een software RAID array. Dit document kan gebruikt worden bij een raid 1 array maar ook voor een raid 5. In dit voorbeeld had ik een kapotte harddisk in een server met 4 disken van 1,5TB, met daarop een raid 1 configuratie (/boot) en raid 5 voor (overige filesystem (lvm)). het systeem starten op met de melding dat het het een degraded raid array had gedetecteerd, door op op y te drukken kon het systeem gewoon gestart worden. Na controle van de status van de array waren wel alle disken in gebruik en waren er geen failed disken. In de syslog waren wel veel disk errors terug te vinden. De disk was dus aan vervanging toe.

Inrichting

Dit systeem is als volgt ingericht. we hebben 4 disken van 1,5TB. alle disken hebben 2 partitions.

sda1 144553 (141MB) - sda2 1464991447 (1,36TB)
sdb1 144553 (141MB) - sdb2 1464991447 (1,36TB)
sdc1 144553 (141MB) - sdc2 1464991447 (1,36TB)
sdd1 144553 (141MB) - sdd2 1464991447 (1,36TB)

Omdat je niet kan booten van een software raid5 is er tussen sda1 en sdb2 een RAID1 array gemaakt md0

sda1 + sdb1 = md0 (RAID1) 

De 4 grote partitie zijn samen gevoegd tot 1 grote RAID5 partitie. zonder spare disk we willen de maximale ruimte beschikbaar hebben.

sda2 + sdb2 + sdc2 + sdd2 = md1 (RAID5 zonder spare)

Hoe zien we of er een disk kapot is?

In 1 van de automatische maandelijks checks was er al een melding geweest van mogelijke problemen. De RAID status gaf echter geen problemen. In de Syslog waren wel media error gelogd van sda. Na een upgrade moest het systeem opnieuwe gestarte worden, het systeem starten op met de melding dat het het een degraded raid array had gedetecteerd, door op op y te drukken kon het systeem gewoon gestart worden. Na controle van de status van de array waren wel alle disken wel weer actief, mdadm gaf geen failed disken. In de syslog waren wel weer veel disk errors terug te vinden. hoewel de software RAID wel goed leek te functioneren is er besloten om de disk toch maar te vervangen, de gevens op dit systeem zijn te belangrijk om risico’s mee te lopen.

Normaal gesproken kan je een degraded disk ook herkennen aan de hand van de mdstat output. gebruik bv cat /proc/mdstat om de status te bekijken.

$ cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sda1[2] sdb1[1]
      144448 blocks [2/1] [UU]

md1 : active raid5 sda2[4](F) sdc2[1] sdb2[2] sdd2[3]
      4394974080 blocks level 5, 64k chunk, algorithm 2 [4/3] [_UUU]

in plaats van [UU] zie je nu een [_U] dat houd in dat je een degraded array hebtif you have a degraded RAID1 array. '”`UNIQ–google-00000002-QINU`”‘

Verwijderen van een Failed Disk

We gaan dus /dev/sda vervangen, voordat we dat kunnen doen moeten we eerst alle partitions van /dev/sda uit beide raid configuratie’s halen. voordat we kunnen verwijderen moeten we hem eerst /dev/sda1 en /dev/sda2 markeren als failed.

# mdadm --manage /dev/md0 --fail /dev/sda1
mdadm: set /dev/sda0 faulty in /dev/md0
#
# mdadm --manage /dev/md1 --fail /dev/sda2
mdadm: set /dev/sda2 faulty in /dev/md1

Je kan de status weer controleren met cat /proc/mdstat maar je kan ook mdadm gebruiken. Bij cat /proc/mdstat zul je nu in beide array’s 1 U missen en bij de verwijderde partitie zal er een (F) achter staan.

$ sudo mdadm --detail /dev/md1
/dev/md1:
        Version : 00.90
  Creation Time : Thu Feb 18 15:24:13 2010
     Raid Level : raid5
     Array Size : 4394974080 (4191.37 GiB 4500.45 GB)
  Used Dev Size : 1464991360 (1397.12 GiB 1500.15 GB)
   Raid Devices : 4
  Total Devices : 4
Preferred Minor : 1
    Persistence : Superblock is persistent

    Update Time : Mon Jul 26 21:45:32 2010
          State : active, degraded
 Active Devices : 3
Working Devices : 3
 Failed Devices : 1
  Spare Devices : 0

         Layout : left-symmetric
     Chunk Size : 64K

           UUID : 9b4567c4:f05a97c3:c055aef6:0916ba60
         Events : 0.1312682

    Number   Major   Minor   RaidDevice State
       0       0        0        0      removed
       1       8       34        1      active sync   /dev/sdc2
       2       8       18        2      active sync   /dev/sdb2
       3       8       50        3      active sync   /dev/sdd2

       4       8        2        -      faulty spare   /dev/sda2

De disk/partition is nu nog steeds onderdeel van de ARRAY. Om de disk uit de array te halen gebruik je het volgende commando. dit doe je uiteraard voor elke RAID array.

# mdadm --manage /dev/md1 --remove /dev/sda2
mdadm: hot removed /dev/sda2
# mdadm --manage /dev/md0 --remove /dev/sda1
mdadm: hot removed /dev/sda1

De Ouput van cat /proc/mdstat

cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sdc1[1]
      144448 blocks [2/1] [_U]

md1 : active raid5 sdc2[1] sdb2[2] sdd2[3]
      4394974080 blocks level 5, 64k chunk, algorithm 2 [4/3] [_UUU]

unused devices: <none>

De Ouput van mdadm

# mdadm --detail /dev/md0
/dev/md0:
        Version : 00.90
  Creation Time : Thu Feb 18 15:23:58 2010
     Raid Level : raid1
     Array Size : 144448 (141.09 MiB 147.91 MB)
  Used Dev Size : 144448 (141.09 MiB 147.91 MB)
   Raid Devices : 2
  Total Devices : 1
Preferred Minor : 0
    Persistence : Superblock is persistent

    Update Time : Mon Jul 26 21:46:44 2010
          State : clean, degraded
 Active Devices : 1
Working Devices : 1
 Failed Devices : 0
  Spare Devices : 0

           UUID : db890b8f:fd40224d:4dbcc10e:bdacaa8b
         Events : 0.225

    Number   Major   Minor   RaidDevice State
       0       0        0        0      removed
       1       8       33        1      active sync   /dev/sdb1
#
# mdadm --detail /dev/md1
/dev/md1:
        Version : 00.90
  Creation Time : Thu Feb 18 15:24:13 2010
     Raid Level : raid5
     Array Size : 4394974080 (4191.37 GiB 4500.45 GB)
  Used Dev Size : 1464991360 (1397.12 GiB 1500.15 GB)
   Raid Devices : 4
  Total Devices : 3
Preferred Minor : 1
    Persistence : Superblock is persistent

    Update Time : Mon Jul 26 21:47:03 2010
          State : active, degraded
 Active Devices : 3
Working Devices : 3
 Failed Devices : 0
  Spare Devices : 0

         Layout : left-symmetric
     Chunk Size : 64K

           UUID : 9b4567c4:f05a97c3:c055aef6:0916ba60
         Events : 0.1312727

    Number   Major   Minor   RaidDevice State
       0       0        0        0      removed
       1       8       34        1      active sync   /dev/sdc2
       2       8       18        2      active sync   /dev/sdb2
       3       8       50        3      active sync   /dev/sdd2

Dit ziet er verder goed uit we gaan nu het systeem uitzetten om de disk te vervangen. Voor dat ik het systeem uitzet controlleer ik eerst het serienummer van de disk zodat we zeker weten dat we de juiste vervangen. volg SCSI Hard Disk Model, Serie Nummer enz document om achter het serienummer te komen je kan hier eventueel ook type nummer uithalen. '”`UNIQ–google-00000006-QINU`”‘

Systeem uitzetten en de disk vervangen

shutdown -h now

Vervang de kapotte disk en plaats de nieuwe disk in het systeem let er op dat deze disk minmaal even groot is als de oude anders gaat het niet werken.

Als de disk vervangen is gaan we het systeem proberen te booten. als het goed staat de bootloader op 2 disken. waarschijnlijk staat je bios in gesteld dat hij alleen van de eerste disk wilt opstarten. kies daarom vanuit je bios het opstart menu en kies om van de 2 disk te booten. Als dit allemaal niet lukt kan je ook nog van een live CD/DVD opstarten. en vanuit de live CD/DVD de RAID configuratie herstellen.

We gaan vanuit dat het systeem gewoon weer gestart word dus gaan we de RAID array herstellen.

Disk toevoegen

We controleren of we alle disken weer zien. fdisk -l als het goed is zie je de nieuwe disk op de zelfde plaats als de oude, in mijn geval als /dev/sda. als eerste moeten we de partitie table aanmaken op de nieuwe disk. je kan het met de hand doen. met de kans op fouten, maar je kan de partition table ook copieren van een andere disk met sfdisk, een uitgebreide uitleg over het copieren/clonen van de partition table staat in het Clone partition table artikel.

# sfdisk -d /dev/sda | sfdisk /dev/sdb

uiteraard weer een extra controle met fdisk -l of de juiste partition indeling is gemaakt.

De volgende stap is het toevoegen van de partitions aan de juiste RAID array’s.

# mdadm --manage /dev/md0 --add /dev/sda1
mdadm: re-added /dev/sda1
# 
# mdadm --manage /dev/md1 --add /dev/sda2
mdadm: re-added /dev/sda2

Beide array’s worden nu gesynchroniseerd. je kan dit process volgen dmv cat /proc/mdstat

# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md1 : active raid5 sdd2[3] sdb2[1] sda2[0] sdc2[2]
      5860104000 blocks level 5, 64k chunk, algorithm 2 [4/4] [UUUU]
      [===>.................]  resync = 15.2% (298208388/1953368000) finish=362.8min speed=76019K/sec

md0 : active raid1 sda1[1] sdb1[0]
      146368 blocks [2/2] [UU]

unused devices: <none>

Houd er rekening mee dat het rebuilden van dit soort grote array’s nog al wat tijd kan kosten, in dit geval was het systeem ongeveer 18 uur bezig met rebuilden..

Omdat we hier te maken hebben met de eerste disk vergeet niet om grub-install te draaien. om de disk bootable te maken.