Aller au contenu principal
hard-driveINFO

badblocks : le test de disque que son propre manuel vous déconseille de lancer

badblocks analyse un périphérique à la recherche de blocs défectueux, et l'une de ses options efface chaque octet du disque. Ce que le manuel recommande vraiment, quel mode est sûr, et quand tester est carrément la mauvaise décision.

Par Eric Gerard · Éditeur · Save My Disk7 min de lecturePhoto via Pexels

badblocks fait partie de ces outils vers lesquels on se tourne quand un disque commence à se comporter bizarrement. Il est présent sur presque tous les systèmes Linux, son nom correspond exactement à ce que l'on cherche, et l'une de ses options effacera le disque que vous vouliez diagnostiquer. Le manuel est inhabituellement direct sur tout cela, voici donc ce qu'il dit réellement.

Ce qu'il fait, et ce qu'il ne fait pas

La description tient en une ligne : badblocks recherche les blocs défectueux d'un périphérique. Il produit une liste.

C'est tout son travail. Il ne répare rien. La réallocation des secteurs est prise en charge par le firmware du disque, selon son propre calendrier, pas par un scanner en espace utilisateur. La liste existe pour être transmise à e2fsck ou mke2fs, afin que le système de fichiers sache quels blocs laisser de côté.

Cela le place dans la même catégorie que smartctl, qui rapporte les attributs SMART sans les réparer non plus. Tous deux vous apprennent quelque chose. Aucun des deux ne répare quoi que ce soit.

L'option qui efface votre disque

De tout ce qui suit, c'est la partie à retenir.

L'option -w lance un test en mode écriture. Elle écrit les motifs 0xaa, 0x55, 0xff et 0x00 sur chaque bloc du périphérique, relit chacun d'eux, puis compare. C'est un test approfondi précisément parce qu'il utilise toute la surface.

Le manuel porte un avertissement explicite :

N'utilisez jamais l'option -w sur un périphérique contenant un système de fichiers existant. Cette option efface les données ! (dans le texte original : « Never use the -w option on a device containing an existing file system. This option erases data! »)

Il n'y a pas d'annulation, pas de préservation partielle, pas de « ça n'écrase que les parties défectueuses ». Chaque bloc est écrit.

Plusieurs disques durs empilés sur une surface blanche, laissant voir leurs circuits imprimés verts et bleus exposés ainsi qu'un connecteur SATA.
Plusieurs disques durs empilés sur une surface blanche, laissant voir leurs circuits imprimés verts et bleus exposés ainsi qu'un connecteur SATA.

Les modes sûrs

Par défaut, badblocks effectue un test non destructif en lecture seule. Lancé sans option de mode, il lit le périphérique et signale ce qu'il n'arrive pas à lire. Rien n'est écrit.

L'option -n ajoute un test non destructif en lecture-écriture : elle écrit des motifs mais restaure le contenu d'origine au fur et à mesure. Le manuel la recommande en remplacement de -w quand un système de fichiers est présent, et il est honnête sur le compromis : c'est plus lent, mais vos données sont préservées.

-n et -w sont mutuellement exclusifs, ce qui est une petite consolation.

La recommandation que presque personne ne suit

Voici la partie qui surprend ceux qui utilisent cet outil depuis des années. Le manuel dit, dans la description elle-même :

il est fortement recommandé aux utilisateurs de ne pas exécuter badblocks directement, mais plutôt d'utiliser l'option -c des programmes e2fsck et mke2fs (dans le texte original : « it is strongly recommended that users not run badblocks directly, but rather use the -c option of the e2fsck and mke2fs programs »)

La raison tient à la taille de bloc. Les numéros de blocs produits par badblocks dépendent de la taille de bloc qu'utilise le système de fichiers, et la valeur par défaut est de 1024 octets. Si votre système de fichiers en utilise une autre et que vous n'avez pas passé -b, les numéros de votre sortie ne désignent pas les blocs que vous croyez. Passer par e2fsck -c ou mke2fs -c garantit que la taille de bloc est correcte par construction.

La formulation honnête est donc celle-ci : badblocks est un composant, et les outils qui l'appellent savent généralement mieux l'appeler que vous.

Pourquoi il refuse de toucher à un périphérique monté

badblocks refuse normalement un test en lecture/écriture ou un test non destructif sur un périphérique monté, parce que l'un comme l'autre peut faire planter le système ou endommager le système de fichiers, même s'il est monté en lecture seule.

Une option -f permet de passer outre ce refus, et le commentaire du manuel à son sujet est l'une des lignes les plus mémorables d'une page de manuel Linux :

Ce refus peut être contourné avec l'option -f, mais cela ne devrait presque jamais servir : si vous pensez être plus malin que le programme badblocks, vous ne l'êtes très probablement pas. (dans le texte original : « This can be overridden using the -f flag, but should almost never be used --- if you think you're smarter than the badblocks program, you almost certainly aren't. »)

Le bon réflexe est de démonter le périphérique. Le manuel n'autorise qu'une seule exception : un /etc/mtab qui prétend à tort qu'un périphérique est monté.

Les options à connaître

Quelques options changent la forme d'une exécution :

  • -b définit la taille de bloc. Par défaut 1024. C'est celle qui rend la sortie exploitable ou dénuée de sens.
  • -c définit combien de blocs sont testés à la fois. Par défaut 64.
  • -p répète l'analyse jusqu'à ce qu'aucun nouveau bloc défectueux n'apparaisse sur autant de passes consécutives. Par défaut 0, c'est-à-dire une seule passe.
  • -e interrompt l'analyse après un nombre donné de blocs défectueux. Utile pour répondre à « y en a-t-il seulement », et le manuel note qu'elle produit une liste possiblement incomplète, ne l'utilisez donc pas quand vous voulez une vue d'ensemble.
  • -o écrit la liste dans un fichier au format attendu par e2fsck -l et mke2fs -l.
  • -s affiche la progression, ce qui compte parce qu'une passe complète sur un gros disque se mesure en heures.

Quand tester est la mauvaise décision

C'est le jugement que le manuel ne peut pas porter à votre place.

Une passe complète de badblocks lit, ou lit et écrit, chaque bloc du périphérique. Sur un disque en bonne santé, c'est un exercice long mais inoffensif. Sur un disque déjà en train de lâcher, ce sont des heures de charge supplémentaire sur du matériel qui peine, et des heures pendant lesquelles vous ne sauvez rien.

Si les données comptent encore, l'ordre est le suivant : image d'abord, examen ensuite. Le clonage avec un outil conçu pour les supports endommagés, qui réessaie et saute intelligemment au lieu de s'acharner sur le même secteur illisible, récupère vos octets tant que le disque tourne encore. Nous traitons cela dans le guide sur le clonage d'un disque défaillant avec ddrescue. Lancez ensuite vos tests sur l'image, autant de fois que vous voulez, sans plus rien à perdre.

Choix éditorial
4.5 / 5

Quand l'analyse confirme que le disque est en train de lâcher

Fondé en 2004Garantie 30 joursVersion gratuite 2 Go
Voir l'offre

En résumé

badblocks recherche les blocs défectueux et consigne ce qu'il trouve. Il ne répare rien.

Le mode par défaut est en lecture seule et sans danger. -n écrit puis restaure. -w efface l'intégralité du périphérique, et le manuel dit de ne jamais l'utiliser là où un système de fichiers existe. Le manuel recommande aussi de ne pas appeler badblocks directement du tout, mais via e2fsck -c ou mke2fs -c, pour que la taille de bloc soit la bonne. S'il refuse de s'exécuter parce que le périphérique est monté, démontez-le plutôt que de vous rabattre sur -f.

Et si le disque est mourant plutôt que simplement suspect, ne passez pas ses dernières heures à le tester. Copiez-le d'abord.

Le comportement décrit ici, y compris les motifs du mode écriture, l'avertissement contre -w, la recommandation d'utiliser e2fsck et mke2fs plutôt que badblocks directement, le refus sur périphérique monté et les valeurs par défaut, provient de la page de manuel badblocks(8) telle que livrée avec e2fsprogs 1.47.0. Les options et les valeurs par défaut peuvent différer selon les versions ; consultez le manuel du système que vous utilisez réellement. Les liens commerciaux portent l'attribut rel="sponsored nofollow" ; une commission d'affiliation peut s'appliquer sans coût supplémentaire pour vous.

Choix éditorial
4.5 / 5

Récupère les données de ton disque dur → EaseUS

Scan gratuit · fichiers supprimés, formatés, perdus · Windows & Mac

Fondé en 2004Garantie 30 joursVersion gratuite 2 Go
Voir l'offre

Questions fréquentes

badblocks répare-t-il les secteurs défectueux ?

Non. Sa propre description dit qu'il recherche les blocs défectueux d'un périphérique. Il produit une liste. La réparation, au sens de la réallocation d'un secteur défaillant, est faite par le firmware du disque, pas par badblocks. Ce à quoi la sortie est destinée, c'est à être transmise à e2fsck ou mke2fs pour que le système de fichiers puisse éviter ces blocs.

Quelle option de badblocks détruit les données ?

Le test en mode écriture -w. Il écrit les motifs 0xaa, 0x55, 0xff et 0x00 sur chaque bloc du périphérique, puis relit chacun d'eux pour comparer. Le manuel porte un avertissement explicite : ne jamais utiliser -w sur un périphérique contenant un système de fichiers existant, car cette option efface les données. Utilisez plutôt -n, plus lent mais qui préserve ce qui est présent.

Est-il vrai que le manuel déconseille de lancer badblocks directement ?

Oui, et cela passe facilement inaperçu. Le manuel indique qu'il est fortement recommandé aux utilisateurs de ne pas exécuter badblocks directement, mais plutôt d'utiliser l'option -c des programmes e2fsck et mke2fs. La raison est la taille de bloc : les numéros de blocs que badblocks produit dépendent de la taille de bloc utilisée par le système de fichiers, si bien qu'un décalage produit une liste de numéros qui ne veulent pas dire ce que vous croyez.

Pourquoi badblocks refuse-t-il de tester mon disque monté ?

Parce qu'un test en lecture/écriture ou non destructif sur un périphérique monté peut faire planter le système ou endommager le système de fichiers, même lorsqu'il est monté en lecture seule. L'option -f passe outre ce refus, et le commentaire du manuel à son sujet est sans détour : si vous pensez être plus malin que le programme badblocks, vous ne l'êtes très probablement pas. Démontez plutôt le périphérique.

Faut-il lancer badblocks sur un disque qui est déjà en train de lâcher ?

En général non. Une analyse complète lit ou écrit chaque bloc du périphérique, ce qui représente beaucoup de travail supplémentaire pour un disque qui peine déjà, et le temps passé à tester est du temps qui n'est pas passé à sauver les données. Si les données comptent encore, faites d'abord une image du disque avec un outil conçu pour les supports endommagés, puis examinez la copie.