Remplacer un disque dur défaillant en miroir RAID1 soft

Publié le 08 septembre 2013 par Rumbaya

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?


Rating: 0.0/5 (0 votes cast)