我在 KVM Linux 主机上对 Win VM 使用 mount/umount 命令。我有一个不断循环的脚本:
sleep 1 sec
mount
read guest file
unmount
当我更改 Win7 文件(例如,使用记事本的文本文件)时,我只能在 10-30 秒后看到更改。
我也尝试过Windows 7 VM文件缓存刷新,但性能仍然没有任何改善。
有没有办法强制 Windows 7 机器将文件更改直接写入硬盘而不是缓存?
参考链接:
在 Linux 主机和 Windows 客户机之间共享文件
答案1
sync
您脚本中的命令很可能会有所帮助。它会在调用时降低 Linux 盒子的整体性能,因为它将所有文件缓存刷新到磁盘。它不会从缓存中删除数据,只会物理写入磁盘。
答案2
根据您在评论中给出的说明,您正在尝试同时在两个系统上安装 NTFS 文件系统。在这种情况下,有问题的文件系统是虚拟机的根文件系统,当虚拟机仍在运行时,您尝试从虚拟机外部挂载该文件系统。这是无法安全完成的。你将要损坏文件系统并丢失数据。
有像这样的文件系统OCFS2设计用于同时在多个系统上安装共享存储设备。它们依赖挂载节点之间的通信来始终协调文件系统的磁盘状态。
像 NTFS 这样的“普通”文件系统不支持这一点。文件系统一次只能安装在一个系统上。磁盘上的文件系统的状态在安装时不一定始终一致。操作正在进行中,缓冲区缓存在 RAM 中,等等......它们根本就不是为了协调多个安装节点之间同时进行的磁盘操作而设计的。