Suponha que eu crie um volume RAID1 de dois discos com mdadm e então crie uma partição BTRFS/ZFS/bcachefs nele. Então os dados em um dos dois discos são corrompidos. Se eu executar uma limpeza, não há como o BTRFS/ZFS/bcachefs corrigir o problema copiando os dados corretos sobre o corrompido. Como aconteceria se fosse o BTRFS/ZFS/bcachefs para gerenciar os dois discos físicos sozinho. Isso ocorre porque o mdadm oculta o fato de que há dois discos físicos subjacentes.
Está certo?
Sim, ao executar em cima do mdadm o scrub do ZFS, etc. não consegue corrigir a corrupção que aconteceu nos discos individuais. Essa é uma das principais razões pelas quais esses sistemas de arquivos preferem fortemente o controle direto sobre os discos sem nenhuma abstração desnecessária como controladores raid ou raid de software.
====== Isso é tudo o que você precisa saber. Tudo abaixo são detalhes técnicos irrelevantes ======
Uma exceção a isso é quando uma unidade auto-relata um erro. A lógica para o raid de software tradicional geralmente se parece com isso:
Se você estiver usando ZFS, etc., o sistema de arquivos ainda saberá que algo está errado devido às somas de verificação que ele mantém, mas não terá como corrigir porque ele vê apenas um dispositivo de bloco no total, que retornou dados incorretos.
Em teoria , há uma maneira de fazê-lo funcionar com o mdadm, primeiro formatando cada disco com dm-integrity (isso emula somas de verificação por setor em um nível de dispositivo de bloco) e, em seguida, usando o mdadm. Então, se houver corrupção, o dispositivo de bloco virtual retornará um erro ao mdadm, que pode então fazer as coisas apropriadas para não corromper o raid geral. Isso é semelhante à maneira como os controladores de raid de hardware de nível empresarial costumavam trabalhar com HDDs de setor de 520 bytes compatíveis. Mas, neste ponto, você provavelmente usaria o XFS em cima disso, já que pode simplesmente assumir que os dados retornados estão corretos ou irrecuperáveis.
Mas "fingir" tudo isso em nível de dispositivo de bloco é lento e ineficiente, que é a razão pela qual sistemas de arquivos como o ZFS foram desenvolvidos: para integrar o RAID e, mais importante, a funcionalidade de soma de verificação por dispositivo com a lógica de nível superior para tornar tudo mais eficiente, por exemplo, tendo apenas um diário, um conjunto de somas de verificação e minimizando o número de operações de E/S separadas para ler/gravar os dados.