IP-KVM عبر QEMU



استكشاف الأخطاء وإصلاحها عند تحميل نظام التشغيل على خوادم دون KVM ليست مهمة سهلة. نقوم بإنشاء KVM-over-IP باستخدام صورة استرداد وجهاز ظاهري.

في حالة وجود مشاكل في نظام التشغيل على الخادم البعيد ، يقوم المسؤول بتنزيل صورة الاسترداد وتنفيذ العمل اللازم. تعمل هذه الطريقة بشكل جيد عندما يكون سبب الفشل معروفًا ، وتكون صورة الاسترداد ونظام التشغيل المثبت على الخادم من نفس العائلة. إذا لم يعرف سبب الفشل بعد ، فأنت بحاجة إلى مراقبة تقدم عملية تحميل نظام التشغيل.

KVM عن بعد


يمكنك الوصول إلى وحدة تحكم الخادم باستخدام أدوات مدمجة مثل IPMI أو Intel® vPro ™ ، أو باستخدام أجهزة خارجية تسمى IP-KVMs. هناك مواقف لا تتوفر فيها جميع التقنيات المدرجة. ومع ذلك ، هذه ليست النهاية. إذا كان يمكن إعادة تشغيل الخادم عن بُعد في صورة استرداد تستند إلى نظام التشغيل Linux ، فيمكن تنظيم KVM-over-IP بسرعة.

صورة الاسترداد هي نظام تشغيل كامل يوجد في ذاكرة الوصول العشوائي. وبالتالي ، يمكننا تشغيل أي برنامج ، بما في ذلك الأجهزة الافتراضية (VMs). وهذا يعني أنه يمكنك بدء تشغيل VM الذي سيعمل فيه نظام تشغيل الخادم. يمكن ترتيب الوصول إلى وحدة VM ، على سبيل المثال ، من خلال VNC.

لبدء تشغيل نظام تشغيل الخادم داخل VM ، يجب عليك تحديد أقراص الخادم كأقراص VM. في عائلة أنظمة التشغيل Linux ، يتم تمثيل الأقراص المادية كأجهزة كتلة من النموذج / dev / sdX ، والتي يمكن معالجتها مثل الملفات العادية.

تسمح لك بعض برامج Hypervisor ، مثل QEMU و VirtualBox ، بتخزين بيانات VM في نموذج أولي ، أي تخزين البيانات فقط بدون بيانات تعريف برنامج Hypervisor. وبالتالي ، يمكن بدء تشغيل VM باستخدام الأقراص الفعلية للخادم.

تتطلب هذه الطريقة موارد لتشغيل صورة الاسترداد وجهاز VM بداخلها. ومع ذلك ، مع أربعة غيغابايت أو أكثر من ذاكرة الوصول العشوائي ، لن يكون هذا مشكلة.

إعداد البيئة


كجهاز افتراضي ، يمكنك استخدام برنامج QEMU خفيف الوزن وبسيط ، والذي غالبًا ما لا يكون جزءًا من صورة الاسترداد ، لذلك يجب تثبيته بشكل منفصل. تعتمد صورة الاسترداد التي نقدمها للعملاء على Arch Linux ، والذي يستخدم مدير حزم pacman .

تحتاج أولاً إلى التأكد من أن صورة الاسترداد تستخدم أحدث البرامج. يمكنك التحقق من جميع مكونات نظام التشغيل وتحديثها باستخدام الأمر التالي:

pacman -Suy

بعد التحديث ، يجب عليك تثبيت QEMU. سيبدو الأمر التثبيت عبر pacman كما يلي:

pacman -S qemu

تحقق من تثبيت qemu بشكل صحيح:

root@sel-rescue ~ # qemu-system-x86_64 --version
QEMU emulator version 4.0.0
Copyright (c) 2003-2019 Fabrice Bellard and the QEMU Project developers


إذا كان الأمر كذلك ، فإن صورة الاسترداد جاهزة للعمل.

بدء تشغيل الجهاز الظاهري


أولاً ، تحتاج إلى تحديد مقدار الموارد المخصصة لـ VM ، ومعرفة مسارات الأقراص الفعلية. في حالتنا ، سنخصص اثنين من النوى و 2 غيغابايت من ذاكرة الوصول العشوائي إلى الجهاز الظاهري ، وتقع الأقراص على المسارين / dev / sda و / dev / sdb . تشغيل VM:

qemu-system-x86_64 \
-m 2048M \
-net nic -net user \
-enable-kvm \
-cpu host,nx \
-M pc \
-smp 2 \
-vga std \
-drive file=/dev/sda,format=raw,index=0,media=disk \
-drive file=/dev/sdb,format=raw,index=1,media=disk \
-vnc :0,password \
-monitor stdio


أكثر قليلاً حول ما تعنيه كل معلمة:

  • -m 2048M - تخصيص 2 غيغابايت من ذاكرة الوصول العشوائي لكل VM ؛
  • -net nic -net user - إضافة اتصال شبكة بسيط من خلال برنامج Hypervisor باستخدام NAT (ترجمة عنوان الشبكة) ؛
  • -enable-kvm - تمكين المحاكاة الافتراضية الكاملة لـ KVM (Kernel Virtual Machine) ؛
  • -cpu host - أخبر المعالج الظاهري بالحصول على جميع وظائف معالج الخادم ؛
  • -M pc - نوع أجهزة الكمبيوتر ؛
  • -smp 2 - يجب أن يكون المعالج الظاهري ثنائي النواة ؛
  • -vga std - حدد بطاقة فيديو قياسية لا تدعم دقة الشاشة الكبيرة ؛
  • -drive file = / dev / sda ، format = raw ، index = 0 ، media = disk
    • file = / dev / sdX - المسار إلى جهاز الكتلة الذي يمثل قرص الخادم ؛
    • format = raw - وضع علامة على أن جميع البيانات في الملف المحدد في النموذج "raw" ، كما هو الحال على القرص ؛
    • الفهرس = 0 - رقم القرص ، يجب زيادته لكل قرص التالي بواحد ؛
    • media = disk - يجب أن يتعرف الجهاز الظاهري على هذا التخزين كقرص ؛
  • -vnc: 0 ، password - قم بتشغيل خادم VNC الافتراضي في 0.0.0.0:5900 ، استخدم كلمة المرور كتخويل ؛
  • - stdio - المسؤول - سيتواصل المسؤول مع qemu من خلال تدفقات الإدخال / الإخراج القياسية.

إذا كان كل شيء على ما يرام ، فسوف تبدأ شاشة QEMU:

QEMU 4.0.0 monitor - type 'help' for more information
(qemu)


لقد أشرنا إلى أن التفويض يتم بكلمة مرور ، لكننا لم نحدد كلمة المرور نفسها. يمكنك القيام بذلك عن طريق إرسال أمر تغيير كلمة مرور vnc إلى جهاز QEMU. ملاحظة مهمة: لا يمكن أن تكون كلمة المرور أكثر من ثمانية أحرف.

(qemu) change vnc password
Password: ******


بعد ذلك ، يمكننا التواصل مع أي عميل VNC ، على سبيل المثال ، Remmina ، عن طريق عنوان IP لخادمنا بكلمة المرور التي حددتها.





الآن ، لا نرى الأخطاء المحتملة فقط في مرحلة التحميل ، ولكن يمكننا مكافحتها.

في نهاية العمل ، يجب عليك إكمال الجهاز الظاهري. يمكن القيام بذلك إما داخل نظام التشغيل عن طريق إرسال إشارة إيقاف ، أو يمكنك إعطاء الأمر system_powerdown إلى شاشة QEMU. سوف يكون هذا مكافئًا بضغطة واحدة على زر إيقاف التشغيل: سيتم إيقاف تشغيل نظام التشغيل داخل الجهاز الظاهري بسلاسة.

تثبيت نظام التشغيل


يتمتع الجهاز الظاهري بالوصول الكامل إلى أقراص الخادم ، وبالتالي يمكن استخدامه لتثبيت نظام التشغيل يدويًا. القيد الوحيد هو مقدار ذاكرة الوصول العشوائي: لا يمكن دائمًا وضع صورة ISO في ذاكرة الوصول العشوائي. نختار أربعة غيغابايت من ذاكرة الوصول العشوائي لتخزين الصورة في / كزاز الرضع :

mount -t tmpfs -o size=4G tmpfs /mnt

نقوم أيضًا بتحميل صورة التثبيت لنظام التشغيل FreeBSD 12.0:

wget -P /mnt ftp://ftp.freebsd.org/pub/FreeBSD/releases/amd64/amd64/ISO-IMAGES/12.0/FreeBSD-12.0-RELEASE-amd64-bootonly.iso

يمكنك الآن بدء تشغيل VM:

qemu-system-x86_64 \
-m 2048M \
-net nic -net user \
-enable-kvm \
-cpu host,nx \
-M pc \
-smp 2 \
-vga std \
-drive file=/dev/sda,format=raw,index=0,media=disk \
-drive file=/dev/sdb,format=raw,index=1,media=disk \
-vnc :0,password \
-monitor stdio \
-cdrom /mnt/FreeBSD-12.0-RELEASE-amd64-bootonly.iso \
-boot d


تقوم علامة -boot d بتعيين التمهيد من محرك الأقراص المضغوطة. نحن متصلون من قبل عميل VNC ونرى محمل FreeBSD.



نظرًا لاستخدام DHCP للوصول إلى الإنترنت ، فمن المحتمل أنه بعد التكوين ، سيكون من الضروري التمهيد في النظام المثبت حديثًا وتصحيح إعدادات الشبكة. في بعض الحالات ، قد يكون من الضروري تثبيت برامج تشغيل محول الشبكة ، لأن بطاقة الشبكة المثبتة في الخادم ومحاكاتها في VM مختلفة.

استنتاج


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

Source: https://habr.com/ru/post/ar464565/


All Articles