只要乘法相同,两个dd
具有不同bs
和值的命令有什么区别?count
例如:
dd if=/dev/random of=aa bs=1G count=2
dd if=/dev/random of=aa bs=2G count=1
答案1
就最终结果而言,他们也会这样做。区别在于如何dd
处理数据。实际上,您的两个示例在这方面都非常极端:bs
参数告诉dd
在输出之前应将多少数据缓冲到内存中。
所以,本质上,第一个命令是尝试将 2GB 分成两个 1GB 的块来读取,后者会尝试一次性读取整个2GB,然后输出到文件中aa
。
答案2
结果是相同的,但在第一种情况下dd
将写入两个 1GB 块,而在第二个情况下将写入 2GB 块。不同之处在于dd
将复制的块保留在内存中。第一种情况需要 1GB RAM,第二种情况需要 2GB。
我认为没有必要使用这么大的块。您可以进行一些测试,但就我而言,我使用更小的块(< 1MB)实现了更高的速度
答案3
第一个将占用 1G 内存,用输入文件中的数据填充它并输出两次。
第二个将占用2G内存,用输入文件中的数据填充它并输出。
答案4
使用的块大小应与源设备和目标设备的最佳速度设置相匹配。
如果您尝试复制 LV 设备,您可以最好地看到差异。使用非常小的 BS 大小会不必要地中断读取过程。使用非常大的 BS-size 将导致写入期间长时间等待。
由于标准 LV 通常由 4 MB 块组成,这对于物理磁盘访问来说也是一个不错的大小,因此我使用 bs=4M。
尝试使用 16K 或 256M 进行实验 - 您会注意到差异 - 并在复制过程中观察磁盘指示器...