Vagrant Up зависает при монтировании общих папок NFS — как исправить?
Сегодня я создал новую виртуальную машину с бродячей коробкой Arch Linux. Я запустил виртуальную машину Arch Linux с помощью команды vagrant up
, но она не запустилась. Каждый раз, когда я пытаюсь запустить виртуальную машину, vagrant up зависает при монтировании общих папок NFS. После ожидания более 5 минут команда завершилась следующей ошибкой:
[...]
==> 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
Vagrant up зависает при монтировании общих папок NFS
Как видите, команда vagrant up
не работает при подключении общих папок NFS. Мой KVM-хост — последняя версия Fedora 34. У меня никогда не было этой проблемы с виртуальными машинами Ubuntu. Эта ошибка возникла только при запуске виртуальной машины Arch Linux. Если ваша машина Vagrant зависла во время «Монтирования общих папок NFS», вы можете использовать обходной путь, приведенный ниже.
Vagrant up зависает при монтировании общих папок NFS в Linux
Эта проблема, скорее всего, вызвана вашим брандмауэром. В моем случае это действительно проблема с брандмауэром. Мне пришлось разрешить следующие службы через брандмауэр, чтобы исправить проблему с подключением общих папок NFS в Vagrant:
- нфс,
- установлен,
- rpc-bind.
Кроме того, я открыл порт 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:
Это включает NFS между вашим хостом и виртуальными машинами Vagrant и позволяет виртуальным машинам Vagrant, размещенным в libvirt
, использовать монтирование 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
Сохраните файл и закройте его.
7. Перезапустите службу nfs:
sudo systemctl restart nfs-server.service
8. Наконец, перезагрузите хост-систему:
sudo reboot
Вот и все. Теперь вы сможете без проблем запустить машину Vagrant.
Мы опубликовали полное руководство по использованию Vagrant. Проверьте следующую ссылку, чтобы узнать, как использовать Vagrant.
- Руководство по Vagrant. Начало работы с Vagrant в Linux