今天我用 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
如您所见, vagrant up
命令挂载 NFS 共享文件夹失败。 我的 KVM 主机是最新的 Fedora 34版。 我在 Ubuntu 虚拟机上从来没有遇到过这个问题。 只有在我启动 Arch Linux 虚拟机时才会出现此错误。 如果您的 Vagrant 机器在“安装 NFS 共享文件夹”时卡住,您可以使用下面给出的解决方法。
在 Linux 中挂载 NFS 共享文件夹时 Vagrant up 挂起
这很可能是由您的防火墙引起的。 就我而言,这确实是防火墙问题。 我必须允许以下服务通过防火墙来修复 Vagrant 中挂载 NFS 共享文件夹的问题:
- nfs,
- 安装,
- rpc 绑定。
另外,我打开了端口 2049
对彼此而言 tcp
和 udp
.
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