ubuntu - 如何改进 vagrant 中的慢速共享文件夹

标签 ubuntu vagrant filesystems shared-directory vagrant-windows

在我的 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/

相关文章:

php - CLI php 在命令提示符下运行 php

linux - crontab 无法正常工作

ubuntu - Openmeetings 3.0.4 ubuntu 14.04 上传文件 PDF 或文档时出错

c++ - 如何将目录符号链接(symbolic link)复制为指向目标的链接?

linux - 由于删除文件系统包而无法启动 Linux

linux - 安装/升级到 python 3.4.3 时出错

php - 如何为 Composer 安装提供用户名和密码?

vagrant - 安装 MiniKF 后无法连接到 http ://10. 10.10.10 上的 MiniKF 登录页面

linux - 德鲁帕尔 8 : How to use private file system for node

java - JSch:即使主机 key 指纹存在于 known_hosts 文件中,也会发生 UnknownHostKey 异常