dd-Loop-Eingabedatei zum Ausgabegerät?

dd-Loop-Eingabedatei zum Ausgabegerät?

Das /dev/zeroLöschen einer Festplatte ist sehr langsam, daher verwende ich eine vorbereitete 1-GB-Datei mit zufälligen Zahlen oder Nullen.

Aber wie kann ich diese Datei mit loopen dd?

dd if=loopfile of /dev/sdx 

Antwort1

/dev/zeroist überhaupt nicht langsam, vielleicht brauchen Sie nur dd bs=1M. Sollte mehrere Gigabyte pro Sekunde schaffen, also ist die HDD/SSD der Engpass.

# dd bs=1M status=progress if=/dev/zero of=/dev/null
234309550080 bytes (234 GB, 218 GiB) copied, 11 s, 21.3 GB/s

Oder gehen Sie einfach mit shred.

# shred -v -n 1 /dev/eraseme

Das sollte mit (pseudo)zufälligen Daten bei voller Festplattengeschwindigkeit funktionieren. Wenn es Null sein muss, dann ist es -n 0 -zaber mit (pseudo)zufälligen shredDaten nicht schneller als mit zufälligen Daten.

Antwort2

Das Problem für Sie besteht darin, dass die Standardblockgröße dd512 Byte beträgt, also zwei Systemaufrufe und zwei IO-Anfragen pro KB. Davon haben Sie zwei Millionen pro GB; kein Wunder, dass es langsam ist.

  • Verwenden Sie nicht dd. Verwenden Sie cat(in vielen Situationen ist es viel schneller und selten, wenn überhaupt, langsamer):

    cat /dev/zero >/dev/sdX
    
  • Wenn Sie unbedingt verwenden müssen dd, erhöhen Sie die Blockgröße auf einen sinnvollen Wert:

    dd if=/dev/zero bs=32M of=/dev/sdX
    
  • Wenn Sie versuchen, die Festplatte mit pseudozufälligen Daten zu löschen, berücksichtigen SieDBANmit einem einzigen Durchgang. (Keine Sorge mit Multi-Pass; entweder reicht ein Durchgang oder Sie brauchen einenHammer.)

verwandte Informationen