جرب الآن
العودة إلى الرؤى
المحاكاة الافتراضية

ما هو KVM؟ فهم المحاكاة الافتراضية في لينكس

تعرّف على طريقة عمل KVM، وعلاقته بلينكس و QEMU و libvirt، ولماذا أصبح KVM ركيزة أساسية للمحاكاة الافتراضية للخوادم والسحب الخاصة الحديثة.

نُشر في 24 سبتمبر 20269 دقائق قراءةفريق تحرير فيرشوا
شارك هذا المقال
ما هو KVM؟ فهم المحاكاة الافتراضية في لينكس

KVM هي قدرة المحاكاة الافتراضية المدمجة داخل نواة لينكس (Linux kernel). فعندما تعمل نواة لينكس كمضيف KVM، يمكنها تشغيل عدد كبير من الأجهزة الافتراضية المعزولة على خادم واحد، بالاستفادة من ميزات المحاكاة الافتراضية المدعومة في المعالجات الحديثة. نادرًا ما يُستخدم KVM بمفرده؛ فهو يعمل جنبًا إلى جنب مع QEMU الذي يوفر العتاد الافتراضي، ومع libvirt الذي يوفر واجهات برمجية للإدارة. يشرح هذا المقال ما هو KVM، وكيف تتكامل هذه المكونات معًا، وما الذي يتطلبه تشغيل KVM فعليًا في بيئة إنتاجية، وما الذي تحتاجه أي مؤسسة إضافةً إلى KVM لبناء منصة محاكاة افتراضية متكاملة وقابلة للدعم، بدلًا من مجموعة من السكربتات المتفرقة والمهام المجدولة يدويًا.

ماذا يعني اختصار KVM؟

يشير KVM إلى Kernel-based Virtual Machine، أي "الجهاز الافتراضي المبني على النواة". دُمجت هذه التقنية في نواة لينكس الرئيسية عام 2007، وما زالت جزءًا من النواة منذ ذلك الحين، إلى جانب بقية الأنظمة الفرعية الأساسية مثل جدولة المعالج (scheduler) ومكدّس الشبكة ونظام الملفات. ولأن KVM يعيش داخل النواة نفسها وليس كإضافة منفصلة، فإنه يستفيد مباشرة من تطورات جدولة لينكس وإدارة الذاكرة وتعريفات الأجهزة وميزات الأمان، ويتحسن تلقائيًا كلما تحسّنت النواة ذاتها.

من الناحية العملية، عندما يتحدث المهندسون عن "بيئة KVM" فهم غالبًا يقصدون مجموع لينكس ووحدة KVM في النواة و QEMU وطبقة إدارة مثل libvirt، وليس وحدة النواة وحدها. هذا التمييز مهم عند مقارنة KVM بمنصة محاكاة افتراضية تجارية: فـ KVM بمفرده هو قدرة تقنية، بينما الأدوات المحيطة به هي ما يحدد مدى سهولة استخدامه في العمل اليومي.

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

كيف يعمل KVM؟

يستفيد KVM من ميزات المحاكاة الافتراضية المدعومة في المعالجات الحديثة — مثل Intel VT-x و AMD-V — لتشغيل شيفرة الجهاز الضيف مباشرةً على المعالج مع الحفاظ على عزل كل جهاز افتراضي. وعندما تُحمَّل وحدة KVM، تكتسب نواة لينكس القدرة على العمل كمحاكي افتراضي، أي إنشاء الأجهزة الافتراضية وجدولتها وإيقافها باستخدام نفس الآليات المستخدمة أصلًا للعمليات العادية.

يعمل كل جهاز افتراضي كعملية لينكس عادية. فالمعالجات الافتراضية (vCPUs) الخاصة به هي في الواقع خيوط تنفيذ (threads) تجدولها نواة لينكس، وذاكرته هي ذاكرة عملية عادية مدعومة من ذاكرة الوصول العشوائي للمضيف. هذا التصميم يعني أن KVM يعيد استخدام عقودًا من هندسة النواة بدلًا من إعادة بناء آليات الجدولة وإدارة الذاكرة في محاكي افتراضي منفصل. فعلى سبيل المثال، جهاز افتراضي بأربعة معالجات افتراضية يظهر على المضيف كعملية QEMU تحتوي على أربعة خيوط تنفيذ على الأقل، تضعها جدولة لينكس القياسية على الأنوية الفعلية تمامًا كما تفعل مع أي تطبيق متعدد الخيوط.

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

الأجهزة الافتراضية
QEMU / libvirt
وحدة KVM في النواة
نواة لينكس
عتاد الخادم (VT-x / AMD-V)
كيف يُبنى KVM و QEMU و libvirt فوق لينكس والعتاد.

KVM و QEMU و libvirt: ما الفرق بينها؟

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

التقنيةالدور الرئيسي
KVMقدرة محاكاة افتراضية على مستوى النواة تتيح للينكس تشغيل معالجات وذواكر الأجهزة الضيفة باستخدام ميزات العتاد.
QEMUمكوّن يعمل في فضاء المستخدم ينشئ عملية الجهاز الافتراضي ويحاكي أو يوفر أجهزة افتراضية: أقراص، بطاقات شبكة، برامج ثابتة، شاشة عرض.
libvirtواجهة برمجية وخدمة وأدوات إدارة (مثل virsh) تُستخدم لتعريف الأجهزة الافتراضية وتشغيلها وإيقافها وترحيلها ومراقبتها بشكل متسق.

باختصار: KVM يجعل المحاكاة الافتراضية ممكنة داخل النواة، وQEMU يمنح كل جهاز افتراضي عتاده الافتراضي، وlibvirt يمنح المسؤولين والمنصات ذات المستوى الأعلى طريقة ثابتة للتحكم بكل ذلك. أما تعريفات virtio شبه الافتراضية فتربط الأجهزة الضيفة بأجهزة QEMU بكفاءة، وهو أمر مهم لأداء الأقراص والشبكة — فالجهاز الضيف الذي يستخدم virtio-net و virtio-blk يشهد عادة استهلاكًا أقل بكثير من المعالج مقارنة بجهاز يعتمد على عتاد محاكى بالكامل، لأن تعريف النظام الضيف يدرك أنه يعمل على جهاز افتراضي فيتجنب قدرًا كبيرًا من المحاكاة غير الضرورية.

كما أن libvirt مهم لأنه ما تتحدث معه معظم الأدوات ذات المستوى الأعلى فعليًا. فمنصات مثل OpenStack و oVirt و Proxmox ومعظم منتجات KVM التجارية تستخدم libvirt (أو واجهة متوافقة معه) في الخلفية بدلًا من التخاطب مباشرة مع QEMU، وهذا أحد أسباب سهولة نقل مهارات KVM بين منتجات مختلفة مبنية على نفس الأساس.

كيف يعمل الجهاز الافتراضي في KVM؟

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

  • المضيف: خادم لينكس مفعّلة فيه ميزات المحاكاة الافتراضية في البرنامج الثابت (VT-x/AMD-V، ويُفضّل أيضًا VT-d/AMD-Vi لتمرير الأجهزة مباشرة).
  • قدرة المحاكاة الافتراضية: وحدة KVM، والتي تُتاح لـ QEMU عبر واجهة ‎/dev/kvm.
  • المعالج الافتراضي: خيوط تنفيذ تُجدولها نواة لينكس على الأنوية الفعلية، مع إمكانية تثبيت المعالج (CPU pinning) ومراعاة بنية NUMA للأعباء الحساسة لزمن الاستجابة.
  • الذاكرة: تُخصَّص لعملية QEMU، مع خيارات مثل الصفحات الكبيرة (huge pages) وتضخّم الذاكرة (memory ballooning) وتقنية KSM (دمج الصفحات المتطابقة في الذاكرة) للأعباء الكثيفة أو المكدّسة بشكل عالٍ.
  • التخزين: أقراص افتراضية على شكل ملفات صور (مثل qcow2 التي تدعم اللقطات والتخصيص المرن) أو أجهزة كتلة على تخزين محلي أو شبكة تخزين (SAN) أو تخزين مُعرَّف بالبرمجيات.
  • الشبكة: بطاقات شبكة virtio مرتبطة بجسور لينكس (bridges) أو Open vSwitch أو شبكات افتراضية أخرى، مع استخدام VLANs أو شبكات تراكبية لفصل حركة المستأجرين أو التطبيقات.
  • نظام التشغيل الضيف: لينكس أو Windows Server أو أنظمة مدعومة أخرى، تُثبَّت وتُدار بشكل عادي بمجرد وجود تعريفات virtio.

اعتبارات القياس والأداء

بما أن المعالجات الافتراضية للجهاز في KVM هي خيوط تنفيذ عادية، فإن تخصيص عدد معالجات افتراضية أكبر من عدد الأنوية الفعلية (oversubscription) يتصرف تمامًا كما يحدث مع أي مورد حوسبي مشترك: هو أمر طبيعي وغالبًا فعّال، لكن النسبة المناسبة تعتمد بشدة على طبيعة العبء. فالأعباء الدفعية أو الخفيفة تتحمّل تخصيصًا زائدًا مرتفعًا، بينما قواعد البيانات الحساسة لزمن الاستجابة تحتاج عادة إلى نسب محافظة أو إلى تثبيت المعالج (CPU pinning) لتجنب اهتزاز الجدولة.

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

غالبًا ما يكون تصميم التخزين والشبكة العامل الحاسم في مدى سرعة بيئة KVM. فالتخزين المحلي من نوع NVMe يمنح أقل زمن استجابة لكنه يحدّ من خيارات الترحيل، بينما التخزين المشترك أو المُعرَّف بالبرمجيات يتيح الترحيل الحي والتوافرية العالية لكنه يضيف عبئًا يجب أخذه في الحسبان عند التخطيط للسعة. وبالمثل، تعريفات virtio وتعدد قوائم الانتظار الافتراضية وميزات مثل SR-IOV مهمة للأعباء الكثيفة الاستخدام للشبكة.

هل KVM محاكٍ افتراضي من النوع الأول (Bare-Metal)؟

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

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

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

ما يهم أكثر في التشغيل الفعلي هو الأداء والعزل ودعم العتاد والإدارة. نقارن بين النموذجين التقليديين في مقال النوع الأول مقابل النوع الثاني من المحاكيات الافتراضية.

KVM مقابل منصة محاكاة افتراضية متكاملة

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

  • إدارة مركزية للمضيفين والعناقيد (clusters) والأجهزة الافتراضية
  • التجميع في عناقيد، وتكامل الشبكة والتخزين المشترك
  • التوافرية العالية (High Availability) لإعادة تشغيل الأعباء بعد فشل مضيف
  • الجدولة الموزّعة للموارد (DRS) للحفاظ على توازن العنقود
  • الترحيل الحي للصيانة دون إيقاف الأجهزة الافتراضية
  • المراقبة والتنبيه ورؤية السعة
  • النسخ الاحتياطي والتعافي من الكوارث
  • التحكم بالصلاحيات القائم على الأدوار (RBAC) وسجلات التدقيق
  • الأتمتة وواجهات البرمجة للنشر القابل للتكرار

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

لمعرفة الفرق بين التوافرية العالية و DRS والترحيل الحي، ولماذا تحل كل منها مشكلة مختلفة رغم أنها كثيرًا ما تُذكر معًا، راجع مقال HA مقابل DRS مقابل الترحيل الحي.

التخطيط لبيئة قائمة على KVM

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

لا شيء من هذه الأسئلة خاص بـ KVM وحده، لكن مرونة KVM تعني أن على المؤسسة اتخاذ قدر أكبر من هذه القرارات بشكل صريح مقارنة بمنصة أكثر تحديدًا من مزوّد واحد. وهذا ليس عيبًا بالضرورة، بل يعني أن مرحلة التخطيط تستحق وقتًا وخبرة حقيقيين بدلًا من التعامل معها كخطوة ثانوية.

مفاهيم خاطئة شائعة حول KVM

تتكرر بعض المفاهيم الخاطئة عندما تُقيّم المؤسسات KVM لأول مرة، ومن المفيد توضيحها مباشرة.

أولًا، KVM ليس منتج محاكاة افتراضية متكاملًا بحد ذاته، وتجربة عرض تعمل على جهاز محمول واحد بعيدة كل البعد عن عنقود إنتاجي بتوافرية عالية ومراقبة ونسخ احتياطي. ثانيًا، كون التقنية مفتوحة المصدر لا يعني أنها بلا دعم أو غير مستقرة: فـ KVM يشكّل أساس مزودي الحوسبة السحابية العامة الكبار ومنتجات المؤسسات الناضجة، لكن جودة أي نشر محدد تبقى معتمدة على طبقة الإدارة المحيطة به والفريق الذي يشغّله. ثالثًا، KVM لا يقتصر على الأجهزة الضيفة العاملة بلينكس — فأنظمة مثل Windows Server تعمل بشكل جيد بمجرد تثبيت تعريفات virtio المناسبة والتأكد من اعتمادها لذلك النظام الضيف تحديدًا.

لماذا يُستخدم KVM في البنية التحتية الحديثة؟

أصبح KVM خيارًا شائعًا لمحاكاة الخوادم وبنية الحوسبة السحابية لأسباب عملية عدة.

  • منظومة محاكاة افتراضية مفتوحة بمساهمات واسعة من المجتمع والشركات.
  • تكامل عميق مع لينكس، يرث تحسينات النواة في الجدولة والذاكرة والأمان.
  • دعم واسع للعتاد عبر تعريفات لينكس القياسية.
  • دعم قوي للأتمتة عبر libvirt وواجهات البرمجة وأدوات البنية التحتية ككود (Infrastructure as Code).
  • استخدام مثبت كأساس لمنصات الحوسبة السحابية العامة والخاصة.
  • عدم وجود رسوم ترخيص لكل معالج على مستوى المحاكي الافتراضي، ما يغيّر اقتصاديات توسعة العنقود مع الوقت.

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

كيف تستخدم فيرشوا تقنية KVM؟

يعتمد منتج أساس HV، وهو أساس المحاكاة الافتراضية في فيرشوا، على KVM و QEMU و libvirt كنواة له. وفوق هذا الأساس تضيف فيرشوا الطبقات التشغيلية التي تحتاجها أي بيئة إنتاجية، بحيث تحصل الفرق على انفتاح محاكٍ افتراضي قياسي ومعروف جيدًا، دون الحاجة إلى بناء كل القدرات المحيطة به من الصفر.

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

شارك هذا المقال

استكشف أساس HV

شاهد كيف تبني فيرشوا منصة محاكاة افتراضية متكاملة فوق KVM و QEMU و libvirt.

استكشف أساس HV
تابع الاستكشاف
القراءة التالية المقترحةالمحاكاة الافتراضية

ما هي محاكاة الخوادم الافتراضية؟ كيف تعمل ولماذا هي مهمة

تعرّف على مفهوم محاكاة الخوادم الافتراضية، وكيف تتشارك الأجهزة الافتراضية موارد جهاز فعلي واحد، وكيف تُحسّن هذه التقنية استغلال الموارد ومرونة العمليات في مراكز البيانات.

اقرأ المقال
موضوع ذو صلةالمحاكاة الافتراضية

الفرق بين Hypervisor من النوع الأول والنوع الثاني

تعرّف على الفرق بين Hypervisor من النوع الأول والنوع الثاني، وكيف تعمل المحاكاة الافتراضية على العتاد المباشر (Bare Metal)، وأي البنيتين تُستخدم لكل نوع من أحمال العمل.

اقرأ المقال
موضوع ذو صلةالمحاكاة الافتراضية

المحاكاة الافتراضية مقابل السحابة الخاصة: ما الفرق بينهما؟

المحاكاة الافتراضية والسحابة الخاصة مرتبطتان ارتباطًا وثيقًا لكنهما ليستا الشيء نفسه. تعرّف على الفرق بينهما وما تضيفه الإدارة والأتمتة وقدرات السحابة.

اقرأ المقال
موضوع ذو صلةالمحاكاة الافتراضية

الفرق بين HA وDRS والترحيل الحي (Live Migration)

تحل ميزات HA وDRS والترحيل الحي مشكلات مختلفة تمامًا في المحاكاة الافتراضية. تعرّف على كيفية دعم كل منها لاستمرارية الخدمة، وتنقّل الأجهزة الافتراضية، وتوازن الموارد.

اقرأ المقال