❌

Vue lecture

Il y a de nouveaux articles disponibles, cliquez pour rafraĂźchir la page.

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.

smart-drive

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

❌