Veo cuatro respuestas viables aquí:
El hdparm
método publicado por garethTheRed es probablemente mejor si está conectado directamente a su computadora. Aparentemente, sin embargo, si lo prueba conectado a través de USB, puede bloquear su unidad. Si está haciendo esto para una unidad que está a punto de desechar, entonces eso puede ser algo bueno. Sin embargo, probablemente desee asegurar el borrado antes de descartarlo.
La técnica informada por imz - Ivan Zakharyaschev funcionará, pero puede ser muy lenta. Sugeriría que si no desea que los datos sean recuperables, use en /dev/urandom
lugar de /dev/zero
; p.ej,
dd iflag=fullblock oflag=direct conv=noerror,notrunc if=/dev/urandom of=/dev/sdX
Yo aconsejaría lo siguiente. Para algo más rápido que haga lo mismo, use la técnica informada por maxschlepzig (en la pregunta):
ddrescue --verbose --force --nosplit /dev/urandom /dev/sdX
Esto será más rápido que el dd
comando, pero no tan rápido como el hdparm
comando. Vea a continuación por qué no recomiendo esto ...
los badblocks
comando también funcionará, pero no puede aleatorizar los datos de esa manera, y nuevamente será muy lento.
Finalmente, sería negligente si no señalara la razón número uno por la que las personas quieren borrar completamente un disco es que están a punto de deshacerse de él. En ese caso, si aún no lo ha hecho, puede intentar primero recuperar el disco. Si lee un bloque y devuelve el error de E / S, la próxima vez que escriba en el mismo bloque, el disco intentará reasignar un bloque diferente de una lista de reserva. Una vez que la lista de reserva esté llena, obtendrá errores de E / S en las escrituras. Es entonces cuando realmente debe descartar la unidad.
Entonces puedes hacer algo simple como:
dd if=/dev/sdX of=/dev/null conv=noerror
Y, luego, para reescribir los bloques defectuosos, algo así como:
dd if=/dev/zero of=/dev/sdX bs=128k
Si este comando funciona, si eres valiente, puedes formatear tu disco y usarlo nuevamente.
Alternativamente, puede ejecutar el badblocks
comando en el disco dos veces. La segunda vez no debería informar de bloques defectuosos ...
badblocks -v -s -w -t random /dev/sdX
badblocks -v -s -w -t random /dev/sdX
Esto llevará más tiempo, pero es más confiable.
También vale la pena señalar que ninguna de las técnicas realmente hace un borrado seguro, excepto el hdparm
comando. ¿Recuerdas todos esos bloques malos? Esos todavía tienen algunos de sus datos originales casi intactos. Un experto en recuperación de datos podría acceder a estos para ver una pequeña cantidad de lo que estaba anteriormente en su disco duro.
En cuanto a ddrescue y por qué desaconsejo, tengo el siguiente antídoto:
El problema es que ddrescure será DEMASIADO bueno para ignorar los errores. Tenía un disco duro que constantemente con dd disminuía la velocidad de escritura en aproximadamente la marca de 102 GB y comencé a producir errores de escritura en la marca de 238 GB. Me impresionó bastante que ddrescue continuara revolviendo el disco a una velocidad constante, incluso sin informar errores. 17 horas después, cuando estaba en los 1300 GB cuando noté que la luz de la unidad dejó de parpadear. Una comprobación rápida reveló que todo el gabinete USB se había desconectado. Saqué el disco de la cuna. Me di cuenta de que ddrescue felizmente informó que todavía estaba copiando sin errores, incluso con el disco en mis manos. Conecté el disco a otra máquina y descubrí que ahora era un ladrillo.
No culpo a ddrescue por hacer que la unidad sea un ladrillo. La unidad fallaba y se convertiría en un ladrillo. Simplemente encuentro que ddrescue perturbador ni siquiera da un recuento de errores de cuántos errores de escritura está ignorando. En este uso, ddrescue te deja pensar que ha sido completamente exitoso, independientemente de todas las fallas de escritura. El hecho es que no debería haber podido continuar a toda velocidad en la sección con la desaceleración. La razón por la que la sección era lenta es que el disco había reubicado muchos bloques, lo que provocó muchas búsquedas al acceder a esa sección. Entonces ese es probablemente el punto cuando la producción de ddrescue se volvió ficticia.
dd conv=noerror
podría ser una extensión de GNU, no estoy seguro. En cualquier caso, debería hacer el truco. Sin embargo, vale la pena considerar la respuesta SATA para decirle a la unidad que se borre por sí misma para borrar unidades enteras.