Remova o inode EXT4 quebrado sem debugfs

1

Eu quebrei o sistema de arquivos dentro do qnap. Quando estou tentando fsck, ele entra em loop infinito em um inode. Infelizmente qnap não tem o comando debugfs. É possível remover (limpar) o inode via dd?

    
por zulus 25.10.2016 / 07:56

1 resposta

2

É possível , mas é altamente perigoso. Se você estragar tudo, você pode acabar fazendo mais danos. O truque é calcular o deslocamento para o inode em particular, dada a saída de dumpe2fs. Depois de calcular o deslocamento, é só:

dd if=/dev/zero of=/dev/BLOCKDEVICE seek=OFFSET bs=1 count=INODESIZE

Veja o código fonte do debugfs para a função do_imap:

O local inicial da tabela de inode (que é o que o ext2fs_inode_table_loc () retorna) pode ser encontrado pela saída de dumpe2fs, assim como o tamanho do inode. Assim que você encontrar o número do bloco e o offset, você pode calcular o OFFSET usado no comando dd acima via:

OFFSET = (block * BLOCKSIZE) + offset

em que block e offset são os valores calculados por do_imap.

Você pode querer praticar vendo se você pode replicar apropriadamente o cálculo do do_imap manualmente praticando o comando dumpe2fs e então checando com o comando imap do debugfs no seu sistema Linux (assumindo que você pode rodar o Linux).

Tudo isso dito, pode ser útil tentar compilar o e2fsprogs do zero para o qnap e, em seguida, usar o debugfs construído para o qnap.

    
por 25.10.2016 / 20:01