问题

最近把mac的操作系统升级到了最新版本发现了一个问题,通过共享文件夹的方式 修改的文件,无法立即同步到虚拟机中,大概需要30秒才能同步到共享文件夹。

操作环境如下

  • 虚拟机:Virtualbox

  • 虚拟机操作系统:Ubuntu16.04

  • 虚拟机管理工具:Vagrant

  • 物理机:Mac  High Sierra  10.13.4

现象截图

正常截图


修改文件之后的截图




可以发现,当修改之后 通过终端查看文件发现 直接提示 error了并且文件的权限也不对了都变成?了 (如上图)

苦恼

每次修改一个文件都要等一会才能看到效果,非常急人,不是我们互联网人的追求效率的做法。那我们就要想办法解决。我知道肯定是升级系统造成的,但是不知道如何解决,就Googole了很久,终于找到了解决方法

解决方法

设置vagrant 目录同步的 :mount_options => ['actimeo=2'] 。修改完成如下

config.vm.synced_folder "/Users/vincent/code/", "/home/www", :nfs => true ,:mount_options => ['actimeo=2']

为什么会有这样的问题

这里面牵扯到一些偏僻的知识,我也不是特别明白。但是大致原因我知道了,因为Mac 升级到 High Sierra 之后 使用了APFS(苹果文件系统)。这个会导致同步问题。


那么为什么 加上 actimeo=2 就可以解决这个问题。具体这个牵扯到了linux 挂载的一些知识,个人了解的也不是太多,大致的意思是 加快了挂载目录之前的同步时间。个人估计对系统有些性能消耗。等以后有精力了在深入研究下 linux  mount 命令参数  actimeo 的含义

参考文档