Remplacer un disque dur dans un raid en utilisant mdadm

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 !

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

Thème : Overlay par Kaira.