الحوسبة الافتراضية هي تشغيل نسخة نظام حاسوب افتراضية في طبقة مستخرجة من العتاد hardware الفعلي، ويشير المصطلح غالبًا إلى تشغيل عدة أنظمة تشغيل على الحاسوب في وقت واحد، حيث يبدو للتطبيقات التي تعمل على الجهاز الافتراضي virtualized machine أنها على جهاز مخصص لها، ويكون نظام التشغيل والمكتبات والبرامج الأخرى فريدةً لنظام الضيف guest الافتراضي، وغير متعلقة بنظام التشغيل المضيف.
تُستخدم الحوسبة الافتراضية لأسباب عدة، أكثرها شيوعًا بالنسبة لمستخدمي سطح المكتب هو تشغيل التطبيقات المخصصة لنظام تشغيل آخر غير النظام المثبت على حواسيبهم، دون الحاجة إلى تبديل أجهزة الحاسوب أو إعادة تشغيل نظام مختلف، أما بالنسبة لمسؤولي الخوادم، فهي توفر لهم القدرة على تشغيل أنظمة تشغيل مختلفة أيضًا، بالإضافة إلى طريقة لتقسيم نظام كبير إلى أجزاء أصغر، مما يسمح باستخدام أكثر كفاءةً للخادم من قبل عدد من المستخدمين المختلفين أو تطبيقات ذات متطلبات مختلفة، كما تسمح بالعزل، وحماية البرامج التي تعمل داخل الجهاز الافتراضي من العمليات التي تحدث في جهاز افتراضي آخر على نفس المضيف.
المراقب hypervisor
يُستخدم المراقِب Hypervisor لإنشاء وتشغيل الأجهزة الافتراضية، وهو صنفان، يسمى الأول بالنمط الأول type one أو الخادم الحقيقي bare metal، حيث تشغّل آلات الضيف الافتراضية مباشرةً على عتاد النظام، وتعمل مثل نظام تشغيل، ويدعى الصنف الثاني بالنمط الثاني type two أو المراقب المستضاف Hosted، وهو يشبه التطبيقات التقليدية التي يمكن تشغيلها وإيقافها مثل أي برنامج عادي، وهذا التقسيم غير شائع في الأنظمة الحديثة، خاصةً مع أنظمة مثل KVM، اختصار الأجهزة الافتراضيّة المعتمدة على نواة لينكس Kernel-based Virtual Machine، وهو جزء من نواة نظام لينكس Linux يمكنه تشغيل الأجهزة الافتراضية مباشرةً على العتاد الفعلي.
الجهاز الافتراضي virtual machine
الجهاز الافتراضي هو المحاكي المكافئ لنظام الحاسوب الذي يعمل على نظام آخر، ويمكنه الوصول إلى أي عدد من الموارد، مثل القدرة على المعالجة computing power، وكذلك الوصول المحدود إلى وحدة المعالجة المركزية والذاكرة في الجهاز المضيف، كما يمكنه استخدام واحد أو أكثر من أجهزة أقراص التخزين المادية أو الافتراضية، والوصول إلى واجهة شبكة افتراضية أو حقيقية، بالإضافة إلى أي أجهزة، مثل بطاقات الفيديو أو أجهزة USB، أو أي عتاد آخر مشترك مع الجهاز الافتراضي، ويشار إلى تخزين الجهاز الافتراضي على قرص افتراضي باسم صورة قرص disk image، وقد تحتوي على ملفات تشغيل الجهاز الافتراضي، أو على أي متطلبات محددة للتخزين.
الحاوية container
تحتوي الحاويات في نظام لينوكس التطبيقات وتعزلها عن النظام المضيف الذي تعمل عليه، كما تسمح للمطور بتجميع التطبيق مع كل الأجزاء التي يحتاجها، مثل المكتبات والاعتماديات الأخرى، وإرسالها كلها مثل حزمة واحدة، وقد صمِّمت لتسهيل تقديم تجربة متسقة، حيث ينقل المطورون ومسؤولو النظام التعليمات البرمجية من بيئات التطوير إلى بيئة الإنتاج بسرعة مع القدرة على تكرارها.
لن يحدِث وضع التطبيقات في حاويات تغيرًا كبيرًا في مؤسستك على الأرجح، إلا إذا غيرت طريقة نشر تلك الحاويات وإدارتها، لذلك يستخدَم نظام Kubernetes لتنظيم الحاويات وإدارتها في نظام لينكس، وهو نظام مفتوح المصدر لإدارة مجموعات من الحاويات، ويوفر أدوات لنشر التطبيقات وتوسيعها عند الحاجة، وإدارة تغيرات التطبيقات الموجودة في الحاويات، والمساعدة في تحسين استخدام العتاد الكائن وراءها، وقد صمم ليكون قابلًا للتوسع، بالإضافة إلى ميزة التسامح مع الأخطاء fault-tolerant، من خلال السماح لمكونات التطبيق بإعادة التشغيل والتنقل عبر الأنظمة حسب الحاجة.
تضيف أدوات أتمتة تكنولوجيا المعلومات مثل Ansible، ومنصات مشاريع الخدمات مثل OpenShift، إمكانيات إضافيةً لتسهيل إدارة الحاويات.
العديد من التقنيات التي تدعم الحاويات هي تقنيات مفتوحة المصدر، مما يعني وجود مجتمع واسع من المساهمين، مما يساعد على التطور السريع لنظام واسع من المشاريع ذات الصلة التي تلبي احتياجات المنظمات المختلفة، الكبيرة والصغيرة.
الموازنة بين الجهاز الافتراضي والحاوية
تتشابه الحاويات والأجهزة الافتراضية من حيث المفهوم، فكلاهما يستخدم لإنشاء بيئات افتراضية معزولة لاختبار البرامج وتطويرها، لكنهما يعملان بطريقة مختلفة، فالحاويات ليست أجهزةً مستقلةً تمامًا، وإنما هي مجرد عملية معزولة تشترك في نفس نواة لينكس kernel مثل نظام التشغيل المضيف، وكذلك الملفات والمكتبات اللازمة لتنفيذ البرنامج المشغَّل ضمن الحاوية، في واجهة شبكة غالبًا، مما يظهر الحاوية مثل جهاز افتراضي، إلا أنها تتصرف عكسه، فلا تنشئ نظام تشغيل افتراضي كامل، ولا تحتاج إلى نسخ نظام التشغيل كليًا، وإنما تنسخ المكونات التي تحتاجها للعمل فقط، مما أدى إلى تحسن كبير في الأداء، وتقليل حجم التطبيق، وتسريع العمل، لأن العملية تعمل على مضيفها مع طبقة حماية إضافية حولها.
وتصمم الحاويات عادةً لتشغيل برنامج واحد، بدلًا من محاكاة خادم كامل متعدد الأغراض، وعلى عكس الأجهزة الافتراضية فهي لا تحتاج إلى تضمين نظام تشغيل ضيف في كل حالة.
لم كل هذا الاهتمام بالحاويات؟
كان مشروع Docker مفتوح المصدر أحد أكبر أسباب الاهتمام بتكنولوجيا الحاويات مؤخرًا، وهو أداة سطر أوامر command line سهّلت على كل من المطورين ومسؤولي النظام إنشاء الحاويات والتعامل معها، على غرار الطريقة التي سهّل بها Vagrant على المطورين استكشاف الأجهزة الافتراضية.
Docker هو أداة سطر أوامر لتعريف محتويات حاوية لينكس في تعليمات برمجية، والتي يمكن بعد ذلك إصدارها وإعادة إنتاجها ومشاركتها وتعديلها بسهولة، كما لو أنها شيفرة مصدرية لبرنامج.
اهتمت الحاويات أيضًا ببنية الخدمات المصغرة microservice، وهو نمط تصميم لتطوير التطبيقات، تُقسم فيه التطبيقات المعقدة إلى أجزاء أصغر قابلة للتركيب وتعمل معًا، ويطوَّر كل مكون على حدة، ثم تجمع المكونات لتكوين التطبيق، ويمكن أن تعمل كل خدمة داخل الحاوية، كما يمكن توسيعها باستقلالية عن بقية التطبيق حسب الحاجة.
المحافظة على أمان الحاويات
تضيف الحاوية الأمان عن طريق عزل التطبيقات عن التطبيقات الأخرى الموجودة على نظام تشغيل مضيف، ولكن مجرد وضع أحد التطبيقات في حاوية لا يكفي لإبقائه آمنًا.
يشرح Dan Walsh خبير أمن الحواسيب، والمعروف بعمله على SELinux، بعض الطرق التي يعمل عليها المطورون ليتأكدوا من ضمان Docker وأدوات الحاويات الأخرى لميزات الأمان، بالإضافة إلى ميزات الأمان الموجودة في Docker، مثل حماية ملفات النظام، وفضاءات الأسماء Namespace التي توفر بعض الأمان.
ترجمة -وبتصرف- للمقالين What are Linux containers? وWhat is virtualization? من موقع opensource.com.
أفضل التعليقات
لا توجد أية تعليقات بعد
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.