Substituição de unidades on-line: BTRFS com RAID 6

1

em uma máquina de teste Eu instalei quatro HDDs e eles estão configurados como RAID6. Para um teste, removi uma das unidades (/ dev / sdk) enquanto o volume estava montado e os dados foram gravados nele. Isso funcionou bem, tanto quanto eu posso ver. Alguns erros de E / S foram gravados em / var / log / syslog, mas o volume continuou funcionando. Infelizmente o comando "btrfs fi sh" não mostrou nenhuma unidade perdida. Por isso, remontei o volume no modo degradado: "mount -t btrfs / dev / sdx1 -o remount, rw, degraded, noatime / mnt". Dessa forma, a unidade em questão foi relatada como ausente. Então eu liguei o HDD novamente (é claro / dev / sdk novamente) e iniciei um balanceamento: "btrfs filesystem balance start / mnt". Agora o volume é assim:

$ btrfs fi sh
Label: none  uuid: 28410e37-77c1-4c01-8075-0d5068d9ffc2
    Total devices 4 FS bytes used 257.05GiB
    devid    1 size 465.76GiB used 262.03GiB path /dev/sdi1
    devid    2 size 465.76GiB used 262.00GiB path /dev/sdj1
    devid    3 size 465.76GiB used 261.03GiB path /dev/sdh1
    devid    4 size 465.76GiB used 0.00 path /dev/sdk1

Como eu reinicio o / dev / sdk1? A execução de "$ btrfs fi ba start / mnt" não ajuda. Eu tentei remover o disco rígido, mas

$ btrfs de de /dev/sdk1 /mnt/
ERROR: error removing the device '/dev/sdk1' - unable to go below four devices on raid6 

Uma substituição não funciona assim:

$ btrfs replace start -f -r /dev/sdk1 /dev/sdk1 /mnt
/dev/sdk1 is mounted

Existem outras maneiras de substituir / reiniciar o disco rígido e convertê-lo para o RAID 5?

    
por Oliver R. 28.11.2014 / 09:46

1 resposta

1

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.

    
por 22.11.2015 / 03:04