De l'art de reconstruire les miroirs...

Sommaire

Ça y est, c’est fait, l’un des disques qui composait votre belle partition en RAID 1 vient de tomber.

Bon, ça devait bien arriver un jour, mais maintenant, on fait quoi ?

Pour l’exemple, je supposerai que vous disposez de deux partitions RAID 1 (md0 et md1), construite à partir des partitions 1 et 2 des deux premiers disques (sda1 et sdb1 pour md0, sda2 et sdb2 pour md1).

Identifier le disque

Pour commencer, il faut identifier le disque à l’origine de tout ça :

# cat /proc/mdstat
Personalities : [raid1] 
md0 : active raid1 sda1[0]
      31246272 blocks [2/1] [U_]

md1 : active raid1 sda2[0] sdb2[0]
      31246272 blocks [2/2] [UU]
   
unused devices: <none>

Le miroir sda1 de md0 est toujours là, mais il est tout seul.

Jetons maintenant un œil au journal système :

# grep md0 /var/log/syslog
kernel: [  954.420430] md/raid1:md0: Disk failure on sdb1, disabling device.
kernel: [  954.420432] md/raid1:md0: Operation continuing on 1 devices.
mdadm[1948]: Fail event detected on md device /dev/md0, component device /dev/sdb1
mdadm[1948]: SpareActive event detected on md device /dev/md0, component device /dev/sdb1

Là, pas de doute, suite à un problème sur la partition sdb1, le système l’a enlevé de l’ensemble RAID.

Avant de continuer, récupérons le numéro de série du disque sdb :

 # smartctl -i /dev/sdb
 smartctl 5.39b 2010-05-11 r3120 \[x86_64-unknown-linux-gnu\] (local build)
 Copyright (C) 2002-10 by Bruce Allen, http://smartmontools.sourceforge.net
 
 === START OF INFORMATION SECTION ===
 Model Family:     SAMSUNG SpinPoint T166 series
 Device Model:     SAMSUNG HD501LJ
 Serial Number:    S0MUJ1MPC07654
 Firmware Version: CR100-12
 User Capacity:    500 107 862 016 bytes
 Device is:        In smartctl database [for details use: -P show]
 ATA Version is:   8
 ATA Standard is:  ATA-8-ACS revision 3b
 Local Time is:    Mon Aug 15 17:10:36 2011 CEST
 SMART support is: Available - device has SMART capability.
 SMART support is: Enabled

Connaître le numéro de série permettra d’être sûr de retirer le bon disque (au lieu de retirer le disque qui marche).

Retirer les partitions toujours actives

Le second ensemble RAID est toujours là. Il utilise une partition de notre disque défectueux.

Pour éviter les problèmes, nous allons la retirer :

# mdadm /dev/md1 --fail /dev/sdb2
# mdadm /dev/md1 --remove /dev/sdb2

Nous avons donc maintenant :

# __cat /proc/mdstat__
Personalities : [raid1] 
md0 : active raid1 sda1[0]
      31246272 blocks [2/1] [U_]
 
md1 : active raid1 sda2[0]
      31246272 blocks [2/1] [U_]
    
unused devices: <none>

Plus aucune partition n’utilise le disque sdb.

Démonter l’ancien disque et installer le nouveau

Là, à vous de jouer. Surtout, vérifiez avec le numéro de série que vous retirez bien le bon disque :-)

Partitionner le nouveau disque

Votre nouveau disque est en place.

Si vous aviez utilisé un partitionnement identique pour vos deux disques (ce que je vous recommande), il vous suffit maintenant de recopier la table de partition du disque sda sur le nouveau disque (sdb) :

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

Hum… Ne vous trompez pas de disque… Surtout pas…

Reconstruire le RAID

C’est presque fini. Pour terminer, il suffit d’insérer les nouvelles partitions dans l’ensemble RAID :

# mdadm /dev/md0 --add /dev/sdb1
# mdadm /dev/md1 --add /dev/sdb2

Jetons un œil au résultat :

# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sda1[0] sdb1[2]
      31246272 blocks [2/1] [U_]
      [>....................]  recovery =  0.0% (1024/31246272) finish=857.8min speed=8618K/sec
 
md1 : active raid1 sda2[0] sdb2[2]
      31246272 blocks [2/1] [U_]
              resync=DELAYED
 
unused devices: <none>

Il ne reste plus qu’à surveiller la reconstruction avec un petit :

# watch cat /proc/mdstat

Et voilà. C’est fini !

Enfin, quand même, si vous avez besoin de redémarrer, attendez la fin de reconstruction du RAID :-)