مجازی سازی: تفاوت میان نسخهها
(صفحهای جدید حاوی «[http://en.wikipedia.org/wiki/Virtualization مجازی سازی]» ایجاد کرد) |
|||
(۱۱ نسخهٔ میانی ویرایش شده توسط ۴ کاربر نشان داده نشد) | |||
خط ۱: | خط ۱: | ||
[http:// | تعاریف زیادی از مجازیسازی وجود دارد. در یک تعریف کلی، مجازیسازی به معنای ایجاد یک سطح انتزاعی از منابع محاسباتی است که در سطوح مختلف یک رایانه قابل اعمال است. سطوح سختافزار، برنامه کاربردی و سیستم عامل برخی از مواردی هستند که ایجاد انتزاع میتواند در آنها انجام شود. آنچه که در اینجا بیشتر مورد بحث است، مجازیسازی سیستم عامل است که از آن تحت عنوان server virtualization نیز یاد میشود. در این حالت مجازیسازی به فرآیند ایجاد استقلال یک سیستم عامل از سختافزاری که در آن اجرا میشود گفته میشود. در این حالت ماشین مجازی شامل سیستم عامل، برنامه کاربردی و دادههای مربوط به آن میباشد و لایه ای بنام فوقناظر وظیفه نگاشت منابع سختافزاری فیزیکی (حافظه، دیسک، و...) را به منابع مجازی (حافظه مجازی، دیسک مجازی و ...) بر عهده دارد. | ||
دستیابی به مجازیسازی از جهات مختلف در سیستمهای رایانهای مطرح بوده است که نمونه هایی از آن به این شرح میباشد: | |||
* مجازیسازی برنامهها با استفاده از تکنولوژیهایی مانند java virtual machine | |||
* مجازیسازی صفحه نمایش کاربر با استفاده از ابزارهایی مانند VNC | |||
* مجازیسازی فضای ذخیرهسازی با استفاده از روش های RAID یا logical volumes | |||
* مجازیسازی سیستم عامل و مجازیسازی ماشین | |||
[[پرونده:Virtualization.jpg|300px|بندانگشتی|بر اساس رویکرد مجازیسازی، ما میتوانیم مرکزدادهای داشته باشیم که کلیه منابع فیزیکی آن دارای یک لایه فوقناظر باشند ]] | |||
مواردی از این نمونه مجازیسازی که در مورد آخر به آن اشاره شده است، Xen Virtual Machine Monitor و VMware ESX server هستند که یک سطح زیر سیستم عامل قرار میگیرد و سیستمهای عامل مهمان میتوانند روی آن اجرا شوند. به این سطح زیرین سیستم عامل فوقناظر گفته میشود که میتوانید آن را بعنوان هسته اصلی مجازیسازی در نظر بگیرید. '''[[فوق ناظر]]''' به سیستمهای عامل مهمان اجازه میدهد که منابع را به اشتراک بگذارند، ایجاد شوند، حذف شوند یا به دیگر میزبانها مهاجرت کنند. مجازیسازی امکان کنترل ریزدانه بیشتری را از چگونگی استفاده از منابع فیزیکی فراهم میکنند. | |||
== تکنولوژیهای مجازیسازی == | |||
در این قسمت، بعضی از رایج ترین و پر کاربرد ترین تکنولوژیها را بررسی میکنیم. لازم به ذکر است که شرکتهای VMware و Microsoft جای پای بزرگی در تکنولوژیهای مجازیسازی دارند و شاید شناخته شده ترین شرکتها در این حوزه باشند. در هر صورت، با توسعه مجازیسازی و شناخت مزایای مختلف آن، بسیاری از شرکتهای دیگر نیز در این حوزه قدم گذاشته اند که با برخی از آنها نیز آشنا خواهیم شد و محصولات و فناوریهایی که ارائه کرده اند را مورد بررسی قرار میدهیم. | |||
=== مجازی سازی در لینوکس (Linux Virtualization) === | |||
لینوکس یک سیستم عامل مبتنی بر یونیکس است که یکی از شناختهشدهترین توزیعهای رایگان مجموعه برنامههای کدمتن باز بحساب میآید. با توجه به ماهیت کدمتن باز آن، بسیاری از انواع مختلف سیستمهای عامل لینوکس بوجود آمده اند. بعضی از مشهور ترین توزیعهای آن شامل Debian، Red Hat و Ubuntu است. اکثر سیستمهای عامل مبتنی بر لینوکس یا از تکنولوژی Para-virtualization و یا از تکنولوژیهای مجازیسازی سختافزاری استفاده میکنند. علاوه بر این، سیستمهای عامل لینوکس در مقایسه با دیگر سیستمهای عامل، برخی از انواع مختلف تکنولوژیهای مجازیسازی را نیز ارائه میدهند. این تکنولوژیها در ادامه توضیح داده شدهاند: | |||
=== مجازی سازی جزئی (Para Virtualization) === | |||
در گذشته سختافزار x86 از استراتژی های مجازیسازی پشتیبانی نمیکرد. زیرا پردازش های CPU بطور متفاوت بستگی به این داشت که در حالت privileged باشد یا نه و یک پردازنده مجازی شده نمیتوانست در حالت privileged کار کند (زیرا اولویت بالاتر از پردازنده فیزیکی بدست میآورد و باعث یک ریسک امنیتی می شد). به همین علت، نرمافزار مجازیسازی باید با دستورات از ماشین مهمان کار میکرد و آنها را با مجموعه دستورات جدیدی جایگزین میکرد که مطمئن باشد به درستی توسط سختافزار ماشین فیزیکی خوانده میشود. در نتیجه بازنویسی دستورالعملها از پردازنده ماشین مجازی مهمان سربار زیادی را ایجاد میکرد که باعث میشد کارها کند انجام شود. Para-virtualization یک تغییر در سیستم عامل بود (معمولا در سطح هسته) بطوریکه بیشتر شبیه سختافزار واقعی در ماشین فیزیکی شود و کارآیی بیشتری در مجازیسازی بدست بیاید. اگرچه راهحل Para-virtualization کاملا کارآمد است، اما سیستم عامل های کمی از آن پشتیبانی میکنند، که این مشکل اصلی آن است. | |||
=== مجازی سازی به کمک سخت افزار (Hardware assisted Virtualization) === | |||
این نوع دوم راهحل مجازیسازی است که اکثر سیستم عامل های مبتنی بر لینوکس از آن استفاده میکنند. برای استفاده از این تکنولوژی یا باید پردازنده مجهز به Intel VT یا پردازنده مجهز به AMD-V در اختیار داشت تا بتوان ویژگی مورد نظر را در آنها فعال کرد. با استفاده از این پردازندهها، دستورات میتوانند بدون هیچگونه جایگزینی از ماشین مجازی مهمان خوانده شوند. واضح است که این روش نسبت به حالت جایگزینی دستورالعملها کارآمدتر است و سیستمهای عامل ها بدون تغییر میتوانند روی ماشینهای مجازی نصب شوند، زیرا پردازنده فیزیکی میتواند با دستورالعملهای پردازندههای مجازی کار کند (بجای اینکه با هسته سیستم عامل کار کند). در حال حاضر دو تکنولوژی مبتنی بر لینوکس وجود دارد که هر دوی آنها مجازیسازی کامل سختافزاری را انجام دادهاند. این دو تکنولوژی Xen و KVM نام دارند. | |||
=== Coopvirt === | |||
Coopvirt یک شکل از مجازیسازی ترکیبی است که در آن هر دو نوع مجازیسازی Para-virtualization و hardware-assisted full virtualization بکار گرفته شده است. یعنی هم سیستم عامل کارآمد شده است و هم پردازنده بطور موثر بکار گرفته میشود. Coopvirt هنوز در دوره ظهور خود قرار دارد، اما میتواند به شکل قابل توجهی کارآیی مجازیسازی را افزایش دهد. | |||
=== حامل ها (Containers) === | |||
از این تکنولوژی تحت عنوان مجازیسازی در سطح سیستم عامل نیز نام میبرند و در حقیقت یک راهحل مجازیسازی نیست. Container ها محیطهای کاربر مجزا هستند اما همه در یک هسته واحد اجرا میشوند. به این معنا که آنها بطور کامل از هم مجزا نیستند. اما نکته خوب آنها این است که container ها کمترین سربار را در مقایسه با راهحلهای مجازیسازی تحمیل میکنند، زیرا نیازی نیست که کل هسته، پردازندهها و... را شبیهسازی کنند. توزیعهای مختلف لینوکس میتوانند در container های مختلف نصب شوند که یک مزیت خوب دیگر برای آنهاست. | |||
همانطور که مشاهده کردید، تکنولوژیهای مبتنی بر لینوکس مختلفی وجود دارد. مجازیسازی واقعی بدست نمیآید مگر با روش های سختافزاری. در عین حال container ها هم میتوانند در جای خود برای سازمانهای کوچک یا کاربران خانگی برای ایجاد فضاهای کاری مختلف در ماشین فیزیکی شان، بدون نیاز به سایر روش های مجازیسازی و هدر دادن بخشی از منابع خود استفاده شوند. | |||
=== مجازی سازی میزکار ( Desktop Virtualization) === | |||
مجازیسازی محیط کار (Desktop) در سیستمهای کاربران نهایی انجام میشود. این کار باعث میشود تا مدیران بهتر ماشینهای کاربران نهایی را مدیریت کنند و محیط مربوط هر کاربر را از راه دور سفارشی کنند. امروزه دو نوع از مجازیسازی Desktop وجود دارد. یکی از آنها Client-Hosted Desktop Virtualization است و دیگری VDI نام دارد. | |||
=== مجازی سازی نرم افزار (Software Virtualization) === | |||
مجازیسازی نرمافزار نوعی دیگر از مجازیسازی برنامه کاربردی یا برنامههای رایانه است. تفاوت عمده بین مجازیسازی نرمافزار و مجازیسازی برنامه کاربردی این است که در مجازی سازی برنامههای کاربردی، اجرای برنامه مجازی میشود ولی در مجازی سازی نرمافزار منابع مورد استفاده برنامه نیز مجازی میشوند. یکی از رایج ترین این نمونه برنامهها، SVS است که توسط Altiris توسعه داده شده است. این مفهوم مشابه Hardware virtualization است که در آن ماشین فیزیکی بصورت یک ماشین مجازی شبیهسازی میشود. مجازیسازی نرمافزار شامل ایجاد یک لایه مجازی یا فضای دیسک سخت مجازی است که برنامه بتواند در آن نصب شود. از این فضای مجازی، برنامهها میتوانند همانند برنامههای عادی که روی سیستم عامل میزبان نصب شده است، اجرا شوند. | |||
وقتی که یک کاربر استفاده از یک برنامه کاربردی را به پایان رساند، میتواند آن را خاموش کند. وقتی برنامه خاموش است، هر تغییری که در سیستم عامل میزبان داده است، کاملا برگردانده میشود. این تغییر شامل رجیستری و پوشه های نصب میباشد بطوریکه هیچ ردی از برنامه ای که نصب شده بود یا اجرا شده بود باقی نماند. | |||
مجازیسازی نرمافزار مزایای زیادی دارد. برخی از این مزایا به این شرح میباشد: | |||
* امکان اجرای برنامههای کاربردی بدون تغییر دائمی رجیستری یا کتابخانه ها | |||
* امکان اجرای چندین نسخه از یک برنامه یکسان | |||
* امکان نصب برنامههایی که ممکن است با همدیگر تداخل داشته باشند (با ایجاد چندین لایه مجازی) | |||
* امکان تست برنامههای جدید در یک محیط ایزوله شده و مجزا | |||
مجازیسازی نرمافزاری مزایای زیادی دارد و به سادگی پیادهسازی میشود. یک مزیت جالب این است که شما میتوانید مجازیسازی نرمافزاری را خودتان با دریافت و نصب برنامه Altiris SVS بطور کاملا رایگان امتحان کنید. | |||
=== مجازی سازی ذخیره سازی (Storage Virtualization) === | |||
مجازیسازی ذخیرهسازی شامل مجازیسازی تجهیزات ذخیرهسازی فیزیکی است. این تکنیکی است که به کاربران و برنامههای کاربردی مختلف این امکان را میدهد تا بدون در نظر داشتن محل تجهیزات ذخیرهسازی و نوع آنها، بتوانند به آن ها دسترسی داشته باشند. وقتی ذخیرهسازی مجازی میشود، همانند یک حافظه استاندارد و محلی برای ماشینهای میزبان مشاهده میشود، حتی اگر این فضای ذخیرهسازی بصورت توزیع شده در مکانهای مختلف قرار داشته باشد و از انواع مختلف باشد. | |||
بزرگترین مزیت مجازیسازی ذخیرهسازی این است که امکان دسترسی ماشینها و سرورهای مختلف را به تجهیزات ذخیرهسازی توزیع شده فراهم می آورد. به این ترتیب یک ماشین که به آن فضا دسترسی پیدا میکند، آن را مانند یک فضای ذخیرهسازی بسیار بزرگ (همانند یک دیسک واحد بسیار حجیم) میبیند نه به صورت تعدادی دیسک پراکنده. | |||
دیگر مزیت مجازیسازی ذخیرهسازی این است که امکان محدود کردن بخشی از فضا یا درایو ها را برای برخی ماشینهای خاص فراهم میآورد که این ویژگی برای افزایش امنیت و نیز امکان افزودن حجم ذخیرهسازی بصورت بلادرنگ مناسب است. همچنین اگر یک سرور با کمبود فضا مواجه شود، میتوان به سرعت و با چند کلیک فضای آن را افزایش داد. | |||
یکی از نمونه های رایج استقرار این نوع تکنولوژی مجازیسازی، SAN است. همانطور که از نام آن پیداست، یک SAN یک شبکه بزرگ از تجهیزات ذخیرهسازی است. این تجهیزات ذخیرهسازی معمولا در rack نگهداری میشوند و مستقل از هر سرور یا ماشینی هستند و در عوض بطور مستقیم به شبکه سازمان متصل هستند. با استفاده از SAN یک کسب و کار میتواند قابلیت انعطاف را افزایش دهد. برای مثال اندازه یک SAN میتواند به آسانی با افزودن دیسک های جدید افزایش پیدا کند. آنها میتوانند بعنوان راهحلهای مناسب تهیه کپی پشتیبان مورد استفاده قرار بگیرند. مثلاً میتوان کپی پشتیبان از دادهها در یک مکان دور از سازمان تهیه کرد. نهایتا اینکه SAN ها میتوانند بهرهوری بهتری را از فضای ذخیرهسازی فراهم کنند. معنای آن این است که بجای داشتن یک دیسک سخت در هر سرور، یک سرور میتواند دادهها را در چندین دیسک سخت یا درایو پخش کند. این بسیار کارآمدتر از استفاده از هارد دیسک ها است، زیرا چندین دیسک سخت میتوانند بار کاری خود را به اشتراک بگذارند که به این ترتیب طول عمر هر یک از هارد دیسک ها افزایش پیدا میکند. | |||
=== مجازی سازی ذخیره سازی داده (Data Storage Virtualization) === | |||
از آنجایی که ذخیرهسازی داده یکی از نیازمندیهای هر کسب و کار است و حجم این داده به مرور افزایش پیدا میکند، مدیریت آن به مرور مشکل تر میشود. به همین ترتیب به مرور زمان تکنولوژیها و راهحلها زیادی برای غلبه بر این مشکلات توسعه داده شدهاند که در نهایت به گونهای متحول شدند که Data Storage Virtualization نام گرفت. اولین مرحله برای این راهحل، حذف اختلاف بین منابع محلی و شبکه است. با این کار، منابع ذخیرهسازی شبکه شده مانند منابع محلی برای یک ماشین قابل استفاده خواهند بود. سپس این منابع ذخیرهسازی میتوانند بصورت عادی توسط هریک از ماشینها به سادگی مورد دسترسی قرار بگیرند. | |||
مزیت این کار برای شرکتها واضح است. اول اینکه کل فضای ذخیرهسازی داده در یک محل متمرکز نگهداری میشود. این کار مدیریت داده را برای مدیران بسیار سادهتر میکند و همچنین تهیه کپیهای مختلف، تهیه کپی پشتیبانی یا آرشیو داده را نیز سادهتر میکند. دوم این که شبکه ذخیرهسازی (SAN) با حجم بسیار زیادی میتواند ایجاد شود. این شبکه به سازمانها امکان اجرای راهحلهایی که نیاز به فضای ذخیرهسازی زیادی دارند را نیز میدهد. برای مثال، یک سرور میتواند تعدادی دیسک سخت داشته باشد اما نهایتا در تعداد دیسک هایی که میتواند پشتیبانی کند محدودیت وجود دارد. اما SAN ها میتوانند شامل تعدادی rack باشند که در هر کدام تعداد زیادی دیسک وجود دارد و محدودیتی در تعداد rack ها و نیز تعداد دیسک ها وجود نخواهد داشت. تنها محدودیتی که در این حالت برای سازمان وجود دارد، میزان هزینهای است که برای تهیه فضای ذخیرهسازی اختصاص میدهند. | |||
اما اگرچه SAN ها میتوانند خیلی برای سازمانها مفید باشند، اما ضرورتاً کارها را برای کاربران سادهتر نمیکنند. زیرا پروتکل های مختلف برای استفاده از آنها مورد استفاده قرار میگیرد و هنوز باید مکان فیزیکی داده مشخص باشد. اینجاست که مفهوم مجازیسازی فضای ذخیرهسازی میتواند مورد استفاده قرار بگیرد تا کاربران درگیر پروتکل ها و پیکربندیها نشوند. در حقیقت در این روش یک لایه بین فرآیند های فیزیکی و منطقی ذخیرهسازی داده قرار میگیرد و همه چیز را استاندارد میکند بطوریکه از دید منطقی همه فضا بصورت یکپارچه دیده شود. مجازیسازی فضای ذخیرهسازی مزایای زیادی برای کسبوکارها دربر دارد. برخی از مزایای اصلی به این شرح میباشد: | |||
* امکان مدیریت سادهتر راهحلهای ذخیرهسازی داده: به کمک این روش پیچیدگی هایی که در برخورد با دادههای با حجم زیاد معمولا پیش میآید بسیار کاهش مییابد و راهحلهای مختلف کار با دادههای حجیم از طریق یک بستر استاندارد به راحتی قابل پیادهسازی خواهند بود. | |||
* مستقل از فروشنده شدن تکنولوژیهای ذخیرهسازی: در گذشته SAN ها سختافزارهایی بودند که توسط فروشندگان مختلف با تکنولوژیهای مختلف ارائه میشدند و پیادهسازی آنها خیلی ساده نبود و از پروتکل های مختلفی استفاده میکردند. با مجازیسازی میتوان استفاده از این تکنولوژیها را ساده کرد زیرا در نهایت همه چیز بصورت استاندارد مورد استفاده قرار میگیرد. | |||
* امکان صرفهجویی در هزینهها: مدیریت ذخیرهسازی فیزیکی هنوز هم در مراکز داده یک کار خسته کننده است. زمان و مهارت افراد میتواند بصورت مفیدتر بکار گرفته شود. با مجازیسازی داده میتوان بصورت کارآمد نیاز به متخصصین IT را برای انجام کارهای دستی مدیریت ذخیرهسازی فیزیکی برطرف کرد. نکته دیگر این است که سختافزار لازم نیست وابسته به یک فروشنده خاص باشد و میتوان تکنولوژیهای ذخیرهسازی را از فروشندههای مختلف خریداری کرد. | |||
* شرکتهای بسیاری از این روش پشتیبانی میکنند: شرکتهای مهم بسیاری درگیر توسعه تکنولوژیهای مجازیسازی فضای ذخیرهسازی شدهاند که میتوان به HP، VMware، EMC و IBM اشاره کرد. برای مثال VMware تکنولوژی مجازیسازی ذخیرهسازی را در برخی از محصولات خود نظیر VMware Workstation بکارگرفته است. EMC راهحل خود را بنام Information Lifecycle Management ارائه کرده است. IBM هم راهحل مجازیسازی داده خود را بنام Total Storage توسعه داده است. آنها یک کنترلر SAN خاص را ارائه کردهاند که میتواند بسیاری از کارهای مدیریت SAN را انجام دهد و بار کاری مدیران مرکز داده را به شدت کاهش میدهد و امکان بهرهوری بیشتر را از نظر زمان و منابع فراهم میآورد. | |||
=== مجازی سازی سیستم عامل (OS Virtualization) === | |||
مجازیسازی سیستم عامل اگرچه شبیه به روش full virtualization است اما در حقیقت کاملا با آن متفاوت است. روش full virtualization شامل مجازیسازی کل سختافزار یک ماشین است. سپس هر محیط مجازی در سیستم عامل خود و هسته مربوط به خود اجرا میشود. اما مجازیسازی در سطح سیستم عامل متفاوت است و در آن محیطهای مجزا، هسته های مجزا ندارند، بلکه همه محیطها (که به آن ها container گفته میشود) در یک هسته واحد اجرا میشوند. | |||
محیط هر container در مجازیسازی سیستم عامل از دیگر container ها ایزوله خواهد بود و مانند یک سرور فیزیکی عمل میکند. در محیط یک container برنامهها میتوانند اجرا شوند. نتیجه نهایی در این سطح از مجازیسازی شبیه full virtualization است، اما روند انجام کار متفاوت است. مجازیسازی سیستم عامل چند نمونه تجربه عملی دارد. این روش مدت ها در محیطهای میزبانی مجازی مورد استفاده قرار میگرفته است. میزبانی مجازی شامل میزبانی بیش از یک نام دامنه بر روی یک ماشین فیزیکی یکسان بوده است. با استفاده از مجازیسازی سیستم عامل، میزبانهای وب میتوانستند محیطهای مجزا و امنی را برای نام های دامنه مختلف ایجاد کنند. این کار واقعا سودمند است زیرا اگر منابع فقط به یک دامنه اختصاص داده شود، بخش عمده آن به هدر میرود. | |||
دیگر مزایای استفاده از مجازیسازی سیستم عامل شامل تفکیک برنامهها با امکان مدیریت آسان منابع است. برای مثال میتوانید یک گروه از برنامهها را در container های مختلف دسته بندی کنید یا جدا کنید. به این ترتیب منابع نرمافزاری نسبت به حالتی که همه برنامهها با هم در یک محیط قرار داشته باشند، بهتر قابل مدیریت خواهند بود. به نظر میرسد که مجازیسازی سیستم عامل بسیار مفید بوده است و شاید جای تعجب داشته باشد که چرا اکثر سازمانها امروزه بجای آن از full virtualization استفاده میکنند. هر دو راهحل اگر چه با هم متفاوتند ولی نتیجه یکسان دارند و هر دو مزایا و معایب خودشان را نیز دارند. | |||
مزیت اصلی مجازیسازی سیستم عامل بر full virtualization این است که سربار بسیار کمتری دارد و در نتیجه بهرهوری آن بسیار بیشتر است زیرا نیاز به شبیهسازی سختافزار ندارد. از طرفی اشکال آن این است که نمیتواند سیستمهای عاملی غیر سیستم عامل میزبان را اجرا کند. اگر بخواهید یک محیط لینوکسی را در سیستم عامل ویندوز اجرا کنید، مجازیسازی سیستم عامل برای شما مناسب نخواهد بود. | |||
محیط Container محدودیتهایی نیز دارد. برای مثال، یک Container نمیتواند هسته خود را مستقیما تغییر دهد. نمیتوان سیستم فایلها را mount یا dismountکرد و نمیتوان دیگر فعالیت های سطح بالا را انجام داد. یک روش full virtualization به کاربر دسترسی بدون محدودیتی را به محیطی که در آن سیستم عامل های مختلف میتواند نصب شود میدهد. بنابر این قابلیت انعطاف full virtualization باعث شده است که به یک راهحل استاندارد برای مجازیسازی تبدیل شود. همراه با تکنولوژیهای دیگر hardware-assisted virtualization و Para-assisted virtualization، این روش کارآیی و بهرهوری در حد مجازیسازی سیستم عامل را بدست آورده است. اما با این حال تکنولوژی مجازیسازی سیستم عامل هنوز بطور گسترده (برای مثال در محیطهای میزبانی وب) مورد استفاده قرار میگیرد و در آینده نیز استفاده خواهد شد. | |||
== سایر مفاهیم مرتبط با مجازیسازی == | |||
=== چگالی مجازی سازی (Virtualization Density) === | |||
چگالی مجازیسازی عبارتی است که با تعدادی از تکنولوژیهای مجازیسازی بکار میرود. این عبارت اغلب به تعداد ماشینهای مجازی اشاره میکند که میتوانند در یک ماشین فیزیکی یا rack قرار بگیرند. هرچه تعداد ماشینهای مجازی که یک ماشین فیزیکی بتواند پشتیبانی کند بیشتر باشد، چگالی بیشتری دارد. همچنین گاهی به توانایی یک شرکت برای ایجاد یک زیرساخت شبکه با تعداد ماشینهای فیزیکی کمتر از طریق استفاده از VLAN و تکنولوژیهای مجازیسازی نیز گفته میشود. اصطلاح چگالی مجازیسازی ممکن است برای توصیف تعداد برنامههای کاربردی مجازی شده که بتواند بطور موثر روی یک ماشین اجرا شوند نیز بکار رود. | |||
بطور کلی، وقتی اصطلاح چگالی مجازیسازی استفاده میشود، در حقیقت برای تعداد یک تکنولوژی مجازیسازی خاص (چه ماشین مجازی باشد، چه برنامه کاربردی یا ....) که بتواند بطور موثر در یک محیط خاص اجرا شود، قابل استفاده خواهد بود. هر چه تعداد بیشتر باشد، چگالی محیط بیشتر است. | |||
=== سطح مجازی سازی (Virtualization Level) === | |||
سطوح مجازیسازی به سطوح مختلفی گفته میشود که میتوانند در زمان مجازیسازی فضای ذخیرهسازی اعمال گردند. این سطوح با همدیگر فرق میکنند و میتوانند شامل مجازیسازی در سطح هارد دیسک (با روش های فوق) تا مجازیسازی کامل در سطح سیستم فایل انجام شود. چهار سطح اصلی وجود دارد که به این شرح میباشد: | |||
=== سطح سرور (Server Level) === | |||
این سطح تا حدی خود تعریف است. در این سطح مدیریت هارد دیسک های فیزیکی در محیط سیستم عامل سرور انجام میشود. برای مثال میتواند شامل تقسیمبندی فیزیکی هارد دیسک شود. | |||
=== سطح دستگاه ذخیره سازی (Storage Device Level) === | |||
این سطح مجازی میتواند شامل تکنیک هایی نظیر data mirroring و data striping باشد. شناخته شده ترین نمونه این سطح از مجازیسازی RAID است. RAID 0 از stripping استفاده میکنند که در این روش دادهها در چندین دیسک نوشته میشوند، اما کاربر نهایی به گونه ای به داده دسترسی پیدا خواهد کرد که به نظر در یک درایو محلی واحد قرار دارند. برخی شکلهای دیگر RAID (مثلا RAID 1) از mirroring استفاده میکنند که در آن داده روی دو دیسک مجزا همزمان نوشته میشود. در برخی انواع RAID از ترکیب striping و mirroringاستفاده میشود که یک روش بسیار موثر در مجازیسازی دستگاه های ذخیرهسازی و روش های تهیه کپی پشتیبانی است. | |||
=== Fabric Level === | |||
در این سطح مجازیسازی به دستگاه های ذخیرهسازی اجازه داده میشود که بطور مستقل از سختافزار یا سرور فیزیکی عمل کنند. به این معنا که استخری عظیم از فضاهای ذخیرهسازی ایجاد خواهد شد در حالی که بطور منطقی به صورت یک فضای واحد دیده میشوند. معمولا یک واسط مدیریت برای مدیریت سیستمهای ذخیرهسازی در این سطح مورد نیاز است، زیرا از سرور مدیریتی مستقل هستند. یک کنترلر SAN میتواند مجازیسازی در این سطح را انجام دهد. | |||
=== سطح سیستم فایل (File System Level) === | |||
این سطح بیشترین مزایا را برای کاربران خواهد داشت زیرا ذخیرهسازی به نهایت حد مجازیسازی خود میرسد. دادهها میتوانند به اشتراک گذاشته شوند، محافظت شوند و ... با استفاده از این سطح از مجازیسازی، اندازه استخر داده مجازی شده میتواند به هر شکل دلخواه مدیریت شود. همچنین مجموعههای مختلف داده میتوانند از یک محل به محل دیگر بصورت درایو های مجازی با سهولت بسیار منتقل شوند. | |||
== لینک های مرتبط == | |||
* [[مجازی سازی داده]] | |||
* [http://vfiles.ir/category/%da%a9%d8%a7%d9%85%d9%be%db%8c%d9%88%d8%aa%d8%b1-%d9%88-it/ فایل های مرتبط با مجازی سازی و رایانش ابری] | |||
* [http://wiki.xamin.ir/index.php/%D8%A8%D9%87%D8%AA%D8%B1%DB%8C%D9%86_%D8%B1%D8%A7%D9%87%E2%80%8C%D9%87%D8%A7%DB%8C_%D9%85%D8%AC%D8%A7%D8%B2%DB%8C_%D8%B3%D8%A7%D8%B2%DB%8C_%D8%A8%D8%A7_kvm بهترین راههای مجازی سازی با kvm] | |||
* [http://wiki.xamin.ir/index.php/%D9%85%D8%AC%D8%A7%D8%B2%DB%8C_%D8%B3%D8%A7%D8%B2%DB%8C مجازی سازی] | |||
* [[ماشین مجازی]] |
نسخهٔ کنونی تا ۱ ژوئیهٔ ۲۰۲۰، ساعت ۱۰:۲۲
تعاریف زیادی از مجازیسازی وجود دارد. در یک تعریف کلی، مجازیسازی به معنای ایجاد یک سطح انتزاعی از منابع محاسباتی است که در سطوح مختلف یک رایانه قابل اعمال است. سطوح سختافزار، برنامه کاربردی و سیستم عامل برخی از مواردی هستند که ایجاد انتزاع میتواند در آنها انجام شود. آنچه که در اینجا بیشتر مورد بحث است، مجازیسازی سیستم عامل است که از آن تحت عنوان server virtualization نیز یاد میشود. در این حالت مجازیسازی به فرآیند ایجاد استقلال یک سیستم عامل از سختافزاری که در آن اجرا میشود گفته میشود. در این حالت ماشین مجازی شامل سیستم عامل، برنامه کاربردی و دادههای مربوط به آن میباشد و لایه ای بنام فوقناظر وظیفه نگاشت منابع سختافزاری فیزیکی (حافظه، دیسک، و...) را به منابع مجازی (حافظه مجازی، دیسک مجازی و ...) بر عهده دارد.
دستیابی به مجازیسازی از جهات مختلف در سیستمهای رایانهای مطرح بوده است که نمونه هایی از آن به این شرح میباشد:
- مجازیسازی برنامهها با استفاده از تکنولوژیهایی مانند java virtual machine
- مجازیسازی صفحه نمایش کاربر با استفاده از ابزارهایی مانند VNC
- مجازیسازی فضای ذخیرهسازی با استفاده از روش های RAID یا logical volumes
- مجازیسازی سیستم عامل و مجازیسازی ماشین
مواردی از این نمونه مجازیسازی که در مورد آخر به آن اشاره شده است، Xen Virtual Machine Monitor و VMware ESX server هستند که یک سطح زیر سیستم عامل قرار میگیرد و سیستمهای عامل مهمان میتوانند روی آن اجرا شوند. به این سطح زیرین سیستم عامل فوقناظر گفته میشود که میتوانید آن را بعنوان هسته اصلی مجازیسازی در نظر بگیرید. فوق ناظر به سیستمهای عامل مهمان اجازه میدهد که منابع را به اشتراک بگذارند، ایجاد شوند، حذف شوند یا به دیگر میزبانها مهاجرت کنند. مجازیسازی امکان کنترل ریزدانه بیشتری را از چگونگی استفاده از منابع فیزیکی فراهم میکنند.
تکنولوژیهای مجازیسازی
در این قسمت، بعضی از رایج ترین و پر کاربرد ترین تکنولوژیها را بررسی میکنیم. لازم به ذکر است که شرکتهای VMware و Microsoft جای پای بزرگی در تکنولوژیهای مجازیسازی دارند و شاید شناخته شده ترین شرکتها در این حوزه باشند. در هر صورت، با توسعه مجازیسازی و شناخت مزایای مختلف آن، بسیاری از شرکتهای دیگر نیز در این حوزه قدم گذاشته اند که با برخی از آنها نیز آشنا خواهیم شد و محصولات و فناوریهایی که ارائه کرده اند را مورد بررسی قرار میدهیم.
مجازی سازی در لینوکس (Linux Virtualization)
لینوکس یک سیستم عامل مبتنی بر یونیکس است که یکی از شناختهشدهترین توزیعهای رایگان مجموعه برنامههای کدمتن باز بحساب میآید. با توجه به ماهیت کدمتن باز آن، بسیاری از انواع مختلف سیستمهای عامل لینوکس بوجود آمده اند. بعضی از مشهور ترین توزیعهای آن شامل Debian، Red Hat و Ubuntu است. اکثر سیستمهای عامل مبتنی بر لینوکس یا از تکنولوژی Para-virtualization و یا از تکنولوژیهای مجازیسازی سختافزاری استفاده میکنند. علاوه بر این، سیستمهای عامل لینوکس در مقایسه با دیگر سیستمهای عامل، برخی از انواع مختلف تکنولوژیهای مجازیسازی را نیز ارائه میدهند. این تکنولوژیها در ادامه توضیح داده شدهاند:
مجازی سازی جزئی (Para Virtualization)
در گذشته سختافزار x86 از استراتژی های مجازیسازی پشتیبانی نمیکرد. زیرا پردازش های CPU بطور متفاوت بستگی به این داشت که در حالت privileged باشد یا نه و یک پردازنده مجازی شده نمیتوانست در حالت privileged کار کند (زیرا اولویت بالاتر از پردازنده فیزیکی بدست میآورد و باعث یک ریسک امنیتی می شد). به همین علت، نرمافزار مجازیسازی باید با دستورات از ماشین مهمان کار میکرد و آنها را با مجموعه دستورات جدیدی جایگزین میکرد که مطمئن باشد به درستی توسط سختافزار ماشین فیزیکی خوانده میشود. در نتیجه بازنویسی دستورالعملها از پردازنده ماشین مجازی مهمان سربار زیادی را ایجاد میکرد که باعث میشد کارها کند انجام شود. Para-virtualization یک تغییر در سیستم عامل بود (معمولا در سطح هسته) بطوریکه بیشتر شبیه سختافزار واقعی در ماشین فیزیکی شود و کارآیی بیشتری در مجازیسازی بدست بیاید. اگرچه راهحل Para-virtualization کاملا کارآمد است، اما سیستم عامل های کمی از آن پشتیبانی میکنند، که این مشکل اصلی آن است.
مجازی سازی به کمک سخت افزار (Hardware assisted Virtualization)
این نوع دوم راهحل مجازیسازی است که اکثر سیستم عامل های مبتنی بر لینوکس از آن استفاده میکنند. برای استفاده از این تکنولوژی یا باید پردازنده مجهز به Intel VT یا پردازنده مجهز به AMD-V در اختیار داشت تا بتوان ویژگی مورد نظر را در آنها فعال کرد. با استفاده از این پردازندهها، دستورات میتوانند بدون هیچگونه جایگزینی از ماشین مجازی مهمان خوانده شوند. واضح است که این روش نسبت به حالت جایگزینی دستورالعملها کارآمدتر است و سیستمهای عامل ها بدون تغییر میتوانند روی ماشینهای مجازی نصب شوند، زیرا پردازنده فیزیکی میتواند با دستورالعملهای پردازندههای مجازی کار کند (بجای اینکه با هسته سیستم عامل کار کند). در حال حاضر دو تکنولوژی مبتنی بر لینوکس وجود دارد که هر دوی آنها مجازیسازی کامل سختافزاری را انجام دادهاند. این دو تکنولوژی Xen و KVM نام دارند.
Coopvirt
Coopvirt یک شکل از مجازیسازی ترکیبی است که در آن هر دو نوع مجازیسازی Para-virtualization و hardware-assisted full virtualization بکار گرفته شده است. یعنی هم سیستم عامل کارآمد شده است و هم پردازنده بطور موثر بکار گرفته میشود. Coopvirt هنوز در دوره ظهور خود قرار دارد، اما میتواند به شکل قابل توجهی کارآیی مجازیسازی را افزایش دهد.
حامل ها (Containers)
از این تکنولوژی تحت عنوان مجازیسازی در سطح سیستم عامل نیز نام میبرند و در حقیقت یک راهحل مجازیسازی نیست. Container ها محیطهای کاربر مجزا هستند اما همه در یک هسته واحد اجرا میشوند. به این معنا که آنها بطور کامل از هم مجزا نیستند. اما نکته خوب آنها این است که container ها کمترین سربار را در مقایسه با راهحلهای مجازیسازی تحمیل میکنند، زیرا نیازی نیست که کل هسته، پردازندهها و... را شبیهسازی کنند. توزیعهای مختلف لینوکس میتوانند در container های مختلف نصب شوند که یک مزیت خوب دیگر برای آنهاست.
همانطور که مشاهده کردید، تکنولوژیهای مبتنی بر لینوکس مختلفی وجود دارد. مجازیسازی واقعی بدست نمیآید مگر با روش های سختافزاری. در عین حال container ها هم میتوانند در جای خود برای سازمانهای کوچک یا کاربران خانگی برای ایجاد فضاهای کاری مختلف در ماشین فیزیکی شان، بدون نیاز به سایر روش های مجازیسازی و هدر دادن بخشی از منابع خود استفاده شوند.
مجازی سازی میزکار ( Desktop Virtualization)
مجازیسازی محیط کار (Desktop) در سیستمهای کاربران نهایی انجام میشود. این کار باعث میشود تا مدیران بهتر ماشینهای کاربران نهایی را مدیریت کنند و محیط مربوط هر کاربر را از راه دور سفارشی کنند. امروزه دو نوع از مجازیسازی Desktop وجود دارد. یکی از آنها Client-Hosted Desktop Virtualization است و دیگری VDI نام دارد.
مجازی سازی نرم افزار (Software Virtualization)
مجازیسازی نرمافزار نوعی دیگر از مجازیسازی برنامه کاربردی یا برنامههای رایانه است. تفاوت عمده بین مجازیسازی نرمافزار و مجازیسازی برنامه کاربردی این است که در مجازی سازی برنامههای کاربردی، اجرای برنامه مجازی میشود ولی در مجازی سازی نرمافزار منابع مورد استفاده برنامه نیز مجازی میشوند. یکی از رایج ترین این نمونه برنامهها، SVS است که توسط Altiris توسعه داده شده است. این مفهوم مشابه Hardware virtualization است که در آن ماشین فیزیکی بصورت یک ماشین مجازی شبیهسازی میشود. مجازیسازی نرمافزار شامل ایجاد یک لایه مجازی یا فضای دیسک سخت مجازی است که برنامه بتواند در آن نصب شود. از این فضای مجازی، برنامهها میتوانند همانند برنامههای عادی که روی سیستم عامل میزبان نصب شده است، اجرا شوند.
وقتی که یک کاربر استفاده از یک برنامه کاربردی را به پایان رساند، میتواند آن را خاموش کند. وقتی برنامه خاموش است، هر تغییری که در سیستم عامل میزبان داده است، کاملا برگردانده میشود. این تغییر شامل رجیستری و پوشه های نصب میباشد بطوریکه هیچ ردی از برنامه ای که نصب شده بود یا اجرا شده بود باقی نماند. مجازیسازی نرمافزار مزایای زیادی دارد. برخی از این مزایا به این شرح میباشد:
- امکان اجرای برنامههای کاربردی بدون تغییر دائمی رجیستری یا کتابخانه ها
- امکان اجرای چندین نسخه از یک برنامه یکسان
- امکان نصب برنامههایی که ممکن است با همدیگر تداخل داشته باشند (با ایجاد چندین لایه مجازی)
- امکان تست برنامههای جدید در یک محیط ایزوله شده و مجزا
مجازیسازی نرمافزاری مزایای زیادی دارد و به سادگی پیادهسازی میشود. یک مزیت جالب این است که شما میتوانید مجازیسازی نرمافزاری را خودتان با دریافت و نصب برنامه Altiris SVS بطور کاملا رایگان امتحان کنید.
مجازی سازی ذخیره سازی (Storage Virtualization)
مجازیسازی ذخیرهسازی شامل مجازیسازی تجهیزات ذخیرهسازی فیزیکی است. این تکنیکی است که به کاربران و برنامههای کاربردی مختلف این امکان را میدهد تا بدون در نظر داشتن محل تجهیزات ذخیرهسازی و نوع آنها، بتوانند به آن ها دسترسی داشته باشند. وقتی ذخیرهسازی مجازی میشود، همانند یک حافظه استاندارد و محلی برای ماشینهای میزبان مشاهده میشود، حتی اگر این فضای ذخیرهسازی بصورت توزیع شده در مکانهای مختلف قرار داشته باشد و از انواع مختلف باشد.
بزرگترین مزیت مجازیسازی ذخیرهسازی این است که امکان دسترسی ماشینها و سرورهای مختلف را به تجهیزات ذخیرهسازی توزیع شده فراهم می آورد. به این ترتیب یک ماشین که به آن فضا دسترسی پیدا میکند، آن را مانند یک فضای ذخیرهسازی بسیار بزرگ (همانند یک دیسک واحد بسیار حجیم) میبیند نه به صورت تعدادی دیسک پراکنده.
دیگر مزیت مجازیسازی ذخیرهسازی این است که امکان محدود کردن بخشی از فضا یا درایو ها را برای برخی ماشینهای خاص فراهم میآورد که این ویژگی برای افزایش امنیت و نیز امکان افزودن حجم ذخیرهسازی بصورت بلادرنگ مناسب است. همچنین اگر یک سرور با کمبود فضا مواجه شود، میتوان به سرعت و با چند کلیک فضای آن را افزایش داد.
یکی از نمونه های رایج استقرار این نوع تکنولوژی مجازیسازی، SAN است. همانطور که از نام آن پیداست، یک SAN یک شبکه بزرگ از تجهیزات ذخیرهسازی است. این تجهیزات ذخیرهسازی معمولا در rack نگهداری میشوند و مستقل از هر سرور یا ماشینی هستند و در عوض بطور مستقیم به شبکه سازمان متصل هستند. با استفاده از SAN یک کسب و کار میتواند قابلیت انعطاف را افزایش دهد. برای مثال اندازه یک SAN میتواند به آسانی با افزودن دیسک های جدید افزایش پیدا کند. آنها میتوانند بعنوان راهحلهای مناسب تهیه کپی پشتیبان مورد استفاده قرار بگیرند. مثلاً میتوان کپی پشتیبان از دادهها در یک مکان دور از سازمان تهیه کرد. نهایتا اینکه SAN ها میتوانند بهرهوری بهتری را از فضای ذخیرهسازی فراهم کنند. معنای آن این است که بجای داشتن یک دیسک سخت در هر سرور، یک سرور میتواند دادهها را در چندین دیسک سخت یا درایو پخش کند. این بسیار کارآمدتر از استفاده از هارد دیسک ها است، زیرا چندین دیسک سخت میتوانند بار کاری خود را به اشتراک بگذارند که به این ترتیب طول عمر هر یک از هارد دیسک ها افزایش پیدا میکند.
مجازی سازی ذخیره سازی داده (Data Storage Virtualization)
از آنجایی که ذخیرهسازی داده یکی از نیازمندیهای هر کسب و کار است و حجم این داده به مرور افزایش پیدا میکند، مدیریت آن به مرور مشکل تر میشود. به همین ترتیب به مرور زمان تکنولوژیها و راهحلها زیادی برای غلبه بر این مشکلات توسعه داده شدهاند که در نهایت به گونهای متحول شدند که Data Storage Virtualization نام گرفت. اولین مرحله برای این راهحل، حذف اختلاف بین منابع محلی و شبکه است. با این کار، منابع ذخیرهسازی شبکه شده مانند منابع محلی برای یک ماشین قابل استفاده خواهند بود. سپس این منابع ذخیرهسازی میتوانند بصورت عادی توسط هریک از ماشینها به سادگی مورد دسترسی قرار بگیرند.
مزیت این کار برای شرکتها واضح است. اول اینکه کل فضای ذخیرهسازی داده در یک محل متمرکز نگهداری میشود. این کار مدیریت داده را برای مدیران بسیار سادهتر میکند و همچنین تهیه کپیهای مختلف، تهیه کپی پشتیبانی یا آرشیو داده را نیز سادهتر میکند. دوم این که شبکه ذخیرهسازی (SAN) با حجم بسیار زیادی میتواند ایجاد شود. این شبکه به سازمانها امکان اجرای راهحلهایی که نیاز به فضای ذخیرهسازی زیادی دارند را نیز میدهد. برای مثال، یک سرور میتواند تعدادی دیسک سخت داشته باشد اما نهایتا در تعداد دیسک هایی که میتواند پشتیبانی کند محدودیت وجود دارد. اما SAN ها میتوانند شامل تعدادی rack باشند که در هر کدام تعداد زیادی دیسک وجود دارد و محدودیتی در تعداد rack ها و نیز تعداد دیسک ها وجود نخواهد داشت. تنها محدودیتی که در این حالت برای سازمان وجود دارد، میزان هزینهای است که برای تهیه فضای ذخیرهسازی اختصاص میدهند.
اما اگرچه SAN ها میتوانند خیلی برای سازمانها مفید باشند، اما ضرورتاً کارها را برای کاربران سادهتر نمیکنند. زیرا پروتکل های مختلف برای استفاده از آنها مورد استفاده قرار میگیرد و هنوز باید مکان فیزیکی داده مشخص باشد. اینجاست که مفهوم مجازیسازی فضای ذخیرهسازی میتواند مورد استفاده قرار بگیرد تا کاربران درگیر پروتکل ها و پیکربندیها نشوند. در حقیقت در این روش یک لایه بین فرآیند های فیزیکی و منطقی ذخیرهسازی داده قرار میگیرد و همه چیز را استاندارد میکند بطوریکه از دید منطقی همه فضا بصورت یکپارچه دیده شود. مجازیسازی فضای ذخیرهسازی مزایای زیادی برای کسبوکارها دربر دارد. برخی از مزایای اصلی به این شرح میباشد:
- امکان مدیریت سادهتر راهحلهای ذخیرهسازی داده: به کمک این روش پیچیدگی هایی که در برخورد با دادههای با حجم زیاد معمولا پیش میآید بسیار کاهش مییابد و راهحلهای مختلف کار با دادههای حجیم از طریق یک بستر استاندارد به راحتی قابل پیادهسازی خواهند بود.
- مستقل از فروشنده شدن تکنولوژیهای ذخیرهسازی: در گذشته SAN ها سختافزارهایی بودند که توسط فروشندگان مختلف با تکنولوژیهای مختلف ارائه میشدند و پیادهسازی آنها خیلی ساده نبود و از پروتکل های مختلفی استفاده میکردند. با مجازیسازی میتوان استفاده از این تکنولوژیها را ساده کرد زیرا در نهایت همه چیز بصورت استاندارد مورد استفاده قرار میگیرد.
- امکان صرفهجویی در هزینهها: مدیریت ذخیرهسازی فیزیکی هنوز هم در مراکز داده یک کار خسته کننده است. زمان و مهارت افراد میتواند بصورت مفیدتر بکار گرفته شود. با مجازیسازی داده میتوان بصورت کارآمد نیاز به متخصصین IT را برای انجام کارهای دستی مدیریت ذخیرهسازی فیزیکی برطرف کرد. نکته دیگر این است که سختافزار لازم نیست وابسته به یک فروشنده خاص باشد و میتوان تکنولوژیهای ذخیرهسازی را از فروشندههای مختلف خریداری کرد.
- شرکتهای بسیاری از این روش پشتیبانی میکنند: شرکتهای مهم بسیاری درگیر توسعه تکنولوژیهای مجازیسازی فضای ذخیرهسازی شدهاند که میتوان به HP، VMware، EMC و IBM اشاره کرد. برای مثال VMware تکنولوژی مجازیسازی ذخیرهسازی را در برخی از محصولات خود نظیر VMware Workstation بکارگرفته است. EMC راهحل خود را بنام Information Lifecycle Management ارائه کرده است. IBM هم راهحل مجازیسازی داده خود را بنام Total Storage توسعه داده است. آنها یک کنترلر SAN خاص را ارائه کردهاند که میتواند بسیاری از کارهای مدیریت SAN را انجام دهد و بار کاری مدیران مرکز داده را به شدت کاهش میدهد و امکان بهرهوری بیشتر را از نظر زمان و منابع فراهم میآورد.
مجازی سازی سیستم عامل (OS Virtualization)
مجازیسازی سیستم عامل اگرچه شبیه به روش full virtualization است اما در حقیقت کاملا با آن متفاوت است. روش full virtualization شامل مجازیسازی کل سختافزار یک ماشین است. سپس هر محیط مجازی در سیستم عامل خود و هسته مربوط به خود اجرا میشود. اما مجازیسازی در سطح سیستم عامل متفاوت است و در آن محیطهای مجزا، هسته های مجزا ندارند، بلکه همه محیطها (که به آن ها container گفته میشود) در یک هسته واحد اجرا میشوند.
محیط هر container در مجازیسازی سیستم عامل از دیگر container ها ایزوله خواهد بود و مانند یک سرور فیزیکی عمل میکند. در محیط یک container برنامهها میتوانند اجرا شوند. نتیجه نهایی در این سطح از مجازیسازی شبیه full virtualization است، اما روند انجام کار متفاوت است. مجازیسازی سیستم عامل چند نمونه تجربه عملی دارد. این روش مدت ها در محیطهای میزبانی مجازی مورد استفاده قرار میگرفته است. میزبانی مجازی شامل میزبانی بیش از یک نام دامنه بر روی یک ماشین فیزیکی یکسان بوده است. با استفاده از مجازیسازی سیستم عامل، میزبانهای وب میتوانستند محیطهای مجزا و امنی را برای نام های دامنه مختلف ایجاد کنند. این کار واقعا سودمند است زیرا اگر منابع فقط به یک دامنه اختصاص داده شود، بخش عمده آن به هدر میرود.
دیگر مزایای استفاده از مجازیسازی سیستم عامل شامل تفکیک برنامهها با امکان مدیریت آسان منابع است. برای مثال میتوانید یک گروه از برنامهها را در container های مختلف دسته بندی کنید یا جدا کنید. به این ترتیب منابع نرمافزاری نسبت به حالتی که همه برنامهها با هم در یک محیط قرار داشته باشند، بهتر قابل مدیریت خواهند بود. به نظر میرسد که مجازیسازی سیستم عامل بسیار مفید بوده است و شاید جای تعجب داشته باشد که چرا اکثر سازمانها امروزه بجای آن از full virtualization استفاده میکنند. هر دو راهحل اگر چه با هم متفاوتند ولی نتیجه یکسان دارند و هر دو مزایا و معایب خودشان را نیز دارند.
مزیت اصلی مجازیسازی سیستم عامل بر full virtualization این است که سربار بسیار کمتری دارد و در نتیجه بهرهوری آن بسیار بیشتر است زیرا نیاز به شبیهسازی سختافزار ندارد. از طرفی اشکال آن این است که نمیتواند سیستمهای عاملی غیر سیستم عامل میزبان را اجرا کند. اگر بخواهید یک محیط لینوکسی را در سیستم عامل ویندوز اجرا کنید، مجازیسازی سیستم عامل برای شما مناسب نخواهد بود.
محیط Container محدودیتهایی نیز دارد. برای مثال، یک Container نمیتواند هسته خود را مستقیما تغییر دهد. نمیتوان سیستم فایلها را mount یا dismountکرد و نمیتوان دیگر فعالیت های سطح بالا را انجام داد. یک روش full virtualization به کاربر دسترسی بدون محدودیتی را به محیطی که در آن سیستم عامل های مختلف میتواند نصب شود میدهد. بنابر این قابلیت انعطاف full virtualization باعث شده است که به یک راهحل استاندارد برای مجازیسازی تبدیل شود. همراه با تکنولوژیهای دیگر hardware-assisted virtualization و Para-assisted virtualization، این روش کارآیی و بهرهوری در حد مجازیسازی سیستم عامل را بدست آورده است. اما با این حال تکنولوژی مجازیسازی سیستم عامل هنوز بطور گسترده (برای مثال در محیطهای میزبانی وب) مورد استفاده قرار میگیرد و در آینده نیز استفاده خواهد شد.
سایر مفاهیم مرتبط با مجازیسازی
چگالی مجازی سازی (Virtualization Density)
چگالی مجازیسازی عبارتی است که با تعدادی از تکنولوژیهای مجازیسازی بکار میرود. این عبارت اغلب به تعداد ماشینهای مجازی اشاره میکند که میتوانند در یک ماشین فیزیکی یا rack قرار بگیرند. هرچه تعداد ماشینهای مجازی که یک ماشین فیزیکی بتواند پشتیبانی کند بیشتر باشد، چگالی بیشتری دارد. همچنین گاهی به توانایی یک شرکت برای ایجاد یک زیرساخت شبکه با تعداد ماشینهای فیزیکی کمتر از طریق استفاده از VLAN و تکنولوژیهای مجازیسازی نیز گفته میشود. اصطلاح چگالی مجازیسازی ممکن است برای توصیف تعداد برنامههای کاربردی مجازی شده که بتواند بطور موثر روی یک ماشین اجرا شوند نیز بکار رود.
بطور کلی، وقتی اصطلاح چگالی مجازیسازی استفاده میشود، در حقیقت برای تعداد یک تکنولوژی مجازیسازی خاص (چه ماشین مجازی باشد، چه برنامه کاربردی یا ....) که بتواند بطور موثر در یک محیط خاص اجرا شود، قابل استفاده خواهد بود. هر چه تعداد بیشتر باشد، چگالی محیط بیشتر است.
سطح مجازی سازی (Virtualization Level)
سطوح مجازیسازی به سطوح مختلفی گفته میشود که میتوانند در زمان مجازیسازی فضای ذخیرهسازی اعمال گردند. این سطوح با همدیگر فرق میکنند و میتوانند شامل مجازیسازی در سطح هارد دیسک (با روش های فوق) تا مجازیسازی کامل در سطح سیستم فایل انجام شود. چهار سطح اصلی وجود دارد که به این شرح میباشد:
سطح سرور (Server Level)
این سطح تا حدی خود تعریف است. در این سطح مدیریت هارد دیسک های فیزیکی در محیط سیستم عامل سرور انجام میشود. برای مثال میتواند شامل تقسیمبندی فیزیکی هارد دیسک شود.
سطح دستگاه ذخیره سازی (Storage Device Level)
این سطح مجازی میتواند شامل تکنیک هایی نظیر data mirroring و data striping باشد. شناخته شده ترین نمونه این سطح از مجازیسازی RAID است. RAID 0 از stripping استفاده میکنند که در این روش دادهها در چندین دیسک نوشته میشوند، اما کاربر نهایی به گونه ای به داده دسترسی پیدا خواهد کرد که به نظر در یک درایو محلی واحد قرار دارند. برخی شکلهای دیگر RAID (مثلا RAID 1) از mirroring استفاده میکنند که در آن داده روی دو دیسک مجزا همزمان نوشته میشود. در برخی انواع RAID از ترکیب striping و mirroringاستفاده میشود که یک روش بسیار موثر در مجازیسازی دستگاه های ذخیرهسازی و روش های تهیه کپی پشتیبانی است.
Fabric Level
در این سطح مجازیسازی به دستگاه های ذخیرهسازی اجازه داده میشود که بطور مستقل از سختافزار یا سرور فیزیکی عمل کنند. به این معنا که استخری عظیم از فضاهای ذخیرهسازی ایجاد خواهد شد در حالی که بطور منطقی به صورت یک فضای واحد دیده میشوند. معمولا یک واسط مدیریت برای مدیریت سیستمهای ذخیرهسازی در این سطح مورد نیاز است، زیرا از سرور مدیریتی مستقل هستند. یک کنترلر SAN میتواند مجازیسازی در این سطح را انجام دهد.
سطح سیستم فایل (File System Level)
این سطح بیشترین مزایا را برای کاربران خواهد داشت زیرا ذخیرهسازی به نهایت حد مجازیسازی خود میرسد. دادهها میتوانند به اشتراک گذاشته شوند، محافظت شوند و ... با استفاده از این سطح از مجازیسازی، اندازه استخر داده مجازی شده میتواند به هر شکل دلخواه مدیریت شود. همچنین مجموعههای مختلف داده میتوانند از یک محل به محل دیگر بصورت درایو های مجازی با سهولت بسیار منتقل شوند.