Vagrant:无法让 NFS 工作

Posted

技术标签:

【中文标题】Vagrant:无法让 NFS 工作【英文标题】:Vagrant: can't get NFS working 【发布时间】:2014-07-21 23:58:36 【问题描述】:

我正在尝试更改我的 VagrantFile,以便它使用 NFS 挂载而不是默认的 VirtualBox 共享文件夹。

我收到此错误消息:

vm:
* Shared folders that have NFS enabled do not support owner/group
attributes. Host path: .

这是我的 VagrantFile:

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| 
  config.vm.box = "ktbartholomew/lamp"
  config.vm.network "private_network", type: "dhcp"
  config.vm.synced_folder ".", "/vagrant", type: "nfs"
end

我看不到任何所有者或组正在设置。

请帮忙! 谢谢

【问题讨论】:

您是否尝试过使用“.”以外的其他内容源文件夹从主机挂载?看来这可能是你的问题。尝试用完整路径定义它。就像'/home/user/project' 或者你的路径是什么。你的语句的其余部分看起来就像我目前使用的一样。 我刚刚更改了它,不幸的是同样的问题,虽然现在错误消息是“*启用 NFS 的共享文件夹不支持所有者/组属性。主机路径:/Users/jamesplayer/Sites/” 【参考方案1】:

我发现直接映射 uid/gid 可以正常工作。 vagrant 方面有点奇怪,因为他们是任意用户/组,但除此之外它很好。

Vagrant.configure("2") do |config|
  # ...
  config.nfs.map_uid = Process.uid
  config.nfs.map_gid = Process.gid
  config.vm.synced_folder ".",  "/vagrant", id: "vagrant-root", :nfs => true
  config.vm.synced_folder "..", "/var/www", id: "application",  :nfs => true
end

【讨论】:

【参考方案2】:

Vagrant 仅在所有者或组为 true 时引发此错误。尝试通过为两个 synced_folder 配置的这两个选项传递 nil 来强制它。

, group: nil, owner: nil

代码如下: https://github.com/mitchellh/vagrant/blob/8655d212c327d363f8e80185705ff70bb2e97f6b/plugins/kernel_v2/config/vm.rb#L572

【讨论】:

谢谢!这就是我最终的 VagrantFile 最终的样子: VAGRANTFILE_API_VERSION = "2" Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.vm.box = "ktbartholomew/lamp" config.vm.network :private_network, ip: "10.11.12.13" config.vm.synced_folder "/Users/jamesplayer/Sites/", "/vagrant", 输入: "nfs ",组:无,所有者:无结束 基本不使用group、owner、mount_options作为属性 Vagrant 仅在所有者或组 为真(并且设置了 nfs)时引发此错误 感谢 Lotus,修正了措辞。

以上是关于Vagrant:无法让 NFS 工作的主要内容,如果未能解决你的问题,请参考以下文章

Fedora 22 上的 NFS Vagrant

让Vagrant在Windwos下支持使用NFS/SMB共享文件夹从而解决目录共享IO缓慢的问题

忽略使用 NFS 作为 Vagrant 同步系统的同步文件夹文件/目录

Vagrant:如何禁用 Windows 主机的 NFS 同步文件夹?

Vagrant 共享文件夹适用于工作目录,但仅此而已

Vagrant 挂在 Ubuntu 14.04 上的 NFS 挂载