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


23

只要值乘以相同,两个dd具有bscount值的命令有什么区别?例如:

  1. dd if=/dev/random of=aa bs=1G count=2
  2. dd if=/dev/random of=aa bs=2G count=1

4
这两个命令都将花费一些时间。如果您需要随机数,请使用urandom。如果您只需要快速输入某些内容,请使用
尼尔斯

Answers:


26

就最终结果而言,他们将这样做。区别在于如何dd处理数据。实际上,在这方面,您的两个示例都非常极端:该bs参数dd表明在输出之前应将多少数据缓冲到内存中。

因此,从本质上讲,第一个命令将尝试在1GB的两个块中读取2GB,而后者将尝试一次读取整个2GB,然后将其输出到aa文件。


17

结果将是相同的,但在第一种情况下dd将写入两个1GB块,而在第二种情况下将写入两个1GB块。区别在于dd将复制的块保留在内存中。在第一种情况下,您将需要1GB的RAM,在第二种情况下,则需要2GB。

我认为没有必要使用这么大的块。您可以进行一些测试,但就我而言,我可以使用更小的块(<1MB)来获得更高的速度


9

第一个将占用1G内存,并用输入文件中的数据填充它并输出两次。

第二个将占用2G内存,并用输入文件中的数据填充并输出。


2

使用的块大小应与源设备和目标设备的最佳速度设置相匹配。

如果尝试复制LV设备,则可以最好地看出区别。使用非常小的BS大小将中断不必要的读取过程。很大的BS大小的使用将导致写入期间的长时间等待。

由于标准LV通常由4 MB块组成,因此对于物理磁盘访问来说也很合适,我将bs = 4M用于这些物理块。

尝试尝试16K或256M-您会注意到其中的区别-并在复制过程中注意磁盘指示器...


小或大块大小的代价在一定程度上被内核执行的缓存所抵消。有关迷你基准,请参见此处
吉尔(Gilles)“所以,别再邪恶了”,

@吉尔斯我不记得我测试中的数字,但它们比您的数字更具戏剧性。您在测试中使用了哪种物理硬盘设置?我的是在硬件RAID 5上,该RAID 5跨5个磁盘(SAS 15k),带128 KB。条纹大小。
尼尔斯

SATA磁盘,无RAID,否则为空闲计算机。我不记得确切的规格。
吉尔(Gilles)“所以,别再邪恶了”
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.