Tenho uma pergunta sobre erros irrecuperáveis em um sistema de arquivos BTRFS. Especificamente, eu executei um Scrub BTRFS recentemente após encontrar um problema com um dos meus sticks de 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
Felizmente, tenho tudo em backup em um backup terciário, por isso não estou particularmente preocupado com a perda de arquivos (estou ciente dos problemas associados ao status experimental do BTRFS, tenho vários backups para manter meus dados seguros e decidido a continue usando-o, então não: postagens "Solução; não use 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 suas cópias de backup.
Se alguém tiver informações sobre como fazer isso, eu adoraria ouvir você.
Agradeço antecipadamente.
fonte
sort | uniq
para se livrar das duplicatas assim:dmesg | grep "checksum error at" | cut -d\ -f24- | sed 's/.$//' | sort | uniq
Sim, o mapeamento de INODE ou Número do bloco de volta para um nome de arquivo pode ser difícil. Se você está realmente interessado, pode tentar algo como isto e ver quais arquivos de arquivo copiar ... afinal, se o arquivo estiver ruim, deve ocorrer um erro durante a cópia. Eu já usei esse tipo de técnica.
fonte
cp -v
, você também pode monitorar o progresso:find / -type f -exec cp -v {} /dev/null \; 2> corrupted-files.txt
. No entanto, o/proc/kcore
arquivo pode ser enorme (o meu tinha 128 TB), portanto a operação de cópia provavelmente travará. Como o/proc
diretório contém arquivos mágicos especiais, não precisamos checá-los. Exclua o/proc
diretório:sudo find / -type f -and -not -path /proc -exec cp -v {} /dev/null \; 2> corrupted-files.txt
dmesg
fornecerá detalhes sobre os arquivos envolvidos nos erros incorretos da soma de verificação. As mensagens geralmente têm a seguinte aparência: "BTRFS: erro de soma de verificação no [...] lógico no dev [...], setor [...], raiz [...], inode [...], deslocamento [ ...], comprimento [...], links [...] (caminho: [...]) "; a última informação é o caminho absoluto para o arquivo que está corrompido.fonte
Eu vim aqui procurando também o "erro incorrigível" do BTRFS. O grep acima não funcionou para mim; Eu tive que usar:
Observe como o caminho é relativo ao início do subvolume - nenhuma indicação de qual subvolume está. Felizmente, isso não foi um problema para mim.
fonte
somepath/somefile.txt
? Parece que você está digitando como um comando separado - ou é a saída do comando digitado? Se tudo deve ser uma linha de comando, não separe as linhas de comando para fins de exibição - basta colocá-lo na resposta como uma linha longa. Mas o que é isso? Você está fornecendo duas entradas parasort
(um pipe e um arquivo)? Ousomepath/somefile.txt
deve ser um arquivo de saída? (Não é muito útil para especificar arquivos de saída, a menos que sejam arquivos intermediários que você está usando novamente As pessoas sabem como lidar com os resultados; por exemplo, através de tubulação..)