virtualbox - Vagrant/Virtualbox,文件相关操作较多时共享文件夹不同步

标签 virtualbox vagrant

这与 vagrant 或 virtualbox guest 因共享文件夹访问速度慢而运行缓慢无关,我们知道这可以通过启用 nfs 或多或少地解决。

它是关于 当 vm 中有许多文件操作时,挂载的共享文件夹会不同步(启用 nfs 不会阻止它的发生)。

比如我们在安装包的时候,比如vm里面用php composer或者node.js npm,有一定的概率是正常的composer updatenpm 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) 不匹配。所以文件同步失败了。

简单的解决方法:

  1. 在 vm 中运行此命令 sudo apt-get -y -q purge virtualbox-guest-dkms virtualbox-guest-utils virtualbox-guest-x11 以删除旧的 guest 添加

  2. 安装 vagrant vbguest 插件,以便在 up 期间自动处理 future 的更新:https://github.com/dotless-de/vagrant-vbguest

关于virtualbox - Vagrant/Virtualbox,文件相关操作较多时共享文件夹不同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18933547/

相关文章:

Vagrant 与 Hyper-V Provider 一起运行 Laravel Homestead

php+nginx+vagrant - php 无法写入

vagrant - 为什么默认的 Vagrant 共享文件夹是空的?

windows - vagrant - 不断同步文件夹设置

在 Vagrant 机器中,如果没有 sudo,Git 命令将无法工作

http - 主机中的浏览器看不到 vagrant box,portforward 不起作用

linux - 使用 dmsetup Kernel 3.9.6 创建 dm-cache

ruby-on-rails - rails : How can I access my database on my host machine (windows) from a virtualbox guest (ubuntu)?

javascript - Jekyll 在 JavaScript 中添加空字符

ubuntu - 从主机推送文件后,可以在 lxc 容器中找到文件