
در ابتدای ظهور شبکههای کامپیوتری، بر روی هر سرور فیزیکی، فقط یک سیستم عامل نصب میشد. این سرورها، معمولا هر کدام، تنها یک سرویس را، بر روی شبکه ارائه میکردند. در صورتیکه لازم بود، سرویس جدیدی بر روی سیستم عامل خاصی ارائه شود، باید منابع سختافزاری جدیدی را اضافه میکردیم. این امر، موجب نیاز به فضای بیشتر، برای نگهداری و همچنین افزایش مصرف منابع انرژی، در تامین برق و سیستم سرمایشی، برای سرورها بود. برای استفادهی بهینه، از منابع سختافزاری، انواع مجازی سازی در سطوح مختلف سختافزاری و نرم افزاری، مطرح گردید.
مجازی سازی، راهکاری، برای کاهش هزینهها و افزایش مدیریت موثر منابع است. در این روش منابع سختافزاری، مانند: سرور، استوریج و تجهیزات شبکه، با روش نرمافزاری، شبیهسازی میشوند. کارکرد این نمونههای شبیهسازی شده، شبیه منابع فیزیکی است. بنابراین، هر device سختافزاری، به طور مجازی، قابل تبدیل به چندین device مجازی است. مجازی سازی در چندین سطح قابل پیادهسازی میباشد. انواع مجازی سازی در سطوح مختلف، عبارتند از: مجازیسازی سرور، مجازی سازی اپلیکیشن و مجازیسازی دسکتاپ، مجازیسازی شبکه و مجازیسازی storage. در ادامه در بارهی انواع مجازی سازی و کاربردهای آن سخن میگوییم:
مزایای مجازی سازی
- استفادهی بهینه از منابع سختافزاری
- کاهش قابل ملاحظهی هزینههای سختافزاری
- کاهش زمان Downtime و افزایش پایداری
- کاهش قابل ملاحظهی مصرف انرژی و فضای نصب تجهیزات سختافزاری
- مدیریت متمرکز و آسان
- انعطافپذیری بالا
- پیاده سازی سرویس های جدید در زمان کوتاهتر
- پشتیبانگیری سریع از دادهها
- بروزرسانی متمرکز و سریع
تاریخچه مجازی سازی
تاریخچهی مجازی سازی به دههی شصت میلادی برمیگردد. در سال ۱۹۶۴، IBM، توسعهی CP-40 را آغاز نمود، که بعدا، به CP-67 ارتقا پیدا کرد. CP-40، اولین سیستم عامل از سری CP-CMS میباشد. CP/CMS، دارای قابلیت مجازیسازی بوده و به هر کاربر، یک ماشین مجازی اختصاص میداد. این ماشین مجازی، شبیهسازی شدهی تمام امکانات سختافزاری مینفریم بود. همچنین، هر ماشین مجازی، نسبت به ماشینهای مجازی دیگر ایزوله بود.
در دههی ۸۰ میلادی، با ظهور کامپیوترهای رومیزی و کاهش قیمت آنها، اقبال به مجازیسازی، کمتر گردید. با گسترش شبکههای کامپیوتری، نیاز به گسترش منابع سختافزاری بوجود آمد. نگهداری و تامین برق و سیستمهای خنک کننده برای دیتاسنترها، چالش بزرگی برای سازمانها بود. با همین دلیل برای کاهش هزینههای سختافزاری و منابع انرژی، مجددا، انواع مجازی سازی در سطوح مختلف، مورد توجه قرار گرفت.
در سال ۱۹۹۷ Virtual PC برای پلتفرم مکینتاش عرضه گردید. سال بعد VMware آغاز به کار نمود. در سال ۲۰۰۳ XenServer، به عنوان اولین hypervisor اوپنسورس، معرفی گردید. در سال ۲۰۰۷، KVM، نرمافزار open source دیگری، برای مجازیسازی منتشر گردید. در سال ۲۰۰۸، Microsoft Hyper-V منتشر شد. در سال ۲۰۱۳، داکر، نوعی مجازیسازی مبتنی بر کانتینرها، معرفی گردید.
مجازی سازی سرور
مجازی سازی سرور یا مجازیسازی سختافزار، به طور گسترده، در مراکز داده(datacenter) استفاده می گردد. در مجازیسازی سرور، سیستم عاملهای گوناگون، مستقل از هم، از منابع سختافزاری یک سرور فیزیکی، به طور مشترک استفاده میکنند. با این کار، تعداد سرورهای فیزیکی مورد نیاز، بهطور قابل ملاحظهای کاهش مییابد. به عنوان مثال، در شکل زیر، سه عدد سرور یکسان، برای سرویس وب، سرویس ایمیل و یک اپلیکیشن که با سیستم عاملی قدیمی کار میکند، وجود دارد. هر کدام از این سرورها، حدود بیست درصد از توان خود را، برای ارائهی سرویسها مصرف میکنند.

با مجازیسازی سرور، ما میتوانیم، هر سه سرویس را بر روی یک سرور، پیاده سازی نماییم. به طوری که، هر سرویس، بر روی یک ماشین مجازی مجزا، با سیستم عامل جداگانه نصب گردد. در نتیجه با این کار دو سرور فیزیکی دیگر، آزاد میگردند.

نرمافزارهای مختلفی، برای مجازیسازی سرور وجود دارد. از Citrix XenServer, Hyper-V, KVM , Vmware ESX/ESXi میتوان به عنوان نرمافزارهایی برای مجازی سازی سرور نام برد. به هر کدام از ماشینهای مجازی، مهمان(Guest)، میگوییم. به سرور فیزیکی، میزبان(Host) گفته میشود. قسمت اصلی نرمافزار، در مجازیسازی سرور، هایپروایزر(hypervisor)، نام دارد. در ادامه، انواع هایپروایزر را، مورد بررسی قرار میدهیم.
آشنایی با hypervisor و انواع آن
چنانکه می گویند، دو پادشاه، در یک اقلیم نمیگنجند، دو سیستم عامل هم به طور همزمان، در یک کامپیوتر، با هم کار نمیکنند. هر سیستم عامل، به طور طبیعی میخواهد تمام مدیریت منابع یک کامپیوتر را، در اختیار داشته باشد. هایپروایزر، با شبیهسازی سختافزار کامپیوتر، شرایط اجرای سیستم عاملهای گوناگون را، بر روی یک سرور فراهم میسازد. هر سیستم عامل به طور مجزا، اجرا شده و منابع سختافزاری سرور را، از طریق هایپروایزر، در اختیار میگیرد. هایپروایزرها، بنا به عملکردشان، به دو گونه تقسیم میشوند: Bare Metal و Hosted.
هایپروایزر نوع اول Bare Metal
در این نوع، سرور میزبان، مستقیما از طریق هایپروایزر، بوت شده و مدیریت تمام منابع سختافزاری، بر عهدهی هایپروایزر میباشد. در این روش، سیستم عامل مهمان، مستقیما به سختافزار دسترسی ندارد. به همین جهت، کارایی آن نسبت به زمانی که مستقیما بر روی سرور نصب شده باشد، کمتر است. اما با توجه به قابلیت تجمیع چندین ماشین مجازی، بر روی یک سرور، از این روش، بسیار استفاده میگردد. از Citrix XenServer, Hyper-V , Vmware ESXi میتوان به عنوان این نوع از مجازی سازی نام برد.

هایپروایزر نوع دوم یا Hosted
هایپروایزرهای Hosted، خود بر روی سیستم عامل دیگری اجرا شده و از طریق هستهی آن سیستم عامل به منابع سختافزاری دسترسی دارند. در این روش هر ماشین مجازی، باید از طرق هایپروایزر به منابع سختافزاری دسترسی داشته باشد. علاوه بر این خود هایپروایزر نیز برای دسترسی به منابع سخت افزار، از طریق سیستم عامل میزبان، امکانپذیر است. این امر، کارایی ماشین های مجازی در هایپروایزر نوع دوم را، نسبت به هایپروایزر نوع Bare Metal پایینتر میآورد. از برنامههای مجازیسازی برای این نوع، میتوان به Vmware Workstation و VirtualBOX اشاره نمود.

انواع مجازیسازی سرور
مجازی سازی کامل
در این روش، هر ماشین مجازی، به طور کامل از ماشینهای مجازی دیگر، ایزوله است.همچنین هر ماشین مجازی، دارای یک سیستم عامل مستقل و بدون تغییر است. از برنامههای مجازیسازی کامل میتوان به ESXi و Hyper-V اشاره نمود.
مجازی سازی Paravirtualization
در این نوع از مجازیسازی، سیستم عامل مهمان، کاملا ایزوله نیست، و با سختافزار، مستقیما میتواند ارتباط داشته باشد. این امر مستلزم تغییراتی در هستهی سیستم عامل است. بنابراین برای اینکار باید source سیستم عامل را در دسترس داشته باشیم. در این روش، سیستم عامل مهمان، با هایپروایزر، از طریق دستوراتی به نام hypercalls در ارتباط هستند. از این فرامین میتوان به عنوان مثال برای مدیریت حافظه استفاده نمود. کارایی روش paravirtualization، از روش مجازیسازی کامل، بالاتر است. XenServer و KVM ، دارای قابلیت paravirtualization هستند.
مجازی سازی در سطح سیستم عامل
در این روش همهی نمونههای مجازی بر روی یک سیستمعامل، اجرا میشوند. با این حال هر نمونهی مجازی، از نمونههای دیگر مجزا و مستقل است. در این روش، از هایپروایزر استفاده نمیشود. زیرا سیستم عامل مهمانها، از همان سیستم عامل میزبان استفاده میکنند. در این روش کارایی سیستم، به طور قابل ملاحظهای افزایش مییابد. از برنامههای مجازیسازی در سطح سیستم عامل میتوان به docker و LXC اشاره نمود.
مجازیسازی شبکه Network Virtulization
مجازی سازی شبکه یا NV، یکی دیگر از انواع مجازیسازی میباشد. برای سازگار کردن شبکههای کامپیوتری، در محیطهای مجازی، از شبکههای مجازی استفاده میشود. در NV، قسمت مجازی شبکه (بخش نرمافزاری)، از تجهیزات سختافزاری شبکه، مجزا شده است. در این روش، تجهیزات سختافزاری، به یک ارسالکنندهی سادهی پکتها تبدیل میشوند. با استفاده از مجازیسازی میتوان چند نمونهی مجازی ، بعنوان مثال، از یک سوییچ و یا روتر فیزیکی ایجاد نمود، که این امر، توان استفاده از حداکثر ظرفیت منابع شبکه را بالا میبرد. بخش نرمافزاری یا قسمت هوشمند شبکه، وظایف مدیریت و کنترل سرویسها و منابع شبکه را برعهده دارد. یکی از مزایای شبکهی مجازی، عدم وابستگی، به سختافزار خاص است. تکنولوژی های NFV و SDN، بیش از پیش، شبکههای کامپیوتری رایج را، به سمت مجازیسازی شبکه سوق میدهند.
مجازیسازی Storage
در مجازیسازی استوریجها، با استفاده از گروهی از استوریجهای فیزیکی، میتوان آنها را بهطور مجازی و منطقی، به صورت یک مجموعهی واحد ذخیرهسازی، در نظر گرفت. مجازی سازی استوریجها، مدتها است که به کار گرفته میشود. از تکنولوژی RAID برای یکپارچهسازی استوریجها و همچنین Redundancy یا افزونگی استفاده میشود. در این روش مجموعهی فیزیکی استوریجها، بهطور منطقی تبدیل به یک حجم واحد میگردند.
مجازیسازی دسکتاپ Desktop Virtualization
مجازیسازی دسکتاپ، یا VDI یا Virtual Desktop Infrastructure، روشی است که در آن، یک سیستم عامل دسکتاپ، مانند ویندوز ۱۰، به صورت مجازی با استفاده از یک سرور به کاربران نهایی ارائه میگردد. در این روش، کاربران به جای نصب یک سیستم عامل دسکتاپ، بر روی یک کامپیوتر خود، از طریق شبکه به دسکتاپ مجازی، دسترسی دارند. کاربران تمام دادههای خود را در شبکه ذخیره می کنند. در این روش کاربران میتوانند، بدون وابستگی به مکان، از هر نقطه به دسکتاپ خود دسترسی داشته باشند. با استفاده از مجازیسازی دسکتاپ، شاهد کاهش در هزینهی مربوط به لایسنس سیستم عامل خواهیم بود. همچنین سرعت بروزرسانی و رفع نواقص احتمالی نیز، افزایش خواهد یافت. امروزه، عرضهکنندگان اصلی مجازیسازی دسکتاپ Citrix XenDesktp و Vmware Horizon هستند.
مجازی سازی اپلیکیشن
مجازیسازی اپلیکیشن، شبیه مجازیسازی دسکتاپ میباشد. در این روش، اپلیکیشن، بر روی یک سرور، به صورت مجازی، به کاربر نهایی ارائه میگردد. تمام پردازشها توسط سرور انجام میپذیرد. در سمت کاربر فقط از طریق شبکه، با برنامه، ارتباط دارد و هیچ پردازشی برای برنامه، در سمت کاربر صورت نمیپذیرد. در این روش انتشار یک نرمافزار، بسیار سریع خواهد بود. همچنین کاربر، از طریق deviceهای مختلف، میتواند به اپلیکیشن، دسترسی داشته باشد. از برنامههای مجازیسازی اپلیکیشن، میتوان به XenApp، VM ThinApp و App-V اشاره نمود.