Eu repeti este teste em um sistema de teste rodando o kernel 4.3.
Como você, criei uma matriz BTRFS RAID-6 com 4 unidades:
# mkfs.btrfs -m raid6 -d raid6 /dev/sdb /dev/sdc /dev/sdd /dev/sde
Eu então montei e comecei a escrever dados nele.
Enquanto isso estava acontecendo, eu removi uma das unidades. Claro, isso causou muitas mensagens de erro no log e em todos os lugares. Mas, como esperado, o processo de gravação não foi interrompido e nenhum arquivo foi danificado.
Mais importante, o BTRFS aumentou sua contagem de erros ( dev stats
) para erros de gravação e liberação. Então, se este fosse um sistema de produção, seria monitorado , um cronjob como este teria gerado um email de notificação:
[email protected]
@hourly /sbin/btrfs device stats /mnt/tmp | grep -vE ' 0$'
Então, eu fiz não executar um equilíbrio, mas um scrub , porque eu queria que o BTRFS examinasse o sistema de arquivos completo e corrigisse todos os erros, que é exatamente o que um scrub faz .
# btrfs scrub start -B /mnt/tmp
Por fim, redefino a contagem de erros do BTRFS de volta a zero (isso interromperia as mensagens de aviso se esse sistema de arquivos estivesse sendo monitorado):
# btrfs device stats -z /mnt/tmp
Outro scrub não encontrou mais erros.
E o arquivo que eu estava escrevendo durante o teste está correto. Sua soma MD5 corresponde ao original.
Claro, todos os testes são diferentes. Se a terceira unidade ( sdd
) receber um novo nome como sdf
, você poderá substituí-la por si mesmo, efetivamente fazendo o resilver dela:
# btrfs replace start 3 /dev/sdf /mnt/tmp
A propósito, você mencionou a remoção de uma unidade. Você não precisa fazer isso, só vai misturar seus devidos e ser ineficiente. O comando de substituição existe há algum tempo.
Entre. Em um caso, o BTRFS causou a falha do sistema de teste enquanto eu tentava ler o sistema de arquivos danificado antes de executar o scrub. Afinal, diferentemente da maioria das partes deste sistema de arquivos, o BTRFS RAID-5 / RAID-6 ainda é considerado experimental (embora esteja sendo constantemente aprimorado, portanto, esta declaração pode estar desatualizada, isto é para o 4.3). Mas esta foi apenas uma única vez, eu repeti o teste e ele não caiu depois. Além disso, isso nos diz que, embora o BTRFS RAID-6 possa travar enquanto ainda é experimental, ele protege seus dados e um scrub diz a você de forma confiável se houver erros, porque usa as somas de verificação armazenadas para verificar os arquivos.
Eu também repeti o teste, causando erros em duas unidades. Este é um RAID-6, então isso também funcionou como esperado. Tudo estava bem depois de um matagal.