Disco Rígido / SSDs - detecção e tratamento de erros - a corrupção de dados silenciosa é evitada de maneira confiável?

1

Quando ocorre um erro em uma unidade, é correto assumir que ela sempre será detectada e relatada ao SO (se o RAID do software, como mdadm) ou ao controlador RAID (se o RAID de hardware) for uma leitura com falha (por exemplo, não retornará silenciosamente dados corrompidos), e então o software / controlador RAID levará esse fato e usará a (s) outra (s) unidade (s) RAID para ler os dados (assumindo que é um tipo RAID que possui redundância)?

Pelo que entendi, as unidades modernas de nível corporativo possuem esquemas de detecção de erros, por isso estou assumindo que esse é o caso, mas tive dificuldade em descobrir algo on-line conclusivo. Eu imagino que essa resposta depende de um grau em torno da qualidade da detecção de erros embutida na unidade, então, se for importante, estou mais interessado nisso com relação aos SSDs da série Intel DC S3500.

EDIT 5-Jun-2015 - esclarecimento:

Especificamente, estou pensando se os algoritmos usados hoje para detecção de erros são à prova de balas. Em um exemplo simples, se a detecção de erro estivesse apenas fazendo um XOR em todos os bits do setor, se dois bits fossem invertidos, o erro não seria detectado. Eu imagino que eles são muito mais avançados do que isso, mas eu me pergunto quais são as chances de um erro não ser detectado e se é tão baixo que nem precisamos nos preocupar com isso, e se há alguma fonte autorizada ou artigo confiável sobre isso em algum lugar que poderia ser citada.

EDIT 10-Jun-2015

Atualizado o título da questão e o corpo da pergunta para torná-lo mais genérico para a ideia de erros de disco (não centrados no mdadm como era originalmente).

    
por sa289 03.06.2015 / 01:57

3 respostas

6

Os discos rígidos possuem vários métodos de correção de erros para evitar a corrupção de dados. Os discos rígidos são divididos em setores, dos quais alguns podem se tornar completamente não graváveis / ilegíveis ou retornar dados errados por meio da corrupção de dados - vamos chamar a primeira corrupção do setor ruim e a última corrupção silenciosa de dados .

Corrupção do setor inválida

A primeira corrupção já é tratada pelo próprio drive através de uma infinidade de maneiras. Na fábrica, cada unidade fabricada é testada para setores defeituosos, que são colocados em uma Lista de Defeitos Primários (p-list) . Durante o uso normal do drive, os sistemas internos podem encontrar mais setores defeituosos através do desgaste normal - estes são colocados na Grown Defect List (g-list) . Algumas unidades têm ainda mais listas, mas estas são as mais comuns.

O próprio drive contesta esses erros ao remapear o acesso aos setores dos discos rígidos para sobressalentes setores sem notificar o sistema operacional. No entanto, toda vez que um remapeamento acontece, os valores apropriados no sistema SMART dos discos rígidos são aumentados, indicando um desgaste crescente do disco rígido. O indicador a ser procurado é SMART 5 - Contagem de setores realocados, enquanto outros importantes são 187 (erros não corrigidos relatados), 197 (contagem de setor pendente atual) e 198 (incorrigível off-line).

Para encontrar setores defeituosos, os discos rígidos usam códigos internos de correção de erros (ECC) , que podem ser usados para determinar a integridade dos dados em um setor específico. Dessa forma, ele pode verificar erros de gravação e leitura em um setor e atualizar a lista g, se necessário.

Fontes

Corrupção silenciosa de dados

Como temos bastante verificação de integridade de dados interna, a corrupção silenciosa de dados deve ser muito rara - afinal, como os discos rígidos têm a tarefa de persistir dados com segurança, eles devem fazer isso trabalho corretamente.

Para manter a quantidade de corrupção de dados silenciosa fora de um usuário solicitado ler ou escrever mínimo, os sistemas RAID periodicamente verificam os ECCs das unidades completas para atualizar a lista-g ( depuração de dados ). Se ocorrer um erro, os dados são reconstruídos a partir de outro membro do RAID após a verificação dos setores ECC.

No entanto, toda a correção de dados e verificação de integridade deve ser feita em algum lugar - o firmware. Erros nesses programas de baixo nível ainda podem levar a problemas, assim como problemas mecânicos e falsos positivos. Um exemplo seria uma gravação não verificada, em que o firmware relata erroneamente uma gravação bem-sucedida, enquanto a gravação real da unidade de disco rígido não ocorreu ou estava com falha (uma discrepância de identidade ).

Existem alguns estudos sobre a ocorrência estatística dessas falhas, em que uma verificação de integridade de dados do sistema de arquivos relatou uma falha sem que a unidade subjacente relatasse um problema, mostrando assim uma corrupção de dados silenciosa.

TLDR : menos de 0,3% em discos de consumo e menos de 0,02% em discos corporativos continham em média discrepâncias de identidade em um período de 17 meses, com 1,5 milhão de discos verificados (365 discos no total tinham discrepâncias de identidade) - veja a Tabela 10 e a Seção 5 em esta publicação .

Fontes

por 10.06.2015 / 13:10
0

Sim, o mdadm detectará tais erros, marcará a unidade com falha como defeituosa e a soltará da matriz de trabalho que continuará a funcionar no modo degradado se a redundância estiver disponível.

Mas o AFAIK mdadm faz isso no nível de 'software', com base nos erros recebidos da unidade em resposta a suas solicitações genéricas de E / S (que funcionam com qualquer unidade), não consultando recursos específicos de detecção de erros .

    
por 03.06.2015 / 12:33
0

Bem, as coisas são um pouco mais complexas.

Os discos rígidos modernos não detectam apenas erros, eles têm alguns setores sobressalentes e controladores inteligentes que tentam realocar setores defeituosos. Ou seja, quando você tenta ler algum setor lógico e ele não lê na primeira vez, o controlador tenta lê-lo várias vezes, e às vezes ele pode lê-lo depois de algumas tentativas; em seguida, grava os dados de volta ao setor de reposição, remapeia o setor lógico para o novo e marca o setor antigo como ruim e, finalmente, fornece seus dados. Todos esses processos são completamente transparentes para o leitor, você não notaria nenhum erro. No entanto, isso normalmente será refletido nas estatísticas S.M.A.R.T, e se isso acontecer com mais freqüência, você poderá ver que a unidade irá falhar antes de realmente falhar. É por isso que é realmente importante usar as ferramentas de monitoramento SMART no seu sistema.

Quando um setor não lê nada, ou o controlador fica sem setores sobressalentes, o erro de leitura será retornado pela unidade. A detecção de erros agora é bem à prova de balas, ele usa algum tipo de CRC para dados do setor. Quando o erro de leitura for retornado, o mdadm o verá, marcará a unidade como inutilizável e mudará uma matriz para o modo degradado.

    
por 09.06.2015 / 01:54