Linux 如何在根设备上禁用文件系统缓存?

Linux 如何在根设备上禁用文件系统缓存?,linux,qemu,Linux,Qemu,我有一个运行在KVM/QEMU之上的ARM虚拟机,其中一个文件作为根文件系统挂载。VM没有网络,因此NFS装载根目录是不可能的。我正在测试一个特定的IO传输机制,所以我有点拘泥于现有的传输机制 我想将文件发送到guest,所以我想将文件装载到主机上,向其写入内容,然后卸载它以强制刷新。文件系统的内容很简单,我有一个备份,所以我没有损坏的问题。同样,性能也不是问题 问题是,当我执行mount-write-unmount操作时,来宾从未看到该文件。我猜这是内核文件系统缓存的结果,当我执行ls时,文件

我有一个运行在KVM/QEMU之上的ARM虚拟机,其中一个文件作为根文件系统挂载。VM没有网络,因此NFS装载根目录是不可能的。我正在测试一个特定的IO传输机制,所以我有点拘泥于现有的传输机制

我想将文件发送到guest,所以我想将文件装载到主机上,向其写入内容,然后卸载它以强制刷新。文件系统的内容很简单,我有一个备份,所以我没有损坏的问题。同样,性能也不是问题

问题是,当我执行mount-write-unmount操作时,来宾从未看到该文件。我猜这是内核文件系统缓存的结果,当我执行ls时,文件不在那里。我猜关于文件系统的元数据缓存在内存中,而对文件系统的更新永远不会出现

我猜如果我禁用文件系统缓存,那么所有读取都将被强制到磁盘,导致文件系统被命中,我的文件就会出现。有什么建议吗

我能想到这一点:

sync
echo 3 > /proc/sys/vm/drop_caches
这是:

qemu -drive cache=none,file=file.img