Necessitei verificar se um disco rígido tinha setores defeituosos e usei o programa badblocks.
Ele já vem com a instalação padrão do Ubuntu e basicamente tem três formas de utilização:
Read-only: testa somente a leitura e pode ser feito em um disco já montado
# badblocks -sv -c 1024 /dev/sdb
Read-write: testa leitura e escrita preservando os dados contidos no disco (Demora bastante)
# badblocks -nsv -c 10240 /dev/sdb
Test-Write: testa leitura e escrita gravando em cada bloco do disco. OBS: destroi todos dados.
# badblocks -wsv -c 10240 /dev/sdb
Abaixo alguns dos parâmetros mais utilizados:
-n = Uso não destrutível no modo read-write
-s = Mostra o progresso da verificação
-v = Mostra detalhes
-c = Especifica número de blocos verificados por vez
-p = Número de testes
-w = Uso do write-mode
É importante verificar a documentação do badblocks através do man badblocks