يقوم مشروع NetBSD بتطوير برنامج مراقبة NVMM جديد

مطورو مشروع NetBSD أعلن حول إنشاء برنامج Hypervisor جديد ومجموعة المحاكاة الافتراضية المرتبطة به، والتي تم تضمينها بالفعل في فرع NetBSD الحالي التجريبي وسيتم تقديمها في الإصدار المستقر من NetBSD 9. يقتصر NVMM حاليًا على دعم بنية x86_64 ويوفر واجهتين خلفيتين لـ تمكين آليات المحاكاة الافتراضية للأجهزة: x86-SVM مع دعم ملحقات المحاكاة الافتراضية لوحدة المعالجة المركزية AMD وx86-VMX لوحدات المعالجة المركزية Intel. في شكله الحالي، من الممكن تشغيل ما يصل إلى 128 جهازًا افتراضيًا على مضيف واحد، ويمكن تخصيص ما يصل إلى 256 نواة معالج افتراضي (VCPU) لكل منها و128 جيجابايت من ذاكرة الوصول العشوائي.

يتضمن NVMM برنامج تشغيل يعمل على مستوى نواة النظام وينسق الوصول إلى آليات المحاكاة الافتراضية للأجهزة، ومكدس Libnvmm الذي يعمل في مساحة المستخدم. يتم التفاعل بين مكونات kernel ومساحة المستخدم من خلال IOCTL. إحدى ميزات NVMM التي تميزه عن برامج Hypervisor مثل KVM هي HAXM و Bhyve، هو أنه على مستوى kernel يتم تنفيذ الحد الأدنى المطلوب فقط من مجموعة الارتباطات حول آليات المحاكاة الافتراضية للأجهزة، ويتم نقل جميع أكواد محاكاة الأجهزة من kernel إلى مساحة المستخدم. يتيح لك هذا الأسلوب تقليل كمية التعليمات البرمجية التي يتم تنفيذها بامتيازات مرتفعة وتقليل مخاطر تعريض النظام بأكمله للخطر في حالة حدوث هجمات على نقاط الضعف في برنامج Hypervisor. بالإضافة إلى ذلك، تم تبسيط عملية تصحيح الأخطاء واختبار المشروع بشكل ملحوظ.

ومع ذلك، Libnvmm نفسها لا تحتوي على وظائف المحاكي، ولكنها توفر فقط واجهة برمجة التطبيقات (API) التي تسمح لك بدمج دعم NVMM في المحاكيات الموجودة، على سبيل المثال، QEMU. تغطي واجهة برمجة التطبيقات وظائف مثل إنشاء جهاز افتراضي وتشغيله، وتخصيص الذاكرة لنظام الضيف، وتخصيص وحدات VCPU. لتحسين الأمان وتقليل نواقل الهجوم المحتملة، يوفر libnvmm فقط الوظائف المطلوبة صراحةً - افتراضيًا، لا يتم استدعاء المعالجات المعقدة تلقائيًا وقد لا يتم استخدامها على الإطلاق إذا كان من الممكن تجنبها. تحاول NVMM إبقاء الأمور بسيطة، دون أن تصبح معقدة للغاية، وتسمح لك بالتحكم في أكبر عدد ممكن من جوانب عملك.

يقوم مشروع NetBSD بتطوير برنامج مراقبة NVMM جديد

تم دمج الجزء على مستوى النواة من NVMM بشكل محكم مع نواة NetBSD، ويسمح بتحسين الأداء عن طريق تقليل عدد مفاتيح التبديل بين نظام التشغيل الضيف والبيئة المضيفة. من ناحية مساحة المستخدم، يحاول libnvmm تجميع عمليات الإدخال/الإخراج الشائعة وتجنب إجراء مكالمات النظام دون داع. يعتمد نظام تخصيص الذاكرة على النظام الفرعي pmap، والذي يسمح لك بطرد صفحات ذاكرة الضيف إلى قسم المبادلة في حالة نقص الذاكرة في النظام. إن NVMM خالٍ من الأقفال والمقاييس العامة بشكل جيد، مما يسمح لك باستخدام نوى مختلفة لوحدة المعالجة المركزية في الوقت نفسه لتشغيل أجهزة افتراضية ضيف مختلفة.

تم إعداد حل يستند إلى QEMU يستخدم NVMM لتمكين آليات المحاكاة الافتراضية للأجهزة. يجري العمل حاليًا لإدراج التصحيحات المعدة في الهيكل الرئيسي لـ QEMU. مجموعة QEMU + NVMM موجودة بالفعل يسمح تشغيل أنظمة الضيف بنجاح باستخدام FreeBSD وOpenBSD وLinux وWindows XP/7/8.1/10 وأنظمة تشغيل أخرى على أنظمة x86_64 مع معالجات AMD وIntel (لا يرتبط NVMM نفسه ببنية معينة، على سبيل المثال، إذا تم إنشاء الواجهة الخلفية المناسبة سيكون قادرًا على العمل على أنظمة ARM64). من بين مجالات التطبيق الإضافية لـ NVMM، يُلاحظ أيضًا عزل التطبيقات الفردية في وضع الحماية.

يقوم مشروع NetBSD بتطوير برنامج مراقبة NVMM جديد

المصدر: opennet.ru

إضافة تعليق