recuperando partição ext4 após dd'ing durante o início do HD

8

Eu acidentalmente usei dde escrevi nos primeiros 208 MB do meu disco externo. O que eu escrevi é uma partição por si só (instalador de ninhos da Debian), então o que vejo agora não é minha partição ext4 antiga (agora danificada), mas outra partição menor. Isso limita as ferramentas e conselhos que eu poderia seguir.

Meu plano era recriar a tabela de partições testdiske, em seguida, corrigir tudo com os superblocos de backup, conforme descrito aqui . Eu perderia os primeiros 208 MB, mas tudo bem se comparado aos outros 300 GB de dados existentes. Algo como o seguinte:

mke2fs -n /dev/sdb1   # doesn't work because sdb1 is the 208MB new partition
testdisk ...          # used this to create new correct partition table
mke2fs -n /dev/sdb1   # now works fine, get backup superblock positions
e2fsck -b backup_position -y /dev/sdb1 # returns many errors hence the -y

No entanto, não consegui recuperar nada. Eu costumava testdiskescrever uma nova tabela de partição que correspondia ao que eu tinha antes. Quando executo o e2fsck, recebo muitos erros diferentes. Recebo um sistema de arquivos depois disso, mas está completamente vazio, sem arquivos.

O diretório perdido + encontrado está cheio de arquivos (acho que os recuperados), mas preciso recuperar a árvore de diretórios, não apenas os arquivos. Eu preciso do nome do arquivo e dos diretórios anteriores para saber quais são os arquivos (imagens de microscópio, dados de especificações de massa, etc.) Sem os nomes e os diretórios em que estavam, eles não significam nada).

Consegui outro HD exatamente igual e fiz uma cópia de todo o HD ddpara que eu possa experimentar a recuperação sem perder nada. Algum conselho?

carandraug
fonte
Você tem idéia de quantas partições você tinha antes?
Cougar
@ Cougar sim. Eu tinha uma única partição ext4 primária, abrangendo todo o disco.
carandraug
2
Primeiro, sugiro recriar a partição com o fdisk ou qualquer outra ferramenta de partição de baixo nível. Como recuperar o ext4 depois disso é mostrado aqui: ligação
Cougar
@ Cougar que é realmente o link que segui para tentar recuperar a partição. A diferença é que eu costumava testdiskrecriar a partição. Vou tentar com fdisk.
carandraug
@Cougar usando fdiskeu não poderia nem usar e2fsck, pois não encontraria os backups do superbloco. Acho que o problema era que eu não poderia editar os CHS (a nova partição configurá-lo para 64, mas deve ser 255)
carandraug

Respostas:

7

Eu finalmente consegui consertar isso. Só para constar, aqui está como eu fiz. Parte da solução que encontrei aqui e envolve conhecer as configurações usadas para criar o sistema de arquivos (eu tinha certeza que não alterei os padrões).

Basicamente, primeiro tive que corrigir a tabela de partições para refletir o que realmente tinha lá (usei testdiskpara isso parted, mas cfdiskou fdiskdeveria funcionar bem também). Acabei de remover as partições erradas e substituí-las por uma única partição ext4 cobrindo todo o disco com os valores CHS corretos.

O resto é principalmente do link no início (leia-o para obter detalhes), mas basicamente corri mke2fs -n /dev/xxxpara encontrar as posições para o backup dos superblocos. Em seguida, usei o último backup mais próximo do final do disco (apenas os que foram iniciados no disco foram substituídos pelo dd) para executar o fsck. Isso gerou muitos erros, mas o fsck tem uma -yopção (não é a mesma que -a).

$ sudo e2fsck -a -b backup_block_number /dev/xxx

Eu pensei que isso não tivesse funcionado porque não conseguia ver nenhum arquivo, mas na verdade todos eles foram salvos no lost+founddiretório.

Então, no final, eu recuperei a maioria dos meus arquivos, mantendo seus nomes de arquivos e estrutura de diretórios. Espero que isso ajude outras pessoas no futuro.

carandraug
fonte
-1

Ok, isso funciona para recuperar de uma unidade acidentalmente iniciada em um array MegaRAID. Meu controlador RAID inicializou TODAS as unidades no RAID, não apenas as da matriz RAID6 que eu estava refazendo. Ai! Pelo menos eu fiz um init rápido, e não um init lento - o init lento limpa a unidade para zeros.

O Quick init apaga 10M no início e no final das unidades. Então, eu com uma partição ext4 em toda a unidade (no Linux) e uma unidade, RAID0, tive alguma chance. Com a unidade sendo de 6 TB e quase 5 TB, eu estava suando - era o meu backup da matriz RAID6 que estava reformando!

A propósito, eu não escorreguei - o LSI MegaRAID NÃO deveria ter iniciado unidades no meu outro grupo de unidades - mas aconteceu. Como observação, o que eu deveria ter feito é REMOVER A UNIDADE DO ENCERRAMENTO e reimportá-lo DEPOIS de ter o recém-arranjado grupo de unidades RAID6. Eu tolo. REALMENTE bobo eu ....

OK, felizmente o LSI MegaRaid não gosta de nada com unidades RAID0 (se houver uma que eu acho que não tenha certeza sobre várias). Aqui está o que eu fiz para corrigi-lo. OS = Fedora F22. Drive = uma grande partição ext4, concluída com parted. Primeiro, instalei a unidade em uma unidade exatamente nova do mesmo modelo, em um servidor sobressalente com alguns slots de compartimento sobressalentes: dez horas depois, terminou ......

$ dd if=/dev/sdb of=/dev/sdc bs=64M conv=notrunc
89424+1 records in
89424+1 records out
6001175126016 bytes (6.0 TB) copied, 35130.2 s, 171 MB/s

Esse foi o meu backup de ouro.

NOTA - Minha unidade foi /dev/sdb- você precisa configurá-la para qualquer unidade que esteja tentando recuperar. Não estrague as unidades, ou você ficará ainda mais bagunçado ....

Então, feito isso, fiz o seguinte.

(1) remova o instantâneo da máquina (não é bobo de novo, posso garantir - esse seria transferido para o hospital de recuperação de disco se eu falhasse, enquanto eu me registrava no pronto-socorro local!).

(2) reinicie a máquina FC22 com a unidade. Execute parted, refaça a partição (no meu caso, exclua a corrompida, escreva em uma nova partição ext4 de 0% a 100%). Você PRECISA saber exatamente onde estavam as partições originais e seu tipo exato - a próxima etapa depende disso - se não, PARE AQUI. Você não vai conseguir. use testdiske photorecou similar, ou para uma grande unidade onde realmente importa, envie-a.

(3) corra mke2fs -n /dev/sdb1(não esqueça o -n, ou você pode simplesmente ir embora ...)

Para mim, o resultado foi o seguinte:

$ mke2fs -n /dev/sdb1
$ mke2fs 1.42.13 (17-May-2015)
Creating filesystem with 1464843008 4k blocks and 183107584 inodes
Filesystem UUID: 1ac318a6-7953-42d5-8d7b-0597c54e1935
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
        102400000, 214990848, 512000000, 550731776, 644972544

Aí está, é aí que estão todos os superblocos de reposição ... ... Sabemos que o primeiro e o último são lixo, mas os do meio devem estar OK. (Observe que você pode mkfs.ext4 -n /dev/sdb1ser super cauteloso e obter o mesmo resultado).

(4) Corra e2fsck -y -b 102400000 /dev/sdb1. Você precisará do -y, pois haverá muitos "sim" necessários para corrigir a bagunça criada pelo front-end ausente do disco .... e escolher qualquer superbloco no meio que você quiser ... e depois de 30 minutos de silêncio (use outro terminal e "top" para assistir ao progresso, ou a luz piscante do disco) no meu caso, uma partição montável e praticamente tudo intacto no /lost+founddiretório.

De qualquer forma, espero que isso ajude - se você está lendo isso com atenção, desejo-lhe boa sorte. E graças aos caras escrevendo acima. Você me salvou de um fim realmente doentio ...

flyx
fonte