Saltar para o conteúdo principal
hard-driveINFO

smartctl e setores defeituosos: o que te diz mesmo, e os 23% que lhe escapam

O smartctl comunica os setores defeituosos, nunca os repara. Que atributos SMART preveem realmente a falha, como os ler, e porque a Backblaze concluiu que 23,3% dos discos avariados não deram aviso nenhum.

Por Eric Gerard · Editor · Save My Disk8 min de leituraFoto via Pexels

Pesquisa este tema e o Google vai sugerir-te "smartctl fix bad sectors". Essa sugestão descreve algo que a ferramenta não faz, e a distância entre aquilo que as pessoas esperam e aquilo que o SMART fornece na realidade é onde os dados se perdem.

O smartctl comunica, não repara

A documentação não deixa margem para interpretação: o smartctl "não calcula nenhum dos valores dos Atributos, limiares ou tipos, limita-se a comunicá-los a partir dos dados SMART presentes no dispositivo."

É um utilitário de monitorização e de relato. Não existe nenhuma opção que repare um setor, porque reparar não é algo que uma ferramenta de diagnóstico faça. Quando um disco realoca um setor defeituoso, é o firmware que o faz, em silêncio, usando um sobresselente da sua reserva.

Isto tem consequências práticas. Qualquer utilitário que anuncie que "corrige" setores defeituosos está a fazer uma de duas coisas: a escrever por cima deles, o que destrói permanentemente aquilo que lá estava, ou a forçar a mão ao firmware para que realoque. Nenhuma das duas recupera o teu ficheiro. Se os dados ainda interessam, escrever no disco é a última coisa que queres.

Os cinco atributos que vale a pena ler

A Backblaze mantém um dos maiores conjuntos de dados publicados sobre falhas de discos, e monitoriza cinco atributos SMART para efeitos de previsão:

IDAtributo
5Reallocated Sectors Count
187Reported Uncorrectable Errors
188Command Timeout
197Current Pending Sector Count
198Uncorrectable Sector Count

A comparação que publicaram: 76,7% dos discos avariados tinham pelo menos um destes acima de zero, contra 4,2% dos discos operacionais. É essa separação que os torna dignos de verificação.

Os dois mais frequentemente mal lidos são o 197 e o 5, e vale a pena perceber a diferença entre eles.

197, Current Pending Sector Count, é a lista provisória. São setores que o disco teve dificuldade em ler e que colocou sob observação. Ainda não estão condenados. Se uma leitura posterior for bem sucedida, a contagem pode voltar a descer.

5, Reallocated Sectors Count, é o registo permanente. São setores que o disco deu por perdidos e trocou por sobresselentes. Este número só sobe.

Por isso, um 197 diferente de zero é o aviso mais precoce, e aquele sobre o qual vale a pena agir, porque diz que o disco está neste momento com dificuldade em ler alguma coisa. Essa alguma coisa bem pode ser o teu ficheiro.

Uma vista macro do interior de um disco rígido aberto a mostrar o prato espelhado e o braço do atuador com as suas cabeças de leitura e escrita.
Uma vista macro do interior de um disco rígido aberto a mostrar o prato espelhado e o braço do atuador com as suas cabeças de leitura e escrita.

Como ler o resultado sem o interpretar mal

Três comandos cobrem o terreno prático:

smartctl -H /dev/sda      # overall health status
smartctl -A /dev/sda      # the attribute table
smartctl -l selftest /dev/sda   # results of past self-tests

No -H, o significado documentado de uma falha é específico e urgente: "ou que o dispositivo já falhou, ou que está a prever a sua própria falha nas próximas 24 horas." Vinte e quatro horas não é uma janela de manutenção. Significa copiar já o que interessa.

No -A, cada atributo traz um valor Raw (bruto), um valor Normalized (normalizado) e um Threshold (limiar). A regra documentada é que, se o valor normalizado for inferior ou igual ao limiar, o atributo falhou. As pessoas leem rotineiramente a coluna raw e entram em pânico, ou leem-na e descontraem, sem a confrontarem com o threshold. O valor raw sozinho não te diz se um atributo falhou.

Para executar os próprios testes:

smartctl -t short /dev/sda    # usually under ten minutes
smartctl -t long /dev/sda     # tens of minutes, more thorough

O teste curto verifica o desempenho elétrico e mecânico juntamente com o desempenho de leitura. O teste alargado é a versão mais longa e mais minuciosa. Em ambos os casos o comando lança o teste e devolve o controlo; lês o desfecho depois com -l selftest, que mostra o tipo e o estado final de cada um dos autotestes mais recentes.

O número que ninguém cita: 23,3%

Aqui está a parte que deveria mudar a forma como reages a um relatório limpo.

Segundo os próprios números da Backblaze, se 76,7% dos discos avariados mostraram um aviso, então 23,3% dos discos avariados não mostraram nenhum. Perto de uma falha em cada quatro chega sem que o SMART comunique fosse o que fosse de errado.

O SMART é um aviso precoce útil que fica calado cerca de um quarto das vezes. É prova de um problema quando fala, e não é prova de saúde quando se cala. Uma verificação aprovada significa que ainda nada de mau foi detetado. Não significa que o disco esteja bem, e não substitui ter uma segunda cópia.

O que torna suspeito qualquer valor raw

Antes de confiares em qualquer um dos números acima, há no próprio manual do smartctl uma ressalva que muda a forma como toda a tabela deve ser lida.

Desde a revisão 4 da ATA/ATAPI-4, o significado destes campos de atributos passou a ser inteiramente específico de cada fabricante. O manual atenua isto de imediato, notando que a maioria dos discos ATA/ATAPI-5 parece respeitar o seu significado convencional, mas a própria norma deixou de os definir.

A consequência recai sobre a coluna que as pessoas mais citam:

A conversão do valor raw numa grandeza com unidades físicas não é especificada pela norma SMART.

Portanto, um valor raw é um número cuja unidade é decidida pelo fabricante. O manual dá exemplos concretos da confusão daí resultante: alguns discos Hitachi comunicam as horas de funcionamento em minutos, e alguns discos IBM usam o atributo da temperatura para seguir três temperaturas diferentes em vez de uma só.

Daqui decorrem duas regras práticas.

Compara um disco consigo próprio, não com uma tabela da internet. Um valor raw de 200 não significa nada sem saberes a unidade e o modelo. O que significa alguma coisa é que no mês passado estava em 40.

Lê a coluna normalizada quando quiseres um veredito. O VALUE vai de 1 a 254 contra um THRESH de 0 a 255, e a regra está enunciada com clareza: se o valor normalizado for inferior ou igual ao limiar, diz-se que o atributo falhou. É essa a comparação que o fabricante quis que fizesses.

A coluna WHEN_FAILED conta-te depois o historial numa palavra: FAILING_NOW se neste momento estiver no limiar ou abaixo dele, In_the_past se o valor atual for aceitável mas o pior valor registado não o era, e um hífen se o atributo está bem agora e nunca falhou.

Uma última coisa que vale a pena saber sobre a própria ferramenta: o smartctl não calcula nenhum dos valores dos atributos, limiares ou tipos. Comunica aquilo que o firmware lhe entrega. Quando um número parece absurdo, a ferramenta não está errada, está a transmitir fielmente algo que o disco disse.

O que fazer quando os números são maus

A ordem importa, e o primeiro passo é aquele que as pessoas saltam.

Deixa de escrever no disco. Cada escrita é uma oportunidade de sobrescrever algo recuperável e mais trabalho para um mecanismo que já está a lutar.

Cria a imagem antes de investigares. Trabalha a partir de uma cópia ao nível do setor, não a partir do disco defeituoso. Tentativas de leitura repetidas num disco com setores pendentes colocam esforço exatamente onde ele já está frágil, e cada nova tentativa é uma oportunidade para um setor marginal se tornar ilegível. Cobrimos o processo em clonar um disco defeituoso com o ddrescue.

Depois recupera a partir da imagem. Assim que tiveres uma cópia, podes voltar a tentar as vezes que quiseres sem arriscares o original.

Escolha editorial
4.5 / 5

Recuperar a partir de uma imagem ou de um disco ainda legível

Aplica-se assim que o disco esteja suficientemente estável para ser lido ou tenhas feito uma cópia. Não repara setores defeituosos e nenhum software o faz, porque a realocação é tratada pelo firmware do disco.

Fundada em 2004Garantia de 30 diasVersão gratuita de 2 GB
Ver a oferta

A versão curta

O smartctl diz-te aquilo que o disco comunica sobre si próprio. Nunca repara nada, por isso trata "fix bad sectors" como a descrição de outra coisa qualquer. Lê o atributo 197 como o aviso precoce e o 5 como o registo permanente, e compara os valores normalizados com os limiares em vez de leres apenas os números raw. Um -H reprovado dá-te um horizonte documentado de 24 horas. E um relatório limpo não é um atestado de saúde, porque aproximadamente uma falha em cada quatro nunca chegou sequer a aparecer nestas estatísticas.

O comportamento dos comandos e a semântica dos atributos são retirados da documentação do smartctl; os números de correlação com a falha (76,7%, 4,2%, 23,3%) são as estatísticas publicadas pela Backblaze a partir da sua própria frota. Os números descrevem a população de discos deles e não são uma previsão para nenhum disco individual. As ligações comerciais têm o atributo rel="sponsored nofollow"; pode aplicar-se uma comissão de afiliado sem custo adicional para ti.

Escolha editorial
4.5 / 5

Recupera os dados do teu disco rígido → EaseUS

Análise gratuita · ficheiros apagados, formatados, perdidos · Windows & Mac

Fundada em 2004Garantia de 30 diasVersão gratuita de 2 GB
Ver a oferta

Perguntas frequentes

O smartctl consegue reparar setores defeituosos?

Não. A documentação do smartctl é explícita ao dizer que a ferramenta não calcula nenhum dos valores dos atributos nem dos limiares, limita-se a comunicá-los a partir dos dados SMART presentes no dispositivo. É um utilitário de monitorização e de relato. Nada nele escreve nos teus dados nem repara um setor. A realocação é feita pelo firmware do disco por sua própria iniciativa, não pelo smartctl, e uma ferramenta que afirma reparar setores defeituosos ou está a reescrevê-los, o que destrói o que lá estava, ou está a descrever mal aquilo que faz.

Que atributos SMART interessam mesmo?

A Backblaze monitoriza cinco para prever a falha: SMART 5 Reallocated Sectors Count, 187 Reported Uncorrectable Errors, 188 Command Timeout, 197 Current Pending Sector Count e 198 Uncorrectable Sector Count. Os números que publicaram mostram que 76,7% dos discos avariados tinham pelo menos um destes acima de zero, contra 4,2% dos discos operacionais.

O que significa um estado de saúde reprovado no smartctl -H?

A documentação indica que, se o dispositivo comunicar um estado de saúde reprovado, isso significa ou que o dispositivo já falhou, ou que está a prever a sua própria falha nas próximas 24 horas. É uma janela estreita. É uma razão para deixar de usar o disco imediatamente e copiar o que interessa, não uma razão para agendar manutenção para o fim de semana.

O meu disco passa no SMART. Os meus dados estão seguros?

Não necessariamente, e este é o número que mais importa. A Backblaze comunicou que 23,3% dos discos avariados não mostraram qualquer aviso a partir destas cinco estatísticas SMART. Perto de uma falha em cada quatro chega com um relatório limpo. Uma verificação SMART aprovada diz-te que ainda nada de mau foi detetado, o que não é o mesmo que o disco estar saudável.

Qual é a diferença entre smartctl -t short e -t long?

O autoteste curto costuma demorar menos de dez minutos e verifica o desempenho elétrico e mecânico, bem como o desempenho de leitura do disco. O teste alargado demora dezenas de minutos e é uma versão mais longa e mais minuciosa da mesma coisa. Lê os resultados depois no registo de autotestes, em vez de assumires que o comando que lançou o teste comunicou o desfecho.