Association Bordelaise des Utilisateurs de Logiciels libres
Récupération de données sur une partition avec des badblocks
Ou comment surmonter une défaillance du disque.
Le problème : une partition reiserfs n’est plus disponible à cause de blocs défectueux. Ils provoquent une erreur d’entrée/sortie systématique de telle sorte qu’un reiserfsck plante inévitablement quelles que soient les options utilisées. De plus il s’agit des "super-blocks" qui décrivent la structure du système de fichiers.
Malheureusement, c’est de votre partition home qu’il s’agit et en plus ça fait longtemps que vous n’avez pas fait de sauvegarde... Vous avez l’impression d’avoir tout essayé mais rien ne fonctionne. Il existe pourtant une solution très simple.
Admettons que vous ayez 2 disques durs : hda et hdb. Votre home défectueux se trouve sur hda3.
La solution consiste à faire une image de la partition sur un disque valide. Pour cela, il vous faut utiliser l’inévitable dd :
Malheureusement, à cause de ces satanés blocs défectueux, la copie plante dès qu’elle en rencontre un.
Pour éviter de s’arrêter lors de la rencontre d’un bloc défectueux, on ajoute l’option conv=noerror.
Il y a une autre difficulté : le système de fichiers reiserfs fonctionne par pointage et donc adressage. Si on ne spécifie rien d’autre, dd remplacera les blocs défectueux par rien du tout, et cela décalera les adresses et donc lors de la reconstruction du système de fichiers, reiserfsck va se perdre et retrouver plein de trucs bizarres...
Pour pallier ce problème, on utilise l’option de conversion sync.
L’option sync a pour effet de remplacer les blocs défectueux par des octets nuls, ce qui conserve un adressage correct.
La commande valide est donc la suivante :
Ensuite, il faut reconstruire le superbloc :
Le programme reiserfsck pose plusieurs questions, notamment la version du FS, la taille des blocs, si c’est le journal par défaut et si on a utilisé resizer. Vous devez répondre à ces questions suivant votre configuration réelle. Normalement, comme vous avez aussi utilisé les options par défaut lors de la création du système de fichiers, les options par défaut sont aussi les bonnes lors de la récupération... Ensuite il demande des confirmations pour continuer, donc on continue....
Le superbloc est maintenant reconstruit.
Vient ensuite la reconstruction des fichiers :
là, on le laisse bosser...
passe 1, passe 2, passe 3
Une fois terminé, normalement, il est possible de monter l’image en loopback :
Ça devrait fonctionner....
Vérifiez en allant dans le répertoire et en affichant le contenu :
Vous aurez un répertoire lost+found dans lequel peuvent se trouver certaines des données. Leurs noms seront sans doute très bizarres, mais il ne faut pas vous affoler. Armez-vous de patience et regardez dans les fichiers et les dossiers, vous trouverez certainement des choses que vous connaissez.
Certaines peuvent être incomplètes mais vous êtes quand même content car vous avez pu récupérer la quasi-totalité de votre travail :-)
Pour une récupération optimale, il est bon de conserver tous les attributs des fichiers. La commande tar et la commande cp avec les options -p ou -a sont vos amies.
Pierre Jarillon qui s’est retrouvé dans cette situation et qui m’a permis d’écrire cet article, propose d’utiliser l’aperçu de konqueror pour faciliter l’identification des fichiers.