Linux mdadm software RAID 6 - suporta recuperação de corrupção de bits?

15

A Wikipedia diz que "o RAID 2 é o único nível padrão de RAID, exceto algumas implementações do RAID 6, que podem recuperar automaticamente dados precisos devido à corrupção de dados de um bit".

Alguém sabe se a implementação do RAID 6 mdadm no Linux é uma dessas implementações que pode detectar e recuperar automaticamente a corrupção de dados de um bit. Isso se refere ao CentOS / Red Hat 6, se forem diferentes de outras versões. Tentei pesquisar online, mas não tive muita sorte.

Com taxas de erro SATA de 1 em 1E14 bits e um disco SATA de 2 TB contendo 1,6E13 bits, isso é especialmente relevante para evitar a corrupção de dados.

EDIT 17-Jun-2015

Acredito que isso seja menos uma preocupação que eu pensava originalmente - consulte Disco rígido / SSDs - detecção e tratamento de erros - a corrupção de dados silenciosa é evitada com segurança? para mais detalhes

sa289
fonte

Respostas:

15

O RAID do software Linux não irá protegê-lo da corrupção de bits e a corrupção de dados silenciosa é um problema bem conhecido. De fato, se o kernel puder ler os dados de um disco, nunca saberá que é ruim. O RAID somente entra em ação se houver um erro de E / S ao ler os dados.

Se você estiver preocupado com a integridade dos dados, considere usar um sistema de arquivos como Btrfs ou ZFS que garanta a integridade dos dados armazenando e verificando somas de verificação. Esses sistemas de arquivos também cuidam da funcionalidade RAID, para que você não precise da invasão do software do kernel se for por esse caminho.

chutz
fonte
Obrigado. Caso seja útil para alguém, obtive mais algumas idéias de pesquisa da resposta de chutz e vi que o mantenedor do mdadm (acredito) disse em 17 de fevereiro de 2011 que ele não tem planos de adicionar a capacidade de forçar a verificação de paridade em todas as leituras. Veja spinics.net/lists/raid/msg32816.html
sa289
3

O RAID5 e o RAID6 podem detectar e geralmente corrigir a corrupção de bits se você verificar a paridade de toda a unidade. Isso é chamado de "limpeza" ou "verificação de paridade" e normalmente leva de 24 a 48 horas na maioria dos sistemas RAID de produção. Durante esse período, o desempenho pode ser significativamente degradado. (Alguns sistemas permitem que o operador priorize a depuração acima do acesso de leitura / gravação ou abaixo dele.) O RAID6 tem uma chance maior de corrigi-lo, porque pode corrigi-lo se houver duas falhas na unidade, enquanto o RAID5 pode lidar apenas com 1 falha na unidade, e as falhas na unidade são mais prováveis ​​quando você está esfregando devido ao aumento da atividade.

vy32
fonte
1
Não é universalmente verdade que o desempenho será notavelmente degradado durante uma limpeza de RAID. Se o scrub usar todos os recursos disponíveis do sistema e for "burro", será o que ele fará. Porém, todas as SANs e eu imaginamos que a maioria dos controladores RAID executará a limpeza com uma prioridade mais baixa ou "boa", ajustando a utilização de recursos dinamicamente para que não consuma os recursos necessários para manter o desempenho da produção.
30812 Jeremy
Você está certo. Eu editei a resposta para adicionar nuances.
vy32
se o seu mdadm RAID 6 matriz é / dev / md1 é então o comando para torná-lo verificar a paridade e tentativa de reparação de pouco corrupção single "echo verificação> / sys / block / md1 / md / sync_action"
BeowulfNode42
2
Eles não "protegem contra corrupção de bits", eles detectam corrupção de bits se você esfregar. Veja minha pergunta aqui para obter detalhes.
Sugiro mudar a resposta à pergunta "RAID5 e RAID6 é capaz de pouco corrupção reparação"
Waxhead
2

Eu teria adicionado isso como um comentário, mas não tenho reputação suficiente; Eu queria esclarecer: o RAID5 pode DETECTAR a corrupção de bits, mas não sabe qual unidade possui a corrupção sem erro de leitura. Como resultado, uma limpeza não poderia consertar isso sem um erro de leitura - provavelmente apenas a registraria e atualizaria o bit de paridade para corresponder. O algoritmo do RAID6 depende da posição, portanto, ele pode detectar qual unidade continha o erro e corrigir a corrupção de bits.

sbingner
fonte
Isso seria ótimo se for verdade! Você pode fornecer links sobre onde está documentado?
28418 Alek_A
2

Todas as respostas acima estão incorretas com relação aos recursos do RAID 6. Os algoritmos RAID 6 operam byte a byte como RAID 5, e se um único byte em qualquer unidade estiver corrompido, mesmo sem nenhum erro indicado pela unidade, ele poderá ser detectado e corrigido. O algoritmo para fazer isso é completamente explicado em

https://mirrors.edge.kernel.org/pub/linux/kernel/people/hpa/raid6.pdf

Para executar essa verificação, as unidades de paridade P e Q também devem ser lidas junto com as unidades de dados. Se a paridade calculada P 'e Q' diferir sem erros de unidade, uma análise poderá identificar qual das unidades está incorreta e corrigir os dados.

Além disso, se a identificação da unidade estiver em uma unidade que não está presente (como a unidade 137, se houver apenas 15 unidades), mais de uma unidade fornecerá dados corrompidos POR ESTE BYTE, sinalizando um erro de erro incorrigível. Quando há muito menos que 256 unidades no conjunto, isso é detectado com alta probabilidade por byte e como existem muitos bytes em um bloco, com probabilidade extremamente alta por bloco. Se a identificação da unidade não for consistente para todos os bytes dentro do bloco RAID, mais de uma unidade fornecerá dados corrompidos e geralmente poderá-se rejeitar a condição, mas desde que todas as identificações da unidade sejam válidas, o bloco não precisará necessariamente ser rejeitado.

Demora mais do que o tempo de verificação usual para executar essa correção, mas só precisa ser realizada com o cálculo da síndrome (P e Q) que mostra um erro.

Tudo isso dito, no entanto, não examinei o código mdadm para determinar se a corrupção de byte único é tratada. Estou ciente de que o mdadm relata erros de síndrome RAID6 na varredura mensal, mas, a partir da mensagem de erro, não está claro se eles estão sendo corrigidos - ele não interrompe o conjunto de unidades nem identifica nenhuma unidade específica na mensagem.

Cafe Hunk
fonte