BTRFS: é possível mudar para outra raiz da árvore?

2

Eu recebo minha partição do BTRFS danificada e

mount -o usebackuproot ...

não funciona:

[ 9252.141767] BTRFS info (device dm-1): trying to use backup root at mount time
[ 9252.141779] BTRFS info (device dm-1): disabling disk space caching
[ 9252.141784] BTRFS info (device dm-1): has skinny extents
[ 9252.184586] BTRFS error (device dm-1): parent transid verify failed on 7777276116992 wanted 100336 found 89751
[ 9252.186302] BTRFS error (device dm-1): parent transid verify failed on 7777276116992 wanted 100336 found 89751
[ 9252.186306] BTRFS warning (device dm-1): failed to read tree root
[ 9252.186729] BTRFS error (device dm-1): parent transid verify failed on 7777276116992 wanted 100336 found 89751
[ 9252.187091] BTRFS error (device dm-1): parent transid verify failed on 7777276116992 wanted 100336 found 89751
[ 9252.187094] BTRFS warning (device dm-1): failed to read tree root
[ 9252.187372] BTRFS error (device dm-1): parent transid verify failed on 7777213923328 wanted 100335 found 89750
[ 9252.187589] BTRFS error (device dm-1): parent transid verify failed on 7777213923328 wanted 100335 found 89750
[ 9252.187592] BTRFS warning (device dm-1): failed to read tree root
[ 9252.187948] BTRFS error (device dm-1): parent transid verify failed on 7777188921344 wanted 100334 found 100336
[ 9252.188281] BTRFS error (device dm-1): parent transid verify failed on 7777188921344 wanted 100334 found 100336
[ 9252.188284] BTRFS warning (device dm-1): failed to read tree root
[ 9252.188661] BTRFS error (device dm-1): parent transid verify failed on 7260661022720 wanted 100333 found 96460
[ 9252.189025] BTRFS error (device dm-1): parent transid verify failed on 7260661022720 wanted 100333 found 96460
[ 9252.189029] BTRFS warning (device dm-1): failed to read tree root
[ 9252.236361] BTRFS: open_ctree failed

verificação do btrfs também não funciona:

btrfs check /dev/mapper/media
parent transid verify failed on 7777276116992 wanted 100336 found 89751
parent transid verify failed on 7777276116992 wanted 100336 found 89751
parent transid verify failed on 7777276116992 wanted 100336 found 89751
parent transid verify failed on 7777276116992 wanted 100336 found 89751
Ignoring transid failure
Couldn't setup extent tree
Couldn't open file system

Encontrei alguns blocos de raízes de árvore que eu poderia usar com " btrfs restore ":

btrfs restore -t 8889016483840 -D -i -v /dev/mapper/media /dev/null | wc -l
2264442

Mas estou tendo o problema aqui. Meu armazenamento btrfs é muito grande, tem mais de 20 TB, e eu não tenho discos sobressalentes desse tamanho para backup e restauração. É possível reparar tal sistema de arquivos ou alternar para um determinado bloco de raiz de árvore "no lugar", sem reformatá-lo?

    
por Nikki Chumakov 06.10.2016 / 00:00

1 resposta

0

Primeiro, verifique se você tem superblocos válidos:

btrfs rescue super-recover -v <device>

Uso:

btrfs find-root <device>

para encontrar a melhor raiz da árvore para usar no reparo :

  1. The root node should have the highest level
  2. The higher generation, the higher chance the fs can be recovered using that root.

Nota: na sua mensagem de erro, wanted é a geração no log, a found é a geração baseada na raiz da árvore.

Encontre a saída mais limpa dos seguintes comandos:

btrfs check --tree-root <block> --super <sup>

Onde:

  • <sup> é 0 , 1 ou 2 .
  • <block> is é dado por btrfs find-root (nota: não multiplique por tamanho de bloco, mesmo que o manual diga <bytenr> )

Em seguida, repare o sistema de arquivos da seguinte forma:

btrfs check --repair --tree-root <block> --super <sup>

Observe a adição de --repair para realmente alterar o sistema de arquivos.

    
por 07.09.2017 / 12:53

Tags