انواع مجازی سازی
مجازی سازی یا ماشین مجازی چیست؟
به طور خلاصه استفاده از سخت افزار و منابع سخت افزاری شامل حافظه، پردازنده، دیسک، کارت شبکه و … در یک سیستم کامپیوتری برای راه اندازی و استفاده (میزبانی) بیش از یک سیستم عامل به صورت همزمان را مجازی سازی می نامیم.
با این تعریف سیستمهایی که داری بوت دو یا چند گانه هستند و در هنگام بوت شدن یک سیستم عامل انتخاب شده و کنترل سخت افزار را بر عهده می گیرد در حیطه مجازی سازی قرار نمی گیرند.
انواع مجازی سازی
-
Emulation
در این حالت سخت افزار ماشین مجازی (HOST) به صورت کامل شبیه سازی می شود و ماشین مجازی ها (guest) به صورت کامل می توانند روی( هرنوع معماریcpuای) سیستم نصب گردند مثال این نوع سیستم مجازی سازی Microsoft’s VirtualPC, WinE, VirtualPC for Mac, QEMU می باشند.
مزیت ها: مستقل از معماری سخت افزار عمل می کند
معایب: سربار بالای اینترفیس ارتباطی بین host و guest ها می باشد که منجربه کندی زیاد guest ها می شود
-
Full/Native Virtualization
معماری های x86 دارای یک رویه دسترسی بودند که به سیستم عامل اجازه دسترسی در دو سطح ۱-kernel space و ۲- privileged mode می دادند وapplication ها نیز در مودهای ۱-user space و ۲-unprivileged mode اجرا می شدند و در نتیجه برنامه ها امکان دسترسی مستقیم به cpu و یا حافظه را نداشتند در معماری های جدید مادربوردها و cpu های اینتل و amd قابلیتی به نام intel-vt و AMD-V ایجاد شده است که به cpu اجازه می دهد همه دستورات را درunprivileged virtual machine اجرا می کند و به نرم افزارها اجازه میدهد که از مزایا و قابلیت های آن به صورت مستقیم بهر مند شود
Full یا native نوعی از مجازی سازی می باشد که به صورت کامل guest ها را ایزوله می کند در این حالت سخت افزار ماشین مجازی (HOST)از طریق API هایی که تعریف میکند و همچنین خودش از آنها استفاده می کند به ماشین مجازی ها اجازه دسترسی مستقیم به سخت افزار را می دهد
مزیت ها : در نتیجه دسترسی مستقیم به شتابدهنده های سخت افزاری منجر به افزایش سرعت ماشین مجازی ها و افزایش توان پردازشی خواهد شد
معایب : واز طرف دیگر این نوع تخیص منابع باعث محدودیت تعداد ماشین مجازی با توجه به سخت افزار مورد استفاده خواهد بود
تکنولوژی های مورد مثال xen, kvm, MSHypervisor, Virtual iron, VMware
-
Para-virtualization
این نوع مجازی سازی نوعی از پلت فرم ای است که بسیار شبیه به نوع emulation می باشد که قبلا توضیح داده شد و تفاوت آن با emulation در این است که با ایجاد تغییرات روی ماشین مجازی ها از طریق API هایی که دارد با سخت افزار ارتباط بر قرار می کند در نتیجه در این نوع تکنولوژی guest ها (ماشین مجازی ها) می بایست قابلیت تغییر دادن داشته باشند و source ها در دسترس باشد در حال حاضر می توان از guest های BSD و linux روی این نوع مجازی سازی استفاده کرد
مثال این نوع تکنولوژی xen می باشد
مزایت ها :به دلیل تغییراتی که در سطح هسته سیستم عامل های guest ایجاد می کند می تواند مدیریت خوبی روی swap و memory allocation داشته باشد همچنینمی توان به فرایند بوت سیستم های guest نیز دسترسی داشت
معایب :الزام در تغییر پذیر بودن سیستم عاملهای guest ایجاد محدودیت می کند به طور مثال نمی توان ویندوز را روی paravirtualization بالا آورد
-
OS-level virtualization
این نوع تکنولوژی مجازی سازی بر پایه یک کرنل می باشد و در این حالت سیستم عاملهای مجازی کرنل Host را به اشتراک می گذارند که فایل سیستم و memory و پروسس ها را برای ماشین مجازی ها فراهم می کند و همه درخواست ها از طریق این کرنل انجام می شود
مزیت ها: ای نوع سیستم مجازیسازی overhead کمی دارد و در نتیجه شما می توانید guest های زیادی روی آن load نمایید همچنین دسترسی مستقیم به root سیستم مجازی ها باعث می شود بتوانید قبلیت هایی نظیر ایجاد Quta و تغییرات در guest به صورت online داشته باشید مثلا تغییر ip و یا تغییر منابع مثل رم و هارد
معایب: سیستم عامل host و guest دقیقا باید مانند هم باشند یعنی سیستم مجازی ویندوز روی Host ویندوز و سیستم مجازی لینوکس روی لینوکس می تواند اجرا شود و همچنین در این نوع تکنولوژی به دلیل دشوار در ایزوله کردن guest ها بعضی از سرویس ها به صورت کامل در دسترس نخواهد بود مثل Iptables,ppp,..
تکنولوژی های مورد مثال Solaris Containers, BSD Jails, Linux Vserver openvz virtuozzoشکل ۴ بیانگر نحوه ارتباط host و guest می باشد
-
Application level virtualization
این شیوه مجازی سازی اجازه می دهد که شما در سطح application مجازی سازی داشته باشید و عملکرد آن اینگونه است که یک کپی از کامپوننت های برنامه که اشتراکی نیز نمی باشد را در اختیار کاربر قرار می دهد در پیاده سازی آن از تکنولوزی های پردازش تصویر استفاده می گردد مانند ۲X, Citrix, JVM شکل زیر بیانگر نحوه سرویس دهی این تکنولوژی می باشد