J'ai récemment subi des dommages incroyablement petits mais assez importants sur un disque dur sur un hôte ESXi affectant quelques machines virtuelles. Il y a un fichier que j'aimerais beaucoup récupérer, et bien sûr, il a en quelque sorte été supprimé de ma sauvegarde habituelle. Les copies les plus récentes datent de 6 mois. Il s'avère que j'ai besoin de ça ... oups.
Détails:
1) J'ai utilisé ddrescue (outil AWESOME) dans une image ISO de démarrage Parted Magic pour récupérer 99,98% du lecteur de la machine virtuelle en question. Malheureusement, les erreurs semblent être presque entièrement des écritures de fichiers RÉCENTES ... alors bien sûr, ce sont exactement les secteurs dont j'ai le plus besoin de récupérer.
2) Le lecteur donne des erreurs d'E / S sur les lectures de mauvais secteur, mais il réussit parfois à lire un secteur précédemment mauvais! Ainsi, la récupération est toujours possible. Un peu plus souvent que cela aura une sorte de dysfonctionnement majeur et fera tourner le lecteur vers le bas et vers le haut. Oh, et environ 1/4 de ces retombées ne reviendront pas. (Un cycle d'alimentation difficile est requis, l'arrêt ne fonctionnera pas) Enfin, à peu près chaque mauvaise lecture de secteur est accompagnée d'un joli son de clic audible.
3) Le disque VM important est au format NTFS.
4) Je peux (généralement) monter le volume NTFS endommagé en lecture seule, et je peux (un peu moins souvent) naviguer vers le dossier qui contient le fichier dont j'ai besoin. Cependant, le fichier en question semble toujours donner une erreur d'E / S lorsque je fais un «ls» du dossier. Les autres fichiers du dossier ne donnent pas d'erreur IO.
5) J'ai essayé d'utiliser ntfsinfo / etc ... qui ressemble exactement à ce dont j'ai besoin ... mais cela n'ouvrira pas du tout la partition. (Frustrant, car «monture» le fera généralement)
6) Le fichier est un fichier XLS de l'ère Excel 2003, donc je ne suis pas sûr de pouvoir trouver des chaînes pour rechercher l'image de disque brute. (Peut-être des parties de la version de 6 mois?)
J'aimerais vraiment utiliser quelque chose comme les installations de debugfs. Cependant, à partir des pages de manuel, il semble que les outils ntfs pourraient faire le travail si seulement ils pouvaient être créés pour ouvrir la partition. En particulier, je me demande si les erreurs d'E / S peuvent se trouver uniquement dans les métadonnées du fichier et si l'enregistrement du répertoire peut être restauré suffisamment bien pour copier le contenu du fichier. En dernier recours, quel que soit le contenu partiel du fichier que je puisse récupérer serait formidable.
J'ai déjà écrit des modules de noyau (relativement simples), donc je pourrais compiler un module NTFS spécial avec plus d'informations de débogage activées (ou ajoutées). (Le fichier vaut au moins quelques jours de bricolage pour essayer de récupérer ... en plus j'apprends des trucs sympas dans le processus)
Des pointeurs?
ÉDITER:
Plus d'informations sur les erreurs de lecteur:
Le / var / log / messages montre beaucoup d'erreurs NTFS-f bien sûr ... mais j'ai finalement pris la peine de traduire le message de code de détection non géré que j'obtiens habituellement: clé de détection 0x3, ASC = 0x11, ASCQ = 0x4. (qui semble se traduire par ERREUR DE LECTURE NON RÉCUPÉRÉE - ÉCHEC DE RÉALLOCATION AUTOMATIQUE).
Lorsque le disque tourne, je vois un message "scsi0: * BusLogic BT-958 Initialized". Je ne sais pas si c'est le pilote Linux SCSI, le pilote ESXi ou le lecteur lui-même qui décide de faire tourner le lecteur. S'il s'agissait du pilote Linux, je pourrais peut-être modifier le pilote pour éviter de ralentir. Toute cette opération de sauvetage est rendue beaucoup plus douloureuse par ces ralentissements nécessitant un cycle d'alimentation.
EDIT2:
en utilisant le message de journal "end_request: I / O error, dev sda, sector 7238859" juste après avoir 'ls' le répertoire contenant le fichier en question, j'ai ciblé mon opération ddrescue sur ce secteur. Je prévois actuellement de tenter ma chance et d'écrire ce secteur sur le disque actif si cela réussit. Peut-être que je peux reconstruire lentement mon chemin vers le fichier en question de cette façon. Pourtant, la plupart des secteurs défectueux récupérables sont récupérés en moins de 20 tentatives ... celui-ci est supérieur à 150 jusqu'à présent ... * soupir *
EDIT3:
L'erreur de secteur de «ls» sur le fichier dont j'ai besoin est totalement non coopérative (1000+ essais du jour au lendemain et pas de chance). J'espère que ce ne sont que des métadonnées lorsque vous faites un «ls»? :)
J'ai la plupart d'une copie de ddrescue, mais cela ne monte pas (ou monte sans fichiers). Le lecteur endommagé se monte correctement la plupart du temps ... peut-être que des erreurs d'E / S sur le lecteur endommagé forcent le "montage" à retomber sur le miroir qui fonctionne?
** EDIT4: **
J'ai abandonné pour l'instant, en attendant d'autres suggestions. J'ai retiré le lecteur et reconstruit la boîte. Je garderai le lecteur au cas où quelque chose arriverait.
la source
ddrescue
un autre outil similaire pour copier autant de secteurs que possible. Ne faites aucune récupération au niveau du système de fichiers à partir du disque endommagé, faites-le à partir de la copie.Réponses:
Quelques notes de mon expérience:
testdisk
sous Linux, mais si celles-ci échouent, Windowschkdisk
peut vous aider. Si Windows est installé sur une machine virtuelle, vous pouvez convertir l'image brute obtenue à partirddrescue
d'un format pris en charge par cette machine virtuelle (commeVDI
ouVMDK
), l'ajouter à la machine virtuelle et démarrer Windows en mode ligne de commande pour réparer le système de fichiers. Si vous utilisez VirtualBox, la commande pour convertir une telle image estVBoxManage convertfromraw <filename> <outputfile>
facultative avec--format VDI|VMDK|VHD
pour obtenir le format de sortie spécifié.la source
Cela peut s'appliquer ou non à votre cas, mais une mesure de dernier recours est le "truc du congélateur". Voir Récupération de données à partir d'un disque dur endommagé: "l'astuce du congélateur" pour une discussion de la méthode.
la source