Si vous rencontrez un problème de RAID sur un serveur, l’état du RAID logiciel peut être lu via le fichier /proc/mdstat
.
Diagnostic
Dans le cas d’un RAID 1 (mirroir) logiciel avec 2 disques sda
et sdb
.
RAID
Sur le serveur qui rencontre le problème, lancer la commande suivante, un RAID correctement monté devrait indiquer :
# cat /proc/mdstat |
RAID défaillant
L’état des différentes partitions est affiché entre crochets. La lettre U
signifie “up”.
Ici le disque sdb
est manquant :
# cat /proc/mdstat |
Détails sur les RAID
Afficher les détails de md0 :
# mdadm --detail /dev/md0 |
Afficher les détails de md1 :
# mdadm --detail /dev/md1 |
Les logs
Identifier le disque qui pose problème en consultant le fichier /var/log/messages
:
Supprimer le périphérique
Niveau software
mdadm
Commande mdadm :
mdadm
- manage MD devices aka Linux Software RAID
Synopsis
mdadm [mode] <raiddevice> [options] <component-devices> |
On retire le disque problématique du RAID (dans certains cas, les commandes peuvent être utiles, ou pas…).
-f, --fail
: détache le périphérique et sera marqué comme étant en panne. Il pourra alors être retiré du RAID-r, --remove
: supprime le périphérique du RAID
Marquer en fail
Marquer le périphérique en fail :
# mdadm --fail /dev/md0 /dev/sdb1 |
Supprimer le fail
Supprimer le périphérique :
# mdadm --remove /dev/md0 /dev/sdb1 |
Niveau hardware
Repérer le disque
Si votre serveur ne signale pas automatiquement le disque défaillant, vous pouvez le pointer ou pointer le(s) disque(s) qui reste(nt) pour en déduire où se trouve le défaillant :
Allumer la LED d’un disque :
# ledctl locate=/dev/sda |
Eteindre la LED d’un disque :
# ledctl locate_off=/dev/sda |
Si la commande ne fonctionne pas, vous pouvez tenter avec badblocks :
# badblocks -vs /dev/sda |
Annalyser le disque
Avant de retirer et remplacer le nouveau disque, lancer udevadm
pour afficher la détection du nouveau disque (l’affichage peut-être long lors du retrait) :
# udevadm monitor |
Remplacer le disque
Remplacer physiquement le disque défaillant.
La commande udevadm monitor
devrait afficher :
KERNEL[...] add /devices/pci/at4/MyHostName/target4:0:0 (scsi) |
Vérifications
Vérifier si le nouveau disaue a bien été détecté :
# fdisk -l |
Il est possible de forcer le détection :
$ echo "- - -" > /sys/class/scsi_host/MyHostName/scan |
Recupération des données du RAID
Cloner la partition du disque restant (/dev/sda) du RAID sur le nouveau disque (/dev/sdb) :
# sfdisk -d /dev/sda | sudo sfdisk /dev/sdb |
Reconstruction du RAID
Monitoring
Pour monitorer la reconstruction :
# watch cat /proc/mdstat |
Volume md0
Reconstruction du RAID sur volume md0 :
# mdadm --add /dev/md0 /dev/sdb1 |
Vérification :
# cat /proc/mdstat |
Volume md1
Reconstruction du RAID sur volume md1 :
# mdadm --add /dev/md1 /dev/sdb2 |
Vérification (ici la reconstruction est en cours) :
# cat /proc/mdstat |
Problèmes rencontrés
Device resource busy
Si un message d’erreur de type device resource busy
apparait :
# lsblkid |
Supprimer les anciennes signatures du disque :
# dmsetup remove 2.5__SATA_SSD_3MG2-P_BCA66642400424242p1 |
Utilisation de smartd
Si vous utilisez smartd
il est possible qu’il faille le reconfigurer :
Trouver l’ID du disque :
# ll /dev/disk/by-id/ |
Mettre à jour la configuration :
Vi /etc/smartmontools/smartd.conf |
Relancer le service smartd
.
Documentation
https://www.ionos.fr/assistance/serveurs-et-cloud/serveur-dedie-pour-les-serveurs-achetes-avant-le-28102018/rescue-and-recovery/verifier-surveiller-letat-du-raid-logiciel-linux/
https://linux.die.net/man/8/udevadm
https://linux.die.net/man/8/mdadm
https://linux.die.net/man/8/badblocks
Quentin E.
Merci à Quentin E.