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
    
  • 如果您尝试使用伪随机数据擦除磁盘,请考虑数据库管理网络一次通过。 (不要费心多遍;要么一次就足够了,要么你需要一个锤子.)

相关内容