Jump to content

Archived

This topic is now archived and is closed to further replies.

keneda212

[PERDU] Récupération partition ext4 avec lvm sous mdadm raid5

Recommended Posts

Je viens d'essayer pour voir, ça marche chez moi. La commande pour toi sera :
 

./permute_array.pl --md /dev/md/test --mount /mnt/test --opts "--chunk=512 --assume-clean" --for_real /dev/sda1 /dev/sdc1 /dev/sdd1 /dev/sde1 /dev/sdf1

Avec /mnt/test à remplacer par n'importe quel répertoire. Si ça marche, tu auras par exemple quelque-chose comme ça :

skipping /dev/loop0Success. possible command :   yes | mdadm --create /dev/md/test --raid-devices=4 --level=5 --assume-clean /dev/loop1 missing /dev/loop2 /dev/loop3 2>/dev/nullSuccess. possible command :   yes | mdadm --create /dev/md/test --raid-devices=4 --level=5 --assume-clean /dev/loop1 missing /dev/loop3 /dev/loop2 2>/dev/nullSuccess. possible command :   yes | mdadm --create /dev/md/test --raid-devices=4 --level=5 --assume-clean /dev/loop1 /dev/loop2 missing /dev/loop3 2>/dev/nullSuccess. possible command :   yes | mdadm --create /dev/md/test --raid-devices=4 --level=5 --assume-clean /dev/loop1 /dev/loop2 /dev/loop3 missing 2>/dev/nullSuccess. possible command :   yes | mdadm --create /dev/md/test --raid-devices=4 --level=5 --assume-clean /dev/loop1 /dev/loop3 missing /dev/loop2 2>/dev/nullSuccess. possible command :   yes | mdadm --create /dev/md/test --raid-devices=4 --level=5 --assume-clean /dev/loop1 /dev/loop3 /dev/loop2 missing 2>/dev/nullskipping /dev/loop1Success. possible command :   yes | mdadm --create /dev/md/test --raid-devices=4 --level=5 --assume-clean missing /dev/loop0 /dev/loop2 /dev/loop3 2>/dev/nullSuccess. possible command :   yes | mdadm --create /dev/md/test --raid-devices=4 --level=5 --assume-clean missing /dev/loop0 /dev/loop3 /dev/loop2 2>/dev/nullSuccess. possible command :   yes | mdadm --create /dev/md/test --raid-devices=4 --level=5 --assume-clean missing /dev/loop2 /dev/loop0 /dev/loop3 2>/dev/nullSuccess. possible command :   yes | mdadm --create /dev/md/test --raid-devices=4 --level=5 --assume-clean missing /dev/loop2 /dev/loop3 /dev/loop0 2>/dev/nullSuccess. possible command :   yes | mdadm --create /dev/md/test --raid-devices=4 --level=5 --assume-clean missing /dev/loop3 /dev/loop0 /dev/loop2 2>/dev/nullSuccess. possible command :   yes | mdadm --create /dev/md/test --raid-devices=4 --level=5 --assume-clean missing /dev/loop3 /dev/loop2 /dev/loop0 2>/dev/nullskipping /dev/loop2Success. possible command :   yes | mdadm --create /dev/md/test --raid-devices=4 --level=5 --assume-clean /dev/loop1 /dev/loop0 missing /dev/loop3 2>/dev/nullSuccess. possible command :   yes | mdadm --create /dev/md/test --raid-devices=4 --level=5 --assume-clean /dev/loop1 /dev/loop0 /dev/loop3 missing 2>/dev/nullSuccess. possible command :   yes | mdadm --create /dev/md/test --raid-devices=4 --level=5 --assume-clean /dev/loop1 missing /dev/loop0 /dev/loop3 2>/dev/nullSuccess. possible command :   yes | mdadm --create /dev/md/test --raid-devices=4 --level=5 --assume-clean /dev/loop1 missing /dev/loop3 /dev/loop0 2>/dev/nullSuccess. possible command :   yes | mdadm --create /dev/md/test --raid-devices=4 --level=5 --assume-clean /dev/loop1 /dev/loop3 /dev/loop0 missing 2>/dev/nullSuccess. possible command :   yes | mdadm --create /dev/md/test --raid-devices=4 --level=5 --assume-clean /dev/loop1 /dev/loop3 missing /dev/loop0 2>/dev/nullskipping /dev/loop3Success. possible command :   yes | mdadm --create /dev/md/test --raid-devices=4 --level=5 --assume-clean /dev/loop1 /dev/loop0 /dev/loop2 missing 2>/dev/nullSuccess. possible command :   yes | mdadm --create /dev/md/test --raid-devices=4 --level=5 --assume-clean /dev/loop1 /dev/loop0 missing /dev/loop2 2>/dev/nullSuccess. possible command :   yes | mdadm --create /dev/md/test --raid-devices=4 --level=5 --assume-clean /dev/loop1 /dev/loop2 /dev/loop0 missing 2>/dev/nullSuccess. possible command :   yes | mdadm --create /dev/md/test --raid-devices=4 --level=5 --assume-clean /dev/loop1 /dev/loop2 missing /dev/loop0 2>/dev/nullSuccess. possible command :   yes | mdadm --create /dev/md/test --raid-devices=4 --level=5 --assume-clean /dev/loop1 missing /dev/loop0 /dev/loop2 2>/dev/nullSuccess. possible command :   yes | mdadm --create /dev/md/test --raid-devices=4 --level=5 --assume-clean /dev/loop1 missing /dev/loop2 /dev/loop0 2>/dev/null

Ici, c'est la sortie de mon test. C'est la liste des commandes avec lesquelles le script à réussi à monter la partition. tu peux utiliser l'une d'entre elles et normalement, ton raid sera fonctionnel.

Share this post


Link to post
Share on other sites

oki je test ca tout a l'heure

faut aussi que je rajoute une chunk a 512k (128 par defaut), c'était bien ca a l'origine d'après les trucs que j'ai gardé

Share this post


Link to post
Share on other sites

Oui pardon, j'avais oublié. Je modifie la ligne de commande, comme ça tu as juste à copier-collé (si t'as auparavant créé /mnt/test).

 

Petite note également : le script prend en compte systématiquement un des disques en missing. Donc il faudra faire un rebuild du disque manquant.

Share this post


Link to post
Share on other sites

c'est mort ...

marche pas

j'ai peur que ma tentative de réparation de partition avec testdisk ait modifié des trucs ...

du coup, le montage de partoche marchera pas

il faudrai pour chaque test recreer la partoche avec testdisk et tenter de la monter ...

Share this post


Link to post
Share on other sites

Bah ouais, le système de fichier à du être corrompu à un moment donné. Si tu enlèves l'option --for_real ça va de mettre la liste des commandes je crois. Tu n'as plus qu'à toutes les tentées en testant à chaque fois avec testdisk. Mais avec 5 disques, ça laisse une sacrée quantité de configurations possibles. Bon courage !

Share this post


Link to post
Share on other sites

mais au dela de la partition, photorec devrait récuperer des fichiers complet si c'était monté dans le bon sens non ?

car pour l'instant c'est pas le cas.

ps : le flac par contre se récupère top car j'ai pratiquement tous pu les récup... ca doit pas fonctionner comme des mp3 ou j'ai que 2s a chaque fois :D

Share this post


Link to post
Share on other sites

J'en sais rien, avec photorec j'ai toujours eu que des bouts de fichiers. Par contre la récup de fichier de testdisk a toujours donné de meilleurs résultat. Encore faut-il que ce soit monté dans le bon sens...

Share this post


Link to post
Share on other sites

Bof, la récup c'est quasi aléatoire. Ça dépend franchement de ce qui est cassé, et de l'âge du FS. Si le superblock et la table d'inode sont cassés et que le FS est vieux, alors tu ne récupèreras que des bouts.

Pour fire simple, pour récupérer les données, tu as besoin de 2 infos vitales : la taille des blocs, et l'agencement des blocs. La taille des blocs est contenue dans le superbloc et ses copies, si le superbloc est dead on peut toujours tenter de deviner en testant plusieurs valeurs courantes.

Par contre, l'agencement des blocs de données d'un fichier est contenu dans son inode (ou réparti s'il s'agit d'un gros fichier stocké par extent). Du coup, si la table des inodes est foutue, tout ce que tu peux faire est parcourir les blocs à la recherche d'un magic number de format de fichier, et supposer que les blocs de data sont contigus. C'est là que l'âge du FS entre en jeu : plus il est vieux, et plus il est fragmenté (les FS linux ne se défragmentent car leur taux de fragmentation est trop faible ~15% pour améliorer les perfs), plus l'hypothèse est irréaliste, et plus tu ne récupèreras que des bouts de fichiers.

Note que plus les fichiers sont vieux et petits et plus tu as de chance de les récupérer (moins fragmentés).

Share this post


Link to post
Share on other sites

dites, est ce que ca peut aider ca ?

testdisk est bien plus bavard depuis que j'ai remonté les disques dans l'ordre supposé d'avant

TestDisk 6.11, Data Recovery Utility, April 2009Christophe GRENIER <grenier@cgsecurity.org>http://www.cgsecurity.orgDisk /dev/md0 - 12 TB / 10 TiB - CHS 2930133504 2 4     Partition               Start        End    Size in sectorsP MS Data                     4096 23441068031 23441063936Structure: Ok.  Use Up/Down Arrow keys to select partition.Use Left/Right Arrow keys to CHANGE partition characteristics:                P=Primary  D=DeletedKeys A: add partition, L: load backup, T: change type, P: list files,     Enter: to continueEXT4 Large file Sparse superblock Recover, 12 TB / 10 TiB
après le write
Disk /dev/md0 - 12 TB / 10 TiB - CHS 2930133504 2 4     Partition                  Start        End    Size in sectors 1 P Linux Raid                  4096 23441068031 23441063936
et la recherche de superblock ext2/3/4

 

TestDisk 6.11, Data Recovery Utility, April 2009Christophe GRENIER <grenier@cgsecurity.org>http://www.cgsecurity.orgDisk /dev/md0 - 12 TB / 10 TiB - CHS 2930133504 2 4     Partition                  Start        End    Size in sectors  MS Data                     4096 23441068031 23441063936superblock 0, blocksize=4096 []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 []

Share this post


Link to post
Share on other sites

Bah là t'as pas l'air mal avec testdisk. Tu peux pas réécrire la partition avec ? Sinon il y a un moment tu as l'option "List files", c'est celle là que j'utilise en général et qui marche plutôt pas mal.

Share this post


Link to post
Share on other sites

la partoche je l'ai réécrite, mais ca marche toujours pas

le List files m'envoi un seg fault (hum... que de souvenir de programmation ca :transpi: )

Share this post


Link to post
Share on other sites

Et avec la dernière version de testdisk ?

 

Edit : Encore un truc : si tu n'es pas sûr de l'ordre des disks, met en un en missing lorsque tu montes la grappe. Comme ça si ça ne marche pas tu peux être sûr que l'ordre n'est pas bon, alors qu'à contrario, si ça marche, tu es sûr que l'ordre est bon. En effet, à partir du moment où tu peux récupérer les données à partir du checksum c'est bon.

 

En somme je te conseil de travailler sur 4 disques pour l'instant, et tu reconstruiras le 5ème lorsque ce sera bon.

Share this post


Link to post
Share on other sites

hum, je l'ai chopé sur le server de depot de debian...

si j'en chope une plus recente, je vais avoir un millard de librairie pas a jour je pense, non ?

 

je vais tout de meme testé, mais je doute que ca marche

Share this post


Link to post
Share on other sites

m'étais planté de version, j'ai pu installer la 13 (mais pas la 14 trop recente)

ca change un peu

 

Disk /dev/md0 - 12 TB / 10 TiB - CHS 2930133504 2 4Current partition structure:     Partition                  Start        End    Size in sectorsInvalid RAID superblock 1 P Linux Raid                  4096 23441068031 23441063936 1 P Linux Raid                  4096 23441068031 23441063936
Invalid RAID superblock ?

ensuite il me retrouve ma partoche seule, sans soucis.

puis :

 

TestDisk 6.13, Data Recovery Utility, November 2011Christophe GRENIER <grenier@cgsecurity.org>http://www.cgsecurity.orgDisk /dev/md0 - 12 TB / 10 TiB - CHS 2930133504 2 4     Partition                  Start        End    Size in sectors  MS Data                     4096 23441068031 23441063936superblock 0, blocksize=4096 []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 []To repair the filesystem using alternate superblock, runfsck.ext4 -p -b superblock -B blocksize device
voir les fichiers :

 

   P Linux Raid                  4096 23441068031 23441063936Can't open filesystem. Filesystem seems damaged.
bon on tente la réparation

 

[13:14:36][root@spooky]/data/data# fsck.ext4 -p -b 2654208 -B 4096 /dev/md0fsck.ext4: Numéro magique invalide dans le super-bloc lors de la tentative d'ouverture de /dev/md0/dev/md0: Le superbloc n'a pu être lu ou ne contient pas un système de fichiersext2 correct. Si le périphérique est valide et qu'il contient réellementun système de fichiers ext2 (et non pas de type swap, ufs ou autre),alors le superbloc est corrompu, et vous pourriez tenter d'exécutere2fsck avec un autre superbloc :    e2fsck -b 8193 <périphérique>
niet, et avec n'inporte quel superbloc

Par contre, depuis aujourd'hui, j'ia un truc bizare :

[13:18:08][root@spooky]/home/keneda# ls -l /dev/md*brw-rw---T 1 root disk   9, 0 juil. 22 13:18 /dev/md0brw-rw---T 1 root disk 259, 0 juil. 22 13:18 /dev/md0p1
il sort d'ou ce md0p1 ?

 

[13:18:27][root@spooky]/home/keneda# cat /proc/mdstat Personalities : [raid6] [raid5] [raid4] md0 : active (auto-read-only) raid5 sdd1[0] sda1[4] sdc1[3] sde1[2] sdf1[1]      11720534016 blocks super 1.2 level 5, 512k chunk, algorithm 2 [5/5] [uUUUU][13:18:58][root@spooky]/home/keneda#  mdadm --detail --scan /dev/md0p1/dev/md0p1:        Version : 1.2  Creation Time : Mon Jul 21 23:38:39 2014     Raid Level : raid5     Array Size : 11720531968 (11177.57 GiB 12001.82 GB)  Used Dev Size : 2930133504 (2794.39 GiB 3000.46 GB)   Raid Devices : 5  Total Devices : 5    Persistence : Superblock is persistent    Update Time : Tue Jul 22 13:12:24 2014          State : clean  Active Devices : 5Working Devices : 5 Failed Devices : 0  Spare Devices : 0         Layout : left-symmetric     Chunk Size : 512K           Name : spooky:0  (local to host spooky)           UUID : 7a47685b:b0b9c62c:e6a1e2fc:7c6ca32a         Events : 2    Number   Major   Minor   RaidDevice State       0       8       49        0      active sync   /dev/sdd1       1       8       81        1      active sync   /dev/sdf1       2       8       65        2      active sync   /dev/sde1       3       8       33        3      active sync   /dev/sdc1       4       8        1        4      active sync   /dev/sda1[13:19:10][root@spooky]/home/keneda#  mdadm --detail --scan /dev/md0/dev/md0:        Version : 1.2  Creation Time : Mon Jul 21 23:38:39 2014     Raid Level : raid5     Array Size : 11720534016 (11177.57 GiB 12001.83 GB)  Used Dev Size : 2930133504 (2794.39 GiB 3000.46 GB)   Raid Devices : 5  Total Devices : 5    Persistence : Superblock is persistent    Update Time : Tue Jul 22 13:12:24 2014          State : clean  Active Devices : 5Working Devices : 5 Failed Devices : 0  Spare Devices : 0         Layout : left-symmetric     Chunk Size : 512K           Name : spooky:0  (local to host spooky)           UUID : 7a47685b:b0b9c62c:e6a1e2fc:7c6ca32a         Events : 2    Number   Major   Minor   RaidDevice State       0       8       49        0      active sync   /dev/sdd1       1       8       81        1      active sync   /dev/sdf1       2       8       65        2      active sync   /dev/sde1       3       8       33        3      active sync   /dev/sdc1       4       8        1        4      active sync   /dev/sda1

Share this post


Link to post
Share on other sites

Pour que la réparation ne marche pas avec les superblocks, c'est que ton ordre des disques est mauvais. As-tu essayé avec un disque en missing comme je t'ai dis ?

 

Edit : Tu n'avais pas partitionné md0 ?

Share this post


Link to post
Share on other sites

de mémoire, j'ai créé un partition par disque, que j'ai mis en raid5. sur le raid5 créé, j'ai créé qu'une unique partition

j'avais testé avec un disque en missing, celui que j'ai perdu en debut d'année et qui a été rebuild depuis. mais.. y'a tellement de choix possible pour l'ordre des disques ...

Share this post


Link to post
Share on other sites

md0p1 est ta partition. Donc ton fsck il faut que tu le fasse là dessus.

 

Edit : mais vu que testdisk n'y arrive pas, faut pas rêver.

Share this post


Link to post
Share on other sites

Et puis du coup le script permute_array ne pouvait pas marcher. Il faut modifier cette ligne :

my $mount =  "mount -oro $MD_DEVICE $MOUNTPOINT 2>/dev/null";

de cette manière :

my $mount =  "mount -o ro,offset=16777216 $MD_DEVICE $MOUNTPOINT 2>/dev/null";

Share this post


Link to post
Share on other sites

mais pourquoi md0p1 ? je l'ai jamais eu ce truc il arrive d'ou ?

parce que testdisk me propose de fouiller les deux md0 et md0p1

selle sert a quoi la modif du mount ?

Share this post


Link to post
Share on other sites

Bah quand t'as une partition sur un raid, c'est comme ça qu'elle apparaît. T'es sûr que t'en avais une ? Il était monté comment ton raid dans le fstab ?

 

Edit : et la modif elle sert à monter la partition que testdisk à detecté.

Share this post


Link to post
Share on other sites

ok donc testdisk se trompe. J'avais pas fait gaffe, ta partition est reconnue comme une "MS Data" donc c'est pas bon. Et on en revient toujours au même : les disques ne sont pas dans le bon ordre.

 

Par contre ôte moi d'un doute : avec testdisk tu fais bien "non partitionned media" ?

Share this post


Link to post
Share on other sites

non, du GPT

je devrai faire du non partitionned ? car c'est déconseillé

un coup il dit linux raid, un coup msdata.

et si je dis que c'est du ext4, d'un coup il passe de msdata a linux raid, ou l'inverse.. c'est zarb

edit

ok new

avec none :

 

Disk /dev/md0 - 12 TB / 10 TiB - CHS 2930133504 2 4     Partition                  Start        End    Size in sectors   P ext4                   512   0  1 2930133503   1  4 23441063936Write isn't available because the partition table type "None" has been selected.
reconnaissance auto de la partoche ext4

mais j'ai ca

Share this post


Link to post
Share on other sites

×
×
  • Create New...