Reconstruire un RAID logiciel (Linux)

Nous vous montrons ici comment reconstruire un RAID logiciel après avoir remplacé le disque dur défectueux.

Remarque

Après le remplacement du disque dur, il se peut qu'il soit reconnu comme sdc. Cela se produit toujours lors de l'échange de données via Hot-Swap. Pour que le disque soit à nouveau reconnu comme sda ou sdb, un redémarrage est nécessaire.

Exemple de scénario

Dans cet article, nous prenons comme exemple la configuration suivante :

# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sda1[0] sdb1[1]
4194240 blocks [2/2] [UU]

md3 : active raid1 sda3[0] sdb3[1]
1458846016 blocks [2/2] [UU]

Il y a deux Arrays :

/dev/md1

/dev/md3 pour le journal. Partitions /var /usr /home

Typiquement, avec sda2 et sdb2, il y a deux partitions swap qui n'appartiennent pas au RAID.

Restaurer le RAID

La procédure suivante dépend si le disque dur 1 (sda) ou le disque dur 2 (sdb) a été remplacé :

Cas 1 : Le disque dur 2 a été remplacé

Si le deuxième disque dur (sdb) a été remplacé et qu'un redémarrage a déjà été effectué, il se peut que le disque dur soit reconnu et monté correctement. Si tel est le cas, aucune autre étape n'est nécessaire en dehors de l'activation de la partition swap, puisqu'une reconstruction est déjà en cours.

Vous pouvez vérifier si la reconstruction est déjà en cours en utilisant mdstat :

cat /proc/mdstat
Personalities : [raid1]
read_ahead 1024 sectors
md3 : active raid1 sdb1[1] sda1[0]
102208 blocks [2/2] [UU]

md1 : active raid1 sdb3[1] sda3[0]
119684160 blocks [2/1] [U_]
[>....................] recovery = 0.2% (250108/119684160) finish=198.8min speed=10004K/sec
unused devices: <none>

Dans cet exemple, la reconstruction est déjà en cours. [U_] ou [_U] vous indique qu'un disque dur n'est pas (encore) synchrone. Si la matrice RAID est intacte, elle indique [UU].

Si aucune reconstruction n'est visible ici, vous devez monter manuellement le disque dur et démarrer la reconstruction.

Copiez d'abord manuellement les tables de partitions du premier au deuxième disque dur. Ceci se fait avec cette commande :

sfdisk -d /dev/sda | sfdisk /dev/sdb

Vous devrez peut-être utiliser l'option --force :

sfdisk -d /dev/sda | sfdisk --force /dev/sdb

Ensuite, vous pouvez utiliser fdisk -l pour vérifier si le deuxième disque dur est maintenant divisé de la même manière que le premier.

Après avoir restauré le partitionnement, vous pouvez insérer à nouveau les différentes parties du disque dur dans le RAID :

mdadm /dev/md1 -a /dev/sdb1
mdadm /dev/md3 -a /dev/sdb3

Vous pouvez désormais ignorer le résultat. Il est seulement important que la reconstruction s'exécute sous /proc/mdstat par la suite.

Une fois la reconstruction terminée, vous pouvez activer la partition swap à l'aide des commandes suivantes :

mkswap /dev/sdb2
swapon -a
Cas 2 : Le disque dur 1 a été remplacé

Si le disque dur 1 (sda) a été remplacé, vous devez vérifier si le disque dur a été correctement reconnu et éventuellement effectuer un redémarrage.

Ensuite, démarrez le serveur dans le système de secours et effectuez les étapes suivantes :

Tout d'abord, copiez les tables de partitions sur le nouveau disque dur (vide) :

sfdisk -d /dev/sdb | sfdisk /dev/sda

(Vous devrez peut-être utiliser l'option --force)

Ajoutez maintenant les partitions au RAID :

mdadm /dev/md1 -a /dev/sda1
mdadm /dev/md3 -a /dev/sda3

Maintenant vous pouvez suivre la reconstruction du RAID avec cat /proc/mdstat.

Montez ensuite les partitions var, usr et home :

mount /dev/md1 /mnt
mount /dev/mapper/vg00-var /mnt/var
mount /dev/mapper/vg00-usr /mnt/usr
mount /dev/mapper/vg00-home /mnt/home

Pour que Grub puisse être installé ultérieurement sans erreurs, montez aussi proc, sys et dev :

mount -o bind /proc /mnt/proc
mount -o bind /sys /mnt/sys
mount -o bind /dev /mnt/dev

Après avoir monté les partitions, passez à l'environnement chroot et installez Grub Bootloader :

chroot /mnt
grub-install /dev/sda 

Quittez Chroot avec Exit et démontez tous les disques durs :

umount -a     

Attendez que le processus de reconstruction soit terminé, puis redémarrez le serveur sur le système normal.

Enfin, vous devez activer la partition swap à l'aide des commandes suivantes :

mkswap /dev/sda2
swapon -a