کلید اصلی درک مفهوم مجازی سازی، درک مفهومی با نام هایپروایزر (Hypervisor) است. به طور کلی و در یک تعریف جامع، Hypervisor یک واسط است که بین دو لایه سیستمی قرار می گیرد.
اولین نکته این است که این لایه واسط می تواند یک نرم افزار، یک Firmware و یا یک سخت افزار باشد. نکته دوم اینکه وظیفه هایپروایزر این است که وظایف و قابلیت های لایه پایین تر را در اختیار لایه بالاتر قرار دهد، به نحوی که لایه بالاتر از تغییرات و مکانیزم های لایه زیرین کاملا بی اطلاع باشد؛ به عبارتی Hypervisor وظیفه Abstraction (انتزاع) و Isolation (استقلال) را بر عهده دارد. نکته سوم این که همانطور که گفته شد، Hypervisor یک واسط بین دو لایه سیستمی است؛ Hypervisor می تواند بین سخت افزار و سیستم عامل قرار بگیرد و منجر به ایجاد ماشین مجازی یا Virtual Machine شود، و یا اینکه بین لایه سیستم عامل و Application قرار گرفته و منجر به Application Virtualization شود و یا اینکه در لایه شبکه فعالیت کرده و تکنولوژی Network Virtualization را پدید آورند.
با این حال امروزه Hypervisor را عموماً به همان معنی اول یعنی واسط نرم افزاری که بین سخت افزار و سیستم عامل قرار می گیرد می شناسند. در نهایت Hypervisor در هر لایه ای که قرار بگیرد، هدفش مجازی سازی خواهد بود.
هایپروایزر که اصطلاحاً با نام Virtual Machine Monitor (VMM) یا ناظر ماشین مجازی نیز شناخته می شود، نرم افزاری است که امکان مجازی سازی و ساخت ماشین مجازی را برای شما فراهم خواهد کرد. سروری که Hypervisor روی آن نصب شده است را اصطلاحا Host Machine و به ماشین های مجازی ساخته شده اصطلاحاً Guest Machine نیز گفته می شود. مجازی سازی مفهومی است که از دهه 1960 و به واسطه فعالیت های شرکت IBM شکل گرفته است. مجازی سازی در لایه Compute به این معنی است که یک نرم افزار واسط بین سیستم و عامل و سخت افزار قرار گیرد، با این هدف که قابلیت ها و وظایف لایه سخت افزار از دید لایه سیستم عامل کاملاً مخفی کرده و مستقل از سخت افزار عمل نماید. به این نرم افزار واسط یا به اصطلاح Software Abstraction Layer، Hypervisor یا virtual machine monitor (VMM) گفته میشود.
انواع هایپروایزر (Hypervisior)
در یک مدل تقسیم بندی هایپروایزر ها دو نوع هستند:
Type 1: Bare-Metal Hypervisor
در مدل Type 1یا همان Bare-Metal Hypervisor، Virtual Machine Monitor (VMM) مستقیماً روی سخت افزار قرار خواهد گرفت.
در این نوع هایپروایزر کامپیوتر یا سروری که هایپروازر مستقیما بر روی آن نصب می شود را Host machine می نامند.علاوه بر این به هر یک از ماشین های مجازی Guest Machine می گویند. این نوع هایپروایزر Guest operating systems یا ماشین های مهمان را بر روی سخت افزار کنترل و مدیریت می کند.
به عنوان مثال ESXi محصول شرکت VMware ، و Microsoft Hyper-V و Citrix XenServer، نمونه هایی از Hypervisor Type 1 هستند. مجازی سازی در این مدل مزایای فراوانی خواهد داشت؛ برای کسب اطلاعات بیشتر به اینجا مراجعه کنید.
مثال های دیگری از هاپیروایزر نوع اول:
- AntsleOs, Xen, XCP-ng, Oracle VM Server for x86
Type 2: Hosted Hypervisor
در مدل Type 2 (Hosted Hypervisor)، Virtual Machine Monitor (VMM) یک برنامه کامپیوتری است که روی سیستم عامل نصب میشود..برای مثال فرض کنید یک سیستم عامل وجود دارد که در بالای این سیستم عامل هایپروایزر مربوطه وجو دارد.که یک محیط شبیه ساز برای اجرای سایر سیستم عامل های دیگر فراهم می کند.علاوه بر این سیستم عامل Guest به عنوان یک process بر روی هاست اجرا می شود.
VMware Workstation، Microsoft Virtual PC و Oracle VirtualBox، نمونه هایی از Hypervisor Type 2 هستند.
OS Layer Virtualization
در یک مدل دیگر که با نام OS Layer Virtualization یا Single Kernel Image (SKI)شناخته می شود؛ عملکرد Hypervisor بسیار شبیه Hypervisor Type 2 است، با این تفاوت که سیستم عامل ماشین های مجازی (Guest OS)؛ همان سیستم عاملی است که مستقیم روی سخت افزار در حال اجرا می باشد (Host OS).
در تمام مدل های ارائه شده فوق، Hypervisor تمام تلاش خود را می کند که ماشین مجازی و برنامه های در حال اجرا روی ماشین مجازی، به هیچ وجه متوجه حضور یک لایه واسط نشده و درکی از آن نداشته باشند، به نحوی که گویا ماشین مجازی مستقیماً روی سخت افزار در حال اجرا است. اما گاهی اوقات نیاز است که ماشین مجازی از وقوع مجازی سازی مطلع باشد؛ این مدل از مجازی سازی را اصطلاحاً OS Assisted Virtualization یا Paravirtualization می گویند. به عنوان مثال شرکت VMware در مجازی سازی درایور کارت شبکه و SCSI Controller از این تکنولوژی استفاده می کند؛ که منجر به نصب درایور کارت شبکه VMXNET3 و Paravirtual SCSI Controllerخواهد شد. همانطور که می دانید برای استفاده از این دو درایور باید VMware Tools روی ماشین مجازی شما نصب شده باشد، در واقع شما با نصب VMware Tools روی ماشین مجازی خود یک Backdoor جهت ارتباط ماشین مجازی و VMM ایجاد می کنید که در این موارد خاص باعث افزایش کارایی سیستم نیز خواهد شد.
تفاوت بین Type 1 and Type 2 Hypervisor
تفاوت اصلی بین Type 1 و Type 2 در این است که در نوع اول یا همان Type 1 ،هایپروایزر مستقیما بر روی سخت افزار هاست اجرا می شود و در حالی است که در نوع دوم یا همان Type 2،هایپروایزر بر روی یک سیستم عامل به واسطه نرم افزار مربوطه اجرا می شود.
اجرای برنامه ها در سیستم های مجزای فیزیکی باعث اتلاف منابع می شود که مجازی سازی برای حل این مشکل راهکاری را فراهم نموده است.در حقیقت مجازی سازی فرآیند ساخت سرور بر روی هاست، شبکه یا استوریج می باشد.همچنین منابع را بین محیط اجرایی تقسیم می نماید.
هایپروایزر نوع 1 مستقیما بر روی سخت افزار به جهت کنترل سخت افزار و مدیریت سیستم عامل های Guest نصب می شود در حالی که هایپروایزر نوع 2 بر روی یک سیستم عامل دیگر به عنوان یک برنامه نصب می شود.
هایپروایزر نوع 1 را native or Bare Metal Hypervisor در حالی که هایپروایزر نوع 2 را Host OS Hypervisor می نامند.
کارایی یا Functionality
به دلیل این که هایپروایزر نوع 1 مستقیما بر روی سخت افزار یک کامپیوتر یا یک سرور فیزیکی نصب می شود و هایپروایزر نوع 2 خود بر روی یک سیستم عامل به عنوان مثال ویندوز یا لینوکس و یا … نصب می گردد از کارایی بالاتری برخوردار می باشد.
مثال هایی از انواع هایپروایزرها:
AntsleOs, Xen, XCP-ng, Microsoft Hyper V, VMware ESX/ESXi, Oracle VM Server for x86 مثال هایی از هایپروایزر نوع 1 می باشند در حالی که VMware Workstation, VMware Player, VirtualBox, Parallel Desktop for Mac مثال هایی از هایپروایزر نوع 2 می باشند.
معماری Hypervisor:
چه cpu های از مجازی سازی پشتیبانی می کنند؟
با فراگیر شدن مجازی سازی، این تکنولوژی به سرعت مورد توجه شرکتهای تولید کننده سخت افزار قرار گرفت. خصوصاً Intel و AMD. شرکت Intel قابلیت Intel Virtualization Technology (Intel-VT) و شرکتAMD، قابلیت AMD Virtualization (AMD-V) را در پردازندههای خود معرفی کردند تا به لایه Hypervisor در فرآیند مجازی سازی و ایزوله کردن دسترسی ماشین های مجازی به منابع سخت افزاری کمک کنند. هدف نهایی این بود که برخی از فعالیتهایی که Hypervisor درگیر انجام آن است، به عهده CPU گذاشته شود تا با سرعت و کارایی به مراتب بالاتری در لایه سخت افزار انجام گرفته و سرباز لایه مجازی یا همان Hypervisor را کاهش دهند. این مدل از مجازی سازی را اصطلاحاً Hardware Assisted Virtualization می گویند. در سال 2006 نسل اول Intel-VT و AMD-V معرفی شد، اما هر دو شرکت به سرعت در حال پیشرفت در زمینه Hardware Assisted Virtualization و تعامل با شرکت هایی نظیر VMware هستند.
مدیریت ماشین مجازی با استفاده از Hypervisor
همانطور که میدانید یک اصل مهم مجازی سازی در لایه Hypervisor، به اشتراک گذاشتن منابع سرور فیزیکی بین ماشینهای مجازی است؛ این به اشتراک گذاری منابع باید به نحوی باشد که ماشین های مجازی کاملاً از هم ایزوله بوده تا امنیت مجازی سازی زیر سوال نرود! وظیفه Hypervisor، مدیریت ماشین های مجازی در دسترسی اشتراکی به منابع سرور فیزیکی است؛ به نحوی که هر ماشین مجازی احساس کند کل منابع سرور فیزیکی را در اختیار دارد. واضح است که تمام منابع فیزیکی سرور به طور کامل در اختیار Hypervisor خواهد بود؛ از این رو مدیریت ماشین های مجازی در دسترسی اشتراکی به منابع فیزیکی، از جمله مهمترین وظایف Hypervisor است. درست در زمانی که همه اعتقاد داشتند مجازی سازی به خاطر چالش Isolation غیر ممکن خواهد بود، این شرکت VMware بود که در سال 1998 موفق به ارائه راهکارهایی جهت مجازی سازی پلتفرم x86 شد. شکل زیر خلاصهای از روند مربوط به پیشرفت تکنولوژیمجازی سازی را نمایش می دهد (قسمت های آبی رنگ پیشتر تکنولوژی مربوط به شرکت VMware را نمایش می دهند).
در حال حاضر ESXi به عنوان موفق ترین و جامع ترین راه کار هایپروایزر مشغول به فعالیت است و بخش عمده ای از بازار مجازی سازی سرورها را در اختیار دارد. جهت کسب اطلاعات بیشتر راجع به این محصول و آموزش نصب آن به نوشته زیر مراجعه کنید.