S.M.A.R.T. badblocks badblocks2
S.M.A.R.T. (Self-Monitoring, Analysis and Reporting Technology) est un systĂšme de surveillance intĂ©grĂ© aux disques durs modernes et aux disques SSD. Il Ă©value en continu le bien-ĂȘtre du pĂ©riphĂ©rique tout en anticipant les Ă©ventuels dysfonctionnements. Il utilise une rĂ©serve de secteurs de rechange pour rĂ©parer quand il dĂ©tecte un secteur en anomalie.
Le programme Linux badblocks
teste les blocs dâun mĂ©dia par Ă©criture+relecture+comparaison. Ă lâorigine il servait Ă mettre les blocs mauvais en liste noire dans le file-system.
Est-il utile de nos jours de vérifier ses médias ?
Comment se situe S.M.A.R.T. par rapport Ă lâoutil badblocks
?
Comment vérifier un média en tenant compte de sa surveillance par S.M.A.R.T. ?
C'est ce que nous allons voir dans la suite de la dĂ©pĂȘche.
- lien ná” 1 : S.M.A.R.T
- lien ná” 2 : E2fsprogs
- lien ná” 3 : Badblocks2
Sommaire
Préambule
Quelle prĂ©caution prendre vis-Ă -vis du risque de mauvaise qualitĂ© du stockage, quand je viens dâacheter un mĂ©dia (disque SSD, disque rotatif, clĂ© USB, carte SD) ou un appareil sous Linux Ă©quipĂ© dâun espace de stockage dont jâignore la technologie ?
Sans ĂȘtre parano, je me dis quâavant dâenvoyer des donnĂ©es prĂ©cieuses sur lâespace de stockage, câest le moment de faire certaines vĂ©rifications. Mais quelles vĂ©rifications ? Quâest-il possible de faire ?
Sur un média connectable, tout est possible.
Sur un appareil neuf sans systÚme ni données, tout est possible en utilisant une distrib Live.
Sur les autres, ça dĂ©pend, il y en a oĂč on nâa mĂȘme pas un accĂšs root pour lancer une vĂ©rification «âŻdureâŻÂ» ou «âŻmolleâŻÂ» (Android, routeurâŠ).
En Ă©crivant cet article, je me suis rendu compte que je ne me suis jusquâici jamais posĂ© de questions sur lâopportunitĂ© de vĂ©rifier les espaces de stockage de mes tĂ©lĂ©phones, PC portables, routeurs, box⊠bref tous les appareils vendus prĂȘts Ă ĂȘtre utilisĂ©s. Pourtant, que sais-je de la vĂ©rification faite par celui qui a installĂ© le systĂšme ? Rien, et jâutilise, sans penser que lâespace de stockage de lâappareil nâest ni plus ni moins robuste que celui du PC Linux que jâai installĂ© derniĂšrement, mais que jâai vĂ©rifiĂ© consciencieusement.
S.M.A.R.T.
S.M.A.R.T. est un systĂšme de surveillance intĂ©grĂ© aux disques durs modernes et aux disques SSD. Il Ă©value en continu le bien-ĂȘtre du pĂ©riphĂ©rique tout en anticipant les Ă©ventuels dysfonctionnements. Il surveille un maximum de paramĂštres (tempĂ©rature, temps de fonctionnement, vitesse de rotation pour les disques magnĂ©tiques, nombre de dĂ©marrages et dâarrĂȘtsâŠ) et dĂ©pend de lâexpĂ©rience du fabricant. La rĂ©paration de secteurs utilise une rĂ©serve de secteurs et le mapping entre secteurs logiques et secteurs physiques.
On pourrait se dire que, de nos jours, les supports sont fiables et testĂ©s par les intĂ©grateurs. Dâautres considĂšrent que la technologie S.M.A.R.T. suffit⊠et câest bien commode de ne plus se soucier de la fiabilitĂ© des supports de stockage. Mais Ă la premiĂšre galĂšre due Ă un mĂ©dia dĂ©faillant, tu Ă©volueras dans ta confiance.
Sais-tu seulement sur lesquels de tes médias S.M.A.R.T. est installé et actif ?
Si tu utilises un RaspberryPi, ton mĂ©dia systĂšme est⊠une carte SD. Elle nâa pas S.M.A.R.T.. Idem pour lâextension de mĂ©moire que tu as ajoutĂ©e Ă ton tĂ©lĂ©phone.
Je tâinvite Ă lire la page Wikipedia sur S.M.A.R.T. et son paragraphe «âŻStandard, implĂ©mentation et limitationsâŻÂ». Que fait et que ne fait pas le S.M.A.R.T. qui fonctionne sur le disque du PC qui te permet de lire cet article ? Difficile de savoir. Comment est-il configurĂ© ? Fais un sondage autour de toi Ă ce sujet et tu seras pris pour un parano.
Sur ton PC, sais-tu quâil y a une option S.M.A.R.T. dans le BIOS (ou UEFI) ? Sais-tu quâil y a un service smartd
dans ton Linux ? As-tu compris aussi quâavec du RAID il nâest pas toujours opportun dâactiver S.M.A.R.T. ? Les communications entre S.M.A.R.T. RAID et lâO.S. peuvent se passer plus ou moins bien selon la qualitĂ© de ces Ă©lĂ©ments. Il te faut bien comprendre ce quâil est possible de paramĂ©trer et deviner comment ça marche derriĂšre.
Si tu demandes une vérification à S.M.A.R.T. par smartctl
, sais-tu ce quâil fait ? Se contente-t-il de lire ou fait-il un test en Ă©criture ?
Enfin, quand S.M.A.R.T. dĂ©tecte quâun secteur est devenu dĂ©fectueux, il ne peut pas deviner quels bits sont dĂ©faillants, aussi il renseigne le secteur de secours avec ce quâil peut, qui est lâĂ©tat du secteur aprĂšs dĂ©faillance. S.M.A.R.T. a ses limites, il rĂ©pare comme il peut. Sâil est configurĂ© pour, il alerte quand il prĂ©voit de la dĂ©faillance, mais sais-tu reconnaĂźtre ses alertes ? As-tu compris ce que tu dois faire en rĂ©ponse aux alertes ?
Je tâinvite Ă apercevoir la complexitĂ© de prise en main de S.M.A.R.T. en faisant quelques recherches sur ces listes de mots :
smartctl howto
smartctl configure self test
smartd howto
et tu verras que ce nâest pas simple Ă comprendre et Ă configurer.
Tu peux te dire naïvement que tout est bien configuré par défaut et que tes médias seront toujours impeccables. Sinon, il va falloir investir en temps et faire quelques essais. à toi de choisir.
S.M.A.R.T. est une belle avancée technologique, mais il est dangereux de lui attribuer des mérites indus.
BADBLOCKS
Le programme Linux badblocks
a Ă©tĂ© crĂ©Ă© en mĂȘme temps que le paquetage e2fsprogs
(mkfs.ext2
, mkfs.ext3
, mkfs.ext4
, fsck.ext2
âŠ). Ă lâĂ©poque S.M.A.R.T. nâexistait pas et il nây avait pas de mapping entre les adresses logiques et physiques. Câest le file-system qui devait tout gĂ©rer quand il dĂ©tectait un bloc dĂ©fectueux, notamment la mise du bloc en liste noire. Câest pour cela que mke2fs
et e2fsck
lancent un badblocks
«âŻdurâŻÂ» quand on leur spĂ©cifie deux fois lâoption -c
. Cela dure trÚÚÚs longtemps car les paramÚtres par défaut ne sont plus bien optimisés.
Depuis lâarrivĂ©e de S.M.A.R.T., certains considĂšrent badblocks
comme obsolÚte. Mais qui peut affirmer que TOUS les médias utilisés par TOUS les usages de Linux sont équipés de S.M.A.R.T. ?
Peut-ĂȘtre quâau M.I.T. avec un rĂ©seau de classe A, on ne sâabaisse pas Ă utiliser une clĂ© USB ou un RaspberryPi. Je me demande dans quel type de bulle vivent ceux qui pensent que S.M.A.R.T. est sur tous les mĂ©dias de stockage.
Quand jâachĂšte une clĂ© USB, je lui passe badblocks
dessus et sâil y a des mauvais blocs, je la rends et je me fais rembourser.
Jâai essayĂ© dâinterroger les fonctionnalitĂ©s S.M.A.R.T. de diverses clĂ©s USB et je nâai rien obtenu, comme si cette utilitĂ© nây Ă©tait pas installĂ©e :
# smartctl --scan-open
# smartctl -x /dev/sdc
# smartctl -i -d scsi -T verypermissive /dev/sdc
Mes recherches sur Internet nâont abouti Ă rien qui me permette de voir une rĂ©ponse de la part de clĂ©s USB. Peut-ĂȘtre que si jâachetais (cher) des clĂ©s USB de trĂšs haute qualitĂ©, jây trouverais S.M.A.R.T. ?
Comme lâintervenant du message #25 de ce rapport de bug (en), je pense que badblocks
est loin dâĂȘtre obsolĂšte.
Jâai envie dâimiter le message #20 juste au-dessus en disant : « Je dois demander --- ***pourquoi*** vous (et dâautres personnes) mettez de lâessence dans vos voitures en 2024 ? Lâessence en tant que chose a commencĂ© Ă devenir inutile pour les voitures vers 2011, lorsque la voiture Ă©lectrique sâest rĂ©pandue, et que les batteries sont devenues suffisamment Ă©nergĂ©tiques pour faire rouler des vĂ©hicules sur des centaines de km ».
Je tâinvite aussi Ă une recherche sur la liste de mots « courbe en baignoire composants Ă©lectroniques ». Le programme badblocks
peut servir au dĂ©verminage. On sait en dĂ©tail ce quâil fait. Son rĂ©sultat est clair, contrairement aux implĂ©mentations propriĂ©taires de S.M.A.R.T..
Sans dĂ©verminage (rodage) on court le risque de subir trop tĂŽt une rĂ©paration discrĂšte incomplĂšte : le secteur rĂ©parĂ© sera physiquement bon mais son contenu sera corrompu. La consĂ©quence peut ĂȘtre catastrophiquement discrĂšte. Par exemple, un fichier LibreOffice est une archive zip (compressĂ©e), la corruption dâun seul bit y a des consĂ©quences imprĂ©visibles.
De mon cĂŽtĂ©, jâutilise badblocks
pour tester les mĂ©dias nouvellement acquis et pour effacer ceux bons Ă rĂ©former. Ce programme permet aussi la chasse aux mĂ©dias «âŻfake-sizeâŻÂ», du genre carte SD de 1To qui accepte de recevoir 1To de fichiers, mais qui ne stocke en rĂ©alitĂ© que 8Go. On trouve de nos jours (juin 2024) des clĂ©s USB de 16To vendues au prix de 5 ⏠! Lâapplication h2testw
sous windows et son Ă©quivalent f3
sous linux sont spĂ©cialement conçus pour cette chasse. Le microprogramme de ces clĂ©s USB ou de ces disques a Ă©tĂ© dĂ©tournĂ© pour dĂ©clarer un espace de stockage falsifiĂ©. Câest de lâescroquerie.
BADBLOCKS2
Mon usage du badblocks
du paquetage e2fsprogs-1.47.0
mâa amenĂ© Ă y caractĂ©riser un bug reproductible en novembre 2023. Jâai eu lâintention de remonter le bug aux Ă©quipes ad hoc de ma distribution (Mageia) mais je me suis dâabord mis Ă regarder le source.
Jây ai trouvĂ© lâorigine du bug, et jâai trouvĂ© dâautres bugs. En ajoutant des instructions de traçage et de simulation dâerreurs du mĂ©dia, jâai mis en Ă©vidence encore dâautres bugs. De fil en aiguille, jâai fini par retoucher profondĂ©ment certains algorithmes, et jâai appelĂ© badblocks2
cette nouvelle version. Jây ai ajoutĂ© diverses options faciles Ă programmer et commodes Ă lâusage. Jâai copieusement testĂ©.
Si tu veux essayer badblocks2
et/ou prendre connaissance de ma dĂ©marche, je livre tout sur mon site. Tu verras pourquoi je me suis rabattu sur la crĂ©ation dâune nouvelle version, plutĂŽt que de faire remplacer lâancienne (ce qui aurait profitĂ© Ă tous).
Tu peux te faire une idée des fonctionnalités ajoutées en consultant les *.8.txt .
Tu peux tâinspirer des tests dĂ©crits dans le fichier Alire.txt, tester diverses valeurs pour -c
-t
et voir lâeffet sur la vitesse de traitement. Tu peux mĂȘme jouer Ă arracher la clĂ© en cours de test (Ctrl-C
pour arrĂȘter) !
JâespĂšre que ce programme servira Ă dâautres que moi.
En pratique
Voici une suggestion dâactions Ă faire lors de lâacquisition dâun nouveau mĂ©dia (disque SSD, disque rotatif, clĂ© USB, carte SDâŠ). Les commandes doivent ĂȘtre lancĂ©es par lâopĂ©rateur root.
Avec cela, quand dans quelques années tu satureras le média, tu seras sûr que le dernier secteur utilisé aura été déverminé avant la mise en production.
ATTENTION : les usages de badblocks
proposés sont destructifs pour les données présentes sur le média. Le mode non-destructif du badblocks
actuel comporte des bugs (version e2fsprogs-1.47.0
). Celui de badblocks2
a été corrigé.
ATTENTION : la liste des mauvais blocs renvoyée par le badblocks
actuel est fausse (version e2fsprogs-1.47.0
). Le nombre de mauvais blocs est correct. La liste renvoyée par badblocks2
est correcte.
ATTENTION : le paramĂštre device du mĂ©dia est supposĂ© ĂȘtre /dev/sdc
. Ne pas se tromper, au risque dâeffacer un autre mĂ©dia en cours dâusage.
Dâabord dĂ©terminer le block-size du noyau, câest une bonne valeur Ă prendre comme block-size du file-system :
# blockdev --getbsz /dev/sdc
Dans ce qui suit, je suppose que la valeur 4096 a été renvoyée.
Ensuite déterminer si S.M.A.R.T. est sur le média :
# smartctl --scan-open
# smartctl -x /dev/sdc
# smartctl -i -d scsi -T verypermissive /dev/sdc
Si S.M.A.R.T. nâest pas sur le mĂ©dia
Passer badblocks2
pour voir sâil y a 0 ou peu de mauvais blocs :
# badblocks2 -b 4096 -c 32768 -wrrvvss -t r -t r -e 40 -o /tmp/sdc.bb /dev/sdc
Lâoption -e
peut ĂȘtre supprimĂ©e ou modifiĂ©e selon la limite du nombre de mauvais blocs considĂ©rĂ©e acceptable ; les options -t
peuvent ĂȘtre diffĂ©rentes selon la sĂ©vĂ©ritĂ© souhaitĂ©e (voir le man).
Sâil y a trop de mauvais blocs, refuser dâutiliser le mĂ©dia (->garantie ?).
Sâil y a 0 mauvais bloc on peut formater en toute tranquillitĂ© (partitionner Ă©ventuellement avant) :
# mkfs.ext? -b 4096 ... /dev/sdc
Sâil y a quelques mauvais blocs, sans que la limite -e
soit atteinte, on pourra formater en utilisant la liste sauvée de mauvais blocs :
# mkfs.ext? -b 4096 -l /tmp/sdc.bb ... /dev/sdc
Si lâon veut partitionner, il faudra recalculer la liste des mauvais blocs de chaque partition avant de formater (remplacer sdc
par sdc1
dans les commandes badblocks2
et mkfs.ext?
ci-dessus).
Si lâon veut formater en vfat
exfat
ou f2fs
(clĂ©s USB en gĂ©nĂ©ral), il nâest pas possible dâutiliser la liste des mauvais blocs dĂ©tectĂ©s ; la seule solution est de refuser dâutiliser le mĂ©dia sâil y a des mauvais blocs (ou alors de restreindre lâusage Ă une zone saine⊠à localiser)
Si S.M.A.R.T. est sur le média
On peut vérifier son activation par smartctl :
# smartctl -i /dev/sdc
Ensuite, il faut interroger le mĂ©dia sur lâĂ©tat et les capacitĂ©s de son S.M.A.R.T. :
# smartctl -a /dev/sdc
Noter le nombre de réallocations faites et prévues :
# smartctl -a /dev/sdc | grep -i _sector
Puis faire une passe de dĂ©verminage, en Ă©criture+lecture car on ne sait pas si lâĂ©criture seule suffit ; ne pas utiliser lâoption -p
de badblocks
; les options -t
peuvent ĂȘtre diffĂ©rentes selon la sĂ©vĂ©ritĂ© souhaitĂ©e (voir le man) :
# badblocks2 -b 4096 -c 32768 -wrvvss -t r -o /tmp/sdc.bb1 /dev/sdc
Faire une passe de vérification, il ne devrait plus y avoir de mauvais blocs :
# badblocks2 -b 4096 -c 32768 -wrvvss -t r -o /tmp/sdc.bb2 /dev/sdc
Sâil y a encore des mauvais blocs, câest soit que le dĂ©verminage nâest pas terminĂ©, soit que le mĂ©dia et/ou son S.M.A.R.T. sont foireux (il ne dĂ©tecte pas les mauvais secteurs vus par badblocks2
ou les secteurs de rĂ©serve sont mauvais ou⊠pire) ; relancer des passes une par une jusquâĂ ce quâil nây ait plus de mauvais bloc dĂ©tectĂ©.
Re-interroger S.M.A.R.T. pour voir lâĂ©volution des rĂ©allocations :
# smartctl -a /dev/sdc | grep -i _sector
Ensuite on peut formater (partitionner Ă©ventuellement avant) en considĂ©rant que le mĂ©dia a remappĂ© tous ses mauvais secteurs et est donc impeccable pour lâutilisation :
# mkfs.ext? -b 4096 ... /dev/sdc
Par la suite, on pourra de temps en temps consulter lâĂ©tat de santĂ© du mĂ©dia en service :
# smartctl -H /dev/sda
Si on est courageux, on peut lancer de temps en temps un contrÎle du média par son S.M.A.R.T.
Si on est encore plus courageux, on configurera smartd
pour que ces vérifications soient automatiques et pour que les alertes soient envoyées par courriel.
Attention Ă la communication entre lâO.S., S.M.A.R.T. et RAID (niveau carte mĂšre / niveau OS / contrĂŽleurs bas de gamme), voir la page Wikipedia sur S.M.A.R.T..
Que lâesprit «âŻawareâŻÂ» soit en toi, sur tes donnĂ©es et sur ton espace de stockage
Commentaires : voir le flux Atom ouvrir dans le navigateur