فشل NFS بعد تعبئة صندوق Vagrant
-
13-12-2019 - |
سؤال
أواجه مشكلة غريبة مع (إعادة) تعبئة صندوق Vagrant وآمل أن يخبرني شخص ما في أي اتجاه يجب أن أنظر.هذه هي القصة
- لقد قمت بتثبيت Vagrant ونجحت في إنشاء بعض بيانات الدمى وكل شيء يعمل بشكل جيد، vagrant up...التزويد، ...
- ثم كنت بحاجة إلى التبديل إلى NFS والذي فشل لأنه لم يتم تثبيت nfs على نظام التشغيل Guest (Ubuntu 11.04-amd64)
- لقد قمت بتثبيت nfs-common على نظام التشغيل الضيف (
sudo apt-get install nfs-common
) vagrant halt
vagrant up
- ويعمل حامل NFS بشكل لا تشوبه شائبة، حتى بعد عدة أوامر توقف/أعلى، أنا سعيد!
ستكون الخطوة المنطقية التالية هي تعبئة الصندوق بحيث لا أحتاج إلى إعادة تثبيت nfs-common في كل مرة يتم فيها تدمير الجهاز الافتراضي.
- في نفس الدليل كما هو موضح أعلاه:
vagrant package
vagrant box add ubuntuvm2 package.box
rm package.box
- تغيير الخط
config.vm.box
في Vagrantfile إلى ubuntuvm2 vagrant destroy
vagrant up
- وفجأة يفشل تثبيت nfs، عند الدخول إلى VM، يمكنني التأكد من تثبيت nfs-common بالفعل ولكن تثبيت NFS يفشل: https://img.skitch.com/20120302-kwix296t44y31rxkd52pwm72f4.jpg
هل لدى أي شخص فكرة في أي اتجاه لبدء البحث عن حل؟
أنا أستخدم Virtualbox 4.1.8 وVagrant 1.0.0 على OS-X Lion
المحلول
لقد واجهت نفس المشكلة تمامًا، لكنني اكتشفت ذلك.على الأقل يعمل بالنسبة لي الآن.:)
ليرة تركية؛دكتور:
- تحقق من /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 instad من eth1
وثيقةطويلة:
- المتشرد هو 1.0.1
- نظام التشغيل X هو 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
عند تشغيل المتشرد، يعمل تركيب 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/intefaces لاستخدام eth2 NFS، يعمل التثبيت مرة أخرى.
نصائح أخرى
إليك خطأ مفتوح حول هذا الأمر والحل:
https://github.com/mitchellh/vagrant/issues/997
- يحرر
/etc/udev/rules.d/70-persistent-net.rules
وحذف الأسطر للواجهات بخلافeth0
vagrant package
vagrant box add mypack package.box
vagrant destroy
- في
Vagrantfile
تعيينconfig.vm.box
لmypack
vagrant up
لقد اختبرت هذا على نظام التشغيل MAC OS X 10.7.5 وCentOS 6.2 64 بت
تحديث: تم إغلاق الخطأ الآن و انتقل ولكن يبدو أن الناس ما زالوا يواجهون المشكلة.
بالإضافة إلى الإجابات الموجودة هنا:لا تنس جدران الحماية المحتملة.إذا قمت بتشغيل جدار الحماية على جهازك المضيف.الخطأ عام للغاية، على الرغم من أن رسالة الخطأ لا تشير إلى ذلك على ما يبدو.
إذا كنت تستخدم NoobProof و/أو IceFloor، فقم بتعطيل جدار الحماية أو قم بإجراء الاستثناءات المناسبة.
على مضيف Ubuntu 12/Ubuntu 12 Guest، نجح ما يلي في الخطاب
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 إلى استثناءات جدار الحماية