quinta-feira, 19 de março de 2015

Detecção e Correção de Erros





Por ser uma media magnética, um disco rígido, por melhor que seja sua qualidade, nunca é 100% confiável. Os discos rígidos actuais utilizam tecnologias no limite do imaginário, guardando cada vez mais informação em espaços cada vez menores, com tempos de acesso cada vez mais irrisórios e com taxas de transferências de dados cada vez mais altas. Não é difícil imaginar que em situações tão críticas de funcionamento, um disco rígido possa apresentar falhas.


Isso não significa que o seu disco rígido vá pifar amanhã, mas que são comuns erros na leitura de um sector ou outro. Obviamente, como todos nossos dados importantes são guardados no disco rígido, a possibilidade de erros na leitura de “um sector ou outro” é absolutamente inaceitável. Isto é ainda muito mais inaceitável em máquinas destinadas a operações críticas. Imaginem num grande
banco, se neste “sector ou outro” estivessem gravados os dados referentes à conta daquele magnata do petróleo...

De modo a tornar seus discos rígidos mais confiáveis, os fabricantes usam técnicas de correcção de erros cada vez mais avançadas. A técnica mais utilizada actualmente é o ECC (Error Correction Code), técnica também utilizada em drives de CD-ROM e memórias.

Usando o ECC, quando um dado é gravado num sector, são gerados códigos que são gravados juntamente com ele. Além dos 512 bytes de dados, cada sector armazena mais alguns bytes contendo os códigos ECC. A criação dos bytes de ECC, assim como sua utilização posterior é feita pela placa lógica do disco rígido, sendo o processo de verificação e correcção completamente transparente ao sistema operacional e ao utilizador.

A quantidade de códigos a ser usada é uma decisão do fabricante, mas quanto mais códigos forem usados, maior será a possibilidade de recuperação dos dados do sector em caso de erro.

Actualmente, é comum o uso de até 100 bytes de códigos para cada setcor, o que resulta discos rígidos praticamente livres de erros.

Quando um sector é lido pela cabeça de leitura, juntamente com os dados são lidos alguns dos códigos ECC, que visam apenas verificar se os dados que estão sendo lidos são os mesmos que foram gravados, uma técnica que lembra um pouco a paridade usada na memória RAM. Caso seja verificado um erro, são usados os demais códigos para tentar corrigir o problema. Na grande maioria dos casos, esta primeira tentativa é suficiente.

Em caso de fracasso, é feita uma nova tentativa de leitura do sector, pois é grande a possibilidade do erro ter sido causado por alguma interferência ou instabilidade momentânea. Caso mesmo após várias tentativas o erro permaneça, são usados os códigos de ECC mais avançados, que garantem uma possibilidade de sucesso maior, mas que por outro lado, exigem muito mais processamento e consomem mais tempo. Se mesmo assim, não for possível corrigir o erro, temos uma falha de leitura. É mostrada então uma mensagem de erro na tela e o setor atingido é marcado como defeituoso no defect map.

Segundo dados da Quantum sobre seus discos rígidos, a cada 1 Gigabyte de dados lidos pela cabeça de leitura, temos um erro simples que é corrigido automaticamente. A cada 1,000 Gigabytes, temos um erro que é corrigido usando-se as técnicas mais avançadas de correção, e apenas a cada 100,000 Gigabytes temos uma falha de leitura.

in Manual de Hardware Completo
de Carlos E Marimoto





Sem comentários: