Tristement testé sous Debian Testing « Jessie »
La fiabilité des disques durs n’étant hélas pas à la hausse, il n’y a qu’à voir la baisse des durées de garantie intervenues ces derniers temps, voici un petit mémo sur le remplacement d’un disque défectueux dans un miroir RAID1 soft sous Linux.
La configuration est la suivante :
2 disques /dev/sda et /dev/sdb
2 volumes RAID1, /dev/md0 est constitué de /dev/sda1 et /dev/sdb1, /dev/md1 est constitué de /dev/sda2 et /dev/sdb2
Le disque /dev/sdb est en panne, on peut le voir avec la commande cat /proc/mdstat :
cat /proc/mdstat Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] md1 : active raid1 sda2[0] sdb2[1] 31233920 blocks super 1.2 [2/1] [U_] md0 : active raid1 sda1[0] sdb1[1] 499392 blocks super 1.2 [2/1] [U_] unused devices: <none>
[U_] indique l’indisponibilité des partitions de /dev/sdb. Sur un RAID sain on aurait eu [UU].
Pour chacun des volumes RAID, on va déclarer la partition de /dev/sdb comme étant défectueuse, et ensuite la retirer du volume.
Déclarer /dev/sdb1 défectueuse dans /dev/md0 :
mdadm --manage /dev/md0 --fail /dev/sdb1
On vérifie que la commande a bien été prise en compte :
mdadm -D /dev/md0 [...] Number Major Minor RaidDevice State 0 8 2 0 active sync /dev/sda1 1 0 0 1 removed 1 8 34 - faulty spare /dev/sdb1
On retire maintenant la partition du volume et on vérifie :
mdadm --manage /dev/md0 --remove /dev/sdb1 mdadm -D /dev/md0 [...] Number Major Minor RaidDevice State 0 8 2 0 active sync /dev/sda1 1 0 0 1 removed
On répète l’opération pour le volume /dev/md1 :
mdadm --manage /dev/md1 --fail /dev/sdb2 mdadm --manage /dev/md1 --remove /dev/sdb2
Avant d’éteindre le PC, on vérifie les caractéristiques du disque HS (modèle, numéro de série) avec la commande hdparm -I /dev/sdb. Ça serait ballot de retirer celui qui fonctionne (c’est du vécu!).
C’est le moment d’éteindre la machine et de remplacer le disque par un modèle de capacité au moins égale à l’ancien. Redémarrer ensuite le PC.
On commence par copier la table des partitions de /dev/sda sur le nouveau disque /dev/sdb avec sfdisk. Attention, cette commande d’apparence inoffensive peut détruire toutes les données du disque si les paramètres sont donnés dans le mauvais sens :
sfdisk -d /dev/sda | sfdisk /dev/sdb
Il arrive que sfdisk n’aime pas le schéma de partitions à copier et refuse d’effectuer l’opération. Dans ce cas il faut utilliser l’option –force :
sfdisk -d /dev/sda | sfdisk --force /dev/sdb
Pour les gros disques > 2To avec une table de partitions de type GPT, sfdisk ne fonctionne pas, il faut utiliser la commande sgdisk (installer le paquet gdisk si elle n’est pas disponible) :
sgdisk -R=/dev/sdb /dev/sda sgdisk -G /dev/sdb
On peut maintenant ajouter les partitions du nouveau disque aux volumes RAID :
mdadm --manage /dev/md0 --add /dev/sdb1 mdadm --manage /dev/md1 --add /dev/sdb2
La reconstruction des miroirs démarre, on peut en surveiller la progression avec la commande watch cat /proc/mdstat.
Liens
Replacing A Failed Hard Drive In A Software RAID1 Array
How can I quickly copy a GPT partition scheme from one hard drive to another?