Today I created a new Virtual machine with Arch Linux vagrant box. I started the Arch Linux virtual machine with vagrant up
command, but it didn't start. Every time I try to start the VM, the vagrant up hangs when mounting NFS shared folders. After waiting more than 5 minutes, the command ended with the following error:
[...]
==> default: Mounting NFS shared folders…
==> default: Pruning invalid NFS exports. 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
As you can see, the vagrant up
command fails on mounting NFS shared folders. My KVM host is latest Fedora 34 edition. I never had this issue with Ubuntu virtual machines. This error occurred only when I start Arch Linux virtual machine. If your Vagrant machine stuck while "Mounting NFS shared folders", you can use the workaround given below.
Vagrant up hangs when mounting NFS shared folders in Linux
This issue is probably and more likely caused by your firewall. In my case, it is indeed the firewall issue. I had to allow the following services through the firewall to fix mounting NFS shared folders issue in Vagrant:
- nfs,
- mountd,
- rpc-bind.
Also, I opened the port 2049
for both tcp
and udp
.
1. Run the following commands one by one to allow the aforementioned services and the port 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. Reload the firewall rules to take effect the changes:
$ sudo firewall-cmd --reload
3. View the list of allowed services using command:
$ firewall-cmd --list-all
Sample output:
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:
This enables NFS between your host and the Vagrant virtual machines and allows the libvirt
hosted Vagrant VMs to use nfs mounts from the host system.
4. After allowing the nfs service and relevant port, I tried to start the Vagrant VM. This time I ran into another issue:
[...] mount.nfs: requested NFS version or transport protocol is not supported
5. To fix this error, edit /etc/nfs.conf
file in the host system:
$ sudo vi /etc/nfs.conf
6. Uncomment the following two lines:
[nfsd] udp=y
Save the file and close it.
7. Restart the nfs service:
$ sudo systemctl restart nfs-server.service
8. Finally, reboot the host system:
$ sudo reboot
That's it. Now you should be able to start the Vagrant machine without any issues.
We have posted a complete guide about Vagrant usage. Check following link to learn how to use Vagrant.