📚 استنادًا إلى الفصل الرابع عشر من كتاب: Operating Systems: Internals and Design Principles – William Stallings – الإصدار التاسع
في عالم الحوسبة الحديث، أصبحت **الآلات الافتراضية (Virtual Machines - VMs)** تقنية أساسية تُغير طريقة استخدامنا للخوادم، تطوير البرمجيات، وحتى أجهزة الكمبيوتر الشخصية. ببساطة، الآلة الافتراضية هي **بيئة محاكاة برمجية كاملة لجهاز حاسوب** تعمل فوق العتاد (الهاردوير) الحقيقي، وتُمكّن من تشغيل نظام تشغيل (يُسمى "نظام التشغيل الضيف" - Guest OS) وتطبيقاته كما لو كانت تعمل على جهاز مادي مستقل.
✅ الفكرة الأساسية: تخيل أن لديك جهاز كمبيوتر واحد، ولكنك تستطيع تشغيل عدة "أجهزة كمبيوتر" افتراضية بداخله في نفس الوقت. كل من هذه الأجهزة الافتراضية لديها نظام تشغيل خاص بها، وذاكرة، ومعالج، وتخزين، وأجهزة I/O افتراضية خاصة بها.
تُمكنك من تشغيل أكثر من نظام تشغيل في وقت واحد على نفس الجهاز المادي. على سبيل المثال، يمكنك تشغيل Windows وLinux وmacOS (في بعض الحالات) جنبًا إلى جنب على جهاز واحد، دون الحاجة لإعادة تشغيل الجهاز للتبديل بينها.
مثال: مطور برمجيات يحتاج إلى اختبار تطبيقه على إصدارات مختلفة من Windows وLinux. بدلاً من امتلاك أجهزة متعددة، يمكنه إنشاء آلات افتراضية لكل نظام تشغيل على جهاز واحد.
كل آلة افتراضية معزولة تمامًا عن الآلات الافتراضية الأخرى وعن النظام المادي المضيف. هذا يعني أن أي مشكلة (مثل تعطل تطبيق أو هجوم فيروسي) تحدث داخل آلة افتراضية واحدة لن تؤثر على الآلات الافتراضية الأخرى أو على النظام المضيف. هذا يوفر بيئة آمنة لتجربة البرمجيات المشبوهة أو غير المستقرة.
يمكن للمطورين والباحثين استخدام الآلات الافتراضية لإنشاء بيئات اختبار معزولة وتجريبية. يمكنهم تثبيت برامج جديدة، إجراء تغييرات جذرية، أو حتى اختبار البرامج الضارة دون القلق بشأن التأثير على النظام الأساسي أو البيانات الحقيقية. يمكن بسهولة استعادة الآلة الافتراضية إلى حالتها السابقة (Snapshots).
في مراكز البيانات، غالبًا ما تكون الخوادم المادية غير مستغلة بالكامل. تسمح الآلات الافتراضية بتشغيل عدة خوادم افتراضية على خادم مادي واحد، مما يزيد من استخدام موارد العتاد (CPU, RAM, Storage) ويقلل من التكاليف (الطاقة، التبريد، المساحة).
يمكن نقل ملفات الآلة الافتراضية بسهولة من خادم مادي إلى آخر، أو من جهاز إلى آخر، أو حتى بين بيئات افتراضية مختلفة، مما يسهل عمليات الترحيل والنسخ الاحتياطي واستعادة الكوارث.
🔗 للمزيد: What is a Virtual Machine – VMWare
الـ **Hypervisor** (يُسمى أيضًا "مراقب الآلة الافتراضية" - Virtual Machine Monitor - VMM) هو البرنامج الأساسي المسؤول عن إنشاء، تشغيل، وإدارة الآلات الافتراضية. إنه الطبقة التي تفصل بين العتاد المادي وأنظمة التشغيل الضيفة، ويقوم بتخصيص الموارد المادية (المعالج، الذاكرة، التخزين، الشبكة) لكل آلة افتراضية.
بشكل عام، يمكن تقسيم الـ Hypervisors إلى نوعين رئيسيين:
| النوع | الشرح | المزايا | العيوب | أمثلة |
|---|---|---|---|---|
| النوع الأول (Type 1 Hypervisor) - Bare-Metal Hypervisor |
يعمل مباشرة على العتاد المادي للخادم (Bare-Metal)، دون الحاجة إلى نظام تشغيل مضيف. يتم تثبيته مباشرة على الخادم، ثم تُبنى الآلات الافتراضية فوقه. يتولى إدارة الموارد المادية بشكل مباشر وفعال. |
أداء عالٍ: لأنه يتفاعل مباشرة مع العتاد. أمان أفضل: طبقات أقل للتعرض للهجمات. قابلية توسع كبيرة: مثالي لمراكز البيانات والبيئات الإنتاجية. |
يتطلب عتادًا مخصصًا للخادم. أكثر تعقيدًا في الإعداد الأولي. |
VMware ESXi Microsoft Hyper-V (Server Version) Citrix XenServer KVM (Kernel-based Virtual Machine) في Linux |
| النوع الثاني (Type 2 Hypervisor) - Hosted Hypervisor |
يعمل كتطبيق عادي فوق نظام تشغيل مضيف موجود (Host Operating System). يتم تثبيت نظام تشغيل (مثل Windows أو Linux) أولاً على الجهاز المادي، ثم يتم تثبيت الـ Hypervisor كتطبيق على هذا النظام. |
سهولة الاستخدام: سهل التثبيت والإعداد، ومناسب للاستخدام الشخصي والتطوير. مرونة: يمكن تشغيله على أي جهاز كمبيوتر شخصي. |
أداء أقل: لأنه يضيف طبقة إضافية (نظام التشغيل المضيف) بين الـ Hypervisor والعتاد. أمان أقل: يعتمد على أمان نظام التشغيل المضيف. غير مناسب للبيئات الإنتاجية الكبيرة. |
Oracle VirtualBox VMware Workstation / Fusion Parallels Desktop |
📘 مرجع: Types of Hypervisors – IBM Cloud
بينما توفر الآلات الافتراضية عزلاً كاملاً عن طريق محاكاة جهاز حاسوب كامل، ظهرت تقنية أخرى تُسمى **الافتراضية بالحاويات (Container Virtualization)**، والتي توفر مستوى مختلفًا من الافتراضية، مع التركيز على عزل التطبيقات بدلاً من الأنظمة التشغيل الكاملة.
بدلاً من محاكاة نظام تشغيل كامل لكل تطبيق، تقوم الحاويات بعزل التطبيقات على مستوى نظام التشغيل الأساسي (Host OS)، مع تقاسم نواة نظام التشغيل المضيف.
| المقارنة | الآلة الافتراضية (VM) | الحاوية (Container) |
|---|---|---|
| البنية | تتضمن نظام تشغيل ضيف كامل (Guest OS) خاص بها، بالإضافة إلى التطبيقات والمكتبات. | تشارك نواة نظام التشغيل المضيف (Host OS Kernel) وتتضمن فقط التطبيق ومكتباته واعتماداته الخاصة. |
| الحجم | ثقيلة (عادةً جيجابايت - GBs) لأنها تحتوي على نظام تشغيل كامل. | خفيفة (عادةً ميجابايت - MBs) لأنها لا تتضمن نظام تشغيل كامل. |
| السرعة | بطيئة نسبيًا في التشغيل والإقلاع (تحتاج وقتًا لبدء تشغيل نظام التشغيل الضيف). | سريعة جدًا في التشغيل والإقلاع (تُشغل التطبيق مباشرة). |
| العزل | عزل تام على مستوى العتاد الافتراضي. كل VM تعمل كجهاز منفصل. | عزل جزئي على مستوى نظام التشغيل. تشترك الحاويات في النواة ولكنها معزولة على مستوى العمليات والملفات. |
| استغلال الموارد | أقل كفاءة في استغلال الموارد لأن كل VM لديها نظام تشغيل خاص بها يستهلك موارد. | أكثر كفاءة في استغلال الموارد لأنها تشارك النواة ولا تستهلك موارد إضافية لنظام تشغيل كامل. |
| الاستخدام النموذجي | تشغيل أنظمة تشغيل كاملة مختلفة، عزل بيئات التطوير/الاختبار، دمج الخوادم. | تعبئة ونشر الخدمات والتطبيقات بشكل سريع ومتسق (Microservices, DevOps). |
| أمثلة | VMware, Hyper-V, VirtualBox | Docker, Kubernetes, LXC (Linux Containers) |
🔍 مثال عملي:
إذا أردت تشغيل خادم ويب (مثل Apache) وقاعدة بيانات (مثل MySQL) على نفس الجهاز:
- باستخدام VMs: ستقوم بإنشاء VM1 لتشغيل Apache (مع نظام تشغيل Linux كامل)، و VM2 لتشغيل MySQL (مع نظام تشغيل Linux كامل آخر). كل VM ستستهلك مواردها الخاصة.
- باستخدام الحاويات: ستقوم بتشغيل حاوية لـ Apache وحاوية لـ MySQL على نفس نظام التشغيل المضيف. كل حاوية ستكون معزولة ولكنها ستشارك نواة نظام التشغيل المضيف، مما يجعلها أخف وأسرع.
🔗 للمزيد: What is Docker? – Docker Docs
تُعد إدارة المعالج (CPU) في بيئة افتراضية مهمة معقدة، حيث يجب على الـ Hypervisor توزيع موارد المعالج المادية بكفاءة بين الآلات الافتراضية المتعددة التي تتنافس عليها.
يجب على الـ Hypervisor تحديد عدد نوى المعالج الافتراضية (Virtual CPUs - vCPUs) التي سيتم تخصيصها لكل آلة افتراضية. يمكن تخصيص نوى مادية محددة (CPU Pinning) لآلة افتراضية معينة لضمان الأداء، أو يمكن السماح للـ Hypervisor بجدولة vCPUs على أي نواة مادية متاحة.
مثال: في بيئة خادم، يمكن تخصيص VM للعميل A بنواتين افتراضيتين (vCPUs)، بينما يتم تخصيص VM للعميل B بأربع نوى افتراضية، بناءً على احتياجات كل تطبيق.
تتضمن المعالجات الحديثة (مثل Intel VT-x و AMD-V) تعليمات افتراضية مخصصة تُسهل عملية الافتراضية وتُحسن الأداء بشكل كبير. تسمح هذه التعليمات للـ Hypervisor بتمرير بعض أوامر المعالج مباشرة إلى العتاد دون الحاجة للمحاكاة الكاملة.
CPU Passthrough: في بعض الحالات، يمكن للـ Hypervisor أن يمنح آلة افتراضية وصولاً مباشرًا وحصريًا إلى نواة معالج مادية معينة أو حتى إلى معالج كامل، مما يوفر أداءً شبه أصلي لتلك الآلة الافتراضية.
عندما يكون عدد الـ vCPUs المخصصة للآلات الافتراضية أكبر من عدد النوى المادية المتاحة، يجب على الـ Hypervisor جدولة تنفيذ الـ vCPUs على النوى المادية (Time Slicing). يجب أن تكون هذه الجدولة فعالة لضمان أن كل آلة افتراضية تحصل على حصتها العادلة من وقت المعالج ومنع التداخل الزمني الذي يؤثر على الأداء.
مثال: إذا كان لديك خادم بنواتين ماديتين، وقمت بتشغيل 4 آلات افتراضية، كل منها مخصص لها نواة افتراضية واحدة، فإن الـ Hypervisor سيقوم بالتبديل السريع بين الـ vCPUs الأربعة على النواتين الماديتين.
في بيئات الـ Hypervisor من النوع الأول، يمكن للـ Hypervisor نقل الآلات الافتراضية الحية (Live Migration) بين الخوادم المادية المختلفة لتحقيق توازن الحمل، مما يضمن استخدامًا أمثل لموارد المعالج عبر مركز البيانات.
تُعد إدارة الذاكرة (RAM) في البيئات الافتراضية تحديًا كبيرًا، حيث يجب على الـ Hypervisor أن يوفر لكل آلة افتراضية وهمًا بأنها تمتلك ذاكرة مستقلة وكاملة، بينما هو في الواقع يدير الذاكرة المادية المشتركة بكفاءة بين عدة آلات افتراضية.
بدلاً من تخصيص كتلة ثابتة من الذاكرة لكل VM عند بدء تشغيلها، يمكن للـ Hypervisor تخصيص الذاكرة ديناميكيًا بناءً على الاحتياجات الفعلية للآلة الافتراضية. هذا يسمح بتخصيص ذاكرة أكثر للآلات الافتراضية النشطة وتقليل الذاكرة للآلات الخاملة.
مثال: إذا كانت VM مخصصة لها 8 جيجابايت من الذاكرة ولكنها تستخدم 2 جيجابايت فقط، يمكن للـ Hypervisor استعادة الـ 6 جيجابايت الزائدة وتخصيصها لـ VM أخرى تحتاجها.
غالبًا ما تحتوي الآلات الافتراضية المتعددة (خاصة إذا كانت تشغل نفس نظام التشغيل أو تطبيقات متشابهة) على نسخ متطابقة من صفحات الذاكرة (مثل مكتبات النظام المشتركة أو أجزاء من نواة نظام التشغيل). يمكن للـ Hypervisor اكتشاف هذه الصفحات المتطابقة وتخزين نسخة واحدة فقط منها في الذاكرة المادية، ثم توجيه جميع الآلات الافتراضية لاستخدام هذه النسخة المشتركة. هذا يوفر كمية كبيرة من الذاكرة.
إذا كانت الذاكرة المادية محدودة، يمكن للـ Hypervisor ضغط الصفحات غير المستخدمة في الذاكرة لتقليل استهلاكها، أو نقلها إلى مساحة تبادل (Swap Space) على القرص الصلب (كما تفعل أنظمة التشغيل العادية)، ثم إعادتها إلى الذاكرة عند الحاجة. هذا يساعد في تجنب نفاد الذاكرة ولكنه يؤثر على الأداء.
هي تقنية مهمة تُستخدم في إدارة الذاكرة الافتراضية. يقوم الـ Hypervisor بتثبيت برنامج تشغيل صغير (Balloon Driver) داخل نظام التشغيل الضيف. عندما يحتاج الـ Hypervisor إلى ذاكرة إضافية للآلات الافتراضية الأخرى (أو لنفسه)، فإنه يُخبر برنامج Balloon Driver داخل VM معينة "بطلب" ذاكرة إضافية من نظام التشغيل الضيف. يقوم برنامج التشغيل هذا بـ "احتلال" صفحات الذاكرة داخل نظام التشغيل الضيف، مما يجبر نظام التشغيل الضيف على التخلي عن هذه الذاكرة وإتاحتها للـ Hypervisor لإعادة تخصيصها. تُسمى هذه العملية "الانتفاخ" لأن برنامج التشغيل يتصرف كبالون يمتص الذاكرة.
المزايا: يسمح للـ Hypervisor بإدارة الذاكرة بذكاء أكبر، واستعادة الذاكرة غير المستخدمة من الآلات الافتراضية التي لديها ذاكرة زائدة، وتخصيصها للآلات التي تحتاجها، دون الحاجة لترحيل VM بالكامل.
تُعد إدارة عمليات الإدخال/الإخراج (I/O) في البيئات الافتراضية تحديًا كبيرًا، حيث يجب على الـ Hypervisor توفير وصول فعال وآمن لأجهزة I/O المادية (مثل بطاقات الشبكة، الأقراص الصلبة، أجهزة USB) للآلات الافتراضية المتعددة.
يقوم الـ Hypervisor بمحاكاة أجهزة I/O افتراضية لكل آلة افتراضية. على سبيل المثال، بدلاً من أن تتفاعل VM مباشرة مع بطاقة الشبكة المادية، فإنها تتفاعل مع بطاقة شبكة افتراضية يوفرها الـ Hypervisor. يقوم الـ Hypervisor بترجمة طلبات I/O الافتراضية إلى طلبات I/O مادية للجهاز الحقيقي.
المزايا: سهولة التنفيذ، مرونة عالية، عزل تام.
العيوب: أداء أقل بسبب طبقة المحاكاة الإضافية.
هي برامج تشغيل خاصة تُثبت داخل نظام التشغيل الضيف. هذه البرامج لا تتفاعل مع الأجهزة المادية، بل تتفاعل مباشرة مع الـ Hypervisor عبر واجهة محسنة. هذا يقلل من الحمل الزائد للمحاكاة ويُحسن الأداء.
هي تقنية تُحسن أداء I/O (والموارد الأخرى) عن طريق تعديل نواة نظام التشغيل الضيف ليكون "على علم" بأنه يعمل في بيئة افتراضية. بدلاً من محاكاة كاملة للعتاد، توفر Paravirtualization واجهة برمجية (API) مباشرة بين نظام التشغيل الضيف والـ Hypervisor. هذا يسمح للـ VM بإرسال طلبات I/O مباشرة إلى الـ Hypervisor دون الحاجة للتعقيد الكامل للمحاكاة.
المزايا: أداء أفضل بكثير من المحاكاة الكاملة.
العيوب: يتطلب تعديل نظام التشغيل الضيف (مما قد لا يكون ممكنًا لجميع أنظمة التشغيل). Xen هو مثال على Hypervisor يدعم Paravirtualization.
في هذه التقنية، يتم منح آلة افتراضية وصولاً حصريًا ومباشرًا إلى جهاز I/O مادي معين (مثل بطاقة شبكة، بطاقة رسومات، أو وحدة تحكم تخزين). هذا يُلغي الحاجة للمحاكاة أو Paravirtualization، ويُقدم أداءً شبه أصلي لتلك الآلة الافتراضية.
المزايا: أفضل أداء ممكن لـ I/O.
العيوب: الجهاز المادي يصبح غير متاح للآلات الافتراضية الأخرى أو للنظام المضيف، ويتطلب دعمًا خاصًا من العتاد والـ Hypervisor.
توجد العديد من حلول الافتراضية المتاحة في السوق، كل منها مصمم لسيناريوهات استخدام مختلفة، من الاستخدام الشخصي إلى مراكز البيانات الضخمة.
🔗 للمزيد: VMware ESXi Overview
🔗 للمزيد: Hyper-V on Windows Server
🔗 للمزيد: Xen Project Home
🔗 للمزيد: Java VM Basics – Oracle
🔗 للمزيد: Linux VServer Project Home
في هذه الوحدة، اكتشفنا عالم **الآلات الافتراضية (Virtual Machines)**، وهي تقنية أصبحت حجر الزاوية في البنية التحتية السحابية، وعمليات DevOps، واختبار البرمجيات. فهمنا أن الآلة الافتراضية هي بيئة محاكاة كاملة لجهاز حاسوب، تُمكن من تشغيل أنظمة تشغيل متعددة على نفس العتاد المادي مع عزل تام. تعرفنا على **الـ Hypervisor** كبرنامج أساسي لإدارة هذه الآلات، وميزنا بين نوعيه (النوع الأول Bare-Metal والنوع الثاني Hosted). ثم انتقلنا إلى مفهوم **الافتراضية بالحاويات (Container Virtualization)**، ومقارنتها بالآلات الافتراضية، مع التركيز على خفة وزنها وسرعتها في عزل التطبيقات. كما درسنا التحديات والتقنيات المتعلقة بـ**إدارة موارد المعالج والذاكرة وI/O** في البيئات الافتراضية، بما في ذلك تقنيات مثل Ballooning و Paravirtualization. وأخيرًا، استعرضنا مجموعة من **حلول الافتراضية الشهيرة** مثل VMware ESXi، Microsoft Hyper-V، Xen، بالإضافة إلى Java VM وLinux VServer. الفهم العميق لهذه المفاهيم يُمكن الطالب من تصميم وإدارة بيئات حوسبة حديثة وفعالة.