Vagrant 在 Ubuntu 14.04 上挂载 NFS

Vagrant hangs on NFS mounting on Ubuntu 14.04

直到今天,我的 vagrant 设置运行良好且流畅。但是发生了一些事情,我不知道是什么。

当我执行 vagrant up 时突然挂起挂载 NFS 共享文件夹。

我的猜测是由于我的主机上的某些更新导致某些东西损坏了。以下是 vagrant up --debug 命令的输出以及最近 2 天的最新更新列表。

这是 vagrant 的输出:

==> default: Mounting NFS shared folders...
DEBUG ssh: Checking whether SSH is ready...
DEBUG ssh: Re-using SSH connection.
 INFO ssh: SSH is ready!
DEBUG ssh: Re-using SSH connection.
 INFO ssh: Execute:  (sudo=false)
DEBUG ssh: Exit status: 0
DEBUG guest: Searching for cap: mount_nfs_folder
DEBUG guest: Checking in: ubuntu
DEBUG guest: Checking in: debian
DEBUG guest: Checking in: linux
DEBUG guest: Found cap: mount_nfs_folder in linux
 INFO guest: Execute capability: mount_nfs_folder [#<Vagrant::Machine: default (VagrantPlugins::ProviderVirtualBox::Provider)>, "192.168.56.1", {"/home/vagrant"=>{:type=>:nfs, :mount_options=>["nolock,vers=3,udp,noatime,fsc,actimeo=1"], :guestpath=>"/home/vagrant", :hostpath=>"/home/stefan/NetBeansProjects/cargoplanning", :disabled=>false, :map_uid=>1000, :map_gid=>1000, :nfs_udp=>true, :nfs_version=>3, :uuid=>"2352560104", :linux__nfs_options=>["rw", "no_subtree_check", "all_squash", "anonuid=1000", "anongid=1000", "fsid=2352560104"]}}] (ubuntu)
DEBUG ssh: Checking whether SSH is ready...
DEBUG ssh: Re-using SSH connection.
 INFO ssh: SSH is ready!
DEBUG ssh: Re-using SSH connection.
 INFO ssh: Execute:  (sudo=false)
DEBUG ssh: Exit status: 0
DEBUG guest: Searching for cap: shell_expand_guest_path
DEBUG guest: Checking in: ubuntu
DEBUG guest: Checking in: debian
DEBUG guest: Checking in: linux
DEBUG guest: Found cap: shell_expand_guest_path in linux
 INFO guest: Execute capability: shell_expand_guest_path [#<Vagrant::Machine: default (VagrantPlugins::ProviderVirtualBox::Provider)>, "/home/vagrant"] (ubuntu)
DEBUG ssh: Re-using SSH connection.
 INFO ssh: Execute: echo; printf /home/vagrant (sudo=false)
DEBUG ssh: Exit status: 0
DEBUG ssh: stdout: 
/home/vagrant
DEBUG ssh: Re-using SSH connection.
 INFO ssh: Execute: mkdir -p /home/vagrant (sudo=true)
DEBUG ssh: stderr: stdin: is not a tty

DEBUG ssh: Exit status: 0
DEBUG ssh: Re-using SSH connection.
 INFO ssh: Execute: mount -o 'nolock,vers=3,udp,noatime,fsc,actimeo=1' 192.168.56.1:'/home/stefan/NetBeansProjects/cargoplanning' /home/vagrant (sudo=true)
DEBUG ssh: stderr: stdin: is not a tty

DEBUG ssh: Sending SSH keep-alive...
DEBUG ssh: Sending SSH keep-alive...
DEBUG ssh: Sending SSH keep-alive...
DEBUG ssh: Sending SSH keep-alive...
DEBUG ssh: Sending SSH keep-alive...
DEBUG ssh: Sending SSH keep-alive...

问题出在 udp 协议上。 我从 VagrantFile 配置行中删除了 udp:

:mount_options => ['nolock,vers=3,udp,noatime,fsc,actimeo=1']

此外,不推荐udp,即使它更快。 https://github.com/mitchellh/vagrant/issues/2304

尝试重新启动 nfs 服务(在 Arch 中为我使用 sudo systemctl restart nfs-server.service)或从 /etc/exports 中删除 Vagrant 条目(它们被#VAGRANT-BEGIN 包围: ... #VAGRANT-END: comments) 然后重启服务。

对于 18 月 18 日仍在环顾四周的其他人,我发现了我的案子的罪魁祸首。

在我的例子中,即使安装了 nfs-kernel-server 和 nfs-common,nfs-server 包似乎也丢失了,我安装了 nfs-server 并且 vagrant up 工作正常。 Vagrant 2.0.3 和 Virtualbox build 5.2.18_Ubuntu r123745