انواع مجازی سازی
مجازی سازی یا ماشین مجازی چیست؟
به طور خلاصه استفاده از سخت افزار و منابع سخت افزاری شامل حافظه، پردازنده، دیسک، کارت شبکه و … در یک سیستم کامپیوتری برای راه اندازی و استفاده (میزبانی) بیش از یک سیستم عامل به صورت همزمان را مجازی سازی می نامیم.
با این تعریف سیستمهایی که داری بوت دو یا چند گانه هستند و در هنگام بوت شدن یک سیستم عامل انتخاب شده و کنترل سخت افزار را بر عهده می گیرد در حیطه مجازی سازی قرار نمی گیرند.
انواع مجازی سازی
-
Emulation
در اين حالت سخت افزار ماشين مجازي (HOST) به صورت كامل شبيه سازي مي شود و ماشين مجازي ها (guest) به صورت كامل مي توانند روي( هرنوع معماريcpuاي) سيستم نصب گردند مثال اين نوع سيستم مجازي سازي Microsoft’s VirtualPC, WinE, VirtualPC for Mac, QEMU مي باشند.
مزيت ها: مستقل از معماري سخت افزار عمل مي كند
معايب: سربار بالاي اينترفيس ارتباطي بين host و guest ها مي باشد كه منجربه كندي زياد guest ها مي شود
-
Full/Native Virtualization
معماري هاي x86 داراي يك رويه دسترسي بودند كه به سيستم عامل اجازه دسترسي در دو سطح 1-kernel space و 2- privileged mode مي دادند وapplication ها نيز در مودهاي 1-user space و 2-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شكل 4 بيانگر نحوه ارتباط host و guest مي باشد
-
Application level virtualization
اين شيوه مجازي سازي اجازه مي دهد كه شما در سطح application مجازي سازي داشته باشيد و عملكرد آن اينگونه است كه يك كپي از كامپوننت هاي برنامه كه اشتراكي نيز نمي باشد را در اختيار كاربر قرار مي دهد در پياده سازي آن از تكنولوزي هاي پردازش تصوير استفاده مي گردد مانند 2X, Citrix, JVM شكل زير بيانگر نحوه سرويس دهي اين تكنولوژي مي باشد