Oggi ho creato una nuova macchina virtuale con Arch Linux vagrant box. Ho avviato la macchina virtuale Arch Linux con vagrant up
comando, ma non è stato avviato. Ogni volta che provo ad avviare la VM, il vagabondo si blocca durante il montaggio di cartelle condivise NFS. Dopo aver atteso più di 5 minuti, il comando è terminato con il seguente errore:
[...] ==> 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
Come puoi vedere, il vagrant up
comando non riesce durante il montaggio delle cartelle condivise NFS. Il mio host KVM è l'ultima edizione di Fedora 34. Non ho mai avuto questo problema con le macchine virtuali Ubuntu. Questo errore si è verificato solo quando avvio la macchina virtuale Arch Linux. Se la tua macchina Vagrant si è bloccata durante il "Montaggio delle cartelle condivise NFS", puoi utilizzare la soluzione alternativa indicata di seguito.
Vagrant-up si blocca durante il montaggio di cartelle condivise NFS in Linux
Questo è probabilmente e più probabilmente causato dal tuo firewall. Nel mio caso, è davvero il problema del firewall. Ho dovuto consentire ai seguenti servizi tramite il firewall di risolvere il problema di montaggio delle cartelle condivise NFS in Vagrant:
- nfs,
- montato,
- rpc-bind.
Inoltre, ho aperto la porta 2049
per entrambi tcp
e udp
.
1. Eseguire i seguenti comandi uno per uno per consentire i suddetti servizi e la porta 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. Ricarica le regole del firewall per rendere effettive le modifiche:
$ sudo firewall-cmd --reload
3. Visualizza l'elenco dei servizi consentiti utilizzando il comando:
$ firewall-cmd --list-all
Risultato di esempio:
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:
Ciò abilita NFS tra il tuo host e le macchine virtuali Vagrant e consente il libvirt
VM Vagrant ospitate per utilizzare i montaggi nfs dal sistema host.
4. Dopo aver consentito il servizio nfs e la relativa porta, ho provato ad avviare Vagrant VM. Questa volta mi sono imbattuto in un altro problema:
[...] mount.nfs: requested NFS version or transport protocol is not supported
5. Per correggere questo errore, modificare /etc/nfs.conf
file nel sistema host:
$ sudo vi /etc/nfs.conf
6. Decommenta le due righe seguenti:
[nfsd] udp=y
Salva il file e chiudilo.
7. Riavvia il servizio nfs:
$ sudo systemctl restart nfs-server.service
8. Infine, riavvia il sistema host:
$ sudo reboot
Questo è tutto. Ora dovresti essere in grado di avviare la macchina Vagrant senza problemi.
Abbiamo pubblicato una guida completa sull'utilizzo di Vagrant. Controlla il seguente link per sapere come usare Vagrant.
- Tutorial di Vagrant – Introduzione a Vagrant in Linux