Recuperando o superbloco ext4

6

Eu tinha um sistema de arquivos ext4 em um LV que foi destruído porque acidentalmente encolhi a partição de maneira muito pequena. Depois de expandir a partição de volta para o tamanho original, coloquei um novo ext4 FS no LV porque, no estado atual, udev nem mesmo forneceria um arquivo de dispositivo. Eu preciso recuperar o superbloco mais velho que eu espero que ainda tenha um bom backup em algum lugar. Como eu encontro isso? Eu posso? testdisk parece encontrar um monte deles, mas nenhum deles funciona.

    
por Scoopta 15.08.2015 / 22:14

2 respostas

4

Você pode estar com sorte e ter superquadras de backup na partição. Se você se lembra das opções usadas para criar o sistema de arquivos (por exemplo, você acabou de usar os padrões), então você pode encontrar os locais dos backups da seguinte forma:

sudo /sbin/mkfs.ext4 -n <original_options> <device>

O -n é extremamente importante - é uma opção de "execução a seco" que não grava nada no disco (provavelmente ainda é uma boa ideia despejar o disco em um lugar seguro enquanto você está experimentando - Eu suponho que você já tenha feito isso.

Mesmo que você não consiga lembrar as opções originais, vale a pena tentar o item acima para obter uma lista de candidatos.

Agora, para cada superbloco candidato, tente montar com -o ro,sb=<n> para usar o superbloco alternativo (e somente leitura). Se tiver sucesso, você poderá recuperar alguns arquivos.

Se nenhum dos superblocos candidatos permitir uma montagem bem-sucedida, um esforço de última hora pode ser escrever um novo superbloco usando a opção -S para mkfs.ext4 : " Escreve apenas superblocos e descritores de grupo. Isso é útil se todos os superblocos de superblocos e backups estiverem corrompidos, e um método de recuperação de última hora for desejado. "Eu não o faria fazer isso sem um backup completo da partição em algum lugar.

    
por 18.08.2015 / 12:25
2

Antes de mais nada, verifique se o disco é somente leitura, para que não ocorram mais gravações ao tentar recuperar os dados.

O superbloco ext4 é difícil de encontrar, porque o conteúdo varia muito, dependendo da contagem de inode, contagem de blocos, etc. No entanto, existe uma assinatura mágica 0xEF53 (16 bits) que você pode tentar procurar. Se você puder encontrar o lugar certo, então o início do superbloco (e também a contagem total de inode) deve ser colocado 56 bytes (0x38 bytes em hexadecimal) antes disso.

É provável que você encontre muitas instâncias de 0xEF53, mas, ao verificar outros valores prováveis no superbloco, talvez seja possível identificá-lo.

Aqui está a tabela dos valores do superbloco ext4: link

Usar um editor hexadecimal para toda a imagem do disco pode gerar resultados.

Escrever um programa (ou pagar alguém para fazer isso) que pesquise dados por algo que se parece com um superbloco ext4 também pode ser uma ideia. (Por exemplo, o número de 32 bits no deslocamento 72 (0x48) deve ser 0, já que o SO é "Linux").

Melhor da sorte.

    
por 18.08.2015 / 12:05