[Linux] Recuperation de donnée sur un HD planté

Recuperation de donnée sur un HD planté [Linux] - Divers - Linux et OS Alternatifs

Marsh Posté le 09-06-2003 à 00:07:29    

Salut tout le monde
 
Voila g un petit pb de dur !
Mon DD a eu un coup de foudre et il est au 7eme ciel !
En gros plusieurs secteurs sont mort !
Et je n'ai po de sauvegarde !
 
Ce ki m'interesse ce n'est pas seulement récupérer les données du dsique (quoique !) mais surtout de comprendre un peu mieux les systemes de fichiers Ext2/3 !
 
Alors voila :
 
Partionnement :
hda1 : Partion Primaire - Physique - /boot - ext2  --> fonctionne
hda2 : Partion Etendue
hda5 : 1ère Partion Logique - swap --> naze mais peut importe
hda6 : 2nde Partion Logique - / - ext2 --> GROS PROBLEME
 
Sur la partition hda6, les 8 premiers blocks du disque sont morts
donc  
 - impossible de réparer avec fsck
 - impossible de réinscrire le super-block
 - perte de la definition des inodes du disk
 
* J'ai copier les données accéssible (a partir du block 9) avec dd sur un autre disk auquel j'ai répercuté le partionnement :
# dd if=/dev/hda6 of=/dev/hdb6 bs=512 skip=8
 
A partir de ce point j'ai travailler sur la copie  
 
* J'ai recupérer le super-block grace a :
# mkfs.ext2 -S /dev/hdb6
 
* J'ai lancer un scan :
# e2fsck -f -b 32768 /dev/hdb6
 
Mais je me retrouve avec une multitude d'erreur dans la définition des inodes. Ce qui est, au demeurant, logique.
 
Et la je seche parce que si je répond oui a toutes les question (ce ki ma pris une journée entière, avec un truc coincant la touche y), je me retrouve a la fin avec tous mes données sous la foreme de plusieurs centaine de fichier, nommés #xxxx, dans le rep lost+found
Et la je vous raconte po le délire pour y retrouver ses petits !
 
Voici mes questions :
Comment puis-je reconstruire les définiton des inodes a partir des inodes eux-meme ? Est-ce possible ? Si oui, comment ?
 
Merci d'avance  

Reply

Marsh Posté le 09-06-2003 à 00:07:29   

Reply

Marsh Posté le 09-06-2003 à 02:34:19    

UP, ca c'est un truc intéressant !
 
J'suis  pas un expert en récupération de donées, mais ont peut considérer que tes dtasa ont OK depuis le bloc 8.
Il faudrait donc reconstruire la table d'allocation de fichiers depuis le bloc 8 ?  
 
Il me semble que l'ext2/3 utilise plusieurs 'FAT' (File Allocation Table) de secours. Il suffirait de pouvoir en lire une sur le disque "HS" et en recréé une sur ton disque non HS en somme...Au pire tu perds les 8 blocs.
 
Bon ça mérite bien un effort, non ?  
 

Reply

Marsh Posté le 09-06-2003 à 08:38:44    

Bon, sur les block 1 & 2 y avait rien.
Sur le block 2 & 3 y avait le superblock.
Après ca y a le descripteur de groupe, une partie des bitmaps, ... mais ca ca depend des infos du superblocks.
 
Le superblock et les descripteurs de groupes sont stocké a de nombreux endroit sur le disque.  
 
La première chose a faire c restorer un superblock valide.  
ton  
# mkfs.ext2 -S /dev/hdb6
ne restore pas un block il en regenere un 'vierge'.
Il faut utiliser 'e2fsck -b ???'. Pour le ??? ca depend de la taille des block de l'ancien fs ... Regarde la man page. La taille des block tu peut soit essayer soit regarder la taille des block qu'il a fait quand tu a regenerer le superblock toi meme ( ce sera probablement la même ). Il faut faire cette operation sur le filesystem de base, non modifié ( donc AVANT les operatiosn que tu as déja fait ). Essaye d'abord en read-only (pour etre sur que t'a la bonen taille de block) puis après en rw.
 
Une fois le superblock restoré, faudra aviser suivant le resultat
 
PS: Ma numérotation commence a 1 pour respecter les spec ext2 qui disent que 0 signifie pas de block

Reply

Marsh Posté le 09-06-2003 à 11:44:12    

Merci de ces informations !
 
Nota : Lorsque j'emploie le "je" dans le suite du document, je ne suis pas vraiment sympa avec mon pote Starlifter ! :sarcastic:  
En fait, j'aurai du employer le "nous" puisque l'on a bosser ensemble sur de pb et, sans son aide, je pense que j'y serai encore, surtout dans les conversions Hex<->Dec !
Donc Mr Starlifter un Grand MERCI et encore BRAVO !!  :jap:  :hello:

 
Surtout sur le mauvais emploi de ma part de  
# mkfs -S /dev/hda6
Je pensais que cette commande restaurais le super-block ! Une erreur dans le bouquin !
 
Par contre je suis obliger de travail sur une copie du fs sur un autre disque car le disque est vraiment casser physiquement !
Et ainsi je ne risque pas de perdre définitivement mes données !
 
donc j'ai trouvé cette astuce :
 
* Je crée un partionnement sur le disque de secour (hdb) identique au disque cassé (hda)
hdb1 hdb2 < hdb5 hdb6 >
 
<inutile>
* Comme je ne peux récuperer les 8 premiers blocs de mon hda6, je réduis la partion hdb6 du meme nombre de bloc en partant du début a l'aide de fdisk (linux).
<inutile>

 
* Je duplique les blocs de hda6 vers hdb6 a l'aide de dd, en sautant les 8 premiers blocs !
# dd if=/dev/hda6 of=/dev/hdb6 bs=512 skip=8 seek=8
 
Par contre j'ai un doute sur le block size. personellement je pense que ce serait plutot 1024 au lieu de 512. Non ?
 
Bon le temps de la duplication j v manger un bout !
 
Edit -
 
Bon la duplie est terminée ! Tout c'est bien passé !
Je tente de réparer le disque de secour
 
* Je lance un  
# e2fsck /dev/hdb6
et il me reponds que mon superbloc est naze !
 
* je tente un :
# e2fsck -b 8193 /dev/hdb6
Toujours le meme message !
 
* Je tente les superblock suivant sans aucun succès !
 
Pendant d'autres test sur le disk de test, la commande
# mke2fs -S /dev/hdb6  
m'avait renvoyer le superblock 32768 - Bizarre ! Non ??
 
* Je tente un  
# e2fsck -b 32768 /dev/hdb6
et la bingo ca roule !
Il trouve des erreur dans les 8 premier block ! Heureusement :)
Puis d'autres un peu plus loin !
 
* Je fix et je clear a droite a gauche selon les messages !
 
et là il me dit que tout est ok !
C'est a dire que les 6 passe du checks ont abouti !
 
cool !!!
 
* Pour etre sur que je ne reve pas, je lance un  
# e2fsck /dev/hdb6
pour voir et la ca roule du premier coup !!
 
* je peux donc monter mon system de fichier (en read only, on ne sait jamais) :
# mount -r -t ext2 /dev/hdb6 /mnt/rescue
Yesss ca marche !
 
* Je retrouve tout mon petit monde dans le rep lost+found
Mais se coup si je n'ai qu'une disaine de repertoire nommé #xxxx
ET je m'apercois très vite qu'il s'agit des repertoire de premier niveau (/etc, /usr, /home, ...) !
Trop Cool
 
Je viens de lister tous les reps
et j'ai toutes mes données !!
 
C cool la vie non ?
 
Et dire que y'a des boite ki fabriques des soft a plusieur millier de francs pour faire la meme chose !
 
G quand meme du bol d'avoir linux + ext2 !
Parce qu'avec win32 + FAT je crois que c t mort !!
 
C trop fort c systeme de fichier
 
Ah j'ai failli oublier !
Merci 246tnt pour test infos  :jap:


Message édité par drakkon le 13-06-2003 à 23:54:00

---------------
[:drakkon] D R A K K O N Membre du Team [KHEOPS] ! Nous avons des problèmes à toutes vos solutions - Le Site: http://seti-kheops.dyndns.org/
Reply

Marsh Posté le 09-06-2003 à 11:51:56    

Ce que j'ai fait quand j'ai voulu restorer des donnée de mon disque, j'ai fait un dd dans un fichier . Apres je configure un loop device pour creer un block device virtuel et voia je pouvait bosser dessus comme un vrai disque.

Reply

Marsh Posté le 09-06-2003 à 12:29:35    

quid du block size à votre avis !


---------------
[:drakkon] D R A K K O N Membre du Team [KHEOPS] ! Nous avons des problèmes à toutes vos solutions - Le Site: http://seti-kheops.dyndns.org/
Reply

Marsh Posté le 09-06-2003 à 12:58:47    

le bs que t'a dans dd n'a rien a voir avec le fs ... C juste la taille des block qu'il vas utilisé pour copier d'une source a l'autre ...
 
dd if=/dev/hda6 of=/dev/hdb6 bs=4096 skip=1
 
ca ferait la même chose ... même p/e un peu plus rapide

Reply

Marsh Posté le 09-06-2003 à 13:56:17    

oki  
l'essentiel c de toujours utiliser le meme bs donc dans une meme opération
 
par exemple quant du copie vers un fichier puis que tu fais l'inverse !!


Message édité par drakkon le 09-06-2003 à 13:56:56

---------------
[:drakkon] D R A K K O N Membre du Team [KHEOPS] ! Nous avons des problèmes à toutes vos solutions - Le Site: http://seti-kheops.dyndns.org/
Reply

Marsh Posté le 09-06-2003 à 14:37:21    

Euh au fait l'important c que la taille de ce que tu copie soit un multiple de bs ... ( avec ton disque au fait faut verifier que la taille est multiple de 4096 )

Reply

Marsh Posté le 09-06-2003 à 23:06:10    

J'ai rééditer mon post plus haut !
 
Merci de ton aide 246tnt !
 
Transmission Terminée !


---------------
[:drakkon] D R A K K O N Membre du Team [KHEOPS] ! Nous avons des problèmes à toutes vos solutions - Le Site: http://seti-kheops.dyndns.org/
Reply

Marsh Posté le 09-06-2003 à 23:06:10   

Reply

Marsh Posté le 09-06-2003 à 23:26:40    

:jap: Well done ! :jap:
 
Genre de topic que je vais pas oublier de si tot ;)

Reply

Marsh Posté le 09-06-2003 à 23:34:35    

C logique que il n'aie pas retrouvé les rep de bases. Ses infos se trouvait dans l'inode root qui se trouvait partiellement dans les blocs détruit. Du coups quand plus loins il a trouvé une arborescence orpheline ( parce que son inode parent n'existait pas ), il l'a juste greffé dans lost+found ;)

Reply

Marsh Posté le 10-06-2003 à 09:55:45    

Post très interrescant ! J'ai crashé un disque (le truc qu'on dit qu'il ne faut jamais faire : couper le jus brutalement...) mais j'ai fait confiance au e2fsck et j'ai peur que rien ne soit récupérable. :/
 
Sinon, j'ai trouvé le programme e2salvage qui est censé faire plus de chose que e2fsck. ( http://project.terminus.sk/e2salvage/)

Reply

Marsh Posté le 10-06-2003 à 10:16:17    

j'ai le meme prob ke drakkon sauf ke pour rajouter une difficulté de plus, mes DD sont en RAID 0 software, est ce ke vous auriez une ID de comment recuperer les donnés?

Reply

Marsh Posté le 10-06-2003 à 22:19:35    

Les deux disques on cassé en même temp ?

Reply

Marsh Posté le 10-06-2003 à 23:02:23    

STARLIFTER a écrit :

Les deux disques on cassé en même temp ?


un seul.
mais je peu plus bouter il est pas capable de monter les partoche

Reply

Marsh Posté le 11-06-2003 à 22:17:14    

merde c con ca. les miens sont aussi en raid 0 logiciel, va falloir que je me penche sur le probleme parce que si un jour ca m'arrive je serait aussi dans la merde.
J'esperais qu'il soit capable de redemarrer même avec un disque en moins...

Reply

Marsh Posté le 13-06-2003 à 23:51:10    

Salut !
 
1- essaie de booter depuis une diskette de rescue ou depuis le cd d'installe en rescue egalement !
2- Vérifie si tu peux monter les partoche du disque sain !
Si tu peux -> vérifie ton chargeur de démarage (Liloo, grub, ...)
et tente de reconstruire le mirroir (cf http://tldp.org/FAQ/Linux-RAID-FAQ
 
...


---------------
[:drakkon] D R A K K O N Membre du Team [KHEOPS] ! Nous avons des problèmes à toutes vos solutions - Le Site: http://seti-kheops.dyndns.org/
Reply

Marsh Posté le 14-06-2003 à 09:03:35    

drakkon a écrit :

Salut !
 
1- essaie de booter depuis une diskette de rescue ou depuis le cd d'installe en rescue egalement !
2- Vérifie si tu peux monter les partoche du disque sain !
Si tu peux -> vérifie ton chargeur de démarage (Liloo, grub, ...)
et tente de reconstruire le mirroir (cf http://tldp.org/FAQ/Linux-RAID-FAQ
 
...


ce n'est pas un miroir c un striping

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed