Remplacement d'un disque dur défaillant dans un RAID1 (mdadm)
Ce guide explique comment simuler une panne de disque, remplacer un disque défaillant dans un RAID1 géré par mdadm, recopier la table de partitions, réintégrer le disque neuf et réinstaller le chargeur d’amorçage. Suit un playbook opérationnel, une checklist, des alternatives et un arbre de décision pour choisir la bonne stratégie.
Important : adaptez /dev/sda et /dev/sdb à votre environnement. Sauvegardez toujours les données critiques avant toute opération sur les partitions.
Objectif et variantes de recherche
- Remplacer un disque RAID1 avec mdadm
- Répliquer la table de partitions sur un disque neuf
- Remettre en service un dispositif RAID dégradé
- Réinstaller GRUB après remplacement de disque
8 Tests
Simulons maintenant une panne de disque. Peu importe si vous sélectionnez /dev/sda ou /dev/sdb. Dans cet exemple on suppose que /dev/sdb est défaillant.
Pour simuler la panne, vous pouvez soit arrêter la machine et retirer physiquement /dev/sdb, soit le retirer « à chaud » avec mdadm :
mdadm --manage /dev/md0 --fail /dev/sdb1
mdadm --manage /dev/md1 --fail /dev/sdb5
mdadm --manage /dev/md0 --remove /dev/sdb1
mdadm --manage /dev/md1 --remove /dev/sdb5
Ensuite arrêtez le système :
shutdown -h now
Remplacez le disque par un nouveau /dev/sdb (si vous simuliez /dev/sda, remettez les disques dans les emplacements et connectez le nouveau disque en tant que /dev/sdb) puis démarrez. Le système devrait démarrer sans problème.
Maintenant exécutez :
cat /proc/mdstat
et vous devriez voir un array dégradé :
root@server1:~# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sda5[2]
4989940 blocks super 1.2 [2/1] [U_]
md0 : active raid1 sda1[2]
248820 blocks super 1.2 [2/1] [U_]
unused devices:
root@server1:~#
La sortie de :
fdisk -l
devrait ressembler à l’exemple suivant (ci-dessous). Ces informations confirment que /dev/sdb est vierge ou n’a pas de table de partitions valide :
root@server1:~# fdisk -l
Disk /dev/sda: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0003717c
Device Boot Start End Blocks Id System
/dev/sda1 * 1 32 248832 fd Linux raid autodetect
Partition 1 does not end on cylinder boundary.
/dev/sda2 32 653 4990977 5 Extended
Partition 2 does not end on cylinder boundary.
/dev/sda5 32 653 4990976 fd Linux raid autodetect
Disk /dev/sdb: 5368 MB, 5368709120 bytes
255 heads, 63 sectors/track, 652 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/sdb doesn't contain a valid partition table
Disk /dev/md0: 254 MB, 254791680 bytes
2 heads, 4 sectors/track, 62205 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/md0 doesn't contain a valid partition table
Disk /dev/md1: 5109 MB, 5109698560 bytes
2 heads, 4 sectors/track, 1247485 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/md1 doesn't contain a valid partition table
Disk /dev/dm-0: 4844 MB, 4844421120 bytes
255 heads, 63 sectors/track, 588 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/dm-0 doesn't contain a valid partition table
Disk /dev/dm-1: 264 MB, 264241152 bytes
255 heads, 63 sectors/track, 32 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/dm-1 doesn't contain a valid partition table
root@server1:~#
Copier la table de partitions
Copiez la table de partitions de /dev/sda vers /dev/sdb :
sfdisk -d /dev/sda | sfdisk --force /dev/sdb
Exemple de sortie :
root@server1:~# sfdisk -d /dev/sda | sfdisk --force /dev/sdb
Checking that no-one is using this disk right now ...
Warning: extended partition does not start at a cylinder boundary.
DOS and Linux will interpret the contents differently.
OK
Disk /dev/sdb: 652 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 * 2048 499711 497664 fd Linux raid autodetect
/dev/sdb2 501758 10483711 9981954 5 Extended
/dev/sdb3 0 - 0 0 Empty
/dev/sdb4 0 - 0 0 Empty
/dev/sdb5 501760 10483711 9981952 fd Linux raid autodetect
Warning: partition 1 does not end at a cylinder boundary
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:~#
Nettoyer les méta-données RAID
Après avoir copié la table, supprimez les éventuels en-têtes RAID résiduels sur les partitions du disque neuf :
mdadm --zero-superblock /dev/sdb1
mdadm --zero-superblock /dev/sdb5
Puis ajoutez les partitions au RAID :
mdadm -a /dev/md0 /dev/sdb1
mdadm -a /dev/md1 /dev/sdb5
Vérifiez l’état avec :
cat /proc/mdstat
Exemple pendant la reconstruction :
root@server1:~# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sdb5[3] sda5[2]
4989940 blocks super 1.2 [2/1] [U_]
[========>............] recovery = 44.7% (2233024/4989940) finish=0.2min speed=159501K/sec
md0 : active raid1 sdb1[3] sda1[2]
248820 blocks super 1.2 [2/2] [UU]
unused devices:
root@server1:~#
Attendez la fin de la synchronisation :
root@server1:~# cat /proc/mdstat
Personalities : [raid1]
md1 : active raid1 sdb5[3] sda5[2]
4989940 blocks super 1.2 [2/2] [UU]
md0 : active raid1 sdb1[3] sda1[2]
248820 blocks super 1.2 [2/2] [UU]
unused devices:
root@server1:~#
Réinstaller le chargeur d’amorçage
Installez GRUB sur les deux disques pour garantir que la machine démarre même si l’un des disques échoue au démarrage :
grub-install /dev/sda
grub-install /dev/sdb
C’est terminé. Vous venez de remplacer un disque dur défaillant dans votre RAID1.
Playbook opérationnel (SOP) — Remplacement disque RAID1
- Préparation
- Informer les équipes et planifier une fenêtre si nécessaire.
- Vérifier sauvegardes récentes.
- Noter l’ordre des disques (/dev/sda, /dev/sdb) et l’état des arrays.
- Simulation ou retrait
- Marquer le disque comme défaillant et le retirer du RAID avec mdadm, ou arrêter et retirer physiquement.
- Remplacement matériel
- Insérer le disque neuf.
- Recopie table de partitions
- Utiliser sfdisk -d | sfdisk –force.
- Nettoyage et ajout
- mdadm –zero-superblock puis mdadm -a.
- Surveillance
- Vérifier /proc/mdstat jusqu’à [UU].
- Finalisation
- Réinstaller GRUB sur les deux disques.
- Validation
- Redémarrer et vérifier que le RAID est sain.
Checklist selon rôle
Opérateur
- Confirmer sauvegardes
- Documenter les noms de périphériques
- Exécuter commandes de fail/remove
- Insérer nouveau disque
- Copier table de partitions
- Ajouter au RAID
- Surveiller reconstruction
- Réinstaller GRUB
Administrateur
- Vérifier intégrité des données après resync
- Mettre à jour la documentation d’inventaire
- Vérifier alerting et monitoring
Support matériel
- Vérifier câble, backplane et connectivité
- Remplacer disque si défaillance physique confirmée
Arbre de décision rapide (Mermaid)
flowchart TD
A[RAID dégradé ?] -->|Oui| B{Disque visible par le BIOS ?}
B -->|Non| C[Tester câble / backplane]
C --> D[Remplacer câble ou backplane]
B -->|Oui| E{Partition table présente ?}
E -->|Non| F[Copier table de /dev/sdX]
E -->|Oui| G[Zero-superblock et ajouter au RAID]
G --> H[Attendre resync puis réinstaller GRUB]
A -->|Non| I[Surveiller, pas d'action]
Contre-exemples et situations où cela échoue
- Disque neuf incompatible (taille inférieure à celle attendue) : sfdisk peut écrire une table de partitions qui ne tient pas sur le disque; vérifiez la capacité réelle.
- Contrôleur RAID matériel actif : ces commandes s’appliquent au RAID logiciel (mdadm). Sur contrôleur matériel, utilisez l’outil fourni par le fabricant.
- Table de partitions corrompue sur le disque source : exporter une table corrompue propage l’erreur. Vérifiez la table source avant la copie.
- Partitionnement basé sur GPT et disque initial en MBR : adapter la méthode pour GPT (sgdisk ou parted).
Alternatives
- Utiliser une gestion de volumes (LVM) au-dessus du RAID pour faciliter le redimensionnement et la mobilité des volumes.
- Remplacement à chaud via backplane hot-swap et orchestration automatisée (Ansible playbooks pour mdadm).
- Migration vers RAID matériel si votre infrastructure exige une gestion matérielle centralisée.
Mini-méthodologie — Pourquoi cette approche
- mdadm gère les métadonnées RAID et permet la reconstruction en ligne.
- Copier la table de partitions garantit que les offsets et types de partitions correspondent, évitant des erreurs d’alignement.
- Zero-superblock élimine toute méta-information RAID résiduelle qui empêcherait la réintégration.
Critères d’acceptation
- /proc/mdstat montre tous les arrays avec l’état [UU].
- Les commandes mount et lsblk confirment que les volumes sont accessibles.
- GRUB installé sur les deux disques : grub-install ne renvoie pas d’erreur.
- Aucune erreur dans les logs dmesg ou syslog liés aux disques après resynchronisation.
1‑ligne glossaire
- mdadm : utilitaire Linux pour gérer les ensembles RAID logiciels.
- superblock : métadonnée RAID écrite sur une partition pour identifier son appartenance à un array.
- sfdisk : outil non interactif pour lire/écrire les tables de partitions DOS/MBR.
- GRUB : chargeur d’amorçage GNU utilisé pour démarrer le système.
Notes de sécurité et conformité
- Ne jamais exposer des commandes d’effacement (dd, wipe) sur un disque en production sans sauvegarde.
- Si des données personnelles sont présentes et soumises au RGPD, conservez les journaux d’intervention et informez la personne responsable de la protection des données selon la politique interne.
Résumé
Remplacer un disque dans un RAID1 logiciel consiste à : marquer le disque défaillant, remplacer le matériel, recopier la table de partitions, nettoyer les superblocks éventuels, ajouter le disque au RAID, attendre la reconstruction et réinstaller le chargeur d’amorçage. Suivez la checklist, vérifiez les critères d’acceptation et adaptez la procédure si vous utilisez GPT ou un contrôleur RAID matériel.
9 Liens
- The Software-RAID Howto: http://tldp.org/HOWTO/Software-RAID-HOWTO.html
- Debian: http://www.debian.org/
Important : Ce guide est une procédure opérationnelle générale. Testez la procédure sur un environnement non critique avant toute exécution sur des systèmes de production.
Matériaux similaires

Installer ADB et Fastboot sur Mac

Réparer l'erreur system repair pending sur Windows

Créer une appli Android sans coder — 8 outils

Restaurer une barre latérale sur Windows 11/10

Récupérer fichiers supprimés Teams
