Usar /dev/zero
para borrar un disco duro es muy lento, así que usaré un archivo preparado de 1 GB con ceros o aleatorios.
Pero, ¿cómo puedo hacer un bucle con este archivo dd
?
dd if=loopfile of /dev/sdx
Respuesta1
/dev/zero
No es nada lento, tal vez todo lo que necesitas es dd bs=1M
. Debería generar varios gigabytes por segundo, por lo que el HDD/SSD es el cuello de botella.
# dd bs=1M status=progress if=/dev/zero of=/dev/null
234309550080 bytes (234 GB, 218 GiB) copied, 11 s, 21.3 GB/s
O simplemente ve con shred
.
# shred -v -n 1 /dev/eraseme
Eso debería ir con datos (pseudo)aleatorios a la velocidad máxima del disco duro. Si debe ser cero, entonces -n 0 -z
no shred
será más rápido que los datos aleatorios.
Respuesta2
El problema aquí para usted es que el tamaño de bloque predeterminado dd
es 512 bytes, por lo que son dos llamadas al sistema y dos solicitudes de IO por KB. Tienes dos millones de ellos por GB; no es de extrañar que sea lento.
No lo uses
dd
. Usocat
(es mucho más rápido en muchas situaciones y rara vez, o nunca, más lento):cat /dev/zero >/dev/sdX
Si realmente debes usarlo
dd
, aumenta el tamaño del bloque a algo racional:dd if=/dev/zero bs=32M of=/dev/sdX
Si está intentando borrar el disco con datos pseudoaleatorios, considereDBANcon una sola pasada. (No se moleste con las pasadas múltiples; o una pasada es suficiente o necesita unamartillo.)