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.

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 :
-bdéfinit la taille de bloc. Par défaut 1024. C'est celle qui rend la sortie exploitable ou dénuée de sens.-cdéfinit combien de blocs sont testés à la fois. Par défaut 64.-pré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.-einterrompt 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 pare2fsck -letmke2fs -l.-saffiche 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.
Quand l'analyse confirme que le disque est en train de lâcher
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.
Récupère les données de ton disque dur → EaseUS
Scan gratuit · fichiers supprimés, formatés, perdus · Windows & Mac



