Ce guide va vous montrer comment supprimer un disque failed dans un RAID1 Linux, et le remplacer par un nouveau disque à chaud.
ATTENTION
Faites bien attention à ce que vous faites, certaines commandes peuvent rendre votre système non fonctionnel. Utiliser les commandes seulement après avoir bien compris leurs fonctionnements.
1. Context
J’ai actuellement mon disque /dev/sdb qui est défaillant (smart me remonte de nombreuse erreurs et le disque est dans l’état « Disk Failing« ). Je fais le choix de le changer en prévention.
Les disques /dev/sda et /dev/sdb forme 2 RAID1 /dev/md0 et /dev/md1.
/dev/sda2 + /dev/sdb2 = /dev/md0
/dev/sda3 + /dev/sdb3 = /dev/md1
Voilà à quoi ça ressemble l’arborescence avec la commande lsblk:
lsblk
#sda 8:0 0 223.6G 0 disk
#├─sda1 8:1 0 1M 0 part
#├─sda2 8:2 0 1G 0 part
#│ └─md0 9:0 0 1022M 0 raid1
#│ └─md0p1 259:5 0 1020M 0 part /boot
#└─sda3 8:3 0 220G 0 part
# └─md1 9:1 0 219.9G 0 raid1
# └─md1p1 259:6 0 219.9G 0 part /
#sdb 8:16 0 232.9G 0 disk
#├─sdb1 8:17 0 1M 0 part
#├─sdb2 8:18 0 1G 0 part
#│ └─md0 9:0 0 1022M 0 raid1
#│ └─md0p1 259:5 0 1020M 0 part /boot
#└─sdb3 8:19 0 220G 0 part
# └─md1 9:1 0 219.9G 0 raid1
# └─md1p1 259:6 0 219.9G 0 part /
2. Retirer le disque du RAID
Pour commencer, on va devoir marquer notre disque comme failed.
Nous allons utiliser cette commande:
mdadm --manage /dev/md0 --fail /dev/sdb2
On doit le faire dans les deux RAID, on fait la même chose avec md1.
mdadm --manage /dev/md1 --fail /dev/sdb3
On vérifie avec cette commande que notre disque est bien marqué comme failed.
cat /proc/mdstat
#md1 : active raid1 sda3[1] sdb3[2]
# 230554624 blocks super 1.2 [2/1] [U_]
#
#md0 : active raid1 sda2[2] sdb2[3]
# 1046528 blocks super 1.2 [2/1] [U_]
On peut observer que dans les deux RAID il y a plus qu’un seul disque d’actif (U_) si les deux disques sont présents et fonctionnels ça serait ceci (UU).
On peut maintenant supprimer notre disque du RAID:
mdadm --manage /dev/md0 --remove /dev/sdb2
mdadm --manage /dev/md1 --remove /dev/sdb3
On peut voir que le disque a bien été supprimé des deux RAID:
cat /proc/mdstat
#md1 : active raid1 sda3[1]
# 230554624 blocks super 1.2 [2/1] [U_]
#
#md0 : active raid1 sda2[2]
# 1046528 blocks super 1.2 [2/1] [U_]
3. Remplacer le disque
On peut maintenant, si notre machine le supporte, remplacer à chaud notre disque. Une fois fait, on peut voir le nouveau disque apparaitre sans partitions, nous allons d’abord devoir recréer les partitions avant de reconstruire le RAID.
lsblk
#sda 8:0 0 223.6G 0 disk
#├─sda1 8:1 0 1M 0 part
#├─sda2 8:2 0 1G 0 part
#│ └─md0 9:0 0 1022M 0 raid1
#│ └─md0p1 259:5 0 1020M 0 part /boot
#└─sda3 8:3 0 220G 0 part
# └─md1 9:1 0 219.9G 0 raid1
# └─md1p1 259:6 0 219.9G 0 part /
#sdb 8:16 0 232.9G 0 disk
On va d’abord avoir besoin de l’utilitaire gdisk, si vous ne l’avez pas déjà:
apt install gdisk
On commence par backup nos partitions, cette étape n’est pas obligatoire, mais très fortement recommandée. Nous allons utiliser gdisk pour écrire le schéma des partitions dans un fichier dans notre /root.
sgdisk --backup=/root/sda.partitiontable /dev/sda
sgdisk --backup=/root/sdb.partitiontable /dev/sdb
Si un problème arrive à un moment, il est possible de restaurer le schéma de partition avec l’option –load-backup.
Maintenant que les backups sont faits, on peut copier le shéma de partition de sda vers sdb:
sgdisk -R /dev/sdb /dev/sda
On doit maintenant randomiser le GUID de notre nouveau disque, car il a été copié de sda pendant la copie du shéma:
sgdisk -G /dev/sdb
On vérifie que les partions ont bien été copiés:
lsblk
#sda 8:0 0 223.6G 0 disk
#├─sda1 8:1 0 1M 0 part
#├─sda2 8:2 0 1G 0 part
#│ └─md0 9:0 0 1022M 0 raid1
#│ └─md0p1 259:5 0 1020M 0 part /boot
#└─sda3 8:3 0 220G 0 part
# └─md1 9:1 0 219.9G 0 raid1
# └─md1p1 259:6 0 219.9G 0 part /
#sdb 8:16 0 232.9G 0 disk
#├─sdb1 8:17 0 1M 0 part
#├─sdb2 8:18 0 1G 0 part
#└─sdb3 8:19 0 220G 0 part
4. Ajouter le disque dans le RAID
Maintenant que les partions sont créées on peut reconstruire notre RAID:
mdadm --manage /dev/md0 --add /dev/sdb2
mdadm --manage /dev/md1 --add /dev/sdb3
La synchronisation se lance, vous pouvez suivre son avancement via la commande:
cat /proc/mdstat
Bien joué, vous avez remplacé votre disque dur !