URL: https://linuxfr.org/news/s-m-a-r-t-badblocks-badblocks2 Title: S.M.A.R.T. badblocks badblocks2 Authors: Yves DEMUR Ysabeau đŸ§¶, patrick_g, bobble bubble, BenoĂźt Sibaud et palm123 Date: 2024ćčŽ06月26æ—„T22:11:08+02:00 License: CC By-SA Tags: stockage et badblocks Score: 53 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](http://yves.demur.free.fr/smart-drive120.png) ---- [S.M.A.R.T](https://fr.wikipedia.org/wiki/Self-Monitoring,_Analysis_and_Reporting_Technology) [E2fsprogs](https://e2fsprogs.sourceforge.net/) [Badblocks2](http://yves.demur.free.fr/ydgu02/guppy-prod-0a3C6F9z/) ---- 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.](https://fr.wikipedia.org/wiki/Self-Monitoring,_Analysis_and_Reporting_Technology) 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)](https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=554794#25), 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]( http://yves.demur.free.fr). 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.](https://fr.wikipedia.org/wiki/Self-Monitoring,_Analysis_and_Reporting_Technology). **Que l’esprit « aware » soit en toi, sur tes donnĂ©es et sur ton espace de stockage**

AltStyle ă«ă‚ˆăŁăŠć€‰æ›ă•ă‚ŒăŸăƒšăƒŒă‚ž (->ă‚ȘăƒȘă‚žăƒŠăƒ«) /