我正在运行很多KVM虚拟机,它们使用以下命令打开硬盘映像O_DIRECT
旗帜。
据我所知,根据手册页,在写入文件时,open()
using将尝试绕过 Linux 页面缓存,但这也适用于块设备吗? O_DIRECT
(例如,当硬盘映像是 LVM 卷或 ZFS zvol 时)
注意:这里的用例O_DIRECT
是,来宾已经在维护自己的页面缓存,因此在主机上复制它是没有意义的。
答案1
看来答案是肯定的:使用 O_DIRECT 打开块设备也会绕过页面缓存。我在2009年找到了答案关于 Linux 页面缓存的博客文章。
可以使用 Linux 中的 O_DIRECT 或 Windows 中的 NO_BUFFERING 绕过页面缓存,数据库软件经常这样做。