dd bucle de entrada ¿Archivo al dispositivo de salida?

dd bucle de entrada ¿Archivo al dispositivo de salida?

Usar /dev/zeropara 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/zeroNo 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 -zno shredserá más rápido que los datos aleatorios.

Respuesta2

El problema aquí para usted es que el tamaño de bloque predeterminado ddes 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. Uso cat(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.)

información relacionada