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