这两个 dd 命令有什么区别?

这两个 dd 命令有什么区别?

只要乘法相同,两个dd具有不同bs和值的命令有什么区别?count例如:

  1. dd if=/dev/random of=aa bs=1G count=2
  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 进行实验 - 您会注意到差异 - 并在复制过程中观察磁盘指示器...

相关内容