Remplacer un disque défaillant dans un RAID1
Simulez une panne de disque puis remplacez-le : marquez les partitions comme défaillantes, retirez-les du RAID, recopiez la table de partitions du disque sain vers le nouveau disque, supprimez d’anciennes superblocks, ajoutez les partitions au RAID et attendez la resynchronisation. Enfin, installez le chargeur d’amorçage sur les deux disques. Ce guide détaille chaque commande, des vérifications et des solutions aux erreurs fréquentes.
Contexte et objectif
Objectif : montrer comment tester une panne de disque et remplacer un disque défaillant dans un ensemble RAID1 géré par mdadm. RAID1 duplique (mirroring) les données sur deux disques. Si un disque tombe en panne, le système continue de fonctionner avec l’autre disque. Le but ici est de remettre un disque neuf en service et de resynchroniser le miroir.
Définition courte : RAID1 — miroir de blocs entre plusieurs disques pour tolérance de panne.
Important : adaptez les noms de périphériques (/dev/sda, /dev/sdb, /dev/md0…) à votre machine. Sauvegardez les données critiques avant toute manipulation sur des systèmes de production.
Prérequis
- Accès root ou sudo sur le serveur.
- Outils : mdadm, sfdisk, fdisk, grub/installateur de boot, dd (optionnel).
- Disque de remplacement de taille égale ou supérieure.
1. Simuler une panne de disque
Vous pouvez soit mettre hors tension et retirer physiquement le disque, soit simuler une défaillance logiciellement. Dans l’exemple, /dev/sdb est déclaré défaillant.
Exécutez :
mdadm --manage /dev/md0 --fail /dev/sdb1
mdadm --manage /dev/md1 --fail /dev/sdb2
mdadm --manage /dev/md2 --fail /dev/sdb3
mdadm --manage /dev/md0 --remove /dev/sdb1
mdadm --manage /dev/md1 --remove /dev/sdb2
mdadm --manage /dev/md2 --remove /dev/sdb3
Puis arrêtez la machine si vous préférez remplacer physiquement le disque :
shutdown -h now
Remplacez le disque défaillant par un neuf et remontez la machine. Si vous avez simulé la panne en retirant /dev/sdb, installez maintenant un nouveau disque en tant que /dev/sdb. Si vous aviez retiré /dev/sda, remettez le bon disque en /dev/sda et connectez le nouveau en /dev/sdb selon votre architecture.
2. Vérifier l’état du RAID après redémarrage
Après le boot, vérifiez l’état :
cat /proc/mdstat
Exemple attendu en cas d’état dégradé :
[root@server1 ~]# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sda1[0]
200704 blocks [2/1] [U_]
md1 : active raid1 sda2[0]
522048 blocks [2/1] [U_]
md2 : active raid1 sda3[0]
9759360 blocks [2/1] [U_]
unused devices:
[root@server1 ~]#
Vérifiez aussi la sortie de fdisk pour voir l’état des tables de partitions :
fdisk -l
Exemple fourni :
[root@server1 ~]# fdisk -l
Disk /dev/sda: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sda1 * 1 25 200781 fd Linux raid autodetect
/dev/sda2 26 90 522112+ fd Linux raid autodetect
/dev/sda3 91 1305 9759487+ fd Linux raid autodetect
Disk /dev/sdb: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/sdb doesn't contain a valid partition table
Disk /dev/md2: 9993 MB, 9993584640 bytes
2 heads, 4 sectors/track, 2439840 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
Disk /dev/md2 doesn't contain a valid partition table
Disk /dev/md1: 534 MB, 534577152 bytes
2 heads, 4 sectors/track, 130512 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
Disk /dev/md1 doesn't contain a valid partition table
Disk /dev/md0: 205 MB, 205520896 bytes
2 heads, 4 sectors/track, 50176 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
Disk /dev/md0 doesn't contain a valid partition table
[root@server1 ~]#
3. Copier la table de partitions du disque sain vers le nouveau disque
Copiez la table de partitions de /dev/sda vers /dev/sdb :
sfdisk -d /dev/sda | sfdisk /dev/sdb
Si sfdisk se plaint (signature MSDOS absente), vous pouvez forcer :
sfdisk -d /dev/sda | sfdisk --force /dev/sdb
Exemple d’échanges :
[root@server1 ~]# sfdisk -d /dev/sda | sfdisk /dev/sdb
Checking that no-one is using this disk right now ...
OK
Disk /dev/sdb: 1305 cylinders, 255 heads, 63 sectors/track
sfdisk: ERROR: sector 0 does not have an msdos signature
/dev/sdb: unrecognized partition table type
Old situation:
No partitions found
New situation:
Units = sectors of 512 bytes, counting from 0
Device Boot Start End #sectors Id System
/dev/sdb1 * 63 401624 401562 fd Linux raid autodetect
/dev/sdb2 401625 1445849 1044225 fd Linux raid autodetect
/dev/sdb3 1445850 20964824 19518975 fd Linux raid autodetect
/dev/sdb4 0 - 0 0 Empty
Successfully wrote the new partition table
Re-reading the partition table ...
If you created or changed a DOS partition, /dev/foo7, say, then use dd(1)
to zero the first 512 bytes: dd if=/dev/zero of=/dev/foo7 bs=512 count=1
(See fdisk(8).)
[root@server1 ~]#
Notes : sfdisk recopie la géométrie et les marqueurs RAID (type fd). Si le disque de remplacement est plus grand, les partitions répliquées conservent la taille initiale ; vous pouvez redimensionner ultérieurement.
4. Supprimer d’éventuels superblocks RAID sur le nouveau disque
Avant d’ajouter les partitions au RAID, nettoyez toute signature RAID existante :
mdadm --zero-superblock /dev/sdb1
mdadm --zero-superblock /dev/sdb2
mdadm --zero-superblock /dev/sdb3
Cette étape évite que le nouveau disque conserve des métadonnées RAID incohérentes.
5. Ajouter les partitions au RAID
Ajoutez les partitions au miroir :
mdadm -a /dev/md0 /dev/sdb1
mdadm -a /dev/md1 /dev/sdb2
mdadm -a /dev/md2 /dev/sdb3
Vérifiez immédiatement l’état :
cat /proc/mdstat
Exemple pendant la reconstruction :
[root@server1 ~]# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdb1[1] sda1[0]
200704 blocks [2/2] [UU]
md1 : active raid1 sdb2[1] sda2[0]
522048 blocks [2/2] [UU]
md2 : active raid1 sdb3[2] sda3[0]
9759360 blocks [2/1] [U_]
[=======>.............] recovery = 39.4% (3846400/9759360) finish=1.7min speed=55890K/sec
unused devices:
[root@server1 ~]#
Attendez la fin de la resynchronisation. Quand la reconstruction est terminée, vous devriez voir [UU] sur chaque raid.
[root@server1 ~]# cat /proc/mdstat
Personalities : [raid1]
md0 : active raid1 sdb1[1] sda1[0]
200704 blocks [2/2] [UU]
md1 : active raid1 sdb2[1] sda2[0]
522048 blocks [2/2] [UU]
md2 : active raid1 sdb3[1] sda3[0]
9759360 blocks [2/2] [UU]
unused devices:
[root@server1 ~]#
6. Réinstaller le chargeur d’amorçage (GRUB)
Pour garantir que la machine peut démarrer si un disque échoue, installez GRUB sur les deux disques. Lancez grub (ou grub-install selon votre distribution interactive) et exécutez :
grub
root (hd0,0)
setup (hd0)
root (hd1,0)
setup (hd1)
quit
Sur certaines distributions modernes utilisez grub-install :
grub-install /dev/sda
grub-install /dev/sdb
Note : la procédure exacte dépend de la version de GRUB et de la distribution. Vérifiez la documentation locale si grub-install diffère.
7. Vérifications finales
- cat /proc/mdstat doit montrer tous les disques actifs avec [UU].
- fdisk -l doit montrer les mêmes partitions sur les deux disques.
- Vérifiez /var/log/messages ou journalctl pour des erreurs mdadm ou disque.
- Testez un reboot pour vérifier que le système démarre depuis chacun des disques (si possible, testez en retirant temporairement un disque).
Critères d’acceptation
- Le RAID1 affiche [UU] pour chaque array dans /proc/mdstat.
- Les partitions sur /dev/sda et /dev/sdb correspondent (mêmes tailles et types).
- Le chargeur d’amorçage est installé sur les deux disques et le système peut démarrer.
Liste de contrôle administrateur (Opérateur)
- Sauvegarde des données critiques effectuée.
- Remplacement physique du disque réalisé (si applicable).
- Tables de partitions copiées avec sfdisk.
- Superblocks nettoyés avec mdadm –zero-superblock.
- Partitions ajoutées au RAID (mdadm -a).
- Attente de la reconstruction et vérification via /proc/mdstat.
- GRUB installé sur chaque disque.
- Test de reboot effectué.
Mini-méthodologie rapide (séquence d’actions)
- Marquer partitions défaillantes et les retirer du RAID.
- Remplacer le disque matériel ou reconnecter le disque neuf.
- Copier la table de partitions (sfdisk).
- Zero-superblock sur les nouvelles partitions.
- Ajouter les partitions au RAID.
- Attendre la synchronisation.
- Réinstaller le chargeur d’amorçage.
Dépannage — erreurs courantes et solutions
sfdisk: ERROR: sector 0 does not have an msdos signature
Solution : utiliser sfdisk –force ou initialiser le MBR avec dd si vous savez ce que vous faites (ex. dd if=/dev/zero of=/dev/sdb bs=512 count=1), puis retenter la copie.Reconstruction très lente
Causes possibles : I/O saturé, réglage de speed de mdadm, charge système.
Actions : vérifier iostat, réduire autres I/O, vérifier /proc/sys/dev/raid/speed_limit_min et speed_limit_max.Le disque ajouté n’entre pas dans l’array
Vérifiez que le type de partition est 0xfd (Linux raid autodetect) et que la table de partitions a bien été relue (partprobe ou reboot si nécessaire). Assurez-vous d’avoir supprimé d’anciennes superblocks.Problème de démarrage après remplacement
Réinstallez GRUB sur les deux disques et vérifiez l’ordre de boot dans le BIOS/UEFI.
Contre-exemples et limites
- Si plusieurs disques tombent en panne simultanément dans un RAID1 à deux membres, la reconstruction échoue. RAID1 protège contre la perte d’un disque, pas de plusieurs disques en même temps.
- Ne tentez pas ces opérations sur des arrays complexes (RAID5/6) sans plan de sauvegarde et tests préalables.
Approches alternatives
- Utiliser des partitions GPT et gdisk si vos disques sont modernes et que vous préférez GPT plutôt que MBR.
- Utiliser des outils de provisioning/disques (PXE, imaging) pour cloner la table de partitions et le contenu initial si vous avez beaucoup de serveurs à remplacer.
Fiche pratique — chiffres clés
- Taille d’exemple du disque : ~10.7 GB (10 737 418 240 bytes)
- Commandes clés : mdadm, sfdisk, fdisk, grub/grub-install, dd (optionnel)
Glossaire (1 ligne)
- mdadm : utilitaire de gestion des ensembles RAID logiciels sous Linux.
- sfdisk : utilitaire de partitionnement en ligne pour copier/écrire des tables de partitions.
Résumé
Remplacer un disque RAID1 consiste à simuler ou détecter la panne, retirer la partition défaillante, copier la table de partitions sur le disque de remplacement, nettoyer d’éventuelles signatures RAID, ajouter les partitions au miroir et attendre la resynchronisation. Enfin, assurez-vous que GRUB est présent sur chaque disque pour la tolérance de démarrage.
Important : testez la procédure sur un environnement non critique avant de l’exécuter en production.
Liens utiles
- The Software-RAID Howto: http://tldp.org/HOWTO/Software-RAID-HOWTO.html
- CentOS: http://www.centos.org/
Matériaux similaires

Joystick Pokémon GO — guide MocPOGO
RAID1 et LVM — créer et migrer /boot et volumes

Corriger l'erreur de collage des données d'entreprise

Exclure dossiers de la recherche Windows

Transférer des fichiers entre smartphones
