Mon histoire commence tout simplement. J'ai un serveur léger, exécutant Arch Linux, qui stocke la plupart de ses données sur un RAID-1 composé de deux disques SATA. Il fonctionnait sans aucun problème pendant environ 4 mois. Puis, tout à coup, j'ai commencé à obtenir des erreurs de lecture sur l'un des lecteurs. Toujours, les messages ressemblaient beaucoup à ceux-ci:
Apr 18 00:20:15 hope kernel: [307085.582035] ata5.01: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x0
Apr 18 00:20:15 hope kernel: [307085.582040] ata5.01: failed command: READ DMA EXT
Apr 18 00:20:15 hope kernel: [307085.582048] ata5.01: cmd 25/00:08:08:6a:34/00:00:27:00:00/f0 tag 0 dma 4096 in
Apr 18 00:20:15 hope kernel: [307085.582050] res 51/40:00:0c:6a:34/40:00:27:00:00/f0 Emask 0x9 (media error)
Apr 18 00:20:15 hope kernel: [307085.582053] ata5.01: status: { DRDY ERR }
Apr 18 00:20:15 hope kernel: [307085.582056] ata5.01: error: { UNC }
Apr 18 00:20:15 hope kernel: [307085.621301] ata5.00: configured for UDMA/133
Apr 18 00:20:15 hope kernel: [307085.640972] ata5.01: configured for UDMA/133
Apr 18 00:20:15 hope kernel: [307085.640986] sd 4:0:1:0: [sdd] Unhandled sense code
Apr 18 00:20:15 hope kernel: [307085.640989] sd 4:0:1:0: [sdd] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
Apr 18 00:20:15 hope kernel: [307085.640993] sd 4:0:1:0: [sdd] Sense Key : Medium Error [current] [descriptor]
Apr 18 00:20:15 hope kernel: [307085.640998] Descriptor sense data with sense descriptors (in hex):
Apr 18 00:20:15 hope kernel: [307085.641001] 72 03 11 04 00 00 00 0c 00 0a 80 00 00 00 00 00
Apr 18 00:20:15 hope kernel: [307085.641010] 27 34 6a 0c
Apr 18 00:20:15 hope kernel: [307085.641020] sd 4:0:1:0: [sdd] Add. Sense: Unrecovered read error - auto reallocate failed
Apr 18 00:20:15 hope kernel: [307085.641023] sd 4:0:1:0: [sdd] CDB: Read(10): 28 00 27 34 6a 08 00 00 08 00
Apr 18 00:20:15 hope kernel: [307085.641027] end_request: I/O error, dev sdd, sector 657746444
Apr 18 00:20:15 hope kernel: [307085.641035] ata5: EH complete
Apr 18 00:20:15 hope kernel: [307085.641672] md/raid1:md16: read error corrected (8 sectors at 657744392 on sdd1)
Apr 18 00:20:17 hope kernel: [307087.505082] md/raid1:md16: redirecting sector 657742336 to other mirror: sdd1
Chaque erreur se plaignait d'un numéro de secteur différent et était accompagnée d'un délai de plusieurs secondes pour l'utilisateur (moi) accédant au disque.
J'ai vérifié la sortie de smartctl et j'ai vu la sortie suivante (parties non pertinentes coupées):
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x002f 193 193 051 Pre-fail Always - 1606
5 Reallocated_Sector_Ct 0x0033 194 194 140 Pre-fail Always - 0
196 Reallocated_Event_Count 0x0032 162 162 000 Old_age Always - 0
197 Current_Pending_Sector 0x0032 200 200 000 Old_age Always - 51
En regardant en arrière dans les journaux, j'ai constaté que les erreurs se produisaient en fait depuis quelques jours, principalement pendant les sauvegardes, mais aussi fréquemment lors d'une utilisation très légère (ce qui signifie environ chaque 5ème fois que j'essayais d'enregistrer un fichier texte). J'ai conclu que mon disque était en train de mourir, que le RAID-1 le traitait correctement et qu'il était temps de commander un disque de remplacement. J'ai commandé un nouveau disque.
À ma grande surprise, un jour plus tard, les erreurs ... ont cessé. Je n'avais rien fait pour les réparer. Je n'avais pas redémarré, je n'avais pas mis le lecteur hors ligne, rien. Mais les erreurs ont tout simplement cessé.
À ce stade, curieux de voir si les secteurs défectueux se trouvaient juste dans des parties inactives du disque maintenant, j'ai sorti le disque du RAID, l'ai remis dans le RAID et lui ai permis de terminer la resynchronisation complète qui a suivi. La resynchronisation s'est terminée sans aucune erreur, 9 heures plus tard (les disques de 2 To prennent un peu de temps).
De plus, la sortie de smartctl a légèrement changé, comme suit:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x002f 193 193 051 Pre-fail Always - 1606
5 Reallocated_Sector_Ct 0x0033 194 194 140 Pre-fail Always - 43
196 Reallocated_Event_Count 0x0032 162 162 000 Old_age Always - 38
197 Current_Pending_Sector 0x0032 200 200 000 Old_age Always - 0
Donc, la partie de ce qui me fait bizarre est, bien sûr, "Depuis quand les mauvais disques se réparent-ils?"
Je suppose qu'il est possible qu'une très petite zone du lecteur se soit spontanément détériorée et que le lecteur ait simplement pris 3 jours (!) Avant que son code de réallocation de secteur ne se déclenche et qu'il mappe certains secteurs de rechange sur une mauvaise zone du disque ... Mais je ne peux pas dire que j'aie jamais vu cela se produire.
Quelqu'un d'autre a-t-il vu ce genre de comportement? Si oui, quelle a été votre expérience avec le lecteur par la suite? Est-ce que cela s'est reproduit? Le disque a-t-il finalement échoué complètement? Ou était-ce simplement un problème inexpliqué qui restait inexpliqué?
Dans mon cas, j'ai déjà le disque de remplacement (obtenu sous garantie), donc je vais probablement remplacer le disque de toute façon. Mais j'aimerais savoir si j'ai mal diagnostiqué cela d'une manière ou d'une autre. Si cela aide, j'ai une sortie complète «smartctl -a» à partir du moment où le problème s'est produit. C'est juste un peu long, donc je ne l'ai pas posté ici.