O badblocks e uma daquelas ferramentas a que se recorre quando um disco começa a comportar-se de forma estranha. Está presente em quase todos os sistemas Linux, o nome corresponde exatamente ao que se procura, e uma das suas opções apaga o disco que se estava a tentar diagnosticar. O manual é invulgarmente direto sobre tudo isto, por isso aqui fica o que ele realmente diz.
O que faz, e o que não faz
A descrição cabe numa linha: o badblocks procura blocos defeituosos num dispositivo. Produz uma lista.
É esse o trabalho todo. Não repara nada. A realocação de setores é tratada pelo firmware do disco, ao seu próprio ritmo, e não por um scanner em espaço de utilizador. A lista existe para ser entregue ao e2fsck ou ao mke2fs, para que o sistema de ficheiros saiba que blocos deve deixar em paz.
Isto coloca-o na mesma categoria do smartctl, que comunica os atributos SMART sem os reparar também. Ambos dizem alguma coisa. Nenhum resolve nada.
A opção que apaga o disco
De tudo o que aqui está, esta é a parte a reter.
A opção -w executa um teste em modo de escrita. Escreve os padrões 0xaa, 0x55, 0xff e 0x00 em cada bloco do dispositivo, lê cada um de volta e compara. É um teste minucioso precisamente porque usa toda a superfície.
O manual traz um aviso explícito:
Nunca use a opção -w num dispositivo que contenha um sistema de ficheiros existente. Esta opção apaga os dados! (no texto original: «Never use the -w option on a device containing an existing file system. This option erases data!»)
Não há forma de desfazer, não há preservação parcial, não há "só sobrescreve as partes defeituosas". Todos os blocos são escritos.

Os modos seguros
Por omissão, o badblocks faz um teste não destrutivo apenas de leitura. Executá-lo sem opção de modo lê o dispositivo e comunica o que não consegue ler. Nada é escrito.
A opção -n acrescenta um teste não destrutivo de leitura e escrita: escreve padrões mas repõe o conteúdo original à medida que avança. O manual recomenda-a como substituto de -w quando existe um sistema de ficheiros, e é honesto quanto à troca: é mais lento, mas preserva os seus dados.
-n e -w são mutuamente exclusivas, o que já é uma pequena misericórdia.
A recomendação que quase ninguém segue
Aqui está a parte que surpreende quem usa esta ferramenta há anos. O manual diz, na própria descrição:
recomenda-se vivamente que os utilizadores não executem o badblocks diretamente, mas antes usem a opção -c dos programas e2fsck e mke2fs (no texto original: «it is strongly recommended that users not run badblocks directly, but rather use the -c option of the e2fsck and mke2fs programs»)
A razão é o tamanho de bloco. Os números de blocos que o badblocks produz dependem do tamanho de bloco usado pelo sistema de ficheiros, e o valor por omissão é 1024 bytes. Se o seu sistema de ficheiros usa outro valor e não passou -b, os números na saída não se referem aos blocos que julga. Executar a análise através de e2fsck -c ou mke2fs -c significa que o tamanho de bloco está correto por construção.
Portanto, a formulação honesta é esta: o badblocks é um componente, e as ferramentas que o invocam normalmente sabem invocá-lo melhor do que você.
Porque se recusa a mexer num dispositivo montado
O badblocks recusa normalmente um teste de leitura/escrita ou não destrutivo num dispositivo montado, porque qualquer um deles pode bloquear o sistema ou danificar o sistema de ficheiros, mesmo que esteja montado apenas para leitura.
Existe uma opção -f para contornar essa recusa, e o comentário do manual sobre ela é uma das linhas mais memoráveis de uma man page de Linux:
Isto pode ser contornado com a opção -f, mas quase nunca deve ser usado: se acha que é mais esperto do que o programa badblocks, quase de certeza que não é. (no texto original: «This can be overridden using the -f flag, but should almost never be used --- if you think you're smarter than the badblocks program, you almost certainly aren't.»)
A atitude correta é desmontar o dispositivo. O manual admite exatamente uma exceção: um /etc/mtab que afirme erradamente que um dispositivo está montado.
As opções que vale a pena conhecer
Algumas opções mudam a forma de uma execução:
-bdefine o tamanho de bloco. Por omissão 1024. É esta que torna a saída significativa ou sem sentido.-cdefine quantos blocos são testados de cada vez. Por omissão 64.-prepete a análise até não aparecerem novos blocos defeituosos nesse número de passagens consecutivas. Por omissão 0, ou seja, uma única passagem.-eaborta ao fim de um dado número de blocos defeituosos. Útil para responder a "existe algum, sequer", e o manual nota que produz uma lista possivelmente incompleta, por isso não a use quando quer o quadro completo.-oescreve a lista num ficheiro no formato quee2fsck -lemke2fs -lesperam.-smostra o progresso, o que importa porque uma passagem completa num disco grande mede-se em horas.
Quando testar é a decisão errada
Este é o juízo que o manual não pode fazer por si.
Uma passagem completa do badblocks lê, ou lê e escreve, cada bloco do dispositivo. Num disco saudável isso é um exercício longo mas inofensivo. Num disco que já está a falhar, são horas de carga adicional sobre hardware que já está em dificuldades, e horas durante as quais não está a salvar nada.
Se os dados ainda importam, a ordem é: primeiro a imagem, depois a investigação. Clonar com uma ferramenta pensada para suportes danificados, que tenta de novo e salta de forma inteligente em vez de insistir no mesmo setor ilegível, tira os seus bytes do disco enquanto o disco ainda gira. Abordamos isso no guia sobre clonar um disco em falha com o ddrescue. Faça os testes na imagem depois, tantas vezes quantas quiser, sem nada a perder.
Quando a análise confirma que o disco está a falhar
A versão curta
O badblocks procura blocos defeituosos e anota o que encontra. Não repara nada.
O modo por omissão é apenas de leitura e é seguro. -n escreve e repõe. -w apaga o dispositivo inteiro, e o manual diz para nunca a usar onde exista um sistema de ficheiros. O manual também recomenda não invocar o badblocks diretamente, mas através de e2fsck -c ou mke2fs -c, para que o tamanho de bloco esteja certo. Se ele se recusar a correr porque o dispositivo está montado, desmonte-o em vez de recorrer a -f.
E se o disco está a morrer em vez de estar apenas sob suspeita, não gaste as horas que lhe restam a testá-lo. Copie-o primeiro.
O comportamento aqui descrito, incluindo os padrões do modo de escrita, o aviso contra -w, a recomendação de usar e2fsck e mke2fs em vez do badblocks diretamente, a recusa perante dispositivos montados e os valores por omissão, foi retirado da página de manual badblocks(8) tal como distribuída com o e2fsprogs 1.47.0. As opções e os valores por omissão podem diferir entre versões; consulte o manual do sistema que está realmente a usar. As ligações comerciais têm o atributo rel="sponsored nofollow"; pode aplicar-se uma comissão de afiliado sem custo adicional para si.
Recupera os dados do teu disco rígido → EaseUS
Análise gratuita · ficheiros apagados, formatados, perdidos · Windows & Mac



