Heute habe ich eine neue virtuelle Maschine mit Arch Linux Vagrant Box erstellt. Ich habe die virtuelle Arch Linux-Maschine mit vagrant up
gestartet Befehl, aber es startete nicht. Jedes Mal, wenn ich versuche, die VM zu starten, hängt sich der Vagrant auf, wenn ich freigegebene NFS-Ordner einbinde. Nach mehr als 5 Minuten Wartezeit endete der Befehl mit folgendem Fehler:
[...] ==> 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
Wie Sie sehen können, ist der vagrant up
Befehl schlägt beim Mounten von freigegebenen NFS-Ordnern fehl. Mein KVM-Host ist die neueste Fedora 34-Edition. Ich hatte dieses Problem nie mit virtuellen Ubuntu-Maschinen. Dieser Fehler trat nur auf, wenn ich die virtuelle Arch Linux-Maschine starte. Wenn Ihr Vagrant-Rechner beim „Mounten freigegebener NFS-Ordner“ hängen bleibt, können Sie die unten angegebene Problemumgehung verwenden.
Vagrant hängt sich auf, wenn NFS-Freigabeordner unter Linux bereitgestellt werden
Dies wird wahrscheinlich und wahrscheinlicher von Ihrer Firewall verursacht. In meinem Fall ist es tatsächlich das Firewall-Problem. Ich musste die folgenden Dienste durch die Firewall zulassen, um das Problem mit dem Mounten freigegebener NFS-Ordner in Vagrant zu beheben:
- nfs,
- mountd,
- rpc-bind.
Außerdem habe ich den Port 2049
geöffnet für beide tcp
und udp
.
1. Führen Sie nacheinander die folgenden Befehle aus, um die oben genannten Dienste und den Port 2049 zuzulassen.
$ 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. Laden Sie die Firewall-Regeln neu, um die Änderungen zu übernehmen:
$ sudo firewall-cmd --reload
3. Zeigen Sie die Liste der zugelassenen Dienste mit dem Befehl an:
$ firewall-cmd --list-all
Beispielausgabe:
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:
Dadurch wird NFS zwischen Ihrem Host und den virtuellen Vagrant-Maschinen aktiviert und die libvirt
gehostete Vagrant-VMs, um NFS-Mounts vom Hostsystem zu verwenden.
4. Nachdem ich den nfs-Dienst und den relevanten Port zugelassen hatte, versuchte ich, die Vagrant-VM zu starten. Dieses Mal bin ich auf ein anderes Problem gestoßen:
[...] mount.nfs: requested NFS version or transport protocol is not supported
5. Um diesen Fehler zu beheben, bearbeiten Sie /etc/nfs.conf
Datei im Hostsystem:
$ sudo vi /etc/nfs.conf
6. Entkommentieren Sie die folgenden zwei Zeilen:
[nfsd] udp=y
Speichern Sie die Datei und schließen Sie sie.
7. Starten Sie den nfs-Dienst neu:
$ sudo systemctl restart nfs-server.service
8. Starten Sie abschließend das Hostsystem neu:
$ sudo reboot
Das ist es. Jetzt sollten Sie den Vagrant-Rechner ohne Probleme starten können.
Wir haben eine vollständige Anleitung zur Verwendung von Vagrant veröffentlicht. Überprüfen Sie den folgenden Link, um zu erfahren, wie Sie Vagrant verwenden.
- Vagrant-Tutorial – Erste Schritte mit Vagrant unter Linux