Comment les files sont-ils placés dans ext2 / ext3 / ext4?

Il y a quelques jours, toutes mes métadonnées sur une carte flash au format ext4 ont été écrasées.

Je vais maintenant spéculer sur la façon dont cela s'est passé. C'est de la pure spéculation. C'est arrivé juste après que j'ai utilisé une autre carte. L'label de volume sur la carte est maintenant la même que l'autre carte. Donc, je soupçonne que j'ai échoué à synchroniser / démonter l'autre carte, quand je l'ai tiré. Le lecteur de maps n'informe pas correctement le système lorsqu'une carte est tirée, la prochaine synchronisation générée par le système, le système ne savait pas que je changeais les maps et il écrasait les métadonnées.

La première chose que j'ai fait quand c'est arrivé, c'est de créer une image en utilisant dd. La deuxième chose que j'ai fait était de rendre l'image en lecture seule. La troisième chose que j'ai fait est de faire une copy inscriptible de l'image.

J'ai découvert photorec, qui a réussi à récupérer certaines choses, mais pas toutes. Je pense que l'une des raisons pour cela est que c'est non destructif.

Comme certains des files récupérés sont du text, je soupçonne que photorec utilise un minimum d'informations sur le format de file, le cas échéant.

Pour essayer de récupérer l'un des autres files de la carte, j'aurais besoin de savoir comment les files sont disposés dans ext2. Je soupçonne que le fondement est que les files sont divisés en blocs qui sont écrits en secteurs et que les informations sur la façon de find le secteur suivant sont rédigées d'une façon ou d'une autre dans le secteur actuel.

Ce dont j'ai besoin, c'est de savoir comment le pointeur vers le secteur suivant est écrit.

PS: Je lis le code photographique, mais j'ai des problèmes à le lire. Que ce soit moi ou si le code est moche, je ne sais pas.

PPS: J'ai trouvé des informations sur la façon dont les filesystems ext sont configurés, mais je ne peux pas find les informations de base sur la layout des files.

PhotoRec parsing un disque (ou une image disque) à la search de blocs contigus de formats de files connus (par exemple, il peut reconnaître JFIF / EXIF ​​(JPEG) par les en-têtes de segment). Assez simple mais limité.

Le Sleuth Kit est un excellent outil pour creuser dans les filesystems. Avec un peu de soin (et de scriptage de ses outils et d'édition hexadécimale de l'image disque quand elle s'égare), il peut être utilisé pour la récupération.

Pour un outil qui comprend plus profondément ext, essayez ext4magic ? (Je n'ai pas encore eu besoin d'utiliser cela encore.)

Documentation/filesystems/ext2.txt dans les sources du kernel a un aperçu de haut niveau de la structure générale. Le Ext4 Wiki a de bonnes informations, y compris Ext4 Disk Layout contenant plus de détails (s'appliquant en grande partie à ext [23]).

Mais oui, datatables d'un file sont divisées en blocs. Dans ext2, chaque file est représenté par un inode qui contient des blocs directs (pointeurs vers des blocs de données), des blocs indirects (qui contiennent des pointeurs vers des blocs directs), des blocs indirects doubles et des blocs indirects sortingples. Il n'y a pas de backlinks, donc pour find les frères et sœurs d'un bloc de données, vous devrez scanner tous les inodes et bloquer les pointeurs pour find son propriétaire en premier.