Deixe o Btrfs fazer tudo.
Por um lado, o Btrfs possui seu próprio código de espelhamento integrado, que pode ser mais inteligente do que o madm.
É claro que se um disco falhar em um par espelhado em um ataque madm10, você pode substituir o disco defeituoso e seguir em frente com sua vida (embora depois de um conjunto complexo de comandos shell). O problema é se o seu disco falhar um pouco mais suavemente: se alguns blocos apenas retornarem os bits errados em vez de fornecer os códigos de erro apropriados para um bloco defeituoso, então, ao ler os dados, você obterá aleatoriamente dados incorretos. O Btrfs é mais inteligente que isso: faz o checksum de todos os dados. Para ser honesto, não sei se é mais correto dizer "todo nó BTree" ou "todo bloco", mas o ponto é que quando lê alguns dados de uma matriz espelhada, ele verifica a soma de verificação antes de devolvê-la à sua processo userland. Se a soma de verificação não corresponder, ele consultará o outro espelho na matriz primeiro, e se isso fornecer a soma de verificação correta, ele alertará que o disco começou a falhar silenciosamente.
O wiki do Btrfs menciona especificamente sua pergunta :
If Btrfs were to rely on device mapper or MD for mirroring, it would not be able to resolve checksum failures by checking the mirrored copy. The lower layers don't know the checksum or granularity of the filesystem blocks, and so they are not able to verify the data they return.
Por fim, mesmo sem essa vantagem substancial, o fluxo de trabalho de linha de comando para lidar com dispositivos Btrfs removidos ou adicionados é super simples. Eu nem tenho certeza se poderia ter os comandos shell degraded-mount-then-fix-your-files-files, mas para o Btrfs é documentado de forma muito clara na página de vários dispositivos como:
mount -o degraded /dev/sdb /mnt
btrfs device delete missing /mnt
Neste ponto, se você tiver espaço suficiente nos discos restantes, poderá sempre usar apenas btrfs rebalance
e terminar com isso; Não há necessidade de substituir o espelho, como você absolutamente precisa fazer com madm! E se você quiser substituí-lo, você pode fazer btrfs device add
primeiro.