اذهب إلى المحتوى

مدخل إلى الأنظمة الوهمية على خواديم أوبنتو


عبد اللطيف ايمش

يُعتمَد على الأنظمة الوهمية في مختلف البيئات والحالات؛ فلو كنت مطوِّرًا فتوفر لك الأنظمة الوهمية بيئة مُحتوَية حيث تستطيع أن تجري أي نوع من أنواع التطوير دون القلق من تخريب بيئة العمل الرئيسية عندك. وإذا كنت مديرًا للأنظمة، فتستطيع استخدام الأنظمة الوهمية لتعزل خدماتك عزلًا سهلًا وتنقلهم بناءً على الحاجة.

ubuntu-server-virtualization.png.8c624d1

تقنية الأنظمة الوهمية الافتراضية المدعومة في أوبنتو هي KVM، تتطلب KVM ملحقات لدعم الأنظمة الوهمية في عتاد Intel و AMD؛ وتقنية Xen مدعومة أيضًا في أوبنتو؛ حيث يمكن أن تستفيد Xen من تلك الملحقات عند توفرها، لكن يمكن تشغيلها على عتاد دون إضافات الأنظمة الوهمية؛ خيار شائع أخر هو Qemu للعتاد بدون ملحقات الأنظمة الوهمية (virtualization extensions).

libvirt

تُستخدَم المكتبة libvirt للتعامل مع مختلف تقنيات الأنظمة الوهمية؛ وقبل البدء مع libvirt، من الأفضل التحقق أنّ عتادك يدعم الملحقات الضرورية لعمل KVM، وذلك بإدخال الأمر الآتي في الطرفية:

kvm-ok

ستظهر رسالة تعلِمك إن كان معالجك يدعم أو لا يدعم الملحقات العتادية للأنظمة الوهمية.

ملاحظة: يكون من الضروري في أغلب الحواسيب التي تدعم معالجاتها الأنظمة الوهمية أن يفعَّل خيارٌ في BIOS لتمكينها.

التواصل الشبكي الوهمي

هنالك عدِّة طرق للسماح لنظام وهمي بالوصول إلى الشبكة الخارجية؛ خيار ضبط التواصل الشبكي الوهمي الافتراضي هو «usermode»، الذي يستخدم بروتوكول SLIRP ويمرِّر التراسل الشبكي عبر NAT عبر بطاقة المضيف إلى الشبكة الخارجية.

لتمكين وصول المضيفين الخارجيين إلى الخدمات مباشرةً على الأنظمة الوهمية، فيجب استخدام ضبط «bridge»؛ هذا يسمح للبطاقات الشبكية الوهمية بالاتصال إلى الشبكة الخارجية عبر البطاقة العتادية، مما يجعلها تبدو كأنها حواسيب عادية لبقية الشبكة.

التثبيت

أدخِل ما يلي في الطرفية لتثبيت الحزم اللازمة:

sudo apt-get install kvm libvirt-bin

يجب إضافة المستخدم الذي سيدير الآلات الوهمية إلى مجموعة libvirtd بعد تثبيت libvirt-bin؛ وبهذا تعطي المستخدم وصولًا إلى خيارات الشبكة المتقدمة؛ وذلك بإدخال الأمر الآتي:

sudo adduser $USER libvirtd

ملاحظة: إذا كان المستخدم الذي أضفته هو المستخدم الحالي، فيجب عليك تسجيل الخروج ثم الدخول مرةً أخرى لكي تأخذ عضوية المجموعة الجديدة مفعولها.

أنت الآن جاهز لتثبيت نظام تشغيل «ضيف» (Guest)؛ طريقة تثبيت نظام التشغيل على الآلات الوهمية هي نفس طريقة تثبيته مباشرةً على العتاد؛ أي أنك إما أن تحتاج إلى أتمتة التثبيت، أو إلى لوحة مفاتيح وشاشة موصولين إلى الآلة الفيزيائية.

في حالة الآلات الوهمية، تكون الواجهة الرسومية (GUI) مماثلة لاستخدام لوحة مفاتيح وفأرة فيزيائية؛ فبدلًا من تثبيت واجهة رسومية، يمكن استخدام التطبيق virt-viewer للاتصال إلى الآلة الوهمية باستخدام VNC، راجع القسم «عارض الآلات الوهمية» لمزيدٍ من التفاصيل.

هنالك عدِّة طرق لأتمتة تثبيت أوبنتو، إذ يمكن ذلك باستخدام preseed أو kickstart على سبيل المثال. راجع دليل تثبيت أوبنتو للتفاصيل.

طريقة أخرى لتثبيت أوبنتو على آلة افتراضية هي استخدام ubuntu-vm-builder، يسمح ubuntu-vm-builder بإعداد متقدم للأقسام، وتنفيذ سكربتات بعد التثبيت ...إلخ. للتفاصيل، راجع القسم «الصور السحابية وأداة uvtools».

يمكن ضبط Libvirt مع Xen، راجع صفحة مجتمع أوبنتو المُشار إليها في المصادر.

virt-install

virt-install هو جزء من حزمة virtinst، أدخِل الأمر الآتي لتثبيتها:

sudo apt-get install virtinst

هنالك عدِّة خيارات متوفرة عند استخدام virt-install:

sudo virt-install -n web_devel -r 256 \
--disk path=/var/lib/libvirt/images/web_devel.img,bus=virtio,size=4 -c \
ubuntu-14.04-server-i386.iso --network network=default,model=virtio \
--graphics vnc,listen=0.0.0.0 --noautoconsole -v
  • الخيار ‎-n web_devel: اسم الآلة الوهمية، سيكون web_devel في هذا المثال.
  • الخيار ‎-r 256: تحديد مقدار الذاكرة التي ستستخدمها الآلة الوهمية مقدرًا بالميغابايت.
  • الخيار ‎--disk path=/var/lib/libvirt/images/web_devel.img,size=4: الإشارة إلى مسار القرص الوهمي الذي يمكن أن يكون ملفًا أو قسمًا أو حجمًا وهميًا؛ في هذا المثال هنالك ملف باسم web_devel.img في مجلد ‎/var/lib/libvirt/images/‎ بحجم 4 غيغابايت، وسيستخدم virtio كناقل للقرص (disk bus).
  • الخيار ‎:-c ubuntu-14.04-server-i386.iso الملف الذي سيُستخدَم كقرص CD-ROM وهمي، يمكن أن يكون الملف إما ملف ISO أو مسار إلى جهاز قرص CD-ROM في المضيف.
  • الخيار ‎--network: يوفر معلومات حول البطاقة الشبكية للآلة الوهمية؛ يُستخدَم هنا default، وضُبِط موديل البطاقة إلى virtio.
  • الخيار--graphics vnc,listen=0.0.0.0: تصدير طرفية الضيف باستخدام VNC على جميع البطاقات الشبكية للمضيف؛ إذ عمومًا لا يكون للخادوم واجهة رسومية، لذلك فيمكن لحاسوب آخر على الشبكة المحلية ذي واجهةٍ رسومية أن يتصل عبر VNC لإكمال التثبيت.
  • الخيار--noautoconsole: يؤدي إلى عدم الاتصال تلقائيًا إلى طرفية الآلة الوهمية.
  • الخيار-v: إنشاء ضيف وهمي كامل.

بعد تشغيل virt-install يمكنك الاتصال إلى طرفية الآلة الوهمية إما محليًا باستخدام GUI أو باستخدام الأداة virt-viewer.

virt-clone

يمكن استخدام virt-clone لنسخ آلة وهمية إلى آلة أخرى؛ على سبيل المثال:

sudo virt-clone -o web_devel -n database_devel -f /path/to/database_devel.img \
--connect=qemu:///system
  • ‎-o: الآلة الوهمية الأصلية.
  • -n: اسم الآلة الوهمية الجديدة.
  • ‎-f: المسار إلى الملف، أو القسم، أو الحجم المنطقي الذي سيُستخدَم من الآلة الوهمية الجديدة.
  • ‎--connect: تحديد «المشرف» (hypervisor) الذي سيُتصَّل به.

يمكن أيضًا استخدام الخيار ‎-d أو ‎--debug لاستكشاف الأخطاء مع virt-clone.

ملاحظة: استبدل web_devel و database_devel بأسماء ملائمة للآلات الوهمية.

إدارة الآلة الوهمية

virsh

هنالك عدِّة أدوات متوفرة لإدارة الآلات الوهمية و libvirt؛ يمكن أن تُستخدَم الأداة virsh من سطر الأوامر؛ هذه بعض الأمثلة:

  • لعرض قائمة بالآلات الوهمية التي تعمل:

virsh -c qemu:///system list
  • لبدء تشغيل آلة وهمية:

virsh -c qemu:///system start web_devel
  • وبشكلٍ مشابه، لتشغيل آلة وهمية عند الإقلاع:

virsh -c qemu:///system autostart web_devel
  • أعد إقلاع آلة وهمية باستخدام الأمر:

virsh -c qemu:///system reboot web_devel
  • يمكن حفظ «حالة» (state) الآلة الوهمية إلى ملف لتُستعاد لاحقًا؛ ما يلي سوف يحفظ حالة الآلة الوهمية إلى ملف مسمى وفقًا لتاريخ اليوم:

virsh -c qemu:///system save web_devel web_devel-022708.state

ستتوقف الآلة الوهمية عن العمل بعد حفظ حالتها.

  • يمكن استعادة الآلة الوهمية باستخدام:

virsh -c qemu:///system restore web_devel-022708.state
  • نفِّذ الأمر لإيقاف تشغيل آلة وهمية:

virsh -c qemu:///system shutdown web_devel
  • يمكن وصل جهاز CD-ROM إلى آلة وهمية بالأمر:

virsh -c qemu:///system attach-disk web_devel /dev/cdrom /media/cdrom

ملاحظة: استبدل في الأمثلة السابقة web_devel مع اسم الآلة الوهمية الملائم، و web_devel-022708.state باسم ملف أكثر وصفًا.

مدير الآلات الوهمية

تحتوي حزمة virt-manager على أداة رسومية لإدارة الآلات الوهمية المحلية والبعيدة؛ أدخِل الأمر الآتي لتثبيتها:

sudo apt-get install virt-manager

لما كانت الأداة virt-manager تتطلب واجهة رسومية (GUI) فمن المستحسن أن تُثبَّت على محطة عمل أو جهاز للاختبارات بدلًا من خادوم إنتاجي؛ أدخِل الأمر الآتي للاتصال بخدمة libvirt محلية:

virt-manager -c qemu:///system

تستطيع الاتصال بخدمة libvirt في مضيف آخر بإدخال ما يلي في الطرفية:

virt-manager -c qemu+ssh://virtnode1.mydomain.com/system

ملاحظة: يفترض المثال السابق أن إمكانية الاتصال عبر SSH بين نظام الإدارة و virtnode1.mydomain.com قد ضُبِطَت مسبقًا، وتستخدم مفاتيح SSH للاستيثاق؛ هنالك حاجة لمفاتيح SSH لأن المكتبة libvirt تُرسِل محث كلمة المرور إلى عملية أخرى. للتفاصيل عن ضبط SSH، راجع درس خادوم OpenSSH.

عارض الآلات الوهمية

يسمح التطبيق virt-viewer لك بالاتصال إلى طرفية الآلة الوهمية لكن virt-viewer يتطلب واجهة رسومية (GUI) للتعامل مع الآلة الوهمية، أدخِل الأمر الآتي من الطرفية لتثبيت virt-viewer:

sudo apt-get install virt-viewer

بعد تثبيت وتشغيل آلة وهمية، يمكنك الاتصال إلى طرفيتها بالأمر:

virt-viewer -c qemu:///system web_devel

وكما في virt-manager، يمكن اتصال virt-viewer إلى مضيف بعيد باستخدام SSH مع استيثاق باستخدام مفتاح:

virt-viewer -c qemu+ssh://virtnode1.mydomain.com/system web_devel

تأكد من استبدال web_devel باسم الآلة الوهمية الملائم.

إذا ضبطت استخدام بطاقة شبكية جسرية (bridged network interface)، فيمكنك ضبط وصول SSH إلى الآلة الوهمية؛ راجع درس خادوم OpenSSH لمزيدٍ من المعلومات.

مصادر

  • راجع صفحة KVM الرئيسية للمزيد من التفاصيل.
  • للمزيد من المعلومات حول libvirt، انظر إلى صفحة libvirt الرئيسية.
  • موقع «Virtual Machine Manager» فيه المزيد من المعلومات حول تطوير virt-manager.
  • ادخل إلى قناة ‎#ubuntu-virt على خادوم freenode لمناقشة تقنيات الأنظمة الوهمية في أوبنتو.
  • مصدر آخر جيد هو صفحة ويكي أوبنتو «KVM».
  • للمزيد من المعلومات حول Xen، بما فيها استخدام Xen مع libvirt؛ رجاءً راجع صفحة ويكي أوبنتو «Xen».

ترجمة -وبتصرف- للمقال Ubuntu Server Guide: libvirt.


تفاعل الأعضاء

أفضل التعليقات

لا توجد أية تعليقات بعد



انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أضف تعليق

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • أضف...