De l'art de reconstruire les miroirs...
Ç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 :-)