Un matin
Un email de démon mdadm annonçant une erreur dans la grappe raid5


This is an automatically generated mail message from mdadm
running on hoth

A Fail event had been detected on md device /dev/md6.

Faithfully yours, etc.

La commande dmesg lancé depuis le compte rot m'informe que le disque sdc a des secteurs déffectueux.


[22171490.224000] SCSI error : <4 0 0 0> return code = 0x8000002
[22171490.224000] sdc: Current: sense key: Medium Error
[22171490.224000] Additional sense: No additional sense information
[22171490.224000] Info fld=0x73350b0
[22171490.224000] end_request: I/O error, dev sdc, sector 120803504
[22171490.224000] raid5: Disk failure on sdc, disabling device. Operation continuing on 5 devices
[22171490.228000] RAID5 conf printout:
[22171490.228000] --- rd:6 wd:5 fd:1
[22171490.228000] disk 0, o:0, dev:sdc
[22171490.228000] disk 1, o:1, dev:sdd
[22171490.228000] disk 2, o:1, dev:sde
[22171490.228000] disk 3, o:1, dev:sdf
[22171490.228000] disk 4, o:1, dev:sdg
[22171490.228000] disk 5, o:1, dev:sdh
[22171490.240000] RAID5 conf printout:
[22171490.240000] --- rd:6 wd:5 fd:1
[22171490.240000] disk 1, o:1, dev:sdd
[22171490.240000] disk 2, o:1, dev:sde
[22171490.240000] disk 3, o:1, dev:sdf
[22171490.240000] disk 4, o:1, dev:sdg
[22171490.240000] disk 5, o:1, dev:sdh
[22171490.240000] RAID5 conf printout:
[22171490.240000] --- rd:6 wd:5 fd:1
[22171490.240000] disk 0, o:1, dev:sdi
[22171490.240000] disk 1, o:1, dev:sdd
[22171490.240000] disk 2, o:1, dev:sde
[22171490.240000] disk 3, o:1, dev:sdf
[22171490.240000] disk 4, o:1, dev:sdg
[22171490.240000] disk 5, o:1, dev:sdh
[22171490.240000] md: syncing RAID array md6
[22171490.240000] md: minimum _guaranteed_ reconstruction speed: 1000 KB/sec/disc.
[22171490.240000] md: using maximum available idle IO bandwith (but not more than 200000 KB/sec) for reconstruction.
[22171490.240000] md: using 128k window, over a total of 293036096 blocks.

Je vérifie que la reconstruction automatique du raid avec le disque de backup à bien débuté :


# cat /proc/mdstat

Le reconstruction ayant bien débuté je retire le disque en erreur


# mdadm /dev/md6 --remove /dev/sdc

Je lance en suite un test de lecture bit à bit sur l'itégratilité du disque


# pv /dev/sdc > /dev/null
pv: (stdin): read failed: Input/output error ] 20% ETA 1:05:55
57.6GB 0:17:07 [57.4MB/s] [=============> ] 20% ETA 1:05:55

Input/output error !
La lecture à échoué à 20% du disque. Pas de doute il y a un problème matériel avec ce disques.

J'utilise de nouveau la commande dmesg, Le disque sdc à effectivement des secteurs déffectueux.


[22263951.048000] SCSI error : <4 0 0 0> return code = 0x8000002
[22263951.048000] sdc: Current: sense key: Medium Error
[22263951.048000] Additional sense: No additional sense information
[22263951.048000] Info fld=0x7335095
[22263951.048000] end_request: I/O error, dev sdc, sector 120803472
[22263951.048000] Buffer I/O error on device sdc, logical block 15100434
[22263954.820000] SCSI error : <4 0 0 0> return code = 0x8000002
[22263954.820000] sdc: Current: sense key: Medium Error
[22263954.820000] Additional sense: No additional sense information
[22263954.820000] Info fld=0x73350a3
[22263954.820000] end_request: I/O error, dev sdc, sector 120803488
[22263954.820000] Buffer I/O error on device sdc, logical block 15100436
[22263962.384000] SCSI error : <4 0 0 0> return code = 0x8000002
[22263962.384000] sdc: Current: sense key: Medium Error
[22263962.384000] Additional sense: No additional sense information
[22263962.384000] Info fld=0x73350b0
[22263962.384000] end_request: I/O error, dev sdc, sector 120803504
[22263962.384000] Buffer I/O error on device sdc, logical block 15100438

Je lancer alors une ecriture bit à bit sur l'intégalité du disque. Ce la va forcer le firmware du disque à enregistrer les secteurs en erreur à les ajouter à sa liste d'exclusion. Si cela échoue c'est que le disque à plus que quelque secteur déffectueux mais un vrais problème mécanique (ou un firmware bogué)


# pv /dev/zero > /dev/sdc
#pv: write failed: No space left on device <=> ]
#

Et voila : No space left on device. Le disque à été remplis dans son intégralité sans erreur. Le firmware a donc joué son rôle et exclus les secteurs en erreur.

Je ré-ajoute le disque sdc dans la grappe raid. Il prend la place du disque de backup.


mdadm /dev/md6 -a /dev/sdc

Pour vérifier le bon fonctionnement du disque dans le raid je déclenche une erreur sur le disque sdi mdadm /dev/md6 —fail /dev/sdi

Le raid marque le disque sdi en erreur et ce reconstruit automatiquement avec le disque sdc sans le moindre problème.

Je n'ai plus qu'a replacer le disque sdi en position de backup au cas ou le disque sdc aurait d'autre problème. Pour cela je le retire du raid.


# mdadm /dev/md6 --remove /dev/sdi

Avant de le rajouté.


mdadm /dev/md6 -a /dev/sdi