2012-04-12 41 views
2

我有一个运行在KVM/QEMU之上的ARM虚拟机,其中一个文件被挂载为根文件系统。虚拟机没有网络连接,因此安装根目录的NFS不存在问题。我正在测试一个IO的特定传输机制,所以我有点卡住了我所拥有的。如何禁用根设备上的文件系统缓存?

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

问题是,当我执行mount-write-unmount的事情时,guest虚拟机从未看到该文件。我猜这是由于内核文件系统缓存的结果,并且当我执行ls时,该文件不在那里。我猜测有关文件系统的元数据被缓存在内存中,并且文件系统的更新永远不会出现。

我猜如果我禁用文件系统缓存,那么所有的读取将被强制为磁盘,导致文件系统被击中,我的文件出现。有小费吗?

回答

2

我能想到的是:

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

这:

qemu -drive cache=none,file=file.img 
相关问题