如何改善流浪汉中缓慢的共享文件夹

che*_*vim 9 filesystems ubuntu shared-directory vagrant vagrant-windows

在我的Windows 7上我使用:

  • VirtualBox 5.0.20
  • 流浪汉1.9.1
  • vagrant-share(1.1.6,system)
  • vagrant-winnfsd(1.3.1)

我有一个带有一些PHP软件(piwik)的ubuntu vagrant box,它在特定的CLI命令上执行一些涉及文件的处理.我已经测量了命令完成从guest(ubuntu)到主机(win7)的各种类型共享所需的时间:

  • 在一个简单的共享文件夹上30秒.
  • nfs共享文件夹上的5秒(通过config.vm.network "private_network", type: "dhcp"config.vm.synced_folder "piwik", "/web-pub/piwik", :nfs => true, :mount_options => ['actimeo=2']).
  • 复制了所有相关文件后,没有共享0.5秒/tmp,这是不共享的.

我确认在不同的任务上按比例相似的数字(例如drush cc all在香草drupal 7安装上).

你知道如何让共享文件夹的速度超过5秒吗?我想避免基于rsync的解决方案.

mad*_*oet 3

如果你有数千个文件并且 vagrant 默认挂载主目录,那么 Vagrant 文件共享会很慢,因此请尝试禁用默认共享:

\n\n
config.vm.synced_folder ".", "/vagrant", disabled: true\n
Run Code Online (Sandbox Code Playgroud)\n\n

您可以尝试启用 FS Cache。我没有看到启用与否有多大区别,但无论如何还是启用了...安装cachefilesd在 guest\xc2\xa0 中并添加fsc到安装选项:

\n\n
config.vm.synced_folder "src/", "/mnt/project", type: "nfs", \n                        mount_options: [\'rw\', \'vers=3\', \'tcp\', \'fsc\']\n
Run Code Online (Sandbox Code Playgroud)\n\n

你可能会遇到 NFS 的权限问题,你可以使用 bindfs 插件来解决这个问题:

\n\n
config.bindfs.bind_folder "/mnt/project", "/var/www/drupal", \n                          owner: "www-data", group: "www-data"\n
Run Code Online (Sandbox Code Playgroud)\n\n

这是Vagrantfile我们用于 drupal8 开发的最终版本:

\n\n
["vagrant-bindfs", "vagrant-vbguest"].each do |plugin|\n    unless Vagrant.has_plugin?(plugin)\n      raise plugin + \' plugin is not installed. Hint: vagrant plugin install \' + plugin\n    end\nend\n\nVagrant.configure("2") do |config|\n  config.vm.box = "geerlingguy/ubuntu1604"\n\n  # Shared folders\n  config.vm.synced_folder ".", "/vagrant", disabled: true \n  config.vm.synced_folder "src/", "/mnt/drupal", type: "nfs", \n                          mount_options: [\'rw\', \'vers=3\', \'tcp\', \'fsc\']\n  config.bindfs.bind_folder "/mnt/drupal", "/opt/drupal", \n                            owner: "www-data", group: "www-data"\n\n  config.vm.network "private_network", ip: "192.168.33.20"\n  config.vm.provider "virtualbox" do |v|\n    v.memory = 2048\n    v.cpus = 2\n  end\nend\n
Run Code Online (Sandbox Code Playgroud)\n