Сбой NFS после упаковки коробки Vagrant

Я столкнулся со странной проблемой с (пере) упаковкой коробки Vagrant и надеюсь, что, может быть, кто-нибудь подскажет мне, в каком направлении смотреть. Это история

  • Я установил Vagrant и успешно создал несколько манифестов марионеток, и все работает нормально, vagrant up... provisioning,...
  • Затем мне нужно было переключиться на NFS, что не удалось, потому что nfs не был установлен в моей гостевой ОС (Ubuntu 11.04-amd64).
  • Я установил nfs-common на гостевую ОС (sudo apt-get install nfs-common)
  • vagrant halt
  • vagrant up
  • И монтирование NFS работает без нареканий, даже после нескольких команд halt/up, я доволен!

Следующим логическим шагом будет упаковка коробки, чтобы мне не нужно было переустанавливать nfs-common каждый раз, когда виртуальная машина уничтожается.

  • В том же каталоге, что и выше: vagrant package
  • vagrant box add ubuntuvm2 package.box
  • rm package.box
  • измените строку config.vm.box в Vagrantfile на ubuntuvm2
  • vagrant destroy
  • vagrant up
  • и внезапно монтирование nfs дает сбой, когда я подключаюсь к виртуальной машине по ssh, я могу подтвердить, что nfs-common действительно установлен, но монтирование NFS просто не удается: .jpg">https://img.skitch.com/20120302-kwix296t44y31rxkd52pwm72f4.jpg

У кого-нибудь есть идея, в каком направлении начать искать решение?

Я использую Virtualbox 4.1.8 и Vagrant 1.0.0 на OS-X Lion.


person ChrisR    schedule 14.03.2012    source источник
comment
У меня точно такая же проблема. Пока нет решения. Работаем над этим, пока мы говорим.   -  person thomasmalt    schedule 15.03.2012
comment
Рад, что я не единственный, если я могу чем-то помочь, просто дайте мне крик @chrisramakers в твиттере :)   -  person ChrisR    schedule 15.03.2012


Ответы (4)


У меня была такая же проблема, но я понял это. По крайней мере, это работает для меня сейчас. :)

TL;DR:

  • Проверьте /etc/exports на наличие синтаксических ошибок и заново создайте /etc/exports с записью, которая, как вы уверены, работает.
  • Убедитесь, что сетевые интерфейсы на коробке правильно инициализированы (проверьте /etc/network/interfaces и запустите ifconfig -a).
  • По крайней мере, Debian и Ubuntu хранят информацию о постоянном сетевом устройстве в файле /etc/udev/rules.d/70-persistent-net.rules. Если вы видите, что eth1 инициализируется как eth2, это потому, что mac-адрес сетевой карты регенерируется при создании нового экземпляра коробки. rm /etc/udev/rules.d/70-persistent-net.rules и переупакуйте свою коробку.
  • Если вы не можете переупаковать свою коробку, обновите /etc/network/interfaces, чтобы использовать eth2 вместо eth1.

Полная форма:

  • Бродяга 1.0.1
  • OS X is 10.7.3
  • Коробка кастомная Debian Wheezy 64.

При перезагрузке или воссоздании ящика он умирал при монтировании NFS с типичным сообщением.

[default] Mounting NFS shared folders...
Mounting NFS shared folders failed. This is most often caused by the NFS
client software not being installed on the guest machine. Please verify
that the NFS client software is properly installed, and consult any resources
specific to the linux distro you're using for more information on how to
do this.

Проверка файла /etc/exports с помощью диспетчера NFS сообщает мне, что мой файл /etc/exports содержит синтаксические ошибки.

Я очищаю /etc/exports и тестирую клиент и сервер nfs с этой записью:

/Users/tm/git -alldirs localhost 33.33.33.10

При запуске vagrant up монтирование NFS снова работает.

При переупаковке коробки после apt-get dist-upgrade я заметил, что папки NFS больше не монтируются.

На этот раз ошибок в файле /etc/exports не было. Я обнаружил, что Vagrant не инициализировал локальный интерфейс хоста.

/etc/network/interfaces содержал это:

#VAGRANT-BEGIN
# The contents below are automatically generated by Vagrant. Do not modify.
auto eth1
iface eth1 inet static
    address 33.33.33.10
    netmask 255.255.255.0
#VAGRANT-END

ifconfig -a вернул это:

eth0      Link encap:Ethernet  HWaddr 08:00:27:3a:47:72  
      inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0
      inet6 addr: fe80::a00:27ff:fe3a:4772/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:971 errors:0 dropped:0 overruns:0 frame:0
      TX packets:614 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000 
      RX bytes:83951 (81.9 KiB)  TX bytes:74872 (73.1 KiB)

eth2      Link encap:Ethernet  HWaddr 08:00:27:89:f5:e3  
      BROADCAST MULTICAST  MTU:1500  Metric:1
      RX packets:0 errors:0 dropped:0 overruns:0 frame:0
      TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000 
      RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

Интерфейс был определен неправильно. После обновления раздела /etc/network/interfaces для использования eth2 монтирование NFS снова работает.

person thomasmalt    schedule 15.03.2012
comment
Синтаксис в /etc/exports показался мне приемлемым, но после осмотра коробки устройства Ethernet действительно перепутаны (vagrant использует eth1, тогда как существовали только eth0 и eth2). После исправления все снова заработало нормально! - person ChrisR; 19.03.2012
comment
Однако об этом следует сообщать как об ошибке в vagrant на github. Как-то раздражает :) - person thomasmalt; 19.03.2012
comment
Исправление отлично сработало для меня, за исключением того, что когда я хочу подготовить потом (бродячее предоставление), это доставляет мне проблемы. Также на Ubuntu 11.04 кстати. - person Dieter; 25.10.2012
comment
Для Centos файлы находятся в /etc/sysconfig/network-scripts/ - person Steve Tauber; 14.11.2012
comment
NFS Manager решил проблему, OSX, по-видимому, не любит экспортировать подкаталоги уже экспортированных каталогов. - person Amir T; 19.12.2012
comment
Супер полезный ответ, я боролся с этим несколько часов, прежде чем нашел этот ответ, и он решил проблему для меня. Спасибо! - person ; 20.09.2013

Вот открытая ошибка об этом и решение:

https://github.com/mitchellh/vagrant/issues/997

  1. отредактируйте /etc/udev/rules.d/70-persistent-net.rules и удалите строки для интерфейсов, отличных от eth0
  2. vagrant package
  3. vagrant box add mypack package.box
  4. vagrant destroy
  5. В Vagrantfile установите config.vm.box на mypack
  6. vagrant up

Я тестировал это на MAC OS X 10.7.5 и CentOS 6.2 64bit.

ОБНОВЛЕНИЕ: ошибка устранена и перемещена но похоже проблема осталась.

person Steve Tauber    schedule 14.11.2012

В дополнение к существующим ответам здесь: Не забывайте о возможных брандмауэрах. Если вы запускаете брандмауэр на своем хост-компьютере. Ошибка очень общая, хотя сообщение об ошибке, похоже, не указывает на это.

Если вы используете NoobProof и/или IceFloor, отключите брандмауэр или сделайте соответствующие исключения.

person Dynom    schedule 16.03.2013

на хосте Ubuntu 12 / гостевой Ubuntu 12 следующее работало для меня с дискурсом

nfs_setting = RUBY_PLATFORM =~ /darwin/ || RUBY_PLATFORM =~ /linux/
config.vm.synced_folder ".", "/vagrant", id: "vagrant-root", type: "nfs", nfs_udp: "true", nfs_version: "4", :nfs => nfs_setting

Примечание; Мне также пришлось добавить IP-адрес хоста, определенный бродягой, и гостевой IP-адрес, определенный бродягой, в исключения брандмауэра.

person niccolox    schedule 10.02.2014