Récupération des données d’un disque dur chiffré LUKS endommagé

Mon disque dur principal de données a crashé : erreurs d’E/S qui empêchaient de le monter. Son contenu était chiffré avec LUKS/dm-crypt.

J’ai fini par tout récupérer après quelques tâtonnements et, probablement, un peu de chance.

Symptôme : des « I/O error » dans la log du kernel, et un disque dur qui refuse d’être monté. Panique à bord : j’ai perdu toute mes données ! (enfin, pas tant que ça, tout l’important était sauvegardé à plusieurs endroits)

Le disque dur ne faisait pas de bruit suspect, laissant penser qu’il ne s’agissait pas d’un gros problème mécanique.

Ouverture LUKS et tentative de réparation

Par chance, l’entête LUKS était accessible, j’ai donc pu passer la première étape indispensable : pouvoir déchiffrer la partition.

2 manières de le faire : via l’application « Disques », ou en ligne de commande :

Mais ensuite, si j’essaie de monter la partition :

Des « I/O Error » dans la log du kernel, et le message d’erreur :

J’ai tenté un fsck :

Mais rien à faire :

Entre-temps, j’ai racheté un gros disque dur (plus gros que celui qui venait de crasher).

Copie des données sur un autre disque

Puisque l’entête LUKS était lisible, je me suis dit qu’il était probable que d’autres données le soient.

J’ai donc fait une copie de la partition déchiffrée :

Notez bien les options « conv » : elles sont très importantes :

  • L’option noerror est nécessaire pour que la copie ne s’arrête pas à la première erreur
  • L’option sync est nécessaire pour que dd remplace les données illisibles par des zéros (plutôt que les sauter)

La première fois, j’avais fait la copie sans l’option sync, et la suite n’avait pas bien marché du tout (parce que les offsets sur le disque étaient complètement désalignés).

Réparation du filesystem

Bref, une fois la copie faite correctement, on peut faire le fsck :

Il m’a trouvé quelques erreurs, qu’il a essayé de corriger.

Et finalement :

Et tada ! Toutes les données sont là (il est probable que quelques fichiers soient corrompus, mais je ne suis pas encore tombé dessus)

Réutilisation du disque

Plutôt que de jeter le disque, je l’ai reformaté. Comme mes secteurs défectueux sont a priori en début de disque, j’y ai créé une petite partition inutilisée, et ai mis une partition de données sur tout le reste.

Pour être sûr qu’il n’y a pas de secteur défectueux sur cette partition, on peut lancer :

Même si ce disque n’est plus très fiable, il peut encore servir.

Conclusions

Les sauvegardes restent toujours le meilleur moyen de se préserver de ce genre de mésaventures.

Mais, si le disque dur fonctionne encore (mécaniquement), il est probable que seuls certains secteurs soient défectueux. Et le filesystem ext4 est vraiment résiliant : probablement que je peux remercier la redondance des superblocks.

Dernière chose : mon entête LUKS n’était pas corrompue. Si ça avait été le cas, je n’aurais pas pu faire tout ça SAUF si j’avais fait une sauvegarde de cette entête (et c’était bien le cas !). Pour faire cette sauvegarde :


Dans ce cas, j’aurais (a priori) pu faire une image avec dd de la partition chiffrée, puis remettre l’entête luks sur l’image, pour la déchiffrer ensuite. Mais je n’ai jamais eu l’occasion d’essayer (tant mieux !)

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *