Formattage partition ext4... Topic is solved

Comment utiliser TestDisk pour récupérer une partition perdue
Message
Author
tux61
Posts: 7
Joined: 16 Apr 2012, 19:52

Formattage partition ext4...

#1 Post by tux61 »

Bonjour,
En voulant installer une nouvelle version de linux sur mon PC, j'ai malencontreusement formatté par erreur la partition contenant mon /home...
Avec l'outil photo_rec j'ai vu que je pouvais récupérer des fichiers, mais je préfererais bien sûr pouvoir accéder directement à la partition ce que je n'arrive pas à faire avec testdisk.
Mon disque était ainsi partitionné :
/dev/sda1 /
/dev/sda2 extended
/dev/sda5 /home
/dev/sda6 swap

Voici ce que me donne testdisk :

Code: Select all

Disk /dev/sda - 250 GB / 232 GiB - CHS 30401 255 63
Current partition structure:
     Partition                  Start        End    Size in sectors

 1 * Linux                    0   1  1  1458 254 63   23438772
 2 E extended LBA          1459   0  1 30028 254 63  458977050
No ext2, JFS, Reiser, cramfs or XFS marker
 5 L Linux                 1459   1  1 30028 254 63  458976987
 5 L Linux                 1459   1  1 30028 254 63  458976987


Disk /dev/sda - 250 GB / 232 GiB - CHS 30401 255 63

     Partition                  Start        End    Size in sectors
  1 * Linux                    0   1  1  1458 254 63   23438772
> 2 E extended LBA          1459   0  1 30028 254 63  458977050
  5 L Linux                 1459   1  1 30028 254 63  458976987



TestDisk 6.13, Data Recovery Utility, November 2011
Christophe GRENIER <grenier@cgsecurity.org>
http://www.cgsecurity.org

Disk /dev/sda - 250 GB / 232 GiB - CHS 30401 255 63

     Partition                  Start        End    Size in sectors
    Previous
>  Linux                 1459   1  1 30028 254 60  458976984                    
 superblock 32768, blocksize=4096 []
 superblock 98304, blocksize=4096 []
 superblock 163840, blocksize=4096 []
 superblock 229376, blocksize=4096 []
 superblock 294912, blocksize=4096 []
 superblock 819200, blocksize=4096 []
 superblock 884736, blocksize=4096 []
 superblock 1605632, blocksize=4096 []
 superblock 2654208, blocksize=4096 []
 superblock 4096000, blocksize=4096 []

 To repair the filesystem using alternate superblock, run
>fsck.ext4 -p -b superblock -B blocksize device                                 
 
>[  Quit  ]
                    
Quelqu'un pourrait-il m'aider ?
Merci d'avance

User avatar
remy
Posts: 457
Joined: 25 Mar 2012, 10:21
Location: Strasbourg, France.
Contact:

Re: Formattage partition ext4...

#2 Post by remy »

est-ce que tu as changé le partitionnement ou reformaté le système de fichier en gardant la parition à la même place ?

tux61
Posts: 7
Joined: 16 Apr 2012, 19:52

Re: Formattage partition ext4...

#3 Post by tux61 »

remy wrote:est-ce que tu as changé le partitionnement ou reformaté le système de fichier en gardant la parition à la même place ?
Non, je n'ai rien changé : par contre quand j'ai vu que la partition /dev/sda5 était en cours de formattage, j'ai coupé brutalement l'ordi (j'aurais peut-être pas dû ?).
Merci

User avatar
remy
Posts: 457
Joined: 25 Mar 2012, 10:21
Location: Strasbourg, France.
Contact:

Re: Formattage partition ext4...

#4 Post by remy »

Si, tu as bien fait. Tu as peut-être réussi à conserver des superblocs de l'ancien système de fichier.

Il faudrait faire un scan avec testdisk en mettant intel comme type de table, jusqu'au deepersearch, et dans les options "cylinder boundary : no" (ou peut-être alignement : no suivant la version)

tux61
Posts: 7
Joined: 16 Apr 2012, 19:52

Re: Formattage partition ext4...

#5 Post by tux61 »

remy wrote:Si, tu as bien fait. Tu as peut-être réussi à conserver des superblocs de l'ancien système de fichier.

Il faudrait faire un scan avec testdisk en mettant intel comme type de table, jusqu'au deepersearch, et dans les options "cylinder boundary : no" (ou peut-être alignement : no suivant la version)
Voici ce que j'obtiens

Code: Select all

Disk /dev/sda - 250 GB / 232 GiB - CHS 30402 255 63
     Partition               Start        End    Size in sectors
 D Linux                    0   1  1  1458 254 63   23438772
 D Linux                  552   1  1  2010 254 63   23438772
>P Linux                 1459   1  1 30028 254 63  458976987
 D Linux Swap           30007   0  1 30268 254 63    4209030
 P Linux Swap           30029   1  1 30400 254 63    5976117
Le problème c'est que l'option "P" donne : "No file found, filesystem may be damaged."
C'est cuit ?

User avatar
remy
Posts: 457
Joined: 25 Mar 2012, 10:21
Location: Strasbourg, France.
Contact:

Re: Formattage partition ext4...

#6 Post by remy »

Non, il faudrait déterminer les superblocs (éventuellement avec le menu advanced) sur cette parition, puis essayer ces superblocs un a un pour voir si tu arrives à montre la partition ou à la réparer en passant le bloc spécifique dans les options. Mais c'est plsu spécifique à linux, et moins à testdisk... limite un peu hors-sujet, quoi :P

Pour info, je quote un passage de feu le blog de cep (le blog, pas cep) :
Pour cela on va utiliser mkfs.ext3 avec l'option -n, qui ne créera pas de système de fichiers mais montrera ce qui aurait été réalisé, indiquant par la même occasion l'emplacement des sauvegardes du superblock. Surtout ne pas oublier le -n sinon les données présentes sur le disque seront perdues. Pour notre exemple on prend comme partition /dev/hda3 et la commande serait sudo mkfs.ext3 -n /dev/hda3.
Comme on veut récupérer seulement l'adresse des supers, on va utiliser grep pour n'afficher que les lignes 11 et 12 de la sortie :

Code: Select all

:~$ sudo mkfs.ext3 -n /dev/hda3 |sed -n '11,15p'
mke2fs 1.38 (30-Jun-2005)
Archive du superbloc stockée sur les blocs:
8193, 24577, 40961, 57345, 73729, 204801, 221185

Cette partition utilise des blocks de 1 Ko :
Taille de bloc=1024 (log=0)

Pour monter la partition il suffira donc d'indiquer l'adresse d'un super, par exemple celui situé à 40961.
On va donc monter la partition en lecture seulement ( ro ) :

Code: Select all

       :~$ sudo mount /dev/hda3 -t ext3 -o ro,sb=40961 /mnt/
On vérifie le mount :

Code: Select all

:~$ mount |grep hda3
/dev/hda3 on /mnt type ext3 (ro,sb=40961)

Plus souvent les blocks auront une taille de 4 Ko, indication donnée par mkfs.ext3 -n ( ou tune2fs -l ) comme dans l'exemple ci-dessous :

Code: Select all

:~$ sudo mkfs.ext3 -n /dev/hda2
mke2fs 1.38 (30-Jun-2005)
Étiquette de système de fichiers=
Type de système d'exploitation: Linux
Taille de bloc=4096 (log=2)
Taille de fragment=4096 (log=2)
130048 inodes, 260064 blocs
13003 blocs (5.00%) réservé pour le super usager
Premier bloc de données=0
8 bloc de groupes
32768 blocs par groupe, 32768 fragments par groupe
16256 inodes par groupe
Archive du superbloc stockée sur les blocs:
32768, 98304, 163840, 229376

Dans ce cas, il faudra multiplier l'adresse des archives par 4. Par exemple 98304 deviendra 98304 * 4 = 393216 et pour monter la partition :

Code: Select all

       :~$ sudo mount /dev/hda2 -t ext3 -o ro,sb=393216 /mnt/
On vérifie le mount :

Code: Select all

       :~$ mount |grep hda2
/dev/hda2 on /mnt type ext3 (ro,sb=393216)

La partition est bien montée suivant les indications données. Après avoir fait les sauvegardes des données sur une autre partition, on pourra démonter la partition normalement.

tux61
Posts: 7
Joined: 16 Apr 2012, 19:52

Re: Formattage partition ext4...

#7 Post by tux61 »

Bonjour,

Merci de cette longue et intéressante réponse...
Malheureusement je n'y arrive toujours pas :(
La commande suivante me donne bien les blocks :

Code: Select all

mkfs.ext4 -n /dev/sda5 
mke2fs 1.42.1 (17-Feb-2012)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
14344192 inodes, 57372123 blocks
2868606 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=0
1751 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872

Mais mes essais sur tous les blocks, par exemple ci-dessous, échouent à chaque fois...

Code: Select all

mount /dev/sda5 -t ext4 -o ro,sb=131072 /mnt/backup]
mount: wrong fs type, bad option, bad superblock on /dev/sda5,
missing codepage or helper program, or other error
In some cases useful info is found in syslog - try
dmesg | tail or so

User avatar
remy
Posts: 457
Joined: 25 Mar 2012, 10:21
Location: Strasbourg, France.
Contact:

Re: Formattage partition ext4...

#8 Post by remy »

c'est que soit le blocs ne sont pas bons (pas la bonne partition, pas les bons blocs détectés), soit ils sont corrompus.

Tu peux essayer avec

Code: Select all

sudo e2fsck -n /dev/partition
sans oublier le -n pour ne faire aucune modif, mais voir si un fs est bien détecté.
Sinon, il faudra utiliser des outils pros.

EDIT : tu n'as pas fait de deepersearch avec testdisk et les options présentées ci-dessus ? Là tu travailles sur les superblocs de la partition telle qu'elle a été formatée, il faut que tu trouves la partition en "D" (deleted) pour essayer d'y voir plus clair.

tux61
Posts: 7
Joined: 16 Apr 2012, 19:52

Re: Formattage partition ext4...

#9 Post by tux61 »

Si, mais à chaque fois j'ai eu "file système endommagé"...
La commande e2fsck -n donne aussi un message d'erreur :
e2fsck 1.41.14 (22-Dec-2010)
e2fsck: Superblock invalid, trying backup blocks...
Superblock has an invalid journal (inode 8).
Clear? no
e2fsck: Illegal inode number while checking ext3 journal for /dev/sda5

C'est vraiment rageant sachant que photorec lui trouve bien les fichier (mais évidemment en "vrac")...

Quand tu parles d'outils pros, il s'agit de quoi ? J'imagine que les prix doivent aussi être "pros" ;-) ?
Merci

Sinon voici le résultat complet de testdisk :
  • Disk /dev/sda - 250 GB / 232 GiB - CHS 30401 255 63
    Current partition structure:
    Partition Start End Size in sectors

    1 * Linux 0 1 1 1458 254 63 23438772
    2 E extended LBA 1459 0 1 30028 254 63 458977050
    No ext2, JFS, Reiser, cramfs or XFS marker
    5 L Linux 1459 1 1 30028 254 63 458976987
    5 L Linux 1459 1 1 30028 254 63 458976987

    Après <Quick Search> :

    TestDisk 6.13, Data Recovery Utility, November 2011
    Christophe GRENIER <grenier@cgsecurity.org>
    http://www.cgsecurity.org

    Disk /dev/sda - 250 GB / 232 GiB - CHS 30401 255 63
    Partition Start End Size in sectors
    >* Linux 0 1 1 1458 254 63 23438772
    P Linux 1459 0 1 30006 254 63 458623620
    P Linux Swap 30007 0 1 30268 254 63 4209030


    Après ajout manuel de la partition de 1459 à 30006 puis ENTER et <Deeper Search>

    Avant :

    Disk /dev/sda - 250 GB / 232 GiB - CHS 30401 255 63
    Partition Start End Size in sectors
    D Linux 0 1 1 1458 254 63 23438772
    D Linux 552 1 1 2010 254 63 23438772
    D Linux 1459 1 1 30028 254 63 458976987
    >D Linux Swap 30007 0 1 30268 254 63 4209030
    D Linux Swap 30029 1 1 30400 254 63 5976117

    Après :
    Disk /dev/sda - 250 GB / 232 GiB - CHS 30401 255 63
    Partition Start End Size in sectors
    >* Linux 0 1 1 1458 254 63 23438772
    D Linux 552 1 1 2010 254 63 23438772
    P Linux 1459 1 1 30028 254 63 458976987
    D Linux Swap 30007 0 1 30268 254 63 4209030
    P Linux Swap 30029 1 1 30400 254 63 5976117

    La recherche de fichier via l'option P indique "File système endommagé"
    ENTER


    Disk /dev/sda - 250 GB / 232 GiB - CHS 30401 255 63

    Partition Start End Size in sectors

    1 * Linux 0 1 1 1458 254 63 23438772
    2 P Linux 1459 1 1 30028 254 63 458976987
    3 P Linux Swap 30029 1 1 30400 254 63 5976117
Je n'ai pas osé valider le "WRITE"...

User avatar
remy
Posts: 457
Joined: 25 Mar 2012, 10:21
Location: Strasbourg, France.
Contact:

Re: Formattage partition ext4...

#10 Post by remy »

Il semble quand même que e2fsck trouve un bloc de secours.
Ça vaudrait le coup de tenter sans -n mais avec -y... mais attention, ça va réaliser des écritures et modifs lourdes au niveau du système de fichier.

Donc, duplication du disque à l'état initial obligatoire avant, car point de non retour. Pour ça, il y a ddrescue (paquet gddrescue) par exemple.

Pour les tarifs pros, je n'ai pas vocation à faire de pub ici. Donc si tu veux plus d'infos tu trouves facilement à me contacter :P

Locked