NFS выходит из строя после упаковки бродячей коробки

StackOverflow https://stackoverflow.com//questions/9697976

  •  13-12-2019
  •  | 
  •  

Вопрос

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

  • Я установил Vagrant и успешно создал несколько манифестов puppet, и все это работает нормально, vagrant up...подготовка, ...
  • Затем мне нужно было переключиться на 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 просто происходит сбой: https://img.skitch.com/20120302-kwix296t44y31rxkd52pwm72f4.jpg

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

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

Это было полезно?

Решение

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

TL;DR:

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

Длинная форма:

  • Бродяга - это 1.0.1
  • OS X - это 10.7.3
  • Box - это пользовательский 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 снова работает.

При переупаковке box после 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/intefaces для использования eth2 NFS-монтирования снова работает.

Другие советы

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

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

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

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

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

в Ubuntu 12 host/Ubuntu 12 guest у меня с discourse сработало следующее

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-адрес хоста, определенный vagrant, и гостевой IP-адрес, определенный Vagrant, в исключения брандмауэра

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top