القائمة الرئيسية

الصفحات

أخبار

الفرق بين الحاويات والأجهزة الإفتراضية

الفرق بين الحاويات والأجهزة الإفتراضية





ما هي الآلات الافتراضية والحاويات

وكيف تتناسب مع طريقتنا الحديثة  القائمة على السحابة لإنشاء التطبيقات وتصميمها؟

سأحاول الإجابة على هذا السؤال في أربعة أجزاء.

أولاً دعنا نتحدث عن بعض الاختلافات بين الأجهزة الافتراضية والحاويات.

من ناحية أخرى ، لدينا أجهزة افتراضية سأختصرها إلى VM ربما استخدمتها لأنها كانت شائعة لفترة أطول.

ثم حاويات هنا على الجانب الآخر والتي قد تكون أحدث قليلاً بالنسبة لك ولكنك ربما شاهدتها إذا كنت تعمل في مساحات تحديث التطبيقات.

أو إذا كنت تتعامل مع خدمات مصغرة أو أي شيء يتطلب طريقة جديدة لبناء وتصميم التطبيقات ويجب أن أقول أنه ليس بالضرورة جديدًا ولكن هذا يجعلنا نمتلك الكثير منها مؤخرًا.

لذا فإن أول شيء أريد طرحه هو المستوى الذي تحدث فيه المحاكاة الافتراضية.

وبالتالي ، فإن هاتين التقنيتين هما طريقتان مختلفتان لتحقيق المحاكاة الافتراضية ،

والآلات الافتراضية هي ما يسمى "افتراضية الأجهزة" لأنه يحدث على مستوى الأجهزة.لذا  لنبدأ بموادنا لأنهم أجهزة كمبيوتر بعد كل شيء.

وما لدينا بالإضافة إلى أجهزتنا هو ما يسمى بـ "برنامج Hypervisor".

و برنامج Hypervisor الخاص بنا مسؤول عن إنشاء هذه الحالات الافتراضية

من كل من المكونات التي تشكل أجهزتنا.

نحن نتحدث عن المعالجات ، ذاكرة الوصول العشوائي ، التخزين ، الشبكة ، البطاقات ،

كل هذه العناصر يتم إضفاء الطابع الافتراضي عليها بواسطة برنامج Hypervisor .

أثناء وجود الحاويات ،

نبدأ مرة أخرى مع المادة في الأسفل ،

لكننا نبنيها بشكل مختلف قليلاً

لأننا ، بالإضافة إلى مادتنا ، جوهرنا ،

مما يساعد برامجنا وأجهزتنا على التواصل مع بعضها البعض.

وبالإضافة إلى النواة لدينا ، لدينا نظام التشغيل الخاص بنا

ونحن نطلق عليه "نظام التشغيل المضيف" لأن هذا هو ما سيستضيف جميع حاوياتنا.

وبعد ذلك ، بالإضافة إلى نظام التشغيل ، لدينا كل حاوية قيد التشغيل ،

حاويات C1 و C2 ... يمكننا تشغيل عشرات الحاويات في مثيل لنظام التشغيل.

وهذا هو سبب تسميتها بـ "الظاهرية على مستوى نظام التشغيل" ،

لأنه يحدث على مستوى نظام التشغيل ،

بينما مع أجهزتنا الافتراضية ، نعمل على مستوى الأجهزة.

وهذا النموذج الذي رسمته هو برنامج Hypervisor من النوع 1 ،

أو نسميها ... "افتراضية كاملة" أو "نظام افتراضي كامل".

الشيء الثاني الذي أريد رفعه

يتعلق بنوع العزلة التي نحصل عليها.

مع أجهزتنا الافتراضية ، نقوم بعزل الآلة.

لذا ، إذا استطعنا تخيل الطبقة الأساسية لدينا ، فلدينا خادم موجود في رف في مكان ما 

لكننا نريد استخدام مواردنا وتقسيمها حتى نستخدم الكثير مما لدينا.

لذلك نأخذ برنامج Hypervisor الخاص بنا ونصنع "Machine 1" 

ونقوم بعمل "آلة 2" ، ونقوم بعمل "آلة 3".

نقوم بإنشاء ما يشبه محطات عمل منفصلة ، وخوادم منفصلة على واحدة ،

نجعل خادمنا يشبه العديد من الأجهزة المختلفة.

وكل آلة مستقلة نسبيًا عن بعضها البعض ،

كما لو أنهم لا يعرفون بعضهم البعض حقًا

وأننا ، من خلال التفاعل معهم ، لن نعرف بالضرورة أننا حتى في آلة افتراضية.

يبدو وكأنه خادم آخر مختلف تمامًا ، جهاز في مكان آخر.

بينما مع حاوياتنا ، نتعامل مع عزل العملية.

لذلك عندما نشغل التطبيقات على أجهزة الكمبيوتر المحمولة لدينا ،

تعمل بشكل عام في نفس البيئة.

يمكنهم جميعًا رؤية ما يعمل في نفس الوقت والتحدث مع بعضهم البعض ومشاركة الموارد وأشياء من هذا القبيل ،

ولكن عندما نتعامل مع الحاويات ربما من أجل السلامة 

نريد التأكد من أن تطبيقاتنا يمكنها فقط رؤية ما هو ضروري للغاية لتشغيلها ولا شيء آخر.

وهذا ما تسمح لنا الحاويات بفعله .

حيث يشتركون في نفس نظام التشغيل ، فإنهم يتشاركون في نفس النواة ولكن يبدو لكل حاوية كما لو كان لديها نظام تشغيل خاص بها

وما تم تثبيته فقط هو المكتبات الضرورية بالإضافة إلى النصوص البرمجية وكل ما نحتاجه لتشغيل تطبيقاتنا

وهذا كل شيء.

ونحن قادرون على تشغيل كل هذه التطبيقات جنبًا إلى جنب ولا يعرفون بعضهم البعض بالضرورة.

لذلك نحن نتعامل مع عزل العملية على عكس عزل الآلة.

والشيء الثالث هي كيفية الوصول إلى هذه الموارد.

لذا مرة أخرى  يقوم برنامج Hypervisor لدينا بإنشاء نقوم بإنشاء أجهزة مختلفة من خادمنا ،

وهذا هو المكان الذي يحدث فيه التفاعل بشكل أساسي.

نتفاعل مع ما نعتقد أنه مادي ولكن يتم التعامل مع هذا من خلال برنامج Hypervisor استنادًا إلى الأجهزة الفعلية.

أثناء وجود الحاويات نحن نستخدم بعض الميزات  وهناك ميزات أخرى  ولكن نريد فقط لفت انتباهك إلى ميزتين

نواة لينكس التي تسمح بوهم العزلة لعملياتنا.

وأول ما أريد التحدث عنه هو مساحات الأسماء ،

وهذا ما يسمح بالتخصيص

ومظهر أن كل مثيل من الحاوية له نظام تشغيل خاص به.

ثم لدينا "مجموعات المجموعة" (المجموعات الضابطة) ،

من هم المسؤولون عن مراقبة وقياس مواردنا

للتأكد من عدم فرض ضرائب على نظامنا بالحاويات ،

نحد من كمية الموارد التي يمكنهم الوصول إليها ،

نحن نراقب ما هو عليه ونكون قادرين على التحكم بالضبط في ما نقدمه لكل حاوية.

لذلك لدينا بعض التحكم الدقيق في الموارد التي تتدفق إلى حاوياتنا.

بينما في برنامج Hypervisor الخاص بنا ، نقوم بإنشاء ... لدينا عزلة عن أجهزتنا المختلفة.

وآخر شيء أريد التحدث عنه هو هذا الاختلاف في قابلية النقل والمرونة.

ومن خلال أجهزتنا الافتراضية ، أصبح لدينا ما أحب أن أفكر فيه على أنه مرونة لا نهائية في أجهزتنا ،

لأننا نصنع جهازًا مختلفًا عن خادمنا ،

نقول: "هذا هو عدد المعالجات التي أريد أن يمتلكها هذا الجهاز" ،

"هذا هو مقدار ذاكرة الوصول العشوائي التي أرغب في امتلاكها" ،

ويمكننا التحلي بالمرونة بشأن نوع النظام الذي نبنيه.

بينما مع الحاويات لدينا قابلية لا نهائية للتنقل ، فهذه هي الطريقة التي أحب أن أفكر بها ،

لأن لدينا الحاوية الخاصة بنا والتي تم تعريفها في ملف واحد

وهذا معروف للعديد من الأشخاص باسم ملف Docker.

ولكن لدينا في الأساس بضعة أسطر من النص توضح بالضبط كيفية إنشاء الحاوية الخاصة بنا ،

كيف ندير حاويتنا ، ما هي المكتبات المطلوبة ،

ما هي الخطوات التي يجب اتباعها لبناء الحاوية الخاصة بنا.

ونأخذ هذا الملف ، ونشغله على أجهزتنا ، ويمكننا تشغيل تطبيقنا.

نقوم بتخزينها في مستودع في مكان آخر

، ثم يمكننا تشغيله على أجهزة مختلفة.

يمكننا أن نأخذ ملفنا الوحيد ونكون قادرين على جعله يعمل في أي مكان تقريبًا ،

لا توجد قيود على الأجهزة ، شيء من هذا القبيل.

حسنًا ، هناك بعض قيود الأجهزة إذا كنت تبني حاوياتك لـ ARM أو x86 ،

ولكن بخلاف ذلك لديك قدر كبير من المرونة

في كيفية تشغيل الحاويات الخاصة بك.

لقد تحدثت كثيرًا عن المحاكاة الافتراضية من النوع 1 ، والنوع الأول من برامج Hypervisors ،

لكن الحقيقة هي أن هناك نوعًا آخر من المحاكاة الافتراضية يسمى النوع 2.

لذا في النوع 1 ، حيث نتعامل مع برنامج Hypervisor أعلى أجهزتنا مباشرةً ،

صفقاتنا من النوع 2 أعلى قليلاً.

وربما يكون هذا هو نوع المحاكاة الافتراضية التي يمكنك التفاعل معها يوميًا ،

حيث نقوم بتشغيل شيء مثل الصندوق الافتراضي أو المتوازيات.

حتى نتمكن من الاستفادة من المرونة التي توفرها أجهزة Hypervisor خفيفة الوزن من النوع 2

وإمكانية النقل التي توفرها الحاويات وتشغيلها معًا.

نرى التقنيات المتعلقة بالأجهزة الافتراضية تنضج ، كما هو الحال مع KubeVirt ،

ونرى في الإصدارات الجديدة من Kubernetes و OpenShift ،

أنه يمكننا تشغيل أجهزة وحاويات افتراضية لا تشبه التقنيات المنافسة ،

ولكن كتقنيات يمكن أن تعمل معًا اعتمادًا على كيفية استخدامنا لها. 

تعليقات