dd 的 direct 和 fsync 选项有什么区别?

dd 的 direct 和 fsync 选项有什么区别?

我想将图像复制到 USB 拇指驱动器。因为我想获得“真实”速度,并且不想在复制图像后等待设备同步很长时间,所以我想知道要使用哪些选项。

答案1

阅读源代码表明您也应该询问该nocache选项。该direct选项应该能满足您的要求,但也取决于dd您正在使用的版本。在 Ubuntu 11.04 系统上进行大量复制时,我发现dsync使用同步 I/O 数据选项时速度更慢(=更接近现实?),这可能会失去现代磁盘控制器给我们带来的聚合优势。要“确切”地知道发生了什么,您必须深入研究您正在运行的特定内核的源代码,但即便如此,您也只能依靠驱动器上的接口板,它会自行缓冲。

答案2

fsync 选项将在复制结束时刷新数据。dsync 选项将在每个块之后刷新数据。direct 选项的结果与 dsync 类似,只是不会用数据污染文件系统缓存。这有利于缓存系统的其余部分,并节省一些 CPU 开销。

dsync 或 direct 都会降低吞吐量,但这可以通过使用较大的块大小(例如 1MB 或更大)来抵消。

相关内容