O que exatamente o btrfs scrub faz? De acordo com a página do manual, que não é totalmente clara, ele faz alguma verificação de erro. Que tipo de verificação de erro? Quão confiável é? É capaz de recuperar alguns erros? Como funciona? Funciona em todos os discos btrfs?
19
Respostas:
Não sei se faz mais alguma coisa, mas sei que, no mínimo
btrfs scrub
, a limpeza de dados em disco completo. Basicamente, ele lê todos os dados * no disco, recalcula sua soma de verificação e compara a soma de verificação recomputada com a armazenada. Quando as somas de verificação armazenadas e recomputadas não coincidem, o sistema sabe que há corrupção.Depois que a corrupção é detectada, o comportamento depende da configuração do seu disco. Por exemplo, se você tiver RAID 1 (espelhamento),
btrfs scrub
poderá corrigir dados corrompidos, copiando uma versão não corrompida de outro disco. Se todas as cópias de alguns dados estiverem corrompidas (por exemplo, danos em vários discos ou não ter cópias redundantes), não há muito obtrfs scrub
que fazer além de avisá-lo.A razão pela qual isso é importante é que os discos rígidos são apenas 99,999999999999% confiáveis na leitura e gravação de bits. Portanto, a cada poucos terabytes de E / S de dados, é provável que haja um erro. Embora os erros possam ser e sejam detectados (e corrigidos, supondo que uma cópia redundante ainda seja válida) durante o acesso normal ao disco, a limpeza de rotina do disco completo é capaz de encontrar e corrigir erros antes que se acumule o suficiente para que todas as cópias dos mesmos dados sejam corrompidas.
* Estou usando "dados" em vez de "arquivo" para incluir também metadados. O Btrfs armazena arquivos e metadados correspondentes (incluindo somas de verificação) em blocos de dados, todos os quais são somados e verificados por
btrfs scrub
.Veja também:
fonte
100-1/10^14
tem 16 noves e o post tem apenas 14 (correspondendo a 10 ^ 12).1-10^n
, que é convertido em porcentagem porque os humanos não gostam de decimais à esquerda. Além disso, deixei de mencionar no meu comentário anterior que as unidades estão no RAID 1 (portanto, os mesmos dados 270-300 GiB estão em cada uma delas), o que corrige outro erro aparente de cálculo.Expandir a excelente resposta de Mark Haferkamp,
btrfs scrub
ler todos os dados em vez de todos os arquivos é uma propriedade crítica e é realmente o que a torna tão útil. Lembre-se, o btrfs tem suporte RAID embutido. Digamos que você tenha um sistema de arquivos btrfs que abrange duas unidades que você configurou para usar o RAID1. Nesse caso, quando você grava em um arquivo, essa gravação é replicada nos dois discos. (Fica mais complicado com um exemplo mais complexo, mas, neste caso simples, é sempre o que acontece.) No entanto, quando você lê esse arquivo, a leitura atinge apenas um disco (porque é um desperdício ler o arquivo duas vezes a menos que a primeira cópia seja inutilizável por algum motivo).Agora diga que sua segunda unidade btrfs está se degradando e começando a corromper dados no seu sistema de arquivos. Quando você lê blocos deste disco, o btrfs notará que a soma de verificação não corresponde e restaurará o bloco dentro da banda a partir de uma cópia em bom estado - a cópia na primeira unidade. Ele retornará os dados para o aplicativo que está chamando
read()
(ou o que for) como se nada tivesse acontecido.Mas e se o btrfs não decidir ler no segundo disco? Lembre-se, há duas cópias, para que ele possa ler do primeiro ou do segundo disco. Se ler do primeiro disco, não notará nada de errado. A única vez que notará que algo está errado é quando o primeiro disco também é degradado. Agora você está realmente pronto, já que é tarde demais para recuperar os dados - a cópia do segundo disco foi corrompida por um tempo e a primeira cópia (que é o que você usaria para restaurar o segundo disco) também está corrompida!
É aqui que
btrfs scrub
entra. Ele lê todos os dados , nem todos os arquivos. Isso inclui metadados, mas também cópias secundárias de arquivos que normalmente não estariam no caminho de leitura. Quando ele lê essas cópias secundárias, isso cria uma oportunidade para a correção de erros em banda do btrfs ativar e restaurar os dados de uma cópia redundante.fonte