在我的 Windows 7 上,我使用:
- VirtualBox 5.0.20
- Vagrant 1.9.1
- vagrant-share(1.1.6,系统)
- vagrant-winnfsd (1.3.1)
我有一个带有一些 PHP 软件 (piwik) 的 ubuntu vagrant box,它在特定的 CLI 命令上执行一些涉及文件的处理。我测量了命令完成从 guest (ubuntu) 到主机 (win7) 的各种类型的共享所需的时间:
- 30 秒在一个简单的共享文件夹上。
- 在 nfs 共享文件夹上 5 秒(通过
config.vm.network "private_network",类型:"dhcp"
和config.vm.synced_folder "piwik","/web- pub/piwik", :nfs => true, :mount_options => ['actimeo=2']
). - 在
/tmp
下复制所有相关文件后,不共享0.5秒,不共享。
我确认不同任务的比例相似(例如 drush cc all
在 vanilla drupal 7 安装上)。
您知道如何让共享文件夹的速度快于 5 秒吗?我想避免基于 rsync 的解决方案。
最佳答案
如果您有数千个文件并且默认情况下 vagrant 挂载主目录,Vagrant 文件共享会很慢,因此请尝试禁用默认共享:
config.vm.synced_folder ".", "/vagrant", disabled: true
你可以试试enabling FS Cache .我没有看到启用与否有多大区别,但无论如何都启用了......在 guest 中安装 cachefilesd
并将 fsc
添加到挂载选项:
config.vm.synced_folder "src/", "/mnt/project", type: "nfs",
mount_options: ['rw', 'vers=3', 'tcp', 'fsc']
而且您可能会遇到 NFS 权限问题,您可以为此使用 bindfs 插件:
config.bindfs.bind_folder "/mnt/project", "/var/www/drupal",
owner: "www-data", group: "www-data"
这是我们用于 drupal8 开发的最终 Vagrantfile
:
["vagrant-bindfs", "vagrant-vbguest"].each do |plugin|
unless Vagrant.has_plugin?(plugin)
raise plugin + ' plugin is not installed. Hint: vagrant plugin install ' + plugin
end
end
Vagrant.configure("2") do |config|
config.vm.box = "geerlingguy/ubuntu1604"
# Shared folders
config.vm.synced_folder ".", "/vagrant", disabled: true
config.vm.synced_folder "src/", "/mnt/drupal", type: "nfs",
mount_options: ['rw', 'vers=3', 'tcp', 'fsc']
config.bindfs.bind_folder "/mnt/drupal", "/opt/drupal",
owner: "www-data", group: "www-data"
config.vm.network "private_network", ip: "192.168.33.20"
config.vm.provider "virtualbox" do |v|
v.memory = 2048
v.cpus = 2
end
end
关于ubuntu - 如何改进 vagrant 中的慢速共享文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42758577/