挂载 NFS 共享文件夹时 Vagrant 挂起 – 如何修复?

今天我用 Arch Linux vagrant box 创建了一个新的虚拟机。 我启动了 Arch Linux 虚拟机 vagrant up 命令,但它没有启动。 每次我尝试启动 VM 时,挂载 NFS 共享文件夹时都会挂起 vagrant。 等待超过5分钟后,该命令以以下错误结束:

 [...]  ==> default: Mounting NFS shared folders…  ==> default: Pruning invalid NFS s. Administrator privileges will be required…  [sudo] password for sk:   ==> default: Removing domain…  The following SSH command responded with a non-zero exit status.  Vagrant assumes that this means the command failed!  mount -o vers=3,udp 192.168.122.1:/home/sk/vagrant/archlinux /vagrant  Stdout from the command:  Stderr from the command:  mount.nfs: Connection refused
挂载 NFS 共享文件夹时 Vagrant up 挂起

如您所见, vagrant up 命令挂载 NFS 共享文件夹失败。 我的 KVM 主机是最新的 Fedora 34版。 我在 Ubuntu 虚拟机上从来没有遇到过这个问题。 只有在我启动 Arch Linux 虚拟机时才会出现此错误。 如果您的 Vagrant 机器在“安装 NFS 共享文件夹”时卡住,您可以使用下面给出的解决方法。

在 Linux 中挂载 NFS 共享文件夹时 Vagrant up 挂起

这很可能是由您的防火墙引起的。 就我而言,这确实是防火墙问题。 我必须允许以下服务通过防火墙来修复 Vagrant 中挂载 NFS 共享文件夹的问题:

  • nfs,
  • 安装,
  • rpc 绑定。

另外,我打开了端口 2049 对彼此而言 tcpudp.

1. 依次运行以下命令,允许上述服务和2049端口。

$ sudo firewall-cmd --permanent --zone=libvirt --add-service=nfs3
$ sudo firewall-cmd --permanent --zone=libvirt --add-service=nfs
$ sudo firewall-cmd --permanent --zone=libvirt --add-service=mountd
$ sudo firewall-cmd --permanent --zone=libvirt --add-service=rpc-bind
$ sudo firewall-cmd --permanent --zone=libvirt --add-port=2049/tcp
$ sudo firewall-cmd --permanent --zone=libvirt --add-port=2049/udp

2. 重新加载防火墙规则以使更改生效:

$ sudo firewall-cmd --reload

3. 使用命令查看允许的服务列表:

$ firewall-cmd --list-all

示例输出:

FedoraWorkstation (active)   target: default   icmp-block-inversion: no   interfaces: wlp9s0   sources:    services: dhcpv6-client mdns mountd nfs rpc-bind samba-client ssh   ports: 1025-65535/udp 1025-65535/tcp   protocols:    forward: no   masquerade: no   forward-ports:    source-ports:    icmp-blocks:    rich rules: 

这将启用主机和 Vagrant 虚拟机之间的 NFS,并允许 libvirt 托管的 Vagrant VM 使用来自主机系统的 nfs 挂载。

4.在允许nfs服务和相关端口后,我尝试启动Vagrant VM。 这次又遇到了一个问题:

[...] mount.nfs: requested NFS version or transport protocol is not supported

5. 要修复此错误,请编辑 /etc/nfs.conf 主机系统中的文件:

$ sudo vi /etc/nfs.conf

6. 取消注释以下两行:

[nfsd] udp=y

Save 文件和 close 它。

7、重启nfs服务:

$ sudo systemctl restart nfs-server.service

8. 最后,重启主机系统:

$ sudo reboot

就是这样。 现在你应该可以毫无问题地启动 Vagrant 机器了。

我们已经发布了关于 Vagrant 使用的完整指南。 查看以下链接以了解如何使用 Vagrant。

  • Vagrant 教程——Linux 中的 Vagrant 入门

Fedora 34LinuxLinux故障排除网络文件系统NFSNFS共享文件夹故障排除Vagrant