2

我有一个运行在 KVM/QEMU 之上的 ARM 虚拟机,并有一个文件作为根文件系统挂载。虚拟机没有网络,所以 NFS 挂载根是不可能的。我正在测试一种特定的 IO 传输机制,所以我有点坚持我所拥有的。

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

问题是,当我做这个 mount-write-unmount 事情时,客人永远看不到文件。我猜这是内核文件系统缓存的结果,当我执行 ls 时,文件不存在。我猜关于文件系统的元数据被缓存在内存中,并且文件系统的更新永远不会出现。

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

4

1 回答 1

2

我能想到这个:

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

还有这个:

qemu -drive cache=none,file=file.img
于 2012-04-15T02:08:46.147 回答