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

  • 本文关键字:文件系统 缓存 linux qemu
  • 更新时间 :
  • 英文 :


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

我想将文件

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

问题是,当我执行此挂载-写入-卸载操作时,来宾永远不会看到该文件。我猜这是内核文件系统缓存的结果,当我执行 ls 时,该文件不存在。我猜有关文件系统的元数据缓存在内存中,并且文件系统的更新永远不会出现。

我猜如果我禁用文件系统缓存,那么所有读取都将被强制到磁盘,导致文件系统被击中,并且我的文件出现。有什么提示吗?

我可以想到这个:

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

而这个:

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

最新更新