当用随机数据填充驱动器时,为什么GNU的分解速度比dd快?


8

我注意到,在退役之前安全擦除硬盘驱动器时,这dd if=/dev/urandom of=/dev/sda需要花费近一整天的时间,而shred -vf -n 1 /dev/sda使用同一台计算机和同一驱动器只需要几个小时。

这怎么可能?我认为瓶颈是的输出受限/dev/urandom。切丝是否使用一些伪随机性发生器,该伪随机性发生器的随机性较低,并且仅比其单一目的(即,更有效)就足够了urandom


请注意,擦除驱动器(尤其是ssd驱动器)的最佳选择是SATA安全擦除命令。任何其他选择-禁止销毁-都会失败。它的速度也快得多,在SSD上可能只需要几秒钟。
Maarten Bodewes,2016年

Answers:


11

切细使用内部伪随机发生器

默认情况下,这些命令使用由少量熵初始化的内部伪随机数生成器,但可以将其与--random-source = file选项一起使用以使用外部源。如果文件未包含足够的字节,则会报告错误。

例如,设备文件/ dev / urandom可用作随机数据的源。通常,此设备将来自设备驱动程序和其他来源的环境噪声收集到一个熵池中,并使用该池生成随机位。如果池中没有数据,设备将使用加密安全的伪随机数生成器重用内部池以产生更多位。但是请注意,该设备不是为批量随机数据生成而设计的,并且 速度较慢

我并不认为随机数据是比任何更有效的单次通过在模糊之前的内容(或任何其它的字节值)。

为了安全停用驱动器,我使用了一块大磁铁和一块大锤子。


2

我想这可能是由于dd使用较小的块来写入数据所致。尝试dd if=... of=... bs=(1<<20)看看它是否表现更好。


我将在下一次尝试并发布结果。

+1默认dd块大小为512。它的执行方式远远低于计算机上的磁盘限制。
Piotr Findeisen 2014年

/ dev / urandom可能足够快-dd块大小在实际上几乎是问题所在。
Dan Pritts 2014年

2
一旦增加了块大小,似乎/dev/urandom就可能成为瓶颈-我正在测试USB 3.0上的某些SSD驱动器,并使用相同的dd命令获得326 MB / s的速度,if=/dev/zero但仅获得12.8 MB / s的速度if=/dev/urandom
austinmarton
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.