Btrfs forçado somente leitura / corrompido após a conversão do ext4

1

Eu migrei recentemente um sistema de arquivos ext4 em um volume lvm para o btrfs usando o btrfs-convert. Depois de montá-lo mais tarde, percebi que havia alguns problemas com ele.

Assim que fiz algo que envolveu a gravação de dados no disco, ele foi forçado somente para leitura, a partir de dmesg . Fiz algumas pesquisas e executei scrub , que encontrou dois arquivos com erros de csum. Infelizmente, um deles foi o ext2_saved para a reversão. Eu pensei que excluir os arquivos com os erros de csum resolveria o problema. Então eu apaguei o backup e o outro arquivo.

Após a reinicialização, scrub não encontrou nenhum erro. Mas ao montar, agora recebo a seguinte mensagem: bdev /dev/mapper/my-volume errs: wr 0, rd 0, flush 0, corrupt 608, gen 0 . Parece que agora posso escrever no disco (renomeando um arquivo trabalhado, não fiz mais testes ainda).

Esta mensagem deve me preocupar ou pode ser ignorada? Ou melhor: como posso encontrar a causa disso? esfregar e até mesmo verificar btrfs - repair não encontrou nenhum problema.

UPADTE:

Eu corri um Memtest e verifiquei por badblocks. Ambos os testes saíram limpos. Eu também atualizei meu Kernel para 4.9.9-gentoo . Ao compilar o Kernel descobri que tinha a opção CONFIG_BTRFS_FS_CHECK_INTEGRITY ativada, também conhecida como Btrfs with integrity check tool compiled in (DANGEROUS) . Eu agora desabilitei essa opção.

Depois disso, tentei iniciar o Chrome - o que obviamente fez algo no disco mencionado. Logo depois de ler algo assim no dmesg:

*Some stacktrace*    
btrfs_finish_ordered_io:someline errno=-95 unknown
forced readonly

Umount me deixou com esta mensagem:

cleaner transaction attach returned -30

Também tive estes quando ainda tinha os erros de soma de verificação que agora estão resolvidos. Agora não consigo encontrar uma razão para eles.

Eu executei um scrub novamente, que passou com 0 erros. Ao executar btrfs check --repair /dev/mapper/my-volume , agora fixed discount file extents for some inodes , que aparentemente foram erros ocorridos recentemente como o mesmo comando antes da atualização não encontrar nada.

Provavelmente, terei que mover os dados para leitura em outro disco e apenas formatar a coisa.

ATUALIZAÇÃO:

Copiando os dados de maneira não-lida, sem perder dados, ao que parece. Parece que a conversão do ext4 para o btrfs não está funcionando perfeitamente ainda.

Informações do sistema:

Kernel: 4.4.39-gentoo; now: 4.9.9-gentoo
btrfs-progs v.4.9
    
por rudib 10.02.2017 / 17:30

1 resposta

1

O btrfs mantém estatísticas por dispositivo e armazena persistentemente no disco. Você pode imprimi-los manualmente usando btrfs device stats device|mountpoint . Eles também são impressos na montagem (pelo menos se algum deles for diferente de zero).

Então, o que você está vendo é apenas dizer que a corrupção foi detectada no passado; você pode limpar os contadores com o sinalizador -z: btrfs device stats -z /dev/mapper/my-volume .

É claro que seria bom descobrir o que causou a corrupção originalmente - não tenho certeza se é um bug de conversão do btrfs ou se você tem algo que pode continuar a causar danos (hardware não confiável). Eu recomendo em um teste de memória, se você não tiver certeza.

(E, deve ser desnecessário dizer, mas faça backups - especialmente ao usar um sistema de arquivos relativamente novo como o btrfs.)

    
por 10.02.2017 / 18:07