Réparer un disque dur NTFS défectueux sous GNU/Linux avec badblocks

Rédigé par antistress le 01 novembre 2018 - 3 commentaires

Clap de tournage vidéo qui sert de logo à Pitivi

J'ai un disque dur USB un peu ancien de 250 Go en NTFS (qui me sert pour stocker et transporter des médias audio-vidéo : films, séries, reportages) qui commençait à être capricieux : certains fichiers ne pouvaient plus être lus ni même effacés...

J'ai pensé que certains secteurs commençaient à lâcher. J'ai donc entrepris de réparer ce disque, en cherchant un logiciel pour GNU/Linux qui soit capable tout simplement de repérer et marquer les secteurs défectueux pour qu'ils ne soient plus utilisés à l'avenir.

J'ai réalisé cette opération à l'aide de l'utilitaire badblocks et de quelques tutos glanés sur la toile (notamment celui-ci). Je vous donne ci-après la méthode que j'ai utilisée avec succès, mais il y a d'autres façons de faire avec badblocks comme vous pourrez le voir avec les liens donnés en fin de billet.

Préparation

Sauvegarder le contenu de votre disque dur sur un autre support et installer badblocks sur votre système (c'est un utilitaire inclus dans le paquet e2fsprogs).

Détection et signalement des secteurs défectueux

Lancer badblocks pour scanner votre partition à la recherche des secteurs défectueux (NB : cette opération prend du temps). Cela se fait avec la commande :
sudo badblocks /dev/sdc1 (remplacer « sdc1 » par votre numéro de partition).

Si comme moi vous risquez d'avoir un certain nombre de secteurs défectueux, le plus simple est de les reporter dans un fichiers texte, ce qui peut être fait automatiquement en remplaçant la commande précédente par celle-ci :
sudo badblocks /dev/sdc1 > /home/mon_home/bad-blocks.txt (remplacer « sdc1 » par votre numéro de partition et « mon_home » par le nom de votre répertoire home).

Badblocks va alors vous révéler les adresses des secteurs défectueux, par exemple :
100390264
100390265
100390266
100390267
146565556
146565557
...

L'étape suivante va consister à écrire sur les secteurs défectueux. En reprenant l'exemple ci-dessus, cela donne :
sudo dd if=/dev/zero of=/dev/sdc1 bs=1024 count=1 seek=100390264
sudo dd if=/dev/zero of=/dev/sdc1 bs=1024 count=1 seek=100390265
sudo dd if=/dev/zero of=/dev/sdc1 bs=1024 count=1 seek=100390266
sudo dd if=/dev/zero of=/dev/sdc1 bs=1024 count=1 seek=100390267
sudo dd if=/dev/zero of=/dev/sdc1 bs=1024 count=1 seek=146565556
sudo dd if=/dev/zero of=/dev/sdc1 bs=1024 count=1 seek=146565557

Le reste est normalement pris en charge par le contrôleur du disque qui remarquera ainsi que ces secteurs sont défectueux et en tiendra compte à l'avenir !

Vérification, restauration

Pour vous assurer de la réussite de l'opération, relancer la commande du début (sudo badblocks /dev/sdc1) : vous ne devriez plus avoir d'erreur à présent. Il est temps de restaurer les données de votre disque dur :)

Pour aller plus loin :

3 commentaires

#1  - Teutates a dit :

Bonjour,

L'astuce est très intéressante puisqu'elle permet de devoir démarrer une machine sous Windows (à condition d'en avoir une sous la main). Toutefois, ne serait-il pas possible d'automatiser l'écriture sur les secteurs défectueux en reprenant le fichier TXT ? Car pour quelques blocs défectueux, la saisie manuelle peut convenir mais cel va (trop) vite devenir pénible avec un longue liste de secteurs à marquer.

Répondre
#2  - antistress a dit :

Salut Teutates, il y a des commandes tout-en-un données dans les liens en fin de billet, mais je ne les ai pas testées ;)

Répondre
#3  - Teutates a dit :

Re bonjour,

Je viens de voir la commande ntfsfix intégrée à ntfs-3g : https://doc.ubuntu-fr.org/ntfsfix
L'utilisation est assez simple :
1) disque démonté
2) sous root : ntfsfix /dev/SDC1

Toutefois, je ne connais pas (encore) son degré de fiabilité.

Répondre

Fil RSS des commentaires de cet article

Les commentaires sont fermés.