Localizando arquivos com erros incorrigíveis do BTRFS

16

Eu tenho uma pergunta sobre erros irrecuperáveis em um sistema de arquivos BTRFS. Especificamente, eu executei um BTRFS Scrub recentemente depois de experimentar um problema com um dos meus sticks de memória RAM e parece ter descoberto 4 erros incorrigíveis. Esta é a saída:

scrub status for <UUID>
    scrub started at Thu Dec 25 15:19:22 2014 and was aborted after 89882 seconds
    total bytes scrubbed: 1.87TiB with 4 errors
    error details: csum=4
    corrected errors: 0, uncorrectable errors: 4, unverified errors: 0

Por sorte, tenho tudo com backup em um backup terciário, por isso não estou particularmente preocupado em perder os arquivos (estou ciente dos problemas associados ao status experimental do BTRFS, tenho vários backups para manter meus dados protegidos, e determinado a continuar a usá-lo, por favor, não: "Solução; não use posts do BTRFS".

Gostaria de saber, no entanto, como determinar quais arquivos estão associados aos erros incorrigíveis? Quero encontrá-los, excluí-los e substituí-los por cópias de backup.

Se alguém tiver informações sobre como fazer isso, eu adoraria ouvir sua opinião.

Obrigado antecipadamente.

    
por RedHack 29.12.2014 / 21:42

3 respostas

8

Eu encontrei o seguinte método útil ...

btrfs scrub do volume.

Você será apresentado a qualquer número de erros de csum como mostrado acima.
Usando seus detalhes de erro de exemplo: csum = 4 . Use esse número na diretiva tail da seguinte declaração:

dmesg | grep "checksum error at" | tail -4 | cut -d\  -f24- | sed 's/.$//'

É útil canalizar isso para um arquivo (por exemplo, > csums.txt )

Eu já experimentei algumas das abordagens de pesquisa de inode sugeridas e elas se encontraram com sucesso limitado ou mínimo.

    
por 15.11.2015 / 13:03
2

Sim, o mapeamento do INODE ou do Block Number de volta para um nome de arquivo pode ser difícil. Se você está realmente interessado, você pode tentar algo parecido com isto e ver quais arquivos de arquivos copiar ... afinal, se o arquivo estiver ruim, deve lançar um erro durante a cópia. Eu usei anteriormente esse tipo de técnica.

 find /mount-point -type f -exec cp {} /dev/null \;

 where mount-point is the ROOT node/mount-point of the affected filesystem
    
por 29.12.2014 / 21:59
2

dmesg fornecerá detalhes sobre os arquivos envolvidos nos erros de soma de verificação incorrigíveis. As mensagens normalmente se parecem com isso: "BTRFS: erro de soma de verificação [...] no log on [...] dev, setor [...], raiz, [...] inode, offset [...] [ ...], comprimento [...], links [...] (caminho: [...]) "; a última informação é o caminho absoluto para o arquivo que está corrompido.

    
por 31.10.2015 / 22:19