Domain 0
در مقابل پارتیشن های موجود در Hyper-V که هریک مسئول نگهداری یک سیستم عامل بودند، در اینجا چندین دامنه وجود دارد. دامنه صفر که در واقع یک هسته تغییر یافته لینوکس است، تنها ماشین مجازی در حال اجرا بر روی Xen است که دسترسی مخصوصی برای کار با ورودی/ خروجی های استاندارد و نیز ارتباط با دیگر ماشین های مجازی دارد. بر روی هر مجازی ساز Xen قبل از اجرای هر سیستم عامل دیگری لازم است دامنه صفر اجرا گردد.
در دامنه صفر دو راه انداز برای پشتیبانی درخواست های سیستم های عامل میهمان وجود دارد. یکی راه انداز شبکه، برای ارتباط مستقیم با سخت افزار شبکه و دیگری راه انداز دیسک، برای برای کار با دیسک محلی و ذخیره و بازیابی اطلاعات بر حسب نیاز سیستم های عامل ]۵۱[.
Domain U
به هر ماشین مجازی در Xen یک دامنه U[108] گفته می شود. همچنین تمام ماشین های مجازی که به صورت ضمنی مجازی سازی شده اند، به عنوان Domain U PV Guests و ماشین هایی که به صورت کامل مجازی سازی شده اند به عنوان Domain U HVM Guests شناخته می شوند.
لازم به ذکر است که راه اندازی ماشین های HVM بر روی Xen در صورتی امکان پذیر است که پردازنده از تکنولوژی مجازی سازی سخت افزاری[۱۰۹] پشتیبانی نماید. این امکان در پردازنده هایی مانند اینتل سری VT-x و پردازنده های AMD سری AMD-V وجود دارد ]۵۲[.
هر یک از ماشین های PV شامل دو راه انداز برای شبکه و دیسک هستند در حالی که ماشین های HVM این راه انداز های را ندارند و در عوض برای هر یک از آنها یک دیمون[۱۱۰] در دامنه صفر به نام Qemu-dm مسئول برقراری ارتباط سیستم عامل میهمان (دامنه U) با کارت شبکه و دیسک فیزیکی است. در حالت دوم، لازم است نرم افزاری به نام Xen virtual firmware بر روی سیستم عامل میهمان اجرا شود تا بتواند BIOS را برای راه اندازی سیستم عامل شبیه سازی نماید (شکل ۳٫۳).
شکل ۳٫۳٫ نحوه سرویس دهی به ماشین میزبان توسط Qemu-DM ]51[
Xenstored
این دیمون مسئول نگهداری یک رجیستری از اطلاعات حافظه و وضعیت کانال های ارتباطی بین دامنه صفر و دامنه های U می باشد. ماشین مجازی مستقر در دامنه صفر با کنترل این رجیستری، ارتباط دیگر ماشین های مجازی را با منابع سخت افزاری مدیریت می کند.
ارتباطات مابین دامنه صفر و دامنه های U
همانطور که قبلا گفته شد، Xen Hypervisor قادر به ارائه سرویس شبکه و دیسک به سیستم های عامل میهمان نمی باشد بنابراین این سیستم های عامل باید از طریق hypervisor با سیستم عامل موجود در دامنه صفر ارتباط برقرار کنند تا سرویس مورد نظر خود را از وی بگیرد.
برای مطالعه بیشتر در مورد Xen به ]۵۳[ الی ]۵۸[ مراجعه کنید.
VMware ESXi
این نرم افزار مجازی سازی که یکی از معروفترین hypervisor های موجود بوده و بیشترین سهم بازار مجازی سازی را نیز در اختیار دارد، امکان پیاده سازی مجازی سازی کامل را به کاربر داده و بنابراین سیستم های عامل میهمان کاملا مستقل از hypervisor و بی اطلاع از آن کار می کنند.
همچنین این hypervisor بر خلاف دو نمونه قبلی نیازی به اجرای سیستم عامل میزبان ندارد و مستقیما بر روی سخت افزار نصب می گردد.
در ادامه به تشریح کلیات معماری آن خواهیم پرداخت ]۳[ و ]۵۹[.
این نرم افزار نیز مانند نمونه های قبلی از یک ساختار لایه ای پیروی می کند. در پائین ترین بخش، یک هسته تغییر یافته لینوکس به نام VMkernel قرار دارد که به طور مستقیم بر روی سخت افزار قرار گرفته است. وظیفه این هسته مدیریت همه پروسه ها از جمله برنامه های مدیریتی، agentها و نیز ماشین های مجازی است. همچنین این بخش مدیریت سخت افزارها و منابع ماشین فیزیکی را بر عهده دارد. در واقع این هسته تمام وظایف یک سیستم عامل از جمله ایجاد پروسه ها، کنترل و سیگنال، مدیریت فایل سیستم و threadها را برای ماشین انجام می دهد. همچنین به طور اخص، VMkernel برای پشتیبانی از اجرای چندین ماشین مجازی طراحی شده است. از اصلی ترین پروسه هایی که بر روی VMkernel اجرا می شوند میتوان به موارد زیر اشاره کرد:
رابط مستقیم کاربر (DCUI)[111] که یک رابط سطح پایین برای مدیریت و پیکر بندی hypervisor است و یک ارتباط کنسولی برای پیکر بندی اولیه در اختیار می گزارد.
VMM[112] پروسه ای است که محیطی اجرایی برای ماشین مجازی ایجاد می کند. هر ماشین مجازی، VMM و پروسه کمکی VMX مخصوص به خود را دارد.
Agent هایی که وظیفه ارائه سرویس های سطح بالا مانند HA را بر عهده دارند.
CIM[113] رابطی است که به کمک API های استاندارد، امکان مدیریت و نگهداری سخت افزار را به صورت راه دور فراهم می کند.
شکل ۳٫۴ نمایی کلی از معماری گفته شده را نشان می دهد.
شکل ۳٫۴٫ شمایی از معماری VMware ESXi ]3[
بررسی اجزاء معماری VMware ESX
در این بخش به بررسی دقیقتر اجزاء سازنده VMware ESX خواهیم پرداخت.
VMkernel
این هسته در واقع یک سیستم عامل از خانواده POSIX است که توسط شرکت VMware طراحی شده و همه وظایف یک سیستم عامل مانند ایجاد و مدیریت پروسه ها، سیگنال ها و فایل سیستم و مدیریت I/O را انجام می دهد. همچنین این هسته به طور اختصاصی برای مدیریت چندین ماشین مجازی طراحی شده است و وظایف زیر را برای آنها انجام می دهد:
زمانبندی منابع
مدیریت پشته های I/O
مدیریت راه انداز سخت افزارها