|
Page Précédente | |
Auteur | Sujet : Récupération données / disque dur illisible HOWTO avec outils libres |
enfoiro a nickname is just a nickname | Salut à toutes et à tous,
Message édité par enfoiro le 20-04-2010 à 20:07:56 |
Publicité | Posté le 18-07-2006 à 15:35:39 |
HDSDI | Mon point de vue sur la sécurité de stockage, c'est les sauvegardes, images disques et autres rsync (c'est long et c'est cher mais c'est sur) ! |
enfoiro a nickname is just a nickname | Tu a entièrement raison, cependant malheureusement tu ne peux pas toujours tout sauvegarder de manière clean et les particuliers n'ont pas forcément le RAID 1/5 à la maison, le script de sauvegarde et les backups automatiques. Pareil sur les postes avec des données "locales" dans les entreprises. De plus ce tuto s'adresse aussi aux gens qui ont poussé un petit "oops" après avoir niqué leur table de partitions ou effectué un resize sauvage. a+ Deuxième partie : compte rendu de récupération très difficile Voici ma dernière expérience, très enrichissante du point de vue des connaissances mais très stressantes. Préliminaire 1 : spinrite Qu'est ce que c'est ? Préliminaire 2 : tactique d'approche Préliminaire 3 : sur mon bus IDE, ou sur une interface externe USB ? LET'S GO Situation initiale : un disque dur qui fait un bruit de claquement au démarrage, reconnu 1 fois sur 10. Le moteur s'arrète parfois après une série de claquements. Les utilisateurs un peu neuneu ont laissé claquer le disque pendant 2 jours ordinateur allumé. Le disque essaie de booter nux mais bloque sur des erreurs
Diagnostic initial : disque mort. Première tentative ratée Utilisation de gddrescue, une variante de dd_rescue qui se veut plus "intelligente" pour récupérer les données. Utilisation de dd_rescue de kurt. Utilisation de spinrite pour essayer de récupérer les secteurs défectueux.
Deuxième tentative : succès Afin d'expliquer cette tentative réussie, on doit comprendre quelques concepts préliminaires. Tout d'abord comment le kernel accède aux périphériques disques. Accès en mode "DMA" soit Direct Memory Access (modes DMA et UDMA1/2/3/4/5/6) Périphérique physique en lecture -> Kernel : allocation mémoire, tampon de transfert -> périphérique en écriture Dans ce mode, le kernel fait écran entre les périphériques. Le problème, c'est que lorsque le périphérique n'arrive pas à lire un secteur, le disque s'arrète et le kernel ne renvoie pas de commande de redémarrage au disque. Accès le plus basique : PIO (Programmed Input Output) Périphérique physique en lecture -> Proce -> périphérique en écriture Cette méthode beaucoup plus simple est différente et surtout plus lente et consommatrice de proce. Mais elle permet un meilleur contrôle sur le transfert et permet des récupérations car on a un accès plus direct au disque. En effet, lorsque le transfert en mode PIO échoue, l'ordinateur renvoie une commande reset sur le périphérique, visible dans dmesg (ca donne quelque chose du genre)
Ce qui peut permettre au disque de redémarrer pour reprendre le transfert. Détail des commandes de diagnostic et de paramétrage du disque cassé : 1) Boot de knoppix
On demande à knoppix d'éviter la phase de construction du fstab, qui sollicite notre périphérique en mauvais état en lecture. 2) Etat SMART du disque
Si vous voyez un "FAILING_NOW" quelque part, ou que le disque ne passe pas le test de
Vous êtes bien dans un cas ou le disque est affecté. 3) Modification du comportement du disque Ici on utilise des commandes marquées "Dangerous" dans la doc d'hdparm. Vous êtes prévenus. Pour redémarrer le disque :
Le disque recommence à tourner.
Désactiver des fonctions annexes qui peuvent provoquer des problèmes lors de la récupération (vieux disques mais toujours essayer):
Changer le mode de transfert :
Passe le disque en mode PIO5 (~5mo/s). Cette étape est la plus importante. En effet, le disque ne lit plus à fond mais fait une lecture séquentielle à vitesse de transfert constante. En passant en mode PIO1(~0,5-1mo/s), on a la vitesse la plus lente mais aussi les meilleures chances de récupération possibles.
Note: avec hdparm on peut modifier d'autres paramètres tels que le maxRetry qui permet de donner le nombre d'essais pour lire un secteur. L'abaisser diminue les chances de récup mais c'est parfois nécessaire si le disque est trop pourri. L'augmenter augmente la probabilité de récupération mais aussi la probabilité de faillite matérielle en cours de récupération. Faut jauger quoi 4) récupération effective Pour cela on se sert de dd_rescue de kurt garloff. Pourquoi ? Parce que gddrescue, prétendument plus efficace, n'a pas autant d'options avancées et n'est pas aussi performant. En effet, dd_rescue permet si le kernel a le support des périphériques "raw" (ce qui est le cas de knoppix), un accès au flag O_DIRECT qui permet d'accéder aux disques en mode brut, donc encore améliorer nos chances de succès.
J'ai testé avec les valeurs -b 512 -B 4096 sans le flag -D et ca a merdé. A vous de tester. -D active le mode brut (raw). Avec ce mode le secteur minimal est de 4096 octets. Sinon -b 512 est l'option par défaut. On peut aussi tenter avec le flag -r, pour lire le disque à partir de la fin, le flag -f pour passer en force (mes options préférées ). ATTENTION pour avoir une table de partitions correcte activer l'option -A si vous copiez un disque entier Et MERDE, ca marche pas, ca bloque, ca buggue, ca saoule Si ca ne marche pas, recommencez la procédure à partir de spinrite. Laissez le disque chauffer sans claquer pendant une journée avant de faire la récup. Ou alors mettez-le au congel. Bref tentez n'importe quoi, car la c'est la dernière chance sans les messieurs en blanc Troisième partie : pourquoi mon disque se met-il a bugguer et comment l'éviter ? 1) Fonctionnement d'un disque dur Une bonne base : http://fr.wikipedia.org/wiki/Disque_dur On y apprend qu'un disque est formé de plateau sur lequels sont imprimés des secteur magnétiques qui sont lus par des têtes de lecture (2 par plateau : une en dessous et une au dessus. La tête de lecture se déplace sur un coussin d'air crée par la rotation à haute vitesse du plateau du disque dur, entrainé par un moteur. On a 3 éléments : Causes des pannes La plus courante : i/o error sporadique : bad sector Conséquence : mode de lecture normale : le disque répète la commande X fois avant de lacher l'affaire. Le système de fichier est bloqué. Défaillance d'une tête de lecture Symptome : claquement/bruit bizarres (une tête racle la surface) Défaillance du moteur de démarrage des plateaux Symptome : le disque dur ne se "lance" pas au démarrage (on n'entend pas les plateaux arriver à leur vitesse de croisière). Défaillance de la mécanique de déplacement des têtes Symptome : bruits bizarres Troisième partie : Récupération de données volontairement effacées sur un support ext2/ext3 Sur un support ext2, les inodes ne sont pas effacés lors de la supression de fichiers. Par contre, c'est le cas pour ext3, pour des raisons de rapidité d'accès et éviter la fragmentation des accès au disque dur. Donc la récupération de données volontairement effacées sur un support ext3 est impossible avec la méthode constituant à récupérer les inodes et la seule solution simple est d'utiliser un outil comme photorec qui ne se base pas sur les inodes pour la récupération des fichiers. La méthode est toujours la même, afin de ne pas toucher au support original on fait un miroir avec dd rescue sur un disque sain et ensuite on travaille dessus. Pour les partitions ext2
Message édité par enfoiro le 29-09-2007 à 15:10:22 |
memaster ki a volé mon 62? | sujet interessant : ça m'est arrivé quelquefois aussi a mes debuts,
|
HDSDI | Mais je mais pas en cause ce topic, bien au contraire, c'est important.
|
thargos | très interressant tout ça =)!
|
Riot Buy me a riot | Merci beaucoup enfoiro, sujet très intéressant !
|
enfoiro a nickname is just a nickname | Salut à ts,
|
Publicité | Posté le 14-08-2006 à 22:16:23 |
enfoiro a nickname is just a nickname |
|
Mailik | Smart ne ment pas. Y a quelque temps, un de mes DD (30 Go) que je possède depuis environs 5 ans, a vu son "LifeTime" passer à 0. Et il a rendu l'âme dans le mois qui a suivit ... en emportant la table des partitions de mon DD de 200 Go Message cité 1 fois Message édité par Mailik le 24-10-2006 à 23:36:11 |
krifur |
enfoiro a nickname is just a nickname |
|
dam1330 ... | j'ai une partition en ext2 qui a flanché, j'ai fait un dd, le disque dur fait 80go, y a 40 go en tout d'occuper sur le disque dur.
|
biloute80 Mais tais toi donc ! | Salut, |
HJ |
|
enfoiro a nickname is just a nickname | Salut les amis,
|
enfoiro a nickname is just a nickname | up : ajout d'une nouvelle section |
enfoiro a nickname is just a nickname |
|
phosphoreloaded | Testdisk ne le voit pas correctement? |
haha | drapal |
VorteX | drapal aussi
Message édité par VorteX le 09-03-2007 à 20:25:33 |
haha | Personnnelement j'ai lancé une analyse de testdisk le matin et le soir en rentrant seulement 140/7500 cylindres étaient analysées...
|
haha | En fait j'aimerai récupérer la main sur le DD pour le formater. Donc je n'ai pas de craintes coté données, elles ne sont pas précieuses.
Message cité 1 fois Message édité par haha le 10-03-2007 à 00:13:57 |
arghbis salops de dauphins | et un cat /dev/zero /dev/tondd |
enfoiro a nickname is just a nickname |
|
haha | Merci!!
Message cité 1 fois Message édité par haha le 10-03-2007 à 14:46:36 |
haha |
|
haha | Il ne l'est malheureusement plus.
|
enfoiro a nickname is just a nickname | ptit up : ajout d'une section sur les données effacées volontairement sur un support ext2/3 |
Publicité | Posté le |
Page Précédente |
Sujets relatifs | |
---|---|
Compter les E/S disque d'un programme | Disque externe directement compatible Win/MAC/Linux ? |
[Linux] Transfert de linux d'un disque dur à un autre | Récupérer ses données |
[reglé!] installation d'un autre disque dur IDE dans ubuntu | permissions disque dur externe |
Pb place disque sur / sous FreeBSD | [Mandriva] Disque dur SATA |
Sécurisation des données sous 2003 Server | Connexion a une base de données locale |
Plus de sujets relatifs à : Récupération données / disque dur illisible HOWTO avec outils libres |