Sauver un disque dur

Bonjour,

J’ai un disque dur externe de 2.5 pouces (de 160 Go) que j’ai fait tomber il y a un moment, c’est rageant car il m’a coûter assez cher.

Y a t’il une solution ? En sachant que lorsqu’il s’attarde trop sur une partie du disque il commence à déraper et à “freezer” : ça consiste à clignoter à l’infini sans pouvoir s’arréter.

Je sais qu’il y a l’outil badblocks mais j’aurais voulu savoir si vous aviez une méthode qui marche pour créer des partitions qui marchent, même si je perd une partie des 160 Go.

Merci d’avance.

Salut,

Utiliser le formatage avec contrôle, il marque les clusters endommagés et le système ne tente plus de les utiliser :slightly_smiling:

C’est un peu plus subtil que ça, j’ai eu un atterissage de têtes sur un disque, des blocs endommagés apparaissaient régulièrement. Je m’en suis sorti comme suit:

  1. Localisation: Epluchage des logs afin de voir où étaient localisés les blocs foireux qui apparaissaient. J’ai dégagé comme ça une zone sur le disque qui visiblement avait dégusté.

  2. Ecriture d’un fichier contenant la zone:

#!/bin/sh IFIN=479999 I=474000 while [ $I -lt $IFIN ]; do { echo $I > badse I=$[$I+1]; } done;

  1. Lancement de checkdsk pour marquer les blocs:

#!/bin/sh IFIN=$1 I=1 while [ $I -lt $IFIN ]; do { echo "Lancement " $I badblocks -b 4096 -i badse -o listebads.$I /dev/hdb4 cat badse > badse.tmp cat listebads.$I >> badse.tmp cat badse.tmp | sort -u > badse echo $I " fini"; I=$[$I+1]; } done;

Comme tu vois ce script boucle plusieurs fois et des secteurs sont rajoutés. Je l’ai fait tourné une journée entière (attention, la première passe est très longue), réajusté la zone en l’élargissant et refais une série de tests. Aucun bloc mauvais ne s’est rajouté. Le disque est toujours utilisé, il a perdu 5% de sa capacité dans l’histoire.

Salut Fran.b,

Et bien sûr avant d’employer une méthode aussi elaborée tu avais essayée la mienne avec un résultat peu satisfaisant ?

Pour ma part quand je récupère un disque avec des secteurs défectueux, j’y vais à grands coups de cycles de lecture/écriture avec dd ou badblocks en mode destructif pour tenter d’en réallouer un maximum, et souvent ça suffit. Mais pas sûr que ça suffise en cas d’accident grave comme un atterrissage de têtes avec de larges zones défectueuses.

François, à quoi sert le premier script à part écrire $IFIN-1 dans un fichier badse ?

[quote=“ggoodluck47”]Salut Fran.b,

Et bien sûr avant d’employer une méthode aussi elaborée tu avais essayée la mienne avec un résultat peu satisfaisant ?[/quote]
J’avais surtout des données à récupérer dessus. Quand tu déclares un bloc mauvais, e2fsck déplace le bloc vers un bloc non marqué et met à jour la système de fichier. Pendant l’opération, j’ai vu qu’il faisait de réels efforts pour récupérer les données. J’ai sauvé la quasi totalité de mes fichiers (seulement une dizaine de perdus) par cette méthode. Sinon, si tu as bien lu, c’est une suite de ta méthode mais au lieu de faire une passe, tu en fait des dizaines et en rajoutant aux blocs détectés une liste prétablie (ce qui gagne du temps et permet la prévention)

Salut,

J’avais cru comprendre qu’il faisait son deuil de ce qu’il y avait dessus [quote](pour créer des partitions qui marchent, même si je perd une partie des 160 Go.)
[/quote] et ma méthode n’est meme pas e2fsck mais mkfs -c !
Je prends note de ton systeme qui me parait bien sympa :slightly_smiling:

Ta technique est sympa fran.b mais il faut avoir localisé les parties déféctueuses et je ne sais pas comment les trouver :S.

Regarde dans le syslog les erreurs faites, une succession de e2fsck avec vérification de la surface permet aussi de voir la zone.

Bon je commence à avoir une bonne liste avec les :

Feb 18 21:36:45 VirgoDeb kernel: Buffer I/O error on device sda3, logical block 93779562 Feb 18 21:36:45 VirgoDeb kernel: Buffer I/O error on device sda3, logical block 93779563 Feb 18 21:36:45 VirgoDeb kernel: Buffer I/O error on device sda3, logical block 93779564 Feb 18 21:37:01 VirgoDeb kernel: Buffer I/O error on device sda3, logical block 93779560 Feb 18 21:37:01 VirgoDeb kernel: Buffer I/O error on device sda3, logical block 93779561 Feb 18 21:37:01 VirgoDeb kernel: Buffer I/O error on device sda3, logical block 93779562 Feb 18 21:37:09 VirgoDeb kernel: Buffer I/O error on device sda3, logical block 93779568 Feb 18 21:37:14 VirgoDeb kernel: Buffer I/O error on device sda3, logical block 93779569 Feb 18 21:37:14 VirgoDeb kernel: Buffer I/O error on device sda3, logical block 93779570 root@VirgoDeb /home/sylvain # cat /var/log/syslog | grep Buffer

Je fais une liste en fonction de mes partitions mais c’est particulièrement long (dû au mkfs.vfat -c /dev/sdaX).

Après j’utiliserais ton système fran.b (mais je suis effrayé de voir des listes aussi longues).

Merci.

EDIT : je sais pas si ça sert à grand chose de m’acharner : il vient de rechuter alors que je n’avais même pas fini le premier scan :S