我意识到,如果我使用非常小的块大小,dd
复制速度会更慢,但如果我使用非常大的块大小,复制速度也会很慢。我发现 1M 是最佳的。
为什么是这样?
答案1
您的问题的答案取决于您使用的设备类型,以及文件系统的设置(如果您正在写入文件,而不是设备/分区本身)。
闪存
闪存(USB 驱动器和 SSD)具有硬件扇区,如果不更改整个扇区就无法修改这些扇区,因此更改一个位会导致读取整个扇区、更改该位并再次重写该扇区。如果您必须对扇区中的每个位都执行此操作,这可能比一次写入一个扇区花费更长的时间(实际上,这可能有点不同,因为设备有自己的缓冲区来收集数据,然后才实际写入扇区)。
硬盘驱动器
使用硬盘时,最佳的块大小取决于硬件和软件中使用的实际缓冲区大小。但就我的想法而言,gparted 使用的块大小在硬盘上并不像在闪存设备上那么重要。
我不是存储设备和文件系统驱动程序以及不同 unix 内核中的驱动程序如何工作的专家,所以如果我说错了,请纠正我。
答案2
可能与您正在复制/写入的磁盘上的块大小有关。块大小/缓冲区大小/预读设置都会产生影响,尤其是对顺序读取/写入。如果您使用较小的块大小,驱动器每次访问将只读取 x 量的数据,然后再将其传递给下一个进程。使 x 更大 x->X 允许在一次读取中提取更多数据。您看到的“最佳点”可能最适合您的硬件和操作系统。