A idéia do espelhamento é obviamente que, se um lado do espelho falhar, o outro deve assumir o controle. Em um mundo ideal, os lados também devem trabalhar em conjunto para aumentar o desempenho de leitura quando ambos os lados do espelho estiverem disponíveis.
Dito isto, se um lado do espelho falhar, então toda a in-flight lê para o dispositivo falhou irá falhar, possivelmente após um atraso. Isso é normal e esperado: um comando foi enviado para um dispositivo que de repente não está mais lá e é capaz de responder ao comando, o que resultará em algum tipo de condição de erro. O kernel provavelmente registrará essas falhas para avisar ao administrador que "algo de ruim aconteceu". O sistema pode ser configurado para gerar esses importantes eventos do kernel no console.
O teste decisivo para qualquer solução de espelhamento é se esses erros realmente se propagam para a camada de espaço do usuário, resultando em aplicativos do usuário recebendo erros de E / S (ou, pior, dados inválidos). Se uma configuração de espelho estiver funcionando corretamente, contanto que o outro lado do espelho funcione corretamente, os aplicativos de espaço do usuário não serão afetados, exceto pelo fato de a leitura demorar um pouco mais que o normal e o sistema cuspir alguns diagnósticos sobre erros de E / S ocorrendo no dispositivo agora indisponível. Nenhum deles deve impactar apreciavelmente o software de espaço do usuário bem comportado.
Se os processos do espaço do usuário (e não apenas o código Btrfs no kernel) viram erros de E / S como resultado de seu experimento, e você pode reproduzir o comportamento de maneira pelo menos razoavelmente consistente, você pode encontrar um bug no código Btrfs . Nesse caso, você pode querer registrar um relatório de erro. Especialmente considerando que este é o Debian, eu sugeriria primeiro arquivar o relatório de erros no sistema de rastreamento de erros do Debian e deixá-los escalá-lo para os desenvolvedores do kernel, se acharem que isso é necessário. Certifique-se de incluir o máximo de detalhes possível, incluindo os comandos exatos que você está executando, versões exatas de tudo o que está envolvido, o texto exato das mensagens de erro, uma descrição exata da sua configuração de armazenamento e qualquer outra coisa que você possa imaginar ajuda para rastrear o problema.
btrfs --version
) e qual kernel (uname -r
) você usou. As versões antigas do BTRFS tinham muitos bugs que foram corrigidos até agora.