badblocks no Ubuntu: Diagnóstico Completo de Setores Defeituosos

Visão Geral

Falhas físicas em unidades de armazenamento costumam ser catastróficas, resultando frequentemente na corrupção irreversível de arquivos críticos. O utilitário badblocks atua diretamente na prevenção desse cenário, mapeando blocos defeituosos (bad sectors) na superfície da mídia antes que incidentes graves ocorram. Neste guia prático, criaremos um ambiente virtual seguro com loop device para dominar as principais opções da ferramenta: desde a inspeção básica somente leitura até a emissão de relatórios e testes de estresse não destrutivos com monitoramento em tempo real.

1. Configurando o Ambiente Seguro e Executando a Verificação Básica (-v)

Para garantir a disponibilidade das ferramentas necessárias, atualize os repositórios do sistema e certifique-se de que o pacote e2fsprogs esteja presente no ambiente executando sudo apt-get update -qq && sudo apt-get install -y e2fsprogs:

Instalação do pacote e2fsprogs no Ubuntu

A fim de preservar discos físicos em produção durante o aprendizado, simularemos uma unidade isolada gerando um arquivo de imagem binária de 50 MB preenchido com zeros via dd if=/dev/zero of=/tmp/disk_test.img bs=1M count=50 status=none:

Criação da imagem de disco virtual com dd

Esse arquivo precisa ser exposto ao kernel como uma unidade de bloco funcional. O utilitário losetup associa automaticamente a imagem ao primeiro dispositivo de loop desocupado por meio de sudo losetup -f /tmp/disk_test.img:

Associação da imagem a um loop device com losetup

Para facilitar a execução dos comandos seguintes, capturamos o caminho do dispositivo gerado em uma variável de ambiente com LOOP_DEV=$(losetup -j /tmp/disk_test.img | cut -d: -f1) && echo "테스트 디바이스: $LOOP_DEV":

Definição da variável de ambiente com o caminho do dispositivo

O badblocks atua examinando blocos do dispositivo de armazenamento para identificar regiões danificadas. O comportamento padrão opera em modo de leitura estrita (read-only), preservando completamente o conteúdo pré-existente. Ao combiná-lo com a flag de verbosidade -v, acompanhamos cada etapa do diagnóstico; caso nenhum identificador numérico de bloco defeituoso seja retornado ao final, o dispositivo está saudável.

⚙️ [Parâmetros Essenciais]

-v : Ativa a saída detalhada (modo verboso), exibindo alertas e o resumo da verificação no terminal.
-w : Executa o teste de gravação destrutiva preenchendo a unidade com padrões específicos (elimina todos os dados da partição).
-n : Inicia o diagnóstico de leitura e escrita não destrutivo, salvando os dados originais na memória antes do teste de estresse e restaurando-os em seguida.
-s : Apresenta o progresso em tempo real, indicando porcentagem concluída e blocos processados.
-b : Define a dimensão de cada bloco em bytes (o padrão do utilitário é 1024 bytes).
-o : Grava a relação de blocos danificados diretamente em um arquivo texto especificado.
-p : Determina múltiplas passagens consecutivas de teste sobre o disco para identificar falhas intermitentes.

Verificação inicial em modo somente leitura com o badblocks

2. Monitoramento de Progresso em Tempo Real (-s, -v)

Em mídias de armazenamento com grande capacidade, a análise de integridade pode demandar horas, tornando indispensável o acompanhamento visual do processamento. A associação do sinalizador -s ao modo verboso no comando sudo badblocks -s -v $LOOP_DEV fornece uma barra de status dinâmica no console.
Enquanto a opção -s atualiza continuamente a taxa de conclusão percentual e o total de blocos escaneados, o parâmetro -v garante transparência sobre cada fase da rotina. A ausência de registros de blocos defeituosos ao término indica a estabilidade física da unidade.

Acompanhamento do progresso da análise com as opções -s e -v

3. Customização do Tamanho de Bloco e Exportação de Relatório (-b, -o)

Os sistemas de arquivos contemporâneos (como ext4 e XFS) operam tipicamente com blocos de 4096 bytes (4 KB). Adequar o escaneamento a essa mesma granularidade e salvar os achados em um arquivo de texto estruturado é feito com LOOP_DEV=$(losetup -j /tmp/disk_test.img | cut -d: -f1) && sudo badblocks -b 4096 -v -o /tmp/badblocks_report.txt $LOOP_DEV.
Ao aplicar o parâmetro -b 4096, evitamos discrepâncias entre o padrão interno do utilitário (1024 bytes) e o layout de alocação do sistema operacional. Por sua vez, a flag -o redireciona a listagem de setores comprometidos para um arquivo dedicado, permitindo que utilitários de reparo como e2fsck usem esses dados para isolar e ignorar os blocos danificados no futuro.

Execução do badblocks com bloco de 4096 bytes e saída em arquivo

Para inspecionar o registro gerado pelo teste, podemos conferir o conteúdo do documento com cat /tmp/badblocks_report.txt.
Quando o disco avaliado não possui avarias na superfície, o arquivo permanece vazio (0 bytes), atestando que nenhuma anomalia foi encontrada.

Verificação do relatório gerado pelo badblocks

4. Diagnóstico Não Destrutivo de Leitura/Gravação e Limpeza (-n)

Para testar o subsistema de gravação sem destruir as informações armazenadas no volume, empregamos o modo não destrutivo com LOOP_DEV=$(losetup -j /tmp/disk_test.img | cut -d: -f1) && sudo badblocks -n -v $LOOP_DEV.
O parâmetro -n instrui o programa a copiar temporariamente o bloco de dados original para a memória, gravar sequências binárias de teste no setor físico, checar a legibilidade desse padrão e, em seguida, restaurar a informação primitiva intacta. Trata-se do método mais rigoroso de checagem seguro para partições com dados. A conclusão do ciclo sem alertas confirma o bom estado do hardware.

Teste de leitura e gravação não destrutivo com a opção -n

Finalizado o laboratório prático, desfaça a associação do dispositivo de loop e remova os arquivos residuais criados durante os testes executando LOOP_DEV=$(losetup -j /tmp/disk_test.img | cut -d: -f1) && sudo losetup -d $LOOP_DEV && rm -f /tmp/disk_test.img /tmp/badblocks_report.txt:

Desvinculação do loop device e remoção de arquivos temporários

A utilização frequente do badblocks no ecossistema Ubuntu constitui uma rotina de manutenção preventiva indispensável para administradores de sistemas. A realização regular desses diagnósticos assegura a integridade das informações e previne paradas imprevistas no ambiente de produção.