这与 vagrant 或 virtualbox guest 因共享文件夹访问速度慢而运行缓慢无关,我们知道这可以通过启用 nfs 或多或少地解决。
它是关于 当 vm 中有许多文件操作时,挂载的共享文件夹会不同步(启用 nfs 不会阻止它的发生)。
比如我们在安装包的时候,比如vm里面用php composer
或者node.js npm
,有一定的概率是正常的composer update
或 npm install
将失败,一旦失败,只有 vagrant reload
将帮助恢复同步文件夹并允许相同的命令顺利通过。
这种随机故障只发生在共享文件夹(nfs 与否)上执行时,因此 apt-get upgrade
不会触发与在 vm 文件夹中运行相同的问题。
由于我们从主机服务器运行 composer 或 npm 时不会出现相同的同步问题,我想知道是什么原因造成的,我们该如何调试它?
我们的 vagrant 设置和配置:
if Vagrant::Util::Platform.windows?
config.vm.synced_folder "www", "/var/www", :extra => "dmode=777,fmode=777", :owner => "vagrant", :group => "vagrant"
else
config.vm.synced_folder "www", "/var/www", :extra => "dmode=777,fmode=777", :nfs => true
end
guest :Ubuntu 12.04 LTS x64
主机:Windows 8、Mac OSX 10.8、Ubuntu 13(是的,它们都随机遇到相同的问题)
最佳答案
认为我们或多或少地发现了问题的根源:
我们的 Ubuntu 12 LTS 机器附带的 Guest Addition 版本 (4.1.x) 与主机上安装的当前 Virtualbox 版本 (4.2.x) 不匹配。所以文件同步失败了。
简单的解决方法:
在 vm 中运行此命令
sudo apt-get -y -q purge virtualbox-guest-dkms virtualbox-guest-utils virtualbox-guest-x11
以删除旧的 guest 添加安装 vagrant vbguest 插件,以便在
up
期间自动处理 future 的更新:https://github.com/dotless-de/vagrant-vbguest
关于virtualbox - Vagrant/Virtualbox,文件相关操作较多时共享文件夹不同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18933547/