我知道做一个dd if = / dev / hda = / dev / hdb做一个深层的硬盘拷贝。 我听说人们已经能够通过用“bs”选项增加一次读取和写入的字节数(512)来加速该过程。
我的问题是:
什么决定了从硬盘拷贝的理想字节大小?
和
为什么这决定了理想的字节大小?
正如Chris S所说,最佳的块大小是依赖于硬件的。 根据我的经验,它总是大于默认的512字节。 如果您使用原始设备,那么覆盖的文件系统几何将不起作用。 我已经使用下面的脚本来帮助“优化”dd的块大小。
#!/bin/bash # #create a file to work with # echo "creating a file to work with" dd if=/dev/zero of=/var/tmp/infile count=1175000 for bs in 1k 2k 4k 8k 16k 32k 64k 128k 256k 512k 1M 2M 4M 8M do echo "Testing block size = $bs" dd if=/var/tmp/infile of=/var/tmp/outfile bs=$bs echo "" done rm /var/tmp/infile /var/tmp/outfile
不幸的是,完美的尺寸将取决于您的系统总线,硬盘驱动器控制器,特定的驱动器本身,以及每个驱动程序。 要find完美大小的唯一方法是继续尝试不同的尺寸。 公平的警告,一些设备只支持一个块大小,虽然这是罕见的,通常驱动程序弥补了差异无论如何。
我发现2 ^ 15或2 ^ 16的块大小最适合连接到Adaptec SAS RAID控制器,4x PCIe,64位FreeBSD 8.0-STABLE的WDC(8MB高速caching)SATA驱动器。 但对于我便宜的老拇指驱动器,2 ^ 10的尺寸似乎是最快的。
“完美尺寸”几乎总是两个幂。
我可以保证在浪费任何时间之前测量所用设备的testing结果。 我愚蠢地没有打扰,经过测量,然后调整我的块大小削减了590Gb传输一半的DD时间。 使用不同的球童/驾驶组合,相同的BS值只能将时间缩短20%。