Temos um sistema SLES12 SP1 em execução como VM em um ambiente MS HyperV.
Após a reinicialização, o sistema não inicializa mais porque o vmlinux não está mais lá. Grub diz "você deve carregar o kernel do linux primeiro" ou algo assim (não consegui copiar a mensagem de erro exata). Depois que eu fui mais fundo e tentei carregar um kernel mais antigo, percebi que ainda existem transações penduradas no sistema btrfs, pelo menos há corrompendo checksums.
Então eu baixei o último CD do OpenSUSE Rescue e tentei montar os dispositivos. Eu posso montar a partição home, mas a partição com o / boot etc. não será montada:
linux@localhost:~> sudo mount -t btrfs -o ro,usebackuproot /dev/sda2 /mnt
mount: /mnt: wrong fs type, bad option, bad superblock on /dev/sda2, missing codepage or helper program, or other error.
Então, segui estes passos: link
A montagem não funciona, tentei diferentes opções, como desativar o cache, etc., portanto, a limpeza também não funcionou.
A verificação de btrfs diz:
linux@localhost:~> sudo btrfs check /dev/sda2
checksum verify failed on 75659116544 found 61415E80 wanted 96E73A64
checksum verify failed on 75659116544 found 61415E80 wanted 96E73A64
checksum verify failed on 75659116544 found E4E3BDB6 wanted 00000000
checksum verify failed on 75659116544 found 61415E80 wanted 96E73A64
bytenr mismatch, want=75659116544, have=5432601639048425051
ERROR: cannot open file system
A restauração também não funciona:
linux@localhost:~> sudo btrfs restore /dev/sda2 /run/media/linux/c03ad26a-a896-468d-bf9d-9953f87b2661/Administrator/Backup_sda2/
checksum verify failed on 75659116544 found 61415E80 wanted 96E73A64
checksum verify failed on 75659116544 found 61415E80 wanted 96E73A64
checksum verify failed on 75659116544 found E4E3BDB6 wanted 00000000
checksum verify failed on 75659116544 found 61415E80 wanted 96E73A64
bytenr mismatch, want=75659116544, have=5432601639048425051
Could not open root, trying backup super
checksum verify failed on 75659116544 found 61415E80 wanted 96E73A64
checksum verify failed on 75659116544 found 61415E80 wanted 96E73A64
checksum verify failed on 75659116544 found E4E3BDB6 wanted 00000000
checksum verify failed on 75659116544 found 61415E80 wanted 96E73A64
bytenr mismatch, want=75659116544, have=5432601639048425051
Could not open root, trying backup super
ERROR: superblock bytenr 274877906944 is larger than device size 42952818688
Could not open root, trying backup super
Então fiz o backup da imagem usando o dd.
super-recuperar:
linux@localhost:~> sudo btrfs rescue super-recover /dev/sda2
All supers are valid, no need to recover
btrfs resgata o log zero:
linux@localhost:~> sudo btrfs rescue zero-log /dev/sda2
checksum verify failed on 75659116544 found 61415E80 wanted 96E73A64
checksum verify failed on 75659116544 found 61415E80 wanted 96E73A64
checksum verify failed on 75659116544 found E4E3BDB6 wanted 00000000
checksum verify failed on 75659116544 found 61415E80 wanted 96E73A64
bytenr mismatch, want=75659116544, have=5432601639048425051
ERROR: could not open ctree
O chunk-recover também não funcionou, mas eu tentei montar depois:
linux@localhost:~> sudo btrfs rescue chunk-recover /dev/sda2
Scanning: DONE in dev0
checksum verify failed on 75659116544 found 61415E80 wanted 96E73A64
checksum verify failed on 75659116544 found 61415E80 wanted 96E73A64
checksum verify failed on 75659116544 found E4E3BDB6 wanted 00000000
checksum verify failed on 75659116544 found 61415E80 wanted 96E73A64
bytenr mismatch, want=75659116544, have=5432601639048425051
open with broken chunk error
Chunk tree recovery failed
linux@localhost:~> sudo mount -t btrfs -o ro,usebackuproot /dev/sda2 /mnt
mount: /mnt: wrong fs type, bad option, bad superblock on /dev/sda2, missing codepage or helper program, or other error.
verifique o reparo:
linux@localhost:~> sudo btrfs check --repair /dev/sda2
enabling repair mode
checksum verify failed on 75659116544 found 61415E80 wanted 96E73A64
checksum verify failed on 75659116544 found 61415E80 wanted 96E73A64
checksum verify failed on 75659116544 found E4E3BDB6 wanted 00000000
checksum verify failed on 75659116544 found 61415E80 wanted 96E73A64
bytenr mismatch, want=75659116544, have=5432601639048425051
ERROR: cannot open file system
Eu recebo quase o mesmo erro com a árvore init-extent:
linux@localhost:~> sudo btrfs check --repair --init-extent-tree /dev/sda2
enabling repair mode
Checking filesystem on /dev/sda2
UUID: b70dc1a4-4c19-446c-98c9-eeee88c4fd47
Creating a new extent tree
checksum verify failed on 75638358016 found 9B64BB37 wanted 6156F702
checksum verify failed on 75638358016 found 9B64BB37 wanted 6156F702
checksum verify failed on 75638358016 found E4E3BDB6 wanted 00000000
checksum verify failed on 75638358016 found 9B64BB37 wanted 6156F702
bytenr mismatch, want=75638358016, have=267958633426704061
Error reading tree block
error pinning down used bytes
ERROR: attempt to start transaction over already running one
extent buffer leak: start 89771360256 len 16384
também init-csum-tree:
linux@localhost:~> sudo btrfs check --repair --init-csum-tree /dev/sda2
enabling repair mode
Creating a new CRC tree
checksum verify failed on 75659116544 found 61415E80 wanted 96E73A64
checksum verify failed on 75659116544 found 61415E80 wanted 96E73A64
checksum verify failed on 75659116544 found E4E3BDB6 wanted 00000000
checksum verify failed on 75659116544 found 61415E80 wanted 96E73A64
bytenr mismatch, want=75659116544, have=5432601639048425051
ERROR: cannot open file system
Não encontrei mais informações sobre esse erro, por isso estou tentando obter alguma ajuda sobre troca de pilha, sabendo que já há algumas perguntas e respostas sobre esse assunto. Nós só temos um backup do servidor host, então realmente queremos que isso aconteça. Deve haver uma maneira melhor de recuperar a partição btrfs: (
Obrigado antecipadamente!