O teste de superfície SMART é quase certamente um passe de leitura único e certamente não destrutivo. Como foi apontado, também é interno ao inversor; com a possível exceção de dados de controle menores, nenhum dado está sendo passado para ou a partir do host durante o teste.
Por outro lado, badblocks -w
faz quatro passagens pela unidade, cada uma com uma gravação e uma leitura. Isso por si só é responsável por uma diferença de 8 vezes no tempo gasto no teste, além de latência rotacional. Como o software está sendo executado no host, todos esses dados precisam ser embaralhados pela interface do disco para a RAM e manipulados pelo software (badblocks, no nosso caso).
Se tomarmos uma latência rotacional da pior das hipóteses de 1 × (o disco precisa fazer uma revolução completa depois de gravar os dados para lê-los novamente, que é praticamente o que você verá se gostar de badblocks primeiro preenche todo o disco e, em seguida, leia tudo de volta, em vez de fazer uma faixa física de E / S por vez que com o LBA é quase impossível), terminamos com o pior caso (1 + 1) × 8 × = 16 × o tempo necessário para complete a operação. 16 × 2,5h = 40h, o que certamente está alinhado com seus números e ainda pressupõe que estamos lidando apenas com armazenamento de dados na unidade e que isso está acontecendo tão rápido quanto a unidade pode suportar E / S sequenciais.
badblocks
parâmetros "last-block" "first-block" e executar os testes um pouco por dia?