无缓存:

无缓存:

根据手动的对于dd,有两个选项可以导致 I/O 绕过文件系统缓存:directnocache。例如,当使用这些标志来复制文件或将原始数据复制到块设备或从块设备复制原始数据时,这两个标志之间有什么区别?

假设我想使用dd(没有真正的原因,只是一个实验)将一个文件从 A 复制到 B,以一种dd......

  1. ...从输入文件中读取一个完整块,而不将其放入读取缓存中,然后...
  2. ...读取完整块后立即将该数据写入目标,而不将其放入写入缓存中。

对于这个示例场景,这些标志有什么不同的作用?dd此任务的正确调用是什么?

答案1

免责声明:我不能明确地说,但这是我最好的猜测。

无缓存:

直接来自设备的未对齐输入。

直接输入/输出:

写入对齐数据而不使用操作系统的内部缓冲区或者L* 缓存。


总之,如果您想完全避免 OS/L* 缓存,只需选择directI/O 选项即可。如果您只是想避免读取缓存,nocache那么应该就足够了。

相关内容