- 1 مقدمة
- 2 مقارنة بين KVM والتقنيات الافتراضية الأخرى
- 3 بناء بيئة KVM على Ubuntu (التثبيت والإعداد المبدئي)
- 4 إنشاء الأجهزة الافتراضية والعمليات الأساسية
- 5 إعدادات الشبكة والتوسعة
- 6 إدارة التخزين والتعامل مع الأقراص
- 7 تثبيت وتشغيل أنظمة التشغيل الضيف (Guest OS)
- 8 أمثلة عملية ونصائح الأتمتة
- 9 استكشاف الأخطاء وحلول المشكلات الشائعة
- 10 تعزيز الأمان وتحسين الأداء
- 11 الخلاصة وموارد التعلم المستقبلية
- 12 دليل الأوامر المختصرة وأمثلة الإعدادات الشائعة (Cheat Sheet)
- 13 الأسئلة الشائعة (FAQ)
- 13.1 س1: ما الفرق بين KVM وVirtualBox أو VMware؟
- 13.2 س2: كيف يمكنني عمل نسخ احتياطي واستعادة الأجهزة الافتراضية؟
- 13.3 س3: كيف يمكنني استخدام أجهزة USB داخل الجهاز الافتراضي؟
- 13.4 س4: كيف أجعل الجهاز الافتراضي يبدأ تلقائيًا عند تشغيل المضيف؟
- 13.5 س5: ماذا أفعل إذا كان أداء الجهاز الافتراضي ضعيفًا؟
- 13.6 س6: الشبكة لا تعمل بشكل صحيح، ما الحل؟
- 13.7 س7: هل يمكن إنشاء عنقود (cluster) أو إعداد HA باستخدام KVM؟
مقدمة
تعد Ubuntu واحدة من توزيعات Linux الأكثر استخدامًا في العالم. تحظى بشعبية واسعة من المستخدمين الأفراد إلى بيئات المؤسسات، وتستخدم على نطاق واسع لبناء الخوادم وبيئات التطوير. عند الرغبة في تحقيق الافتراضية المتقدمة على Ubuntu، فإن “KVM (آلة افتراضية تعتمد على النواة)” هو الخيار الأقوى.
KVM هي تقنية افتراضية نوع Hypervisor مدمجة افتراضيًا في نواة Linux، وتستفيد من تقنيات دعم الافتراضية في العتاد (Intel VT أو AMD-V) لتحقيق أداء واستقرار عاليين. KVM مفتوحة المصدر، مما يجعل من الممكن بناء بنية افتراضية قوية بتكاليف منخفضة.
عند الحديث عن تقنيات الافتراضية، قد يظن البعض أنها معقدة، لكن عند استخدام Ubuntu مع KVM يمكن حتى للمبتدئين إنشاء وإدارة الأجهزة الافتراضية بسهولة نسبية. وبالطبع، يُوصى بها للمستخدمين المتوسطين الذين يريدون استخدام موارد الخوادم الفعلية بكفاءة أو للمهندسين الذين يرغبون في افتراضية الأنظمة التشغيلية في البيئات العملية.
في هذا المقال، نشرح بالتفصيل كيفية بناء بيئة افتراضية باستخدام KVM على Ubuntu، بالإضافة إلى أساسيات الاستخدام، ونصائح عملية، وحلول للمشكلات الشائعة. إذا كنت تفكر في استخدام KVM أو ترغب في الاستفادة القصوى من بيئة الافتراضية على Ubuntu، تابع القراءة حتى النهاية.
مقارنة بين KVM والتقنيات الافتراضية الأخرى
هناك عدة أنواع من تقنيات الافتراضية، ومن أكثرها شيوعًا في بيئة Ubuntu بجانب KVM، هناك VirtualBox وVMware. في هذا القسم نوضح الميزات والفروقات بين كل تقنية، بالإضافة إلى مزايا وعيوب اختيار KVM.
أنواع تقنيات الافتراضية الرئيسية
- KVM (آلة افتراضية تعتمد على النواة)
KVM هي وظيفة افتراضية مدمجة في نواة Linux، وتتطلب أن يكون نظام التشغيل المضيف هو Linux. من خلال استخدام دعم العتاد الافتراضي (Intel VT أو AMD-V)، تقدم الأجهزة الافتراضية أداءً عاليًا ومستقرًا بما يكفي للاستخدام العملي. يمكن إدارتها بمرونة عبر الأوامر أو أدوات الإدارة (مثل virt-manager). - VirtualBox
VirtualBox هو برنامج افتراضية مخصص لأجهزة سطح المكتب مقدم من شركة Oracle، ويعمل على منصات مختلفة مثل Windows وMac وLinux. يتميز بواجهة سهلة الاستخدام ويُستخدم غالبًا للأغراض الشخصية أو التعليمية، لكنه أقل ملاءمة للبيئات التجارية أو الأعمال ذات الحمل العالي مقارنةً بـKVM. - VMware (VMware Workstation/ESXi وما إلى ذلك)
VMware منتج تجاري يُستخدم بكثرة في البيئات العملية. يوفر ميزات غنية ودعمًا شاملاً، لكنه يتطلب ترخيصًا مدفوعًا. يُستخدم غالبًا في المؤسسات الكبيرة، مع وجود تكلفة أعلى مقارنةً بالحلول المفتوحة المصدر.
مزايا KVM
- أداء واستقرار عاليان
يعمل KVM كجزء من نواة Linux، لذا فهو فعال جدًا في استخدام الموارد ويمكن التحكم بدقة في تخصيص وحدة المعالجة والذاكرة لكل جهاز افتراضي. مناسب للتشغيل العملي للأنظمة. - مفتوح المصدر وبدون تكلفة ترخيص
KVM مفتوح المصدر بالكامل ولا يتطلب رسوم تراخيص، ما يجعله خيارًا مثاليًا لإنشاء بنية افتراضية منخفضة التكلفة. - أدوات إدارة غنية وقابلية للأتمتة
توفر أدوات سطر الأوامر (مثل virsh وvirt-install) وأدوات الإدارة الرسومية (مثل virt-manager) طرق إدارة متنوعة. يسهل أتمتتها ودمجها مع DevOps وإدارة البنية التحتية.
عيوب KVM
- يعمل فقط على Linux كنظام مضيف
KVM يعتمد على نواة Linux، لذلك لا يمكن استخدامه كنظام مضيف على Windows أو Mac. - الحاجة لمهارات Linux للإعداد والحلول
رغم وجود أدوات GUI، إلا أن إعدادات الشبكة أو الضبط الدقيق أحيانًا تتطلب أوامر ومهارات Linux.
متى يجب اختيار KVM؟
- إذا كنت تريد استخدام موارد الخادم الفعلي بكفاءة
- إذا كنت تحتاج الافتراضية للاستخدام العملي أو الأنظمة التجارية
- إذا كنت ترغب في بنية افتراضية متقدمة مع تقليل التكاليف
- إذا كنت ترغب في أتمتة إدارة خوادم Linux أو البنية التحتية
KVM تقنية افتراضية موصى بها ليس فقط للمهندسين أو المستخدمين المعتادين على Linux، بل لمن يرغبون في تجربة إدارة الخوادم الحقيقية.
بناء بيئة KVM على Ubuntu (التثبيت والإعداد المبدئي)
لاستخدام KVM على Ubuntu، هناك بعض المتطلبات الأساسية والخطوات العملية التي يجب اتباعها. في هذا القسم نوضح الخطوات الأساسية لتركيب KVM حتى يتمكن المبتدئون من إعداد البيئة بسهولة.
المتطلبات والتحقق المسبق
لاستخدام KVM يجب أن يدعم معالج الكمبيوتر أو الخادم ميزة دعم الافتراضية (Intel VT أو AMD-V). تحقق عبر تنفيذ الأمر التالي:
egrep -c '(vmx|svm)' /proc/cpuinfo
إذا ظهر رقم 1 أو أكثر فهذا يعني أن ميزة الافتراضية متاحة.
وأيضًا يجب أن يكون إصدار Ubuntu هو 64-بت.
تثبيت KVM والحزم المطلوبة
قم بتثبيت KVM والأدوات المرتبطة (libvirt وvirt-manager وغيرها) بتنفيذ الأوامر التالية:
sudo apt update
sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-manager
qemu-kvm
: برنامج KVM الرئيسيlibvirt-daemon-system
,libvirt-clients
: خدمات إدارة الأجهزة الافتراضيةbridge-utils
: أدوات إعداد الجسور للشبكةvirt-manager
: أداة إدارة الأجهزة الافتراضية عبر واجهة رسومية
إعداد مجموعات المستخدمين وتفويض الصلاحيات
بعد التثبيت، أضف المستخدم الحالي إلى مجموعتي kvm وlibvirt كي يتمكن من إدارة الأجهزة الافتراضية بدون صلاحيات الجذر:
sudo usermod -aG libvirt $(whoami)
sudo usermod -aG kvm $(whoami)
أعد تسجيل الدخول أو أعد تشغيل الجهاز لتطبيق الإعدادات.
التحقق من تشغيل خدمات KVM
تأكد من أن KVM قد تم تثبيته وتشغيل الخدمات اللازمة:
sudo systemctl status libvirtd
إذا ظهر “active (running)” فهذا يعني أن كل شيء يعمل بشكل صحيح.
يمكنك أيضًا التحقق بالأمر التالي:
virsh list --all
إذا ظهر لك قائمة (حتى وإن كانت فارغة) فهذا يعني أن البيئة تم إعدادها بشكل صحيح.
إنشاء الأجهزة الافتراضية والعمليات الأساسية
بعد إعداد بيئة KVM، يمكنك الآن إنشاء الأجهزة الافتراضية وتشغيلها فعليًا. يمكنك استخدام أداة الإدارة الرسومية (virt-manager) أو الأوامر عبر سطر الأوامر (virt-install أو virsh) حسب الحاجة. فيما يلي شرح للطريقتين:
إنشاء جهاز افتراضي باستخدام virt-manager (الواجهة الرسومية)
virt-manager هي أداة تتيح لك إنشاء وإدارة الأجهزة الافتراضية بواجهة رسومية بديهية. إذا كنت تستخدم بيئة سطح مكتب Linux، فإن استخدام virt-manager يعد سهلاً للغاية.
- شغّل
virt-manager
من قائمة التطبيقات أو عبر سطر الأوامر. - انقر على زر “جديد” في أعلى اليسار.
- حدد موقع وسائط التثبيت (مثل صورة ISO)، واختر نوع نظام التشغيل الضيف (مثال: Ubuntu، Windows).
- اضبط عدد وحدات المعالجة والذاكرة وسعة القرص للجهاز الافتراضي.
- راجع الإعدادات، ثم انقر على “إكمال” لإنشاء الجهاز الافتراضي وبدء التثبيت.
يمكنك أيضًا من خلال virt-manager تشغيل الأجهزة الافتراضية وإيقافها وإعادة تشغيلها وأخذ لقطات (snapshots) وإضافة الشبكات أو الأقراص بسهولة.
إنشاء جهاز افتراضي باستخدام virt-install (سطر الأوامر)
في بيئات الخوادم أو عند العمل عن بعد، غالبًا ما يكون استخدام الأوامر أكثر ملاءمة. فيما يلي مثال على استخدام الأمر virt-install
:
sudo virt-install
--name ubuntu-vm
--memory 2048
--vcpus 2
--disk size=20
--cdrom /path/to/ubuntu.iso
--os-type linux
--os-variant ubuntu20.04
--network network=default
--graphics vnc
--name
: اسم الجهاز الافتراضي--memory
: الذاكرة المخصصة (بالميجابايت)--vcpus
: عدد أنوية وحدة المعالجة--disk size=20
: سعة القرص الافتراضي (جيجابايت)--cdrom
: مسار ملف ISO المستخدم للتثبيت--os-type
,--os-variant
: نوع نظام التشغيل وإصداره--network
: الشبكة المتصلة--graphics
: وضع الرسوميات (مثل VNC)
بعد تنفيذ الأمر، سيتم تشغيل الجهاز الافتراضي تلقائيًا وتظهر شاشة التثبيت (مثلاً عبر VNC).
تشغيل/إيقاف/حذف الأجهزة الافتراضية وأخذ لقطات
يمكن إدارة الأجهزة الافتراضية في KVM بسهولة باستخدام الأوامر التالية:
- تشغيل الجهاز الافتراضي
virsh start <اسم_الجهاز_الافتراضي>
- إيقاف الجهاز الافتراضي
virsh shutdown <اسم_الجهاز_الافتراضي>
- إيقاف إجباري للجهاز الافتراضي
virsh destroy <اسم_الجهاز_الافتراضي>
- حذف الجهاز الافتراضي (احذر عند حذف القرص)
virsh undefine <اسم_الجهاز_الافتراضي>
- أخذ لقطة (snapshot)
virsh snapshot-create-as <اسم_الجهاز_الافتراضي> <اسم_اللقطة>
يمكنك إجراء هذه العمليات أيضًا عبر واجهة virt-manager الرسومية.
إعدادات الشبكة والتوسعة
إعداد الشبكة أمر بالغ الأهمية عند إدارة الأجهزة الافتراضية باستخدام KVM. رغم أن الإعداد الافتراضي يلبي العديد من الاستخدامات، إلا أن البيئات العملية تتطلب غالبًا إعدادات مخصصة. فيما يلي شرح للأنواع الأساسية وأشهر الإعدادات.
الفرق بين NAT الافتراضي (virbr0) وشبكة الجسر
عند تثبيت KVM، يتم إنشاء جسر شبكة افتراضي يُسمى “virbr0” بشكل تلقائي. وهو يستخدم تقنية NAT (ترجمة عناوين الشبكة) وله الخصائص التالية:
- خصائص virbr0 (نظام NAT)
- يمكن للجهاز الافتراضي الوصول إلى الإنترنت الخارجي
- لكن للوصول إليه مباشرة من المضيف أو شبكات أخرى، يجب ضبط تحويل المنافذ (port forwarding)
- مثالي للاستخدام المنزلي أو التطوير أو الاختبارات
أما “شبكة الجسر” (bridge network)، فهي تمنح الجهاز الافتراضي حق الوصول كأنه جزء من الشبكة الفعلية:
- خصائص شبكة الجسر
- الجهاز الافتراضي يصبح جزءًا من نفس نطاق الشبكة مثل الخادم المضيف
- يمكن الوصول إليه مباشرة من الحواسيب الأخرى أو الخوادم
- مثالي للخوادم الداخلية أو الخدمات المعروضة للعملاء
إعداد وإنشاء جسر مخصص (للوصول عبر LAN)
إذا كنت تريد وصولاً مباشرًا للجهاز الافتراضي من الخوادم أو الحواسيب الأخرى، أنشئ شبكة جسر كالتالي (مثال: كرت الشبكة الفيزيائي هو eth0
):
- تثبيت bridge-utils (تجاوز هذه الخطوة إذا كان مثبتًا مسبقًا)
sudo apt install bridge-utils
- تحرير ملف إعدادات الشبكة
ابتداءً من Ubuntu 18.04 يتم استخدام Netplan. عدل ملف الإعدادات (مثل/etc/netplan/01-netcfg.yaml
):
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: no
bridges:
br0:
interfaces: [eth0]
dhcp4: yes
- تطبيق الإعدادات
sudo netplan apply
- إضافة الجسر (br0) على جانب KVM
عبر virt-manager أو virsh، غيّر محول الشبكة للجهاز الافتراضي إلى br0.
تثبيت عنوان IP للجهاز الافتراضي وتحويل المنافذ
- تثبيت عنوان IP
يمكنك تثبيت عنوان IP من داخل نظام التشغيل للجهاز الافتراضي، أو عبر إعدادات DHCP حسب عنوان MAC. - إعداد تحويل المنافذ (عند استخدام NAT)
يمكن ضبط تحويل منفذ محدد (مثل SSH أو Web) من المضيف إلى الجهاز الافتراضي عبر أوامر virsh أو تحرير إعدادات libvirt. مثال لتحويل منفذ SSH:
virsh nat-forward --network default --add-port tcp:2222:22
※ لضبط أكثر دقة، يمكنك تعديل ملفات إعدادات libvirt أو استخدام firewalld.
إدارة التخزين والتعامل مع الأقراص
إدارة التخزين وتصميم الأقراص الافتراضية من الجوانب الهامة عند تشغيل الأجهزة الافتراضية باستخدام KVM. في هذا القسم، نشرح أنواع الأقراص الافتراضية، كيفية إنشائها، إدارة مسابح التخزين (storage pools)، بالإضافة إلى توسيع الأقراص والاستفادة من لقطات النظام (snapshots).
أنواع الأقراص الافتراضية (qcow2, raw) واستخداماتها
هناك نوعان رئيسيان من الأقراص الافتراضية في KVM:
- صيغة qcow2
- هي الصيغة الافتراضية لأقراص KVM
- تدعم أخذ اللقطات وضغط البيانات وتوفير المساحة
- مثالية للاختبارات والإدارة المرنة
- صيغة raw
- صيغة بسيطة بدون ضغط أو تحويل للبيانات
- مفيدة في الحالات التي تتطلب أعلى أداء ممكن للتخزين
عادةً ما يُوصى باستخدام صيغة qcow2، لكن يمكن اختيار الصيغة حسب الاستخدام.
إنشاء وإدارة مسابح التخزين
يتم إدارة أقراص الأجهزة الافتراضية في KVM عبر “مسابح التخزين” (Storage Pools).
- مسبح التخزين الافتراضي
بعد التثبيت، يكون المسار/var/lib/libvirt/images/
هو مسبح التخزين الافتراضي، ويتم إنشاء الأقراص الافتراضية ضمن هذا الدليل. - إنشاء مسبح تخزين جديد (مثال)
- أنشئ دليل جديد:
sudo mkdir /data/kvm-images
sudo chown libvirt-qemu:kvm /data/kvm-images - أضف المسبح الجديد عبر virt-manager أو أمر virsh:
virsh pool-define-as --name mypool --type dir --target /data/kvm-images
virsh pool-autostart mypool
virsh pool-start mypool
توسيع الأقراص الافتراضية واستخدام اللقطات (snapshots)
- توسيع الأقراص الافتراضية
إذا احتجت إلى زيادة مساحة القرص، استخدم الأمرqemu-img
(يدعم كل من qcow2 و raw):
sudo qemu-img resize /var/lib/libvirt/images/ubuntu-vm.qcow2 +10G
بعد ذلك، قم بتوسيع القسم أو نظام الملفات داخل نظام تشغيل الجهاز الافتراضي.
- استخدام اللقطات (snapshots)
عند استخدام أقراص بصيغة qcow2، يمكنك إنشاء لقطات لحفظ حالة النظام في نقطة زمنية محددة.
virsh snapshot-create-as <اسم_الجهاز_الافتراضي> <اسم_اللقطة>
تُعد اللقطات مفيدة جداً كنسخ احتياطي قبل إجراء تحديثات أو تغييرات على النظام أو لأغراض الاختبار.
تثبيت وتشغيل أنظمة التشغيل الضيف (Guest OS)
يشرح هذا القسم كيفية تثبيت أنظمة التشغيل الشائعة كجهاز افتراضي باستخدام KVM وكيفية التعامل مع صور ISO وتحسين أداء الأجهزة الافتراضية.
خطوات تثبيت أنظمة التشغيل الشائعة
يدعم KVM تشغيل أنظمة متعددة مثل Ubuntu وCentOS وWindows. فيما يلي أمثلة لتثبيت Ubuntu وWindows:
- في حالة Ubuntu
- قم بتنزيل صورة ISO الأحدث من موقع Ubuntu الرسمي.
- عند استخدام virt-manager، اختر “تثبيت من وسيط محلي” وحدد ملف ISO الذي تم تنزيله.
- حدد معالج الجهاز الافتراضي والذاكرة وسعة القرص، ثم ابدأ التثبيت.
- اتبع تعليمات التثبيت كما هو معتاد مع Ubuntu.
- في حالة Windows
- احصل على صورة ISO من Microsoft (نسخة تجريبية أو رسمية).
- أنشئ جهاز افتراضي جديد باستخدام virt-manager أو virt-install وحدد ملف ISO.
- عند تثبيت Windows، يوصى بتثبيت تعريفات virtio لتحسين أداء القرص والشبكة. أضف ISO تعريفات virtio كقرص CD إضافي أثناء التثبيت.
الحصول على صور ISO وتحميلها
- يُوصى بتنزيل صور ISO من الموقع الرسمي لنظام التشغيل.
- حدد مسار ملف ISO عند إنشاء الجهاز الافتراضي ليتم تحميله كقرص CD/DVD افتراضي.
- يمكن تحميل أكثر من صورة ISO في نفس الوقت (مثلاً: نظام التشغيل وتعريفات الأجهزة).
نصائح لتحسين الأداء أثناء تشغيل نظام التشغيل الضيف
- ضبط تخصيص الموارد
حدد موارد وحدة المعالجة والذاكرة للجهاز الافتراضي بشكل مناسب، وتجنب الإفراط في التخصيص حتى لا يتأثر المضيف أو الأجهزة الأخرى. - تثبيت تعريفات virtio
في حالة استخدام Windows أو أنظمة Linux القديمة، سيؤدي تثبيت تعريفات virtio إلى تحسين أداء القرص والشبكة بشكل كبير. - إيقاف الخدمات غير الضرورية
قم بتعطيل الخدمات أو البرامج التي لا تحتاج إليها داخل الجهاز الافتراضي لتحسين استخدام الموارد. - استخدام أدوات KVM المساعدة
تثبيت QEMU Guest Agent يتيح إدارة الأجهزة الافتراضية والحصول على معلومات أكثر دقة وتنفيذ الإغلاق الصحيح من المضيف.
أمثلة عملية ونصائح الأتمتة
لا تقتصر KVM على إنشاء وتشغيل الأجهزة الافتراضية فقط، بل تُستخدم في العديد من بيئات العمل والتطوير. بالإضافة إلى ذلك، يمكن دمجها مع السكربتات وأدوات الأتمتة لتحسين كفاءة الإدارة. في هذا القسم، نستعرض أمثلة عملية ونصائح للأتمتة.
أمثلة على استخدام KVM في الخوادم
- فصل بيئات التطوير والاختبار
يمكنك إنشاء جهاز افتراضي لكل مشروع لتغيير إصدارات النظام أو البرمجيات بحرية، واختبار التحديثات دون التأثير على بيئة الإنتاج. - بناء خدمات داخلية
مثل خوادم الملفات وخوادم الويب وقواعد البيانات، حيث يمكن تشغيل كل خدمة على جهاز افتراضي منفصل للحد من تأثير الأعطال وتسهيل النسخ الاحتياطي عبر اللقطات (snapshots).
أمثلة على الأتمتة باستخدام CLI وAnsible
- إنشاء الأجهزة الافتراضية تلقائيًا باستخدام CLI
باستخدام سكربتات Shell، يمكنك تنفيذ أوامر مثلvirt-install
وvirsh
تلقائيًا لإنشاء وإدارة عدة أجهزة افتراضية دفعة واحدة. مثال:
for i in {1..5}
do
virt-install --name test-vm-$i --memory 1024 --vcpus 1 \
--disk size=10 --cdrom /path/to/ubuntu.iso \
--os-type linux --os-variant ubuntu20.04 --graphics none --network network=default --noautoconsole
done
- بناء بيئة افتراضية باستخدام Ansible
يمكنك استخدام أداة أتمتة البنية التحتية “Ansible” لكتابة playbook تقوم بإنشاء الأجهزة الافتراضية وتثبيت البرامج والإعدادات تلقائيًا. هذا فعال بشكل خاص عندما يكون لديك عدد كبير من الخوادم أو تحتاج إلى إدارة التكوينات بكفاءة.
نصائح لإدارة الأجهزة الافتراضية بطريقة سحابية
- استخدام قوالب الأجهزة الافتراضية
يمكنك حفظ حالة جهاز افتراضي مبدئية كقالب، واستخدامه لنشر خوادم جديدة بسرعة كبيرة. - الاستفادة من واجهات API وأدوات الإدارة عبر الويب
يدعم libvirt واجهات برمجة التطبيقات (API) مما يسمح بدمج الإدارة مع أنظمة أو أدوات أخرى. كما أن أدوات الإدارة عبر الويب مثل Cockpit مفيدة لإدارة البيئات الافتراضية الكبيرة بشكل مرئي وسهل.
استكشاف الأخطاء وحلول المشكلات الشائعة
أثناء تشغيل بيئة KVM قد تواجه مشكلات مثل تعذر تشغيل الأجهزة الافتراضية أو مشاكل في الاتصال الشبكي. في هذا القسم نستعرض المشكلات الشائعة وكيفية حلها وخطوات فحص السجلات والاستفادة من مصادر الدعم.
أمثلة لمشكلات شائعة في KVM
- تعذر تشغيل الجهاز الافتراضي أو إنشاؤه
- عدم تفعيل خاصية دعم الافتراضية في المعالج (Intel VT, AMD-V)
- نقص في الذاكرة أو مساحة القرص المخصصة
- مسار خاطئ لمسبح التخزين أو صورة ISO
- مشكلة في الاتصال بالشبكة
- عدم ضبط محول الشبكة للجهاز الافتراضي بشكل صحيح
- أخطاء في إعدادات الجسر أو NAT أو DHCP
- تأثير إعدادات الجدار الناري أو الحماية
- أداء ضعيف للغاية
- تخصيص غير مناسب للموارد
- عدم تثبيت تعريفات Virtio (خاصة في Windows Guest)
- مشكلات في أداء التخزين (Disk I/O)
كيفية التحقق من السجلات وخطوات الحل الأساسية
عند حدوث مشكلة، تحقق أولاً من السجلات (logs):
- التحقق من سجل النظام
sudo journalctl -xe
تحقق إذا ما كانت هناك رسائل خطأ متعلقة بـ KVM أو libvirt.
- التحقق من سجلات libvirt
تفقد الملفات تحت/var/log/libvirt/
مثل libvirtd.log. - سجلات الأجهزة الافتراضية الفردية
من خلال virt-manager أو virsh، راجع تفاصيل الجهاز أو سجل الأخطاء في التبويب المناسب. - التحقق من حالة الشبكة
ip a
brctl show
virsh net-list --all
بهذه الأوامر يمكنك فحص حالة الاتصال والجسور الشبكية.
خطوات الحل الأساسية:
- حدد متى بدأت المشكلة وما هو التغير الحاصل
- راجع السجلات والإعدادات السابقة
- عدل الإعدادات حسب الحاجة، أعد تشغيل الخدمة أو أنشئ الجهاز الافتراضي من جديد إذا لزم الأمر
كيفية الاستفادة من التوثيقات الرسمية والمجتمعات
في حال وجود مشكلة، يمكنك الاستفادة من المصادر التالية:
- التوثيقات الرسمية
دليل KVM الرسمي لـ Ubuntu
توثيق libvirt الرسمي - منتديات المجتمعات ومواقع الأسئلة والأجوبة
- منتديات Ubuntu
- Ask Ubuntu
- Stack Overflow
- البحث باستخدام رسائل الخطأ
ابحث عن رسالة الخطأ باللغة العربية أو الإنجليزية في Google، ستجد الكثير من الحالات المشابهة والحلول.
تعزيز الأمان وتحسين الأداء
لضمان تشغيل بيئة KVM بأمان وكفاءة، يجب الاهتمام بالإجراءات الأمنية وتحسين توزيع الموارد. في هذا القسم نوضح النقاط الأساسية لحماية منصة الافتراضية وتقديم نصائح عملية لاستغلال الموارد بكفاءة.
استراتيجيات تعزيز أمان بيئة الافتراضية
- إيقاف الخدمات غير الضرورية واستخدام أقل عدد من البرامج
عطّل أي خدمات أو برامج غير مستخدمة داخل الأجهزة الافتراضية أو على المضيف لتقليل المخاطر وتقليل الهجمات الممكنة. - إعداد جدار حماية وقيود وصول فعالة
اضبط جدران الحماية (مثل ufw أو firewalld) بشكل صحيح على كل من المضيف والأجهزة الافتراضية لحجب الوصول غير المصرح به. من الأفضل أيضًا تغيير منفذ SSH واستخدام المصادقة عبر المفاتيح وتثبيت أدوات حماية مثل fail2ban. - عزل الأجهزة الافتراضية (تقسيم الشبكة)
افصل بين الخوادم الهامة باستخدام شبكات افتراضية منفصلة أو حتى فصلها فعلياً على مستوى الشبكة، للحد من انتشار الضرر في حال حدوث اختراق. - تحديثات دورية للنظام والبرمجيات
تأكد من تثبيت أحدث تحديثات الأمان لكل من نظام التشغيل المضيف والأنظمة الضيف لتقليل المخاطر الأمنية.
تحسين توزيع الموارد (CPU / ذاكرة / قرص)
- أساسيات إدارة الموارد
خصص موارد وحدة المعالجة والذاكرة بشكل مناسب لكل جهاز افتراضي، واترك بعض الموارد للمضيف للحفاظ على الاستقرار. التخصيص المفرط قد يؤدي إلى تدهور الأداء العام. - تحسين أداء التخزين (Disk I/O)
عادةً ما يكون أداء التخزين نقطة ضعف في الأنظمة الافتراضية؛ يُوصى باستخدام أقراص SSD للأجهزة الافتراضية الهامة، وتجنب الإفراط في استخدام لقطات qcow2 لتفادي بطء الأداء. - الاستفادة من تعريفات virtio
تثبيت تعريفات virtio داخل الأجهزة الافتراضية سيزيد من سرعة نقل البيانات للقرص والشبكة بشكل كبير.
أتمتة النسخ الاحتياطي واللقطات (snapshots)
- أخذ لقطات النظام بشكل منتظم
يوصى بأخذ لقطات دورية للأجهزة الافتراضية المستخدمة في الإنتاج، لتسهيل الاسترجاع السريع في حال وقوع مشاكل. - نسخ احتياطي للأقراص وملفات الإعدادات
قم بعمل نسخ احتياطي منتظم لملفات الأقراص الافتراضية (qcow2 أو raw) وملفات إعدادات libvirt (XML) إلى وسائط تخزين خارجية أو خوادم احتياطية. - دمج أدوات الأتمتة
يمكنك استخدام أدوات مثل cron أو Ansible لتشغيل النسخ الاحتياطي أو أخذ اللقطات تلقائيًا في أوقات محددة.
الخلاصة وموارد التعلم المستقبلية
في هذا المقال، شرحنا بشكل شامل كيفية بناء وتشغيل بيئة افتراضية باستخدام KVM على Ubuntu، واستعرضنا طرق الإدارة العملية وحلول المشكلات، بالإضافة إلى نصائح الأمان وتحسين الأداء. إليك ملخص لأهم النقاط وموارد لمزيد من التعلم.
ملخص المقال
- نظرة عامة على KVM وميزاته
KVM تقنية افتراضية مفتوحة المصدر وعالية الأداء تُستخدم على نطاق واسع، خصوصًا مع خوادم Ubuntu. - تسلسل الخطوات من التثبيت إلى الإدارة
بدءًا من التحقق من دعم المعالج للخصائص الافتراضية، وتثبيت الحزم المطلوبة، وضبط صلاحيات المستخدم، وصولاً إلى إنشاء الأجهزة الافتراضية وإدارتها. - نقاط عملية للشبكة والتخزين والتشغيل
تناولنا الشبكات الافتراضية (NAT والجسور)، وإدارة مسابح التخزين، وتوسيع الأقراص واستخدام اللقطات. - حلول المشكلات والأمان
استعرضنا حلولاً لأكثر الأخطاء شيوعًا، كيفية مراجعة السجلات، وأهم النقاط لتحسين الأمان والأداء.
الخطوات القادمة وموارد التعلم الموصى بها
- التوثيقات الرسمية
- دليل KVM الرسمي لـ Ubuntu
- توثيق libvirt الرسمي
- Ask Ubuntu
- Qiita علامة KVM
- Stack Overflow (بالإنجليزية)
KVM منصة افتراضية قوية ومرنة تناسب الاستخدام الشخصي والمؤسسات. نوصيك بالاستفادة من ما ورد في هذا المقال لتطوير معرفتك وتحقيق أقصى استفادة من KVM.
دليل الأوامر المختصرة وأمثلة الإعدادات الشائعة (Cheat Sheet)
يساعدك جمع الأوامر والإعدادات الشائعة في KVM وlibvirt في تسريع إدارة الأجهزة الافتراضية بشكل يومي. فيما يلي قائمة بالأوامر الهامة وبعض أمثلة الإعدادات للشبكات والأقراص.
أهم أوامر KVM / virsh / virt-manager
- عرض قائمة الأجهزة الافتراضية
virsh list --all
- تشغيل جهاز افتراضي
virsh start <اسم_الجهاز_الافتراضي>
- إيقاف تشغيل جهاز افتراضي
virsh shutdown <اسم_الجهاز_الافتراضي>
- إيقاف إجباري لجهاز افتراضي
virsh destroy <اسم_الجهاز_الافتراضي>
- إنشاء جهاز افتراضي (virt-install)
virt-install --name <الاسم> --memory <MB> --vcpus <عدد الأنوية>
--disk size=<GB> --cdrom <مسار_ملف_ISO>
--os-type linux --os-variant ubuntu20.04
- حذف جهاز افتراضي (الإعداد فقط)
virsh undefine <اسم_الجهاز_الافتراضي>
أمثلة لإعدادات الشبكة والجسور
- عرض جميع الشبكات الافتراضية الحالية
virsh net-list --all
- إنشاء شبكة جديدة (مثال XML)
ضع ملف XML تحت/etc/libvirt/qemu/networks/
، ثم فعّلها بالأوامر:
virsh net-define <اسم_الملف>
وvirsh net-start <اسم_الشبكة>
أمثلة لإدارة التخزين والأقراص
- عرض قائمة مسابح التخزين
virsh pool-list --all
- توسيع قرص افتراضي
sudo qemu-img resize /path/to/disk.qcow2 +10G
- أخذ لقطة (snapshot)
virsh snapshot-create-as <اسم_الجهاز_الافتراضي> <اسم_اللقطة>
نصائح وأوامر إضافية مفيدة
- ضبط بدء التشغيل التلقائي لجهاز افتراضي
virsh autostart <اسم_الجهاز_الافتراضي>
- عرض معلومات مفصلة لجهاز افتراضي
virsh dominfo <اسم_الجهاز_الافتراضي>
- تشغيل virt-manager (بيئة رسومية)
virt-manager
الأسئلة الشائعة (FAQ)
قمنا بتجميع أكثر الأسئلة شيوعًا التي يطرحها القراء حول إعداد وتشغيل بيئة KVM وUbuntu الافتراضية، مع إجابات عملية يمكن الاستفادة منها في التعامل مع المشكلات اليومية.
س1: ما الفرق بين KVM وVirtualBox أو VMware؟
ج1: KVM عبارة عن تقنية افتراضية مدمجة في نواة Linux وتتميز بالأداء العالي وتناسب بيئات الخوادم والاستخدام العملي. أما VirtualBox فهي مصممة لسطح المكتب وتناسب الاستخدامات التعليمية والشخصية، بينما VMware يوفر حلولًا تجارية متقدمة ويدعم التشغيل واسع النطاق، ولكنه يتطلب تراخيص مدفوعة. KVM هو الخيار الأفضل إذا كنت تبحث عن أداء مرتفع وتكلفة منخفضة.
س2: كيف يمكنني عمل نسخ احتياطي واستعادة الأجهزة الافتراضية؟
ج2: أبسط طريقة هي نسخ صورة القرص الافتراضي (qcow2 أو raw) مباشرة. بالإضافة إلى ذلك، يوصى بأخذ لقطات (snapshots) باستخدام virsh ونسخ ملفات إعدادات الأجهزة الافتراضية (XML) لتسهيل عملية الاستعادة.
س3: كيف يمكنني استخدام أجهزة USB داخل الجهاز الافتراضي؟
ج3: يمكنك إضافة أجهزة USB مثل الفلاش أو الأقراص الخارجية أو الطابعات إلى الجهاز الافتراضي عبر وظيفة “إضافة جهاز” في virt-manager أو ضبط إعدادات USB passthrough باستخدام أوامر virsh.
س4: كيف أجعل الجهاز الافتراضي يبدأ تلقائيًا عند تشغيل المضيف؟
ج4: باستخدام الأمر virsh autostart <اسم_الجهاز_الافتراضي>
، سيتم ضبط الجهاز الافتراضي على البدء تلقائيًا مع تشغيل نظام التشغيل المضيف.
س5: ماذا أفعل إذا كان أداء الجهاز الافتراضي ضعيفًا؟
ج5: راجع تخصيص الموارد (CPU/الذاكرة)، استخدم أقراص تخزين أسرع أو بدّل صيغة القرص من qcow2 إلى raw، وقم بتثبيت تعريفات virtio داخل الجهاز الضيف لتحسين أداء القرص والشبكة.
س6: الشبكة لا تعمل بشكل صحيح، ما الحل؟
ج6: تحقق أولاً من حالة الشبكة باستخدام أوامر مثل virsh وbrctl. إذا لزم الأمر، أعد إنشاء الشبكة الافتراضية أو راجع ملفات إعداد الجسر (Netplan أو NetworkManager) للتأكد من سلامة التكوين.
س7: هل يمكن إنشاء عنقود (cluster) أو إعداد HA باستخدام KVM؟
ج7: نعم، يمكن ذلك باستخدام أدوات مثل Pacemaker وCorosync، مع استخدام تخزين مشترك (NFS، iSCSI وغير ذلك). يمكنك أيضًا تفعيل خاصية النقل الحي (Live Migration) للأجهزة الافتراضية. لكن يتطلب ذلك خبرة تقنية متقدمة وإعدادات دقيقة.