Avec cette même méthode de remplacement d’un disque RAID1, en cas d’incendie : Créer un disque dur RAID1 /dev/sda et le stocker sur un autre site
Le RAID 1 ou mirroring consiste à utiliser n disques redondants (au minimum 2) et à copier sur chacun les mêmes données. Sa capacité est égale à celle du plus petit disque dur du RAID, au niveau de la fiabilité par contre, le gain est évident. Elle accepte une défaillance de n-1 disques. Ainsi, si nous mettons 4 disques de 200Go, nous aurons 200Go d’espace disponible et on pourra perdre jusqu’à 3 disques durs dans le RAID avant de perdre des données. Malheureusement les coûts sont proportionnels au nombre de mirror alors que la capacité reste identique.
Voici comment retirer un disque défectueux d’un RAID1 Linux (software RAID), et comment ajouter un nouveau disque dur dans le RAID1 sans perte de données.
Cas 1 (ci-dessous) avec des disques durs dont la table de partitions est au format MBR / MS-DOS
MBR – MS-DOS : howtoforge.com/replacing_hard_disks_in_a_raid1_array
Cas 2 : Si la table de partition des disques durs est au format GPT au lieu de MBR/MS-DOS :
→ Utiliser ci-dessous la commande gdisk au lieu de la commande sfdisk.
GPT partitions : howtoforge.com/tutorial/linux-raid-replace-failed-harddisk
1 Note préliminaire
Dans l’exemple suivant, nous avons 2 disques durs : /dev/sda and /dev/sdb,
avec leurs partitions respectives : /dev/sda1 et /dev/sda2, /dev/sdb1 et /dev/sdb2.
/dev/sda1 + /dev/sdb1 = /dev/md0 RAID1 array /dev/sda2 + /dev/sdb2 = /dev/md1 RAID1 array |
Exemple de panne ci-dessous : /dev/sdb est en panne et on va le remplacer par un disque neuf ou vide
Si c’est au contraire /dev/sda qui est en panne, inverser les commandes ci-dessous (sda ↔ sdb)
2 Comment savoir quel disque est en panne ?
Si un disque est en panne,
– des messages d’erreurs sont écrits dans le fichier log : /var/log/messages ou /var/log/syslog.
-ou éxecuter la commande : # cat /proc/mdstat
et au lieu d’avoir normalement [UU] on voit [U_] cela signifie que le RAID1 a été dégradé.
3 Retirer le disque en panne
To remove /dev/sdb, we will mark /dev/sdb1 and /dev/sdb2 as failed and remove them from their respective RAID arrays (/dev/md0 and /dev/md1).
First we mark /dev/sdb1 , /dev/sdb2 … as failed:
# mdadm --manage /dev/md0 --fail /dev/sdb1 # mdadm --manage /dev/md1 --fail /dev/sdb2 # cat /proc/mdstat Personalities : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10] md0 : active raid1 sda1[0] sdb1[2](F) 24418688 blocks [2/1] [U_] md1 : active raid1 sda2[0] sdb2[1](F) 24418688 blocks [2/2] [UU]
Then we remove /dev/sdb1, /dev/sdb2 … from /dev/md0:
# mdadm --manage /dev/md0 --remove /dev/sdb1 mdadm: hot removed /dev/sdb1 # mdadm --manage /dev/md1 --remove /dev/sdb2 mdadm: hot removed /dev/sdb1 # cat /proc/mdstat Personalities : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10] md0 : active raid1 sda1[0] 24418688 blocks [2/1] [U_] md1 : active raid1 sda2[0] 24418688 blocks [2/1] [U_]
Eteindre le serveur pour remplacer le disque physique :
# shutdown -h now
and replace the old /dev/sdb hard drive with a new one (it must have at least the same size as the old one – if it’s only a few MB smaller than the old one then rebuilding the arrays will fail).
4 Ajouter le nouveau disque dur dans le RAID1
After you have changed the hard disk /dev/sdb, boot the system.
The first thing we must do now is to create the exact same partitioning as on /dev/sda. We can do this with one simple command :
# sfdisk -d /dev/sda | sfdisk /dev/sdb
You can run : fdisk -l ou lsblk to check if both hard drives have the same partitioning now.
Next we add /dev/sdb1 to /dev/md0 and /dev/sdb2 to /dev/md1:
# mdadm --manage /dev/md0 --add /dev/sdb1 mdadm: re-added /dev/sdb1 # mdadm --manage /dev/md1 --add /dev/sdb2 mdadm: re-added /dev/sdb2
Après la commande –add les arays (/dev/md0 , /dev/md1 …) commencent à se synchroniser …
Run cat /proc/mdstat to see when it’s finished.
During the synchronization the output will look like this:
# cat /proc/mdstat Personalities : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10] md0 : active raid1 sda1[0] sdb1[1] 24418688 blocks [2/1] [U_] [=>..............] recovery = 9.9% (2423168/24418688) finish=2.8min speed=127535K/sec md1 : active raid1 sda2[0] sdb2[1] 24418688 blocks [2/1] [U_] [=>..............] recovery = 6.4% (1572096/24418688) finish=1.9min speed=196512K/sec
Lorsque la synchronisation automatique est terminée, on obtient l’affichage suivant [UU] :
# cat /proc/mdstat Personalities : [linear] [multipath] [raid0] [raid1] [raid5] [raid4] [raid6] [raid10] md0 : active raid1 sda1[0] sdb1[1] 24418688 blocks [2/2] [UU] md1 : active raid1 sda2[0] sdb2[1] 24418688 blocks [2/2] [UU]
Vous avez remplacé le disque dur /dev/sdb avec succès !