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

时间:2012-04-12 16:07:50

标签: linux qemu

我有一个在KVM / QEMU上运行的ARM虚拟机,其中一个文件作为根文件系统挂载。 VM没有网络,因此NFS挂载根本是不可能的。我正在测试IO的特定传输机制,所以我对我所拥有的东西感到困惑。

我想将文件发送到guest虚拟机,因此我想将文件挂载到主机上,写入内容,然后卸载它以强制刷新。文件系统的内容是微不足道的,我有一个备份,所以我没有腐败问题。同样,性能也不是问题。

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

我猜我是否禁用了文件系统缓存,然后所有读取都将强制进入磁盘,导致文件系统被命中,我的文件出现。有小费吗?

1 个答案:

答案 0 :(得分:2)

我能想到这个:

sync
echo 3 > /proc/sys/vm/drop_caches

而且:

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