¿Cómo borrar un disco duro con sectores no grabables?

21

Entonces tengo un disco duro que falla. Quiero borrar los datos que contiene antes de enviarlos para su reemplazo. Estoy tratando de usar dd if=/dev/zero of=/dev/sdXX, pero se detiene en el primer error de escritura. ¿Cómo puedo sobrescribir la unidad con ceros, ignorando los errores de escritura? conv=noerrorparece afectar solo el archivo de entrada.

TestUser16418
fuente
Hay un informe de error en la base de datos de Debian sobre este comportamiento, pero parece que aún no está implementado.
Bobby
¿ badblocksTambién se detiene ante errores? ¿Quizás podrías hacer una escritura destructiva con eso?
oKtosiTe
Ahora también corrí destructivo badblockspara asegurarme de cuántos bloques malos hay antes de devolver el disco el lunes. También borró el disco con éxito, pero tardó casi 50 horas.
TestUser16418

Respuestas:

18

pruebe ddrescue en lugar de dd: se esfuerza más con los errores

chorro
fuente
1
ddrescue borró con éxito todo el disco, ignorando los errores de escritura. Muchas gracias.
TestUser16418
15

Parámetros que utilicé con ddrescue para borrar la unidad /dev/sdb(llena de ceros /dev/zero) y registrar la salida en el archivo log.txt:

ddrescue --force /dev/zero /dev/sdb log.txt
Doug d.
fuente
Para borrar con uso de datos aleatorios: ddrescue --force / dev / urandom / dev / sdX tmp.log
Bastión
¿Cómo sabes cuándo está hecho? Lo hice y lo dejé correr durante unos 20 minutos y se mantuvo al 0.00% rescatado. Es un SSD NVMe con bloques defectuosos que estoy tratando de borrar ... la utilidad Samsung Secure Erase no funcionó para mí.
user1960364
3

Si solo está buscando limpiar la unidad, intente dban

Desde el sitio:

Darik's Boot and Nuke ("DBAN") es un disco de arranque autónomo que limpia de forma segura los discos duros de la mayoría de las computadoras. DBAN eliminará automática y completamente el contenido de cualquier disco duro que pueda detectar, lo que lo convierte en una utilidad adecuada para la destrucción masiva o de emergencia de datos.

pbsmind
fuente
Iba a sugerir esto.
qroberts
3

Para el registro, dd también tiene una opción conv=noerrorpara omitir errores. Si tuvo errores en un archivo de entrada, y cuando no lo esté usando /dev/zero, desearía usar conv=noerror,notrunco conv=noerror,syncevitar que dd truncara el archivo de salida donde existen errores en el archivo de entrada.

Para su consulta, puede probar este comando en su lugar:

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

Para acelerar el proceso, y potencialmente evitar que la unidad muera a mitad de zancada, también puede intentar aumentar el tamaño del byte desde el 512 predeterminado (que hace que dd se lea sector por sector, que es lento) a algo más grande como 4K ( que es ocho veces más grande):

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

Nota: con un tamaño de byte más grande, los errores omitidos pueden dejar secciones de datos legibles ligeramente inferiores al tamaño de byte que elija, pero aún es poco probable que alguien pueda obtener algo de esas secciones después de que todo el disco se haya ejecutado proceso.

Además de eso, estoy seguro de que los fabricantes de discos duros eliminan adecuadamente los discos duros que se devuelven para el reemplazo de la garantía, en caso de que la unidad falle antes de que pueda completar completamente el proceso de sobrescritura.

purefusion
fuente
man ddmuestra "noerror" significa "continuar después de leer errores"
Kevin Smyth
1

Definitivamente no es una solución para usuarios avanzados, pero si los errores de escritura son raros, es posible que desee continuar manualmente después de que ocurran.

Teóricamente, podrías escribir algo para hacer eso automáticamente, pero no es tan trivial, y prefiero escribir una herramienta para hacer el truco que molestarme con el script dd ...

   seek=BLOCKS
          skip BLOCKS obs-sized blocks at start of output
qdot
fuente
1
... o use dd-rescue ...
Antti Haapala
... ¿dd-rescue handle escribiría los errores correctamente?
qdot