Correção de erros e badblocks

Concluindo, temos a questão da detecção e correção de erros, que faz parte do processo de leitura e gravação.

Por melhor que seja sua qualidade, nenhuma mídia magnética é 100% confiável (como pode confirmar quem já teve o desprazer de trabalhar com disquetes ;). Pequenas falhas na superfície da mídia podem levar a erros de leitura, sobretudo quando ela possui
uma densidade de gravação de mais de 100 gigabits por polegada quadrada e gira a 7.200 RPM ou mais, como nos HDs atuais.

Isso não significa que o seu HD vá pifar amanhã, mas que são comuns erros na leitura de um setor ou outro. Obviamente, como todos os nossos dados importantes são guardados no disco rígido, a possibilidade de erros na leitura de “um setor ou outro” não
seria aceitável, principalmente no caso de máquinas destinadas a operações críticas. Imagine se, nesse “setor ou outro” do servidor de um grande banco, estivessem gravados os dados referentes à conta bancária de um cliente importante, por exemplo.

De modo a tornar os HDs uma forma de armazenamento confiável, os fabricantes utilizam sistemas de ECC para detectar e corrigir erros de leitura eventualmente encontrados. O ECC é o mesmo sistema utilizado em módulos de memória destinados a servidores e
também em CD-ROMs, onde são usados nada menos do que 276 bytes de códigos de correção de erros para cada setor de 2048 bytes.

Em um HD, cada setor armazena, além dos 512 bytes de dados, mais algumas dezenas de bytes contendo os códigos ECC. A criação dos bytes de ECC, assim como sua utilização posterior é feita pela placa lógica, um processo automático que é feito de forma
completamente transparente ao sistema operacional.

Quando um setor é 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 o sistema de paridade
antigamente usado 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. Estes erros transitórios, que são corrigidos com a ajuda dos
códigos ECC são chamados de “soft errors” e não causam nenhum efeito colateral além de um delay de alguns milissegundos na leitura.

Caso não seja possível corrigir o erro usando o ECC, a controladora faz uma nova tentativa de leitura do setor, pois é grande a possibilidade do erro ter sido causado por alguma interferência ou instabilidade momentânea. Caso o erro persista, ela fará
várias tentativas sucessivas, reduzindo a velocidade de rotação dos discos e comparando o resultado de várias leituras, de forma a tentar recuperar os dados gravados no setor. Esse processo gera aquele ruído característico de HD sendo “mastigado” e quase
sempre indica o aparecimento de um badblock.

Por serem defeitos físicos na mídia magnética, não existe muito o que fazer com relação a eles. O jeito é marcar os badblocks, de forma que eles não sejam mais usados.

Os HDs atuais são capazes de marcar automaticamente os setores defeituosos. A própria controladora faz isso, independentemente do sistema operacional. Existe uma área reservada no início do disco chamada “defect map” (mapa de
defeitos) com alguns milhares de setores que ficam reservados para alocação posterior. Sempre que a controladora do HD encontra um erro ao ler ou gravar num determinado setor, ela remapeia o setor defeituoso, substituindo-o pelo endereço de um setor
“bom”, dentro do defect map. Como a alocação é feita pela própria controladora, o HD continua parecendo intacto para o sistema operacional.

De fato, é normal que os HDs já venham de fábrica com alguns setores remapeados, causados por pequenas imperfeições na superfície da mídia. Como eles não são visíveis para o sistema operacional, nem causam problemas no uso
normal, acabam passando despercebidos.

Naturalmente, o defect map é uma área limitada, que corresponde normalmente a uma única trilha. Caso o HD possua algum problema crônico, eventualmente os endereços se esgotarão e os badblocks realmente passarão a se tornar
visíveis.

Deste ponto em diante, entram em cena utilitários como o scandisk (no Windows) e o badblocks (no Linux), que permitem realizar um exame de superfície, marcando os setores defeituosos encontrados. Estes setores não são marcados no defect map, mas sim em
uma área reservada da partição.

Um grande número de setores defeituosos são indício de problemas graves, como envelhecimento da mídia, defeitos no mecanismo de leitura ou mesmo contaminação do HD por partículas provenientes do ambiente. O ideal nesses casos
é fazer backup de todos os dados e substituir o HD o mais rápido possível.

Entretanto, mesmo para estes HDs condenados, às vezes existe uma solução. É comum a maioria dos setores aparecerem mais ou menos agrupados, englobando uma área relativamente pequena do disco. Se houver muitos badblocks em áreas próximas, você pode
reparticionar o disco, isolando a área com problemas.

Se, por exemplo, você percebesse que a maioria dos defeitos se encontra nos últimos 20% do disco, bastaria abrir o particionador, deletar a partição atual e criar uma nova, englobando apenas 80% do disco. Neste caso, você perderia uma boa parte da área
útil, mas pelo menos teria a possibilidade de continuar usando a parte “boa” do HD (em algum micro usado para tarefas secundárias, sem dados importantes), até que ele desse seus derradeiros suspiros.

Sobre o Autor

Redes Sociais:

Deixe seu comentário

X