dd 循環輸入檔到輸出裝置?

dd 循環輸入檔到輸出裝置?

使用 來/dev/zero擦除 HDD 非常緩慢,因此我將使用準備好的 1GB 隨機檔案或零檔案。

但我怎麼才能循環這個文件呢dd

dd if=loopfile of /dev/sdx 

答案1

/dev/zero一點也不慢,也許你需要的只是dd bs=1M。每秒應處理數 GB,因此 HDD/SSD 是瓶頸。

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

或者只是跟著去shred

# shred -v -n 1 /dev/eraseme

這應該與全硬碟速度的(偽)隨機資料一起使用。如果它必須為零,那麼-n 0 -zshred它不會比隨機資料快。

答案2

這裡的問題是,預設區塊大小為dd512 位元組,因此每 KB 需要兩次系統呼叫和兩次 IO 請求。每 GB 有 200 萬個;難怪它很慢。

  • 不要使用dd.使用cat(在許多情況下它要快得多,並且很少(如果有的話)更慢):

    cat /dev/zero >/dev/sdX
    
  • 如果您確實必須使用dd,請將區塊大小增加到合理的值:

    dd if=/dev/zero bs=32M of=/dev/sdX
    
  • 如果您嘗試使用偽隨機資料擦除磁碟,請考慮資料庫管理網絡一次通過。 (不要費心多遍;要嘛一次就夠了,要嘛你需要一個錘子.)

相關內容