النموذج الأول: Unikernels كمرحلة في تطور Linux

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


صور - إيمون ماغواير - Unsplash

Unikernels كبديل


من المعروف أن Linux يستخدم نواة متجانسة . يدير العمليات ووظائف الشبكة والأجهزة الطرفية والوصول إلى نظام الملفات. ومع ذلك ، كما يكتب مؤلفو مقالة من ريد هات وجامعة بوسطن ( ص 1 ) ، فإن هذا الهيكل له عيوبه. على وجه الخصوص ، تُجبر التطبيقات عالية الأداء على استخدام أطر عمل مثل DPDK و SPDK للوصول دون عائق إلى أجهزة I / O التي تتجاوز النواة.

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

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

يتم إنفاق موارد مثل هذا النظام بشكل أكثر كفاءة. تتمتع Unikernels أيضًا بأداء أعلى من البنية الأساسية المتجانسة. السبب هو تبسيط مسارات الإدخال / الإخراج ، حيث يتم وضع كافة البيانات والملفات في مساحة عنوان واحدة. كما أنه يلغي الحاجة إلى تبديل السياق بين مساحة المستخدم ومساحة kernel.

قام فريق من المهندسين من جامعة بوسطن وريد هات بتطوير نموذج لينكس على أساس أحاديات. يسمى نظام التشغيل Unikernel Linux (UKL).

ماذا فعل المهندسون؟


وفقًا للمطورين ( ص 3 ) ، قاموا فقط بتغيير أحد عشر إضافة 20 سطرًا جديدًا من التعليمات البرمجية إلى Linux kernel v5.0.5 و glibc . ظلت النواة "الكلاسيكية" جاهزة للعمل - يمكن للمستخدم اختيار طريقة التجميع (UKL أو لا).

أنشأ المؤلفون مكتبة UKL صغيرة وضعوا فيها "بذرة" خاصة تحجب مكالمات النظام غير المستخدمة. كما قاموا بتعديل رابط kernel لتحديد نوع جديد من القطع ، على سبيل المثال TLS (التخزين المحلي لمؤشر الترابط) من ثنائيات ELF. تم تعديل عملية الإنشاء أيضًا ، والتي تجمع الآن بين رمز التطبيق و glibc ومكتبة UKL في ملف ثنائي واحد.

المهندسين يعملون على عدد من أوجه القصور. على سبيل المثال ، يخططون لنقل ذاكرة TLS من مساحة kernel والتخلي عن vmalloc عند إدارة تخصيص الذاكرة لتبسيط النظام.

الآراء


يقول مطورو Red Hat أن UKL يمكن أن تكون بديلاً كاملاً لبدء العمليات التي تعمل مباشرةً مع الأجهزة (تجاوز النواة). يوضح مؤلفو المقالة الأصلية ( ص 2 ) أن خدمة التخزين المؤقت المحفوظة تحت unikernels تعمل بنسبة 200٪ أسرع من نظام Linux.

على وجه العموم ، استجاب مجتمع تكنولوجيا المعلومات بشكل إيجابي لمبادرة مؤلفي المقال الأصلي. أشار سكان Hacker News إلى أن بنية unikernels ستزيد بشكل كبير من أمان بيئة البرامج. في حالة اختراق التطبيق ، سيتمكن المتسلل من الوصول إلى ملفه الثنائي فقط.


صور - جاك يونغ - Unsplash

اقترح أحد سكان Hacker News حلاً جذريًا - لإعادة كتابة نواة Linux تحت عنوان unikernels من الصفر إلى Rust. ووفقا له ، فإن اللغة سوف تحل المشكلة مع عدد كبير من الأخطاء المتعلقة بأمن الذاكرة. وصف مستخدم آخر الفكرة بأنها جيدة ، لكنه اقترح الانتظار لبضع سنوات لمطوري اللغات للتعامل مع عدم استقرار المكتبة. على الرغم من أن أحد المتحمسين يكتب بالفعل نظام التشغيل الخاص به في رست. يمكن العثور على المصادر على جيثب .

تطبيقات أخرى


UKL ليس التطبيق الوحيد لنظام التشغيل القائم على unikernels. على سبيل المثال ، يتم تطوير حل مماثل من قبل فريق من المهندسين من جامعة بوليتكنيك في فرجينيا ، كوالكوم وجامعة راين-ويستفاليان التقنية في آخن في ألمانيا. ويسمى جوهرها خفيفة الوزن HermiTux . يتيح لك تشغيل التطبيقات بسرعة أعلى برنامج Hypervisor - وفقًا للمؤلفين ، لا يتجاوز وقت التنزيل 0.1 ثانية. يبلغ استهلاك الذاكرة في بيئة الاختبار 9 ميغابايت ، أي أقل بعشر مرات من نواة Linux الكلاسيكية.

من المنطقي أيضًا أن نذكر نظام التشغيل MirageOS OS المطوّر على OCaml. يمكن تشغيل kernel أعلى من برامج Hypervisor Xen و KVM و BHyve و VMM (OpenBSD) ، وكذلك على الأنظمة الأساسية المحمولة. يدعم النظام عدة عشرات من مكتبات OCaml لأداء عمليات الشبكة (DNS ، SSH ، OpenFlow ، HTTP ، XMPP) ، العمل مع المخازن والمعالجة المتوازية للبيانات. يمكننا القول أن MirageOS هو واحد من أول المشاريع الناجحة unikernels. ومن المثير للاهتمام ، يتم تطبيق موقع مدونته أيضًا على أنه unikernel.

يتم استخدام أنظمة التشغيل هذه بالفعل في بيئات الإنتاج من قبل العديد من المؤسسات - على سبيل المثال ، جامعة كامبريدج و IBM و Ericsson و Docker . من المحتمل أنه قريبًا سينضم نظام جديد إلى أنظمة التشغيل هذه - Unikernel Linux.



ما نكتب عنه في مدونة الشركات:

Source: https://habr.com/ru/post/ar462357/


All Articles