Tentative de restauration d'un device sur une copie plus petite
Le
Francois Lafont

Bonjour à tous,
Soit un device /dev/drbd0 qui est en vrac (c'est un device
provenant de drbd mais ce n'est pas mon propos ici, enfin je crois).
En principe, ce device correspond à une partition en ext4 que l'on
monte de manière classique.
Le file système est en vrac et impossible de monter le device car
on se prend un message du genre :
« mount: wrong fs type, bad option, bad superblock »
bien sûr on tente bien de monter du ext4 et le device est bien
du ext4 à la base.
Bref, il faudrait réparer le file system mais on ne veut pas le
faire en direct et donc on s'arrange pour faire une copie via le
réseau de tout le device sur une autre machine et ensuite faire
des tentatives de récup sur la copie. Mais le souci, c'est que
le device est assez gros (3 To environ) et la copie est super
longue.
Voici ma question : est-ce qu'il n'y a pas moyen de faire une
copie plus petite du device et de faire des essais sur cette copie
plus petite (par exemple ne copier que les N premiers octets
du device) ? Bref, pouvoir se créer une copie du device d'origine
afin de faire des tests qui restent probants mais sur une copie de
taille plus petite que le device d'origne. Est-ce possible ?
Merci d'avance pour votre aide.
PS : on a bien sûr des sauvegardes, mais ça nous arrangerais bien
de pouvoir récupérer le FS pour ne pas perdre un delta.
--
François Lafont
Soit un device /dev/drbd0 qui est en vrac (c'est un device
provenant de drbd mais ce n'est pas mon propos ici, enfin je crois).
En principe, ce device correspond à une partition en ext4 que l'on
monte de manière classique.
Le file système est en vrac et impossible de monter le device car
on se prend un message du genre :
« mount: wrong fs type, bad option, bad superblock »
bien sûr on tente bien de monter du ext4 et le device est bien
du ext4 à la base.
Bref, il faudrait réparer le file system mais on ne veut pas le
faire en direct et donc on s'arrange pour faire une copie via le
réseau de tout le device sur une autre machine et ensuite faire
des tentatives de récup sur la copie. Mais le souci, c'est que
le device est assez gros (3 To environ) et la copie est super
longue.
Voici ma question : est-ce qu'il n'y a pas moyen de faire une
copie plus petite du device et de faire des essais sur cette copie
plus petite (par exemple ne copier que les N premiers octets
du device) ? Bref, pouvoir se créer une copie du device d'origine
afin de faire des tests qui restent probants mais sur une copie de
taille plus petite que le device d'origne. Est-ce possible ?
Merci d'avance pour votre aide.
PS : on a bien sûr des sauvegardes, mais ça nous arrangerais bien
de pouvoir récupérer le FS pour ne pas perdre un delta.
--
François Lafont
Si le filesystem d'origine n'était pas plein "raz-la-gueule", tu peux
utiliser ddrescue --sparse qui va te créer un fichier sparse contenant
toutes les données encore lisibles sur ton disque. Fonctionne avec une
partition ou avec un disque entier, et l'image est bien entendu
utilisable de la même façon qu'une image "non sparse".
La taille du fichier sparse dépendra de la quantité de données
récupérées. Un filesystem foireux reste un filesystem foireux après ce
genre de traitement, même sur l'image, il n'y aura pas de miracle.
Bonne chance,
--
Philippe Naudin
C'est très facile avec xfs, mais à ma connaissance c'est impossible avec
ext4. Ça fait partie des très nombreux avantages de xfs dès qu'on a de
gros périphériques.
Bref, le plus simple est probablement de faire un brain-split drbd et un
fsck...
--
That ideas should freely spread from one to another over the globe,
for the moral and mutual instruction of man, and the improvement of his
conditions, seems to have been peculiarly and benevolently designed by
nature, when she made them, like fire, expansible over all space,
without lessening their density in any point, and like the air in which
we breathe, move, and have our physical being, incapable of confinement
of exclusive appropriation. Inventions then cannot, in nature, be a
subject of property.
Thomas Jefferson.
Merci pour cette piste. Hélas, le filesystem d'origine était bien
rempli alors j'ai peur qu'on ne gagne pas grand chose en espace
avec "ddrescue --sparse".
--
François Lafont
Le 24/02/2014 21:13, Emmanuel Florac a écrit :
Ok, tant pis.
On va faire ça effectivement, mais sur une copie du device.
Merci pour la réponse.
--
François Lafont
Accessoirement, si vous avez de la bonne doc sur ext4,
genre un peu bas niveau, ça m'intéresse... le genre de
doc qu'on lit quand on a un coup dur. :-)
--
François Lafont
T'as ça :
https://ext4.wiki.kernel.org/index.php/Main_Page
(c'est le wiki officiel)
Sinon, sous le coude j'ai "Programmation linux 2.0" où Rémy Card, auteur du FS ext2 (d'où dérive ext3), qui explique comment hacker
le kernel avec l'exemple de ext2. C'est un peu vieux mais...
--
Serge http://leserged.online.fr/
Mon blog: http://cahierdesergio.free.fr/
Soutenez le libre: http://www.framasoft.org
Pourquoi pas, pour commencer, un dd avec un count= réduit pour chercher un
superbloc valide ?
(As-tu gardé la sortie de mke2fs pour savoir où sont les superblocs de
secours ?)
--
LL
Eν οιδα οτι ουδεν οιδα (Σωκρατης)
Ok, merci bien.
--
François Lafont
On a essayé des combines sur une copie du « début » du device, mais sans
succès. De toute façon, on ne souhaite rien faire (en écriture) sur le
device en lui-même pour l'instant. On attend que la copie se finisse pour
faire des tests sur la copie mais c'est long.
Heu, non mais je crois qu'on peut les obtenir avec :
dumpe2fs /dev/drbd0 | grep -i superblock
Si je veux tester un recovery du superblock sur un device de test, comment
faire pour péter le superblock avec dd par exemple ? Où se situe-t-il dans
le device ?
--
François Lafont
presque dans la même idée tu peux peut-être essayer de voir ce
que l'outil TestDisk raconte sur une "copie du début du device"
ça peut aider à imaginer une piste (voire à raccourcir le temps
perdu avant abandon au cas où cet outil se dit désemparé même
dans version 7.0 :D)
Et de toutes façons les divers documents que tu trouveras sur le
site de cgsecurity.com à la section TestDisk complèteront ta question
au sujet des trucs de filesystems ;-)