RAID Disk Failure
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 Personalities : [raid1] read_ahead 1024 sectors md0 : active raid1 sda1[1] sdb1[0] 102208 blocks [2/2] [UU] md1 : active raid1 sda2[1] sdb2[0] 119684160 blocks [2/2] [UU] unused devices: <none>
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 Personalities : [raid1] md0 : active raid1 sda1[1] 408576 blocks super 1.2 [2/1] [_U] bitmap: 0/1 pages [0KB], 65536KB chunk md1 : active raid1 sda2[1] 120649728 blocks super 1.2 [2/1] [_U] bitmap: 1/1 pages [4KB], 65536KB chunk unused devices: <none>
Détails sur les RAID Afficher les détails de md0 :
# mdadm --detail /dev/md0 /dev/md0: Version : 1.2 Creation Time : Fri Jun 4 14:08:36 2021 Raid Level : raid1 Array Size : 408576 (399.00 MiB 418.38 MB) Used Dev Size : 408576 (399.00 MiB 418.38 MB) Raid Devices : 2 Total Devices : 1 Persistence : Superblock is persistent Intent Bitmap : Internal Update Time : Mon Feb 20 09:43:37 2023 State : clean, degraded Active Devices : 1 Working Devices : 1 Failed Devices : 0 Spare Devices : 0 Consistency Policy : bitmap Name : 4444AA-ABC-1111:0 UUID : 111a222a:333aaa0a:aaa444a5:555a8aa Events : 357 Number Major Minor RaidDevice State - 0 0 0 removed <====== Disque manquant (sdb1) 1 8 33 1 active sync /dev/sda1
Afficher les détails de md1 :
# mdadm --detail /dev/md1 /dev/md1: Version : 1.2 Creation Time : Fri Jun 4 14:08:28 2021 Raid Level : raid1 Array Size : 120649728 (115.06 GiB 123.55 GB) Used Dev Size : 120649728 (115.06 GiB 123.55 GB) Raid Devices : 2 Total Devices : 1 Persistence : Superblock is persistent Intent Bitmap : Internal Update Time : Mon Feb 20 10:45:48 2023 State : clean, degraded Active Devices : 1 Working Devices : 1 Failed Devices : 0 Spare Devices : 0 Consistency Policy : bitmap Name : 4444AA-ABC-1111:1 UUID : 11a222aa:333a8a44:a555aa6a:6666aaa8 Events : 12641 Number Major Minor RaidDevice State - 0 0 0 removed <====== Disque manquant (sdb2) 1 8 34 1 active sync /dev/sda2
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 mdadm: stat failed for /dev/sda1: No such file or directory # mdadm --fail /dev/md1 /dev/sdb2 mdadm: stat failed for /dev/sda2: No such file or directory
Supprimer le fail Supprimer le périphérique :
# mdadm --remove /dev/md0 /dev/sdb1 mdadm: stat failed for /dev/sda1: No such file or directory # mdadm --remove /dev/md1 /dev/sdb2 mdadm: stat failed for /dev/sda2: No such file or directory
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 # ledctl locate=/dev/sdb
Eteindre la LED d’un disque :
# ledctl locate_off=/dev/sda # ledctl locate_off=/dev/sdb
Si la commande ne fonctionne pas, vous pouvez tenter avec badblocks :
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 monitor will print the received events for: UDEV - the event which udev sends out after rule processing KERNEL - the kernel uevent
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) KERNEL[...] add /devices/pci/at4/MyHostName/target4:0:0/4:0:0:0 (scsi) KERNEL[...] add /devices/pci/at4/MyHostName/target4:0:0/4:0:0:0/scsi_disk/4:0:0:0 (scsi_disk) KERNEL[...] add /devices/pci/at4/MyHostName/target4:0:0/4:0:0:0/scsi_device/4:0:0:0 (scsi_device) KERNEL[...] add /devices/virtual/bdi/8:16 (bdi) KERNEL[...] add /devices/pci/at4/MyHostName/target4:0:0/4:0:0:0/scsi_generic/sg2 (scsi_generic) UDEV [...] add /devices/pci/at4/MyHostName/target4:0:0 (scsi) KERNEL[...] add /devices/pci/at4/MyHostName/target4:0:0/4:0:0:0/bsg/4:0:0:0 (bsg) UDEV [...] add /devices/virtual/bdi/8:16 (bdi) KERNEL[...] add /devices/pci/at4/MyHostName/target4:0:0/4:0:0:0/block/sdb (block) UDEV [...] add /devices/pci/at4/MyHostName/target4:0:0/4:0:0:0 (scsi) UDEV [...] add /devices/pci/at4/MyHostName/target4:0:0/4:0:0:0/scsi_disk/4:0:0:0 (scsi_disk) UDEV [...] add /devices/pci/at4/MyHostName/target4:0:0/4:0:0:0/scsi_device/4:0:0:0 (scsi_device) UDEV [...] add /devices/pci/at4/MyHostName/target4:0:0/4:0:0:0/scsi_generic/sg2 (scsi_generic) UDEV [...] add /devices/pci/at4/MyHostName/target4:0:0/4:0:0:0/bsg/4:0:0:0 (bsg) UDEV [...] add /devices/pci/at4/MyHostName/target4:0:0/4:0:0:0/block/sdb (block)
Vérifications Vérifier si le nouveau disaue a bien été détecté :
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 :
Volume md0 Reconstruction du RAID sur volume md0 :
# mdadm --add /dev/md0 /dev/sdb1 mdadm: added /dev/sdb1
Vérification :
# cat /proc/mdstat Personalities : [raid1] md0 : active raid1 sdb1[2] sda1[1] 408576 blocks super 1.2 [2/2] [UU] bitmap: 1/1 pages [4KB], 65536KB chunk md1 : active raid1 sda2[1] 120649728 blocks super 1.2 [2/1] [_U] bitmap: 1/1 pages [4KB], 65536KB chunk unused devices: <none>
Volume md1 Reconstruction du RAID sur volume md1 :
# mdadm --add /dev/md1 /dev/sdb2 mdadm: added /dev/sdb2
Vérification (ici la reconstruction est en cours) :
# cat /proc/mdstat Personalities : [raid1] md0 : active raid1 sdb1[2] sda1[1] 408576 blocks super 1.2 [2/2] [UU] bitmap: 0/1 pages [0KB], 65536KB chunk md1 : active raid1 sdb2[2] sda2[1] 120649728 blocks super 1.2 [2/1] [_U] [>....................] recovery = 0.3% (405760/120649728) finish=9.8min speed=202880K/sec bitmap: 1/1 pages [4KB], 65536KB chunk unused devices: <none>
Problèmes rencontrés Device resource busy Si un message d’erreur de type device resource busy apparait :
# lsblkid NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 115.5G 0 disk ├─sda1 8:1 0 400M 0 part │ └─md0 9:0 0 399.7M 0 raid1 /boot └─sda2 8:2 0 115.1G 0 part └─md1 9:1 0 115.1G 0 raid1 ├─rootvg-rootvol 253:0 0 112.1G 0 lvm / └─rootvg-swapvol 253:1 0 3G 0 lvm [SWAP] sdb 8:16 0 231G 0 disk ├─sdb1 8:17 0 400M 0 part ├─sdb2 8:18 0 115.1G 0 part └─2.5__SATA_SSD_3MG2-P_BCA66642400424242 253:2 0 231G 0 mpath ├─2.5__SATA_SSD_3MG2-P_BCA66642400424242p1 253:3 0 400M 0 part └─2.5__SATA_SSD_3MG2-P_BCA66642400424242p2 253:4 0 115.1G 0 part
Supprimer les anciennes signatures du disque :
# dmsetup remove 2.5__SATA_SSD_3MG2-P_BCA66642400424242p1 # dmsetup remove 2.5__SATA_SSD_3MG2-P_BCA66642400424242p2 # dmsetup remove 2.5__SATA_SSD_3MG2-P_BCA66642400424242
Utilisation de smartd Si vous utilisez smartd il est possible qu’il faille le reconfigurer :
Trouver l’ID du disque :
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
Remerciements
Quentin E.
Merci à Quentin E.