Como apagar um disco rígido com setores não graváveis?


21

Então, eu tenho um disco rígido que está falhando. Quero apagar os dados antes de enviá-los para substituição. Estou tentando usar dd if=/dev/zero of=/dev/sdXX, mas ele pára no primeiro erro de gravação. Como sobrescrever a unidade com zeros, ignorando erros de gravação? conv=noerrorparece afetar apenas o arquivo de entrada.


Há um relatório de bug no banco de dados Debian sobre esse comportamento, mas parece que ele ainda não foi implementado.
— Bobby

Será badblockstambém parar em erros? Talvez você possa fazer uma escrita destrutiva com isso?
— oKtosiTe

Agora também corri destrutivo badblockspara ter certeza de quantos blocos ruins existem antes de devolver o disco na segunda-feira. Também apagou o disco com sucesso, mas levou quase 50 horas.
— TestUser16418

Respostas:


18

tente ddrescue em vez de dd - ele tenta mais com erros


11
O ddrescue apagou com sucesso o disco inteiro, ignorando os erros de gravação. Muito obrigado.
— precisa

15

Parâmetros que usei com o ddrescue para apagar a unidade /dev/sdb(preenchida com zeros de /dev/zero) e registrar a saída no arquivo log.txt:

ddrescue --force /dev/zero /dev/sdb log.txt

Para limpar com dados aleatórios, use: ddrescue --force / dev / urandom / dev / sdX tmp.log
— Bastion

Como você sabe quando é feito? Eu fiz e deixei correr por cerca de 20 minutos e permaneceu em 0,00% resgatado. É um SSD NVMe com blocos defeituosos que estou tentando apagar ... o utilitário Samsung Secure Erase não funcionou para mim.
— user1960364 6/12

3

Se você apenas deseja limpar a unidade, tente dban

Do site:

O Darik's Boot and Nuke ("DBAN") é um disco de inicialização independente que limpa com segurança os discos rígidos da maioria dos computadores. O DBAN excluirá automática e completamente o conteúdo de qualquer disco rígido que possa detectar, o que o torna um utilitário apropriado para destruição de dados em massa ou de emergência.


Eu ia sugerir isso.
— qroberts

3

Para o registro, o dd também tem uma opção conv=noerrorpara ignorar erros. Se você tiver erros em um arquivo de entrada e, quando não estiver em uso /dev/zero, poderá usar conv=noerror,notruncou conv=noerror,syncimpedir que o dd trunque o arquivo de saída onde existem erros no arquivo de entrada.

Para sua consulta, você pode tentar este comando:

dd if=/dev/zero of=/dev/sdXX conv=noerror  

Para acelerar o processo e, potencialmente, evitar que a unidade morra no meio do caminho, tente também aumentar o tamanho de byte do padrão 512 (que faz com que o dd leia setor por setor, que é lento) para algo maior, como 4K ( oito vezes maior):

dd if=/dev/zero of=/dev/sdXX bs=4K conv=noerror  

Nota: Com um tamanho de byte maior, os erros ignorados podem deixar seções de dados legíveis um pouco menos que o tamanho de byte que você escolher, mas ainda é improvável que alguém possa obter algo dessas seções depois que todo o disco for executado no processo.

Além disso, tenho certeza de que os fabricantes de discos rígidos descartam adequadamente os discos rígidos devolvidos para substituição na garantia, caso a unidade falhe antes que você consiga concluir completamente o processo de substituição.


man ddmostra "noerror" significa "continuar após erros de leitura"
— Kevin Smyth

1

Definitivamente, não é uma solução para usuários avançados, mas se os erros de gravação forem raros, convém continuar manualmente após a ocorrência.

Teoricamente, você poderia escrever algo para fazer isso automaticamente, mas não é tão trivial, e eu prefiro escrever uma ferramenta para fazer o truque do que me preocupar com o script dd.

   seek=BLOCKS
          skip BLOCKS obs-sized blocks at start of output

11
... ou use o dd-rescue ...
— Antti Haapala

... o dd-rescue manipularia erros de gravação corretamente?
— Qdot 06/07/19
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.