O que deve acontecer no Btrfs se eu desconectar um HDD durante a leitura?

2

Eu sou bastante novo no Linux (Debian) e Btrfs. Comecei a testá-lo no meu DIY Nas em casa.

Configuração: - Hardware de nível médio com 2 discos WD RED de 3 TB - Debian (mais recente estável) - Btrfs-tools (mais recente estável) - Configurou uma instalação completa de RAID1 em disco e copiou vários gigabytes de dados para ele

Depois fiz um teste e desconectei um dos dois HDs enquanto lia constantemente os dados. Surpreendentemente, não foi possível continuar a operação de leitura pelo espelho, mas recebi muitas mensagens de erro assustadoras em segundo plano sobre isso.

Eu esperaria de um sistema tipo RAID1 que ele silenciosamente manipulasse essas coisas para mim. Esse é um comportamento normal ou tenho algum erro na instalação em algum lugar?

Zoltán Tamási
fonte
Você deve mencionar exatamente qual versão do btrfs-progs ( btrfs --version) e qual kernel ( uname -r) você usou. As versões antigas do BTRFS tinham muitos bugs que foram corrigidos até agora.
precisa saber é o seguinte

Respostas:

2

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.

um CVn
fonte
Obrigado pela resposta. Sim, o erro de IO propagado para a interface do usuário, ou seja, para o MC, onde iniciei uma cópia longa para o teste. Mesmo quando pressionei repetir, não foi possível restabelecer a operação de leitura. Vou tentar outro teste para ver se é consistentemente reproduzível.
Zoltán Tamási
Não consegui mais reproduzir esse comportamento (tentei 3-4 vezes com várias combinações), a leitura continuou com êxito. Isso continuará sendo um mistério, receio. Eu vou aceitar sua resposta, obrigado.
Zoltán Tamási 27/11/2015