Resumo rápido
TL;DR: Não, você não consegue reparar setores defeituosos físicos de um disco rígido. Uma vez que a superfície do disco está danificada, o arranhão é permanente. O software só consegue detectar o dano ou pedir ao firmware que o esconda.
- O software consegue consertá-los? Não. O
badblocks, osmartctle qualquer outra ferramenta só conseguem detectar ou relatar setores defeituosos. - O disco consegue se consertar sozinho? Parcialmente. O firmware da unidade pode remapear setores defeituosos para setores sobressalentes, mas isso esconde o dano em vez de curá-lo.
- O que você deve fazer? Se os dados importam, clone o disco com o
ddrescueprimeiro e só depois troque a unidade. Se for apenas um disco de teste, monitore se a contagem de setores defeituosos cresce.
Este guia explica o que o badblocks, o SMART e o firmware da unidade realmente fazem, usando comandos reais e dados reais de disco.
1. O que são setores defeituosos?
Um setor é a menor unidade de armazenamento de um disco rígido. Pense nele como uma única página de um caderno muito grande. Um setor defeituoso é uma página que o disco não consegue mais ler nem gravar de forma confiável.
Quando um setor se torna defeituoso, qualquer dado armazenado ali fica em risco. Discos modernos têm tratamento de erros embutido, mas, quando setores defeituosos começam a aparecer, eles geralmente são sinal de que o disco está envelhecendo ou foi danificado fisicamente.
Ponto-chave: Setores defeituosos nem sempre são visíveis de imediato. Seu sistema operacional pode não reclamar até tentar ler um arquivo armazenado em um local defeituoso.
2. Os dois tipos de setores defeituosos
Nem todo setor defeituoso é igual. Entender a diferença é a parte mais importante deste guia.
2.1 Setores defeituosos leves (lógicos)
Eles acontecem quando os dados de um setor estão corrompidos, mas a superfície física do disco está intacta. As causas incluem:
- Queda de energia enquanto o disco gravava dados
- Bugs de software ou malware
- Enfraquecimento ou confusão do sinal magnético
Às vezes, esses setores podem ser "consertados" sobrescrevendo o setor com novos dados. O disco físico não está danificado; apenas a informação nele está errada.
2.2 Setores defeituosos duros (físicos)
Eles acontecem quando a superfície real do prato do disco está danificada. As causas incluem:
- O cabeçote de leitura/gravação tocou o prato (um "head crash")
- Poeira ou contaminação dentro da câmara selada da unidade
- Desgaste normal ao longo de anos de uso
- Defeitos de fabricação
Nenhum software consegue curar dano físico. O software só pode pedir ao disco que esconda o dano usando setores sobressalentes. O arranhão no prato permanece para sempre.
Aviso crítico: Se o seu disco tem setores defeituosos físicos, rodar testes intensos repetidamente pode na verdade piorar o problema, ao forçar um hardware já debilitado.
3. Nosso disco de teste: dados reais de uma unidade real
Para este guia, testamos um disco rígido SATA de 250 GB real. Veja o que o sistema enxerga antes de rodar o teste.
3.1 Verifique o layout do disco com lsblk
3.1.1 O que é lsblk?
O lsblk ("list block devices") exibe todos os dispositivos de armazenamento em bloco conectados ao seu sistema: discos rígidos, SSDs, unidades NVMe e suas partições. Ele também mostra quais partições estão montadas e onde. Isso ajuda a confirmar que você está mirando o disco correto antes de rodar comandos destrutivos.
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 232.9G 0 disk
└─sda1 8:1 0 232.9G 0 part
[...]
Observe que sda é um disco de 232.9 GB com uma partição (sda1), e ela não está montada. Isso é seguro para testar.
Se estiver montada, desmonte-a primeiro. Isso é muito importante.
3.2 Exiba o layout de partições e a geometria do disco com fdisk -l
3.2.1 O que é fdisk -l?
O fdisk é um manipulador de tabela de partições para Linux. A flag -l significa "list" (listar) e diz a ele para exibir o layout de partições e a geometria do disco sem fazer nenhuma alteração. Ele mostra o tamanho total do disco, a contagem de setores, o tamanho do setor e os limites das partições.
$ sudo fdisk -l /dev/sda
Disk /dev/sda: 232.89 GiB, 250059350016 bytes, 488397168 sectors
Disk model: 045
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Isso confirma que o disco tem 488,397,168 setores, cada um com 512 bytes. Essa é a área total de superfície que o badblocks vai varrer.
4. Use o badblocks para verificar setores defeituosos no Linux
4.1 O que é badblocks?
O badblocks é um utilitário Linux que testa um dispositivo de armazenamento em busca de setores danificados, gravando padrões de teste em cada bloco, lendo-os de volta e comparando o que foi gravado com o que foi lido. É uma ferramenta de diagnóstico, não de reparo. Ele informa quais blocos não são confiáveis, mas não os conserta.
4.2 O que badblocks -wsv realmente faz?
sudo badblocks -wsv /dev/sda
Vamos destrinchar:
Aviso: operação destrutiva: A flag
-wapaga tudo no disco de destino. Não há prompt de confirmação. Ele começa a gravar imediatamente. Use isso apenas em discos sem dados importantes.
4.3 O que os padrões de teste significam
O badblocks -w não grava apenas zeros. Ele usa vários padrões de teste em sequência:
0xaa(binário: 10101010)0x55(binário: 01010101)0xff(binário: 11111111)0x00(binário: 00000000)
Cada padrão é gravado em todos os blocos, depois lido de volta e comparado. Se a leitura não corresponder à gravação, aquele bloco é relatado como defeituoso.
4.4 O que o badblocks NÃO faz
O badblocks não controla nem realiza diretamente o remapeamento de setores. Ele não repara a superfície física do disco. Em vez disso, ele lê e/ou grava setores e relata erros de E/S. Quando uma operação de gravação é realizada, porém, o firmware da própria unidade pode detectar um setor em falha e remapeá-lo para um setor sobressalente. Esse remapeamento é feito pelo HDD, não pelo badblocks.
4.5 A própria página de manual avisa contra usá-lo diretamente
Note que a página de manual do badblocks recomenda explicitamente que você não o execute diretamente. Em vez disso, ela aconselha usar e2fsck -c ou mke2fs -c, que chamam o badblocks internamente com o tamanho de bloco correto para o seu sistema de arquivos.
4.6 Por que o manual desencoraja o uso direto?
Os números de bloco que o badblocks produz dependem do tamanho do bloco. O padrão é 1024 bytes. Se o seu sistema de arquivos usa um tamanho de bloco diferente (como 4096 bytes) e você não passa -b, os números na sua saída não se referem aos blocos que você pensa. Rodar a varredura por meio de e2fsck -c ou mke2fs -c significa que o tamanho de bloco está correto por construção. As ferramentas de sistema de arquivos conhecem o próprio tamanho de bloco; você pode não conhecer.
4.7 Alternativas seguras ao -w quando existem dados
Se você precisa testar um disco que ainda contém dados, use uma destas opções:
A flag
-f: Obadblocksnormalmente se recusa a rodar em um dispositivo montado porque isso pode travar o sistema ou corromper o sistema de arquivos. A flag-fignora essa proteção. O comentário do próprio manual é memorável: "If you think you are smarter than thebadblocksprogram, you almost certainly are not." Desmonte o dispositivo em vez disso.
5. Lendo dados SMART: o que os números significam
Mesmo que o badblocks não relate erros, os dados SMART dizem o que o próprio firmware do disco sabe sobre a saúde dele.
5.1 O que é smartctl?
O smartctl é a interface de linha de comando do pacote smartmontools. Ele lê os dados SMART (Self-Monitoring, Analysis, and Reporting Technology) embutidos em praticamente todo disco rígido e SSD moderno.
O SMART é um sistema de monitoramento de saúde dentro da própria unidade que acompanha indicadores de desgaste, contagens de erros, temperatura e sinais preditivos de falha. A flag -a diz a ele para imprimir todas as informações disponíveis.
Antes de rodar qualquer teste destrutivo, verifique sempre o relatório de saúde embutido do disco.
$ sudo smartctl -a /dev/sda
=== START OF INFORMATION SECTION ===
Device Model: GB0250C8045
Serial Number: 9SF0HF1B
Firmware Version: HPG2
User Capacity: 250,059,350,016 bytes [250 GB]
Rotation Rate: 7200 rpm
...
SMART overall-health self-assessment test result: PASSED
...
Self-test execution status: ( 121) The previous self-test completed having
the read element of the test failed.
Já vemos uma contradição: o disco diz "PASSED" no geral, mas o último self-test falhou em uma operação de leitura. Isso é comum. O status geral do SMART pode ser otimista, enquanto testes individuais revelam problemas reais.
5.2 Rodando seus próprios autotestes SMART
Você pode iniciar os self-tests embutidos da unidade sem nenhuma operação destrutiva. Eles rodam dentro do firmware do disco e relatam seus resultados ao SMART.
$ sudo smartctl -t short /dev/sda # Usually under 10 minutes
$ sudo smartctl -t long /dev/sda # More thorough, tens of minutes
$ sudo smartctl -l selftest /dev/sda # View results of past tests
O teste curto verifica o desempenho elétrico e mecânico, além de uma amostra das operações de leitura. O teste longo varre toda a superfície. Ambos rodam em segundo plano; você confere os resultados depois com -l selftest.
5.3 Os atributos SMART mais importantes
A Backblaze, que opera um dos maiores conjuntos de dados publicados sobre falha de unidades, monitora cinco atributos SMART para previsão de falhas. Nosso disco de teste relata a maioria deles:
O que 45 setores realocados realmente significa
Este disco já tem 45 setores que o firmware aposentou permanentemente e substituiu por sobressalentes do seu pool de reserva interno. Esses 45 setores são dano físico. Nenhum software consegue restaurá-los. A única questão agora é se mais aparecerão.
5.4 Detalhes do log de erros SMART
O log de erros mostra falhas de leitura repetidas no mesmo local:
Error 24 occurred at disk power-on lifetime: 9578 hours
Error: UNC at LBA = 0x0018f66b = 1635947
Commands leading to the error were:
READ DMA EXT
READ DMA EXT
READ DMA EXT
...
Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error
#1 Short offline Completed: read failure 90% 9578 1635947
O mesmo endereço de bloco lógico (LBA 1635947) aparece em todos os erros. Esse é um local específico na superfície do disco que a unidade consistentemente não consegue ler. O self-test offline curto também falhou exatamente nesse local.
5.5 O SMART deixa passar 23% das falhas
Aqui está a ressalva mais importante sobre os dados SMART. As estatísticas publicadas da Backblaze mostram que 76.7% das unidades que falharam tinham pelo menos um dos cinco atributos-chave acima de zero, mas isso significa que 23.3% das unidades que falharam não mostraram nenhum aviso SMART. Quase uma em cada quatro unidades falha sem nunca acionar uma sinalização nessas estatísticas.
O SMART é evidência, não garantia:
Uma verificação SMART aprovada significa que nada de ruim foi detectado ainda. Não significa que a unidade está saudável, e não substitui ter backups. Um relatório limpo não é um atestado de saúde. Compare uma unidade com o próprio histórico dela, não com uma tabela da internet.
6. Rodando o teste do badblocks
Agora rodamos o teste destrutivo de gravação. Como este disco não tem dados importantes, isso é seguro.
$ sudo badblocks -wsv /dev/sda
Checking for bad blocks in read-write mode
From block 0 to 244198583
Testing with pattern 0xaa: 20.31% done, 1:55:02 elapsed, (0/0/0 errors)
# After more time passes, you might see errors appear:
Testing with pattern 0xaa: 45.12% done, 4:20:15 elapsed, (3/1/2 errors)
Aviso: Como já mencionamos, a flag -w começa a gravar imediatamente no seu disco. Use-a quando não houver dados importantes no disco de destino.
Se um disco já está se degradando fisicamente, um teste destrutivo completo de gravação pode levá-lo ao limite e fazê-lo parar de funcionar por completo. Para um disco de teste, isso é aceitável, mas vale repetir.
6.1 Entendendo o contador de erros: (0/0/0)
Os três números entre parênteses no fim da linha de progresso significam:
Tenha paciência e use proteção de energia: Um teste destrutivo completo pode levar muitas horas. Se houver perda de energia durante o teste, você pode acabar com um disco parcialmente apagado e resultados incompletos. Use um nobreak (UPS) se possível e mantenha notebooks na tomada. No nosso disco 250 GB, o teste levou cerca de 9 hours.
7. O que acontece depois do teste?
7.1 Cenário A: nenhum bloco defeituoso encontrado
Se o badblocks terminar com zero erros em todos os padrões, você pode ver:
Pass completed, 0 bad blocks found. (0/0/0 errors)
Isso significa que a superfície do disco passou no teste de gravação-leitura-verificação. No entanto, lembre-se de que nosso disco de teste já tem 45 setores realocados no histórico SMART. Eles já haviam sido escondidos pelo firmware antes de começarmos. O teste só verifica se problemas novos aparecem.
7.2 Cenário B: blocos defeituosos encontrados
Se o badblocks encontrar blocos defeituosos, ele imprimirá os números desses blocos:
1635947
1635948
1635950
Pass completed, 3 bad blocks found. (3/0/3 errors)
Observe que o bloco 1635947 corresponde ao LBA do log de erros SMART. Essa é uma confirmação forte: o firmware do disco e o badblocks estão apontando para o mesmo local físico.
7.3 O que você pode fazer com a lista de blocos defeituosos
Você pode salvar a lista em um arquivo e dizer ao sistema de arquivos para evitar esses blocos ao criar um novo sistema de arquivos:
7.3.1 O que é mkfs.ext4?
O mkfs.ext4 cria um sistema de arquivos ext4 em uma partição. Esse é o processo de formatar uma partição para que o Linux possa armazenar arquivos nela. A opção -l (L minúsculo) diz a ele para ler uma lista de blocos defeituosos e marcá-los como inutilizáveis nas estruturas de dados do sistema de arquivos, para que seus arquivos nunca sejam gravados nesses locais físicos.
sudo badblocks -wsv -o badblocks_list.txt /dev/sda
sudo mkfs.ext4 -l badblocks_list.txt /dev/sda1
A opção -l diz ao mkfs.ext4 para marcar esses blocos como inutilizáveis no sistema de arquivos. Seus dados nunca serão gravados ali. Mas lembre-se de que isso é contorno, não reparo.
7.4 Quem realmente faz o remapeamento?
Esta é a parte mais mal compreendida do que as pessoas chamam de "reparo de disco".
A verdade sobre o remapeamento:
Quando o badblocks -w grava em um setor defeituoso, o firmware do disco pode decidir realocá-lo para um sobressalente. Mas isso só acontece se o firmware detectar um problema durante a operação de gravação. O badblocks não comanda o remapeamento. Ele simplesmente grava dados, e o cérebro interno do disco decide o que fazer.
8. E se o seu disco ainda tiver dados?
Todo este guia pressupõe que seu disco não tem dados importantes, que é a única condição segura para rodar o badblocks -w. Se o seu disco contém arquivos que importam, não rode testes destrutivos nele. Toda operação de leitura e gravação em uma unidade em falha é um risco.
8.1 A regra de ouro: primeiro a imagem, depois o teste
Se os dados importam, a ordem das operações é:
- Clone o disco para uma unidade saudável ou arquivo de imagem usando uma ferramenta projetada para mídia danificada
- Verifique o clone e recupere arquivos a partir dele
- Só então rode testes no original (se você ainda se importa com o estado dele)
8.1.1 O que é ddrescue?
O ddrescue (GNU ddrescue) é uma ferramenta de recuperação de dados que copia dados de um dispositivo de bloco para outro, projetada especificamente para unidades em falha.
Diferente do dd, ele pula setores defeituosos de forma inteligente, tenta novamente regiões que falharam e mantém um mapfile para que você possa retomar sessões de recuperação interrompidas. Ele lê primeiro as partes fáceis e depois volta às áreas danificadas, minimizando o estresse sobre a unidade em falha.
$ sudo ddrescue -f -n /dev/sda /dev/sdb rescue.mapfile
# -f = force (overwrite output)
# -n = skip scraping phase initially (faster first pass)
# rescue.mapfile = progress log you can resume from
# Then retry the bad sectors more aggressively:
$ sudo ddrescue -d -r3 /dev/sda /dev/sdb rescue.mapfile
# -d = direct disc access (bypass kernel cache)
# -r3 = retry bad sectors up to 3 times
Pare de gravar em uma unidade em falha:
Toda gravação em uma unidade em falha é uma chance de sobrescrever algo recuperável e mais trabalho para um mecanismo que já está sofrendo. Se os dados importam, clone primeiro, investigue depois. Rodar o badblocks -w em uma unidade com dados preciosos é como testar a resistência de uma ponte em chamas enquanto você ainda está em cima dela.
9. O veredito: você consegue realmente consertar setores defeituosos?
A resposta curta é não. Você não consegue reparar setores defeituosos.
Nem com o badblocks nem com o smartctl. Nem com qualquer software ou ferramenta que você possa rodar do seu computador. Uma vez que um setor é fisicamente danificado, ele permanece danificado para sempre.
9.1 Setores defeituosos leves (lógicos): "corrigíveis", não "reparados"
Se um setor contém dados corrompidos mas a superfície física está intacta, sobrescrevê-lo com novos dados pode torná-lo legível de novo. Mas você não "reparou" o setor. Você simplesmente gravou novos dados sobre os dados corrompidos antigos. O setor em si nunca esteve fisicamente quebrado.
9.2 Setores defeituosos duros (físicos): permanentemente quebrados
Se a superfície física do prato do disco está arranhada, contaminada ou danificada, nenhum software consegue curar esse dano. O arranhão não desaparece porque você rodou um comando.
O que o firmware do disco faz é esconder o dano, trocando o setor defeituoso por um sobressalente do seu pool de reserva interno. O dano continua lá. Você só não consegue mais vê-lo.
9.3 O que o software realmente faz vs. o que as pessoas pensam
9.4 O que você deve fazer se um disco rígido tiver setores defeituosos
Uma vez que um setor se torna defeituoso por dano físico, ele permanece defeituoso para sempre. O melhor que você pode fazer é:
- Detectá-lo (com o
badblocksou o SMART) - Escondê-lo (com remapeamento de firmware ou listas de blocos defeituosos do sistema de arquivos)
- Trocar o disco (antes que mais setores falhem)
Se os dados importam, clone o disco primeiro com o ddrescue e depois troque a unidade. Se o disco é apenas para testes e não tem dados importantes, você pode continuar usando-o enquanto monitora se a contagem de setores defeituosos cresce. Mas você não "reparou" nada. Você apenas administrou os sintomas.
10. Equívocos comuns
11. Quando você deve trocar o disco?
11.1 Seguro continuar usando (com cautela)
Zero setores realocados, zero setores pendentes, zero erros ATA e o badblocks passa sem erros. O disco está saudável.
11.2 Monitore de perto
Um pequeno número de setores realocados (como os nossos 45) que está estável e não aumenta. O disco pode durar anos, mas não armazene dados críticos nele sem backups.
11.3 Troque imediatamente
Setores realocados aumentando rapidamente, setores pendentes atuais acima de zero, erros ATA repetidos, sons de cliques ou o badblocks encontrando novos setores defeituosos a cada teste. O disco está falhando ativamente.
11.4 Como verificar se a contagem está crescendo
Rode o smartctl antes e depois do seu teste com badblocks e compare:
$ sudo smartctl -a /dev/sda | grep -E "Reallocated|Pending|Uncorrectable"
5 Reallocated_Sector_Ct ... 45
197 Current_Pending_Sector ... 0
198 Offline_Uncorrectable ... 5
Se Reallocated_Sector_Ct aumentar depois do badblocks, o firmware encontrou novos setores defeituosos durante o teste e os trocou. Isso prova que o disco ainda está se degradando.
11.5 Mais uma coisa: verifique o cabo
Nem todo erro de disco significa que o disco está morrendo. Um UDMA_CRC_Error_Count diferente de zero (atributo SMART 199) geralmente indica um cabo SATA ruim ou conexão frouxa, não uma unidade em falha. Antes de descartar um disco, tente outro cabo e outra porta. Nosso disco de teste mostra zero erros de CRC, então o problema está genuinamente na unidade.




