تکنولوژی KVM هسته مرکزی سامانه مجازیسازی PVM و همچنین یکی از محصولات متنوع Redhat در حوزه مجازیسازی را تشکیل میدهد. نقش KVM فعالسازی قابلیت کنترل و بهرهبرداری از تکنولوژی مجازیسازی سختافزاری در پردازندهها است. این تکنولوژی به ماشین مجازی اجازه میدهد با سرعتی بسیار نزدیک به سیستم واقعی، در شرایط مختلف اجرا شود.
تکنولوژی KVM بهتنهایی یک درایور هسته لینوکس است، و فقط جزئی از ساختار مجازیسازی در محصول ماست. ابزارهای متعددی در سطح کاربر از جمله QEMU، و Sball (هسته مدیریت PVM)، و همچنین زیرسیستمهای مختلف کرنل نقش مهم و اساسی در غنی کردن ساختار مجازیسازی و امنسازی آن دارند.
در این مقاله فضای سمت کاربر (User Space) مجازیسازی KVM که این درایور را برای کاربریهای وسیع آماده میکند، مورد بررسی قرار میگیرد.
هسته PVM توسط سرویسی به نام اسبال (Sball) مدیریت میشود. QEMU و Sball زیربنای ساختار مجازیسازی محصولات رایانش ابری آوید، سامانه مجازیسازی سرور PVM و سامانه میزکار مجازی PVM هستند. در واقع این دو مکمل یکدیگر هستند.
ابزار Qemu یک VMM هست، Virtual Machine Monitor یا به عبارتی فراهمکننده یک ماشین مجازی است. Qemu شبیهسازی سختافزار را انجام میدهد و یک رابط سطح پایین جهت تعامل با ماشین مجازی فراهم میکند. یک پراسس Qemu به تنهایی یک ماشین مجازی است که میتوان با ارسال یک سیگنال به پراسس مربوط به آن به اجرای ماشین مجازی خاتمه داد و یا منابع مصرفی توسط آن را با دستور top و ... مشاهده کرد.
اسبال تمامی فعالیتهای عملیاتی بر روی ماشین مجازی و نحوه اجرای Qemu را مدیریت میکند، فعالیتهایی نظیر کلاسترینگ، HA، روشن کردن، خاموش کردن، مایگریت، رپلیکیت، بکآپ، آرشیو، ریاستور، مدیریت کاربران، مدیریت لاگ، همه و همه توسط اسبال انجام میشود.
مجموعهای از ابزارها، کتابخانهها، تنظیمات توسط اسبال جهت دستیابی به زیرساختی پایدار، مدیریت و به کارگیری میشوند. مجموعه PVM (که هسته مرکزی آن Sball است) صرفا به عنوان یک مدیر Qemu نیست، بلکه تمامی فرآیند و چرخه زیرساخت IaaS را مدیریت میکند.
تفکیک وظیفه بین اسبال و Qemu از منظر امنیتی نیز بسیار مهم است. نرمافزار Qemu به صورت مستقیم با گست(ماشین مجازی) در ارتباط است و در معرض خطرات گوناگونی است. بنابراین لازم است Qemu به شکل مناسب مدیریت شود تا هر ماشین صرفا به منابع مورد نیاز خود دسترسی داشته باشد.
از سوی دیگر اسبال و زیرساخت مدیریتی PVM، دردسترس و دید ماشین مجازی نیست و بهترین مکان جهت اعمال محدودیتها و سایر فعالیتهای مدیریتی در فضایی ایزوله است. اسبال تکنولوژیهای گوناگونی را استفاده میکند تا مطمئن شود Qemu به منابع دیگر ماشینهای مجازی دسترسی ندارد.
نرمافزار libvirt محصول شرکت ردهت است که جهت مدیریت KVM و Qemu توسعه یافته و به صورت گسترده توسط محصولات گوناگون ردهت استفاده میشود.
یکی از قابلیتهای ارزنده libvirt استفاده از SELinux جهت مدیریت Qemu و ارتباطات آن است.
زیرساختهای گوناگونی جهت مدیریت KVM توسط شرکتها و گروههای مختلف توسعه یافته که به نوعی جایگزین Qemu هستند.
یکی از این ابزارها kvmtool است که در سال ۲۰۱۱ توسعه آن شروع شده و بیشتر توسط توسعهدهندگان کرنل لینوکس مورد استفاده قرار میگیرد. این نرمافزار ابزاری برای توسعهدهندگان کرنل جهت ایجاد ماشینهای مجازی مورد نیازشان در مسیر توسعه لینوکس است که امروزه بیشتر برای انتقال KVM به معماریهای جدید مورد استفاده قرار میگیرد.
یکی دیگر از ابزارهای مدیریت ماشین برپایه KVM نرمافزار crosvm است. این ابزار توسط گوگل و برای اجرای برنامههای لینوکس در محیط ChromeOS توسعه یافته است. این پروژه در سال ۲۰۱۷ آغاز شده و جزو پروژه بزرگتری به نام Crostini است که دارای یک دیمون (سرویس) مدیریتی به نام Concierge میباشد که فعالیتی شبیه به اسبال را انجام میدهد.
نرم افزار crosvm برنامههای لینوکس را در محیط ChromeOS اجرا میکند.
یکی از نکات جذاب در مورد crosvm آن است که با زبان rust توسعه یافته است. این درحالیست که Qemu و KVM با زبان C و PVM با زبان ++C توسعه یافتهاند.
از آنجا که vmm در معرض مخاطراتی از جانب ماشین مجازی است، مشخصات امنیتی rust میتواند قابل توجه باشد.
به همین دلیل آمازون نیز متمایل به استفاده از rust در فعالیتهایش جهت اجرای AWS Lambda در قالب ماشین مجازی شده است. نرمافزار VMMی که آمازون برای اجرای Lambda استفاده میکند، ابزار متنبازی به نام Firecracker است که از crosvm منشعب شده است.
ابزار Firecracker قابلیتهای محدودی دارد و شما مجبور هستید از کرنل مشخصی به جای کرنل دیسترو مورد علاقه خودتان استفاده کنید. ساختار آمازون جهت مدیریت Firecracker متنباز نیست، مگر یک جزء sandboxing به نام jailer.
این ابزار namespaceها و seccomp را به شیوه مناسب جهت اجرای پراسس Firecracker مدیریت میکند.
مهندسان آمازون پروژهای را با نام rust-vmm شروع کردهاند که یک همکاری جهت توسعه کتابخانههای عمومی (مورد نیاز برای همه)، برای پروژههای مجازیسازی است که با rust توسعه یافتهاند. این کتابخانهها میتوانند در سناریوهای مختلف بکارگیری KVM مورد استفاده قرار گیرند. شرکت Intel یک VMM را به نامcloud-hypervisor اینگونه توسعه داده است که میتواند به عنوان یک مرجع استفاده از rust-vmm شناخته شود.
یکی دیگر از کاربران rust-vmm پروژه Enarx شرکت ردهت هست. این پروژه در سال ۲۰۱۹ آغاز شده است، این پروژه چارچوبی جهت ایجاد TEE محیط اجرایی امن است. Enarx نیز با rust نوشته شده است اما به صورت مستقیم یک پروژه مجازیسازی نیست. این پروژه از KVM بر روی پلتفرمها یا پردازندههایی که از قابلیتهای مجازیسازی سختافزاری به منظور ایجاد TEE پشتیبانی میکنند استفاده میکند. به عنوان نمونه میتوان به قابلیت Secure Encrypted Virtualization بر روی سرورهای AMD EPYC اشاره کرد.
این مطلب را با بررسی دو پروژه به اتمام میرسانیم که در مرز خاکستری بین کانتینر و VM حرکت میکنند، gVisor و Kata Containers . هر دوی این پروژهها OCI Rutime را جهت مدیریت کانتینرها ایجاد میکنند و از KVM به منظور ایزوله ساختن کانتینر از هاست استفاده میکنند.
نرم افزار gVisor محصول گوگل شبیه به Enarx یک VMM نیست. این نرمافزار به جای ساخت رابط سختافزاری بر اساس ابزارهای شبیهسازی شده، مبادرت به مدیریت درخواستهای سیستم کال guest در سطح host میکند. این درخواستها توسط gVisor گرفته شده، پارامترهای آنها بازبینی و صحتسنجی میشوند و برای هاست ارسال میشوند. این لایه اضافی نسبت به کانتینرهای معمولی سطح امنسازی بیشتری با پذیرش اندک تقلیل در کارایی را ایجاد میکند.
از سوی دیگر Kata Containers یک ماشین مجازی ایجاد میکند که شبیه به کانتینر به نظر میرسد، به عنوان مثال بخشهایی از فایل سیستم را در هاست با ماشین مجازی به اشتراک میگذارد و ماشین مجازی را با Qemu یا Firecracker اجرا میکند. با توجه به محدودیتهای Firecracker، استفاده از Qemu نسخه توصیه شده برای اکثر استفادهها میباشد.
هر کدام از این پروژهها درسهای ویژهای برای توسعهدهندگان ما و Qemu دارند و دارای ایدههای نابی هستند که میتوانند در مسیر توسعه مورد استفاده قرار گیرند.
مسیر ما رو به آینده و برگرفته از درسهای آموزنده تمامی پروژهها تدوین میشود که شامل بازبینی طراحیهای انجام شده تاکنون و همچنین امکانسنجی استفاده از زبانهای پیشرفتهتری همچون Rust و Go به جای C++ در PVM میباشد.
تکنولوژی KVM قابلیتهای گوناگونی در جهت توسعه و استفاده از ماشینهای مجازی در سطوح مختلف، از سطوح Enterprise برای ایجاد ماشینهای مجازی تا تکنولوژیهای Sandboxing برای کانتینرها دارد.
ما در آوید KVM و Qemu را با توجه به قابلیتها و مسیر توسعه فعال این پروژهها انتخاب کردهایم و امیدواریم بر پایه ایدههای گرفته شده از سایر محصولات بتوانیم زیرساخت مطمئن و پیشرفتهتری برای پاسخگویی به نیازهای روز حوزه فناوری ایجاد کنیم.
منبع: پایگاه دانش شرکت رایانش ابری آوید