ماشین مجازی چیست و چرا مفید است؟
ریشه بسیاری از نوآوریهای مرتبط با IT که امروزه از آنها استفاده میکنیم، در ماشینهای مجازی و جداسازی نرمافزار از سخت افزار است. بسیاری از فناوریهای پیشرفته امروزی مانند رایانش ابری، رایانههای لبهای ( edge computing ) و ریز سرویسها، مرهون مفهوم ماشین مجازی (جدا کردن سیستم عاملها و نمونههای نرمافزاری از یک رایانه فیزیکی) هستند.
ماشین مجازی چیست؟
یک ماشین مجازی (VM) در سطح پایه، نرمافزاری است که برنامهها را بدون اتصال به ماشین فیزیکی اجرا میکند. در یک نمونه VM ، یک یا چند ماشین مهمان میتواند بر روی رایانه هاست فیزیکی اجرا شوند.
هر ماشین مجازی، سیستم عامل مخصوص به خود را دارد و عملکرد آن جدا از سایر ماشینهای مجازی است؛ حتی اگر در همان هاست فیزیکی قرار بگیرند. ماشینهای مجازی معمولاً روی سرورهای رایانهای اجرا میشوند، اما میتوانند در سیستمهای دسک تاپ یا حتی سیستم عاملهای تعبیه شده ( embedded platforms ) نیز اجرا شوند. چندین ماشین مجازی میتواند منابع را از میزبان فیزیکی به اشتراک بگذارد، از جمله پردازنده، پهنای باند شبکه و حافظه.
پیدایش ماشینهای مجازی از اوایل دهه 1960 است، زمانی که سیستم اشتراک زمانی برای کاربران اصلی به معنای جداسازی نرمافزار از سیستم میزبان فیزیکی بود. ماشین مجازی در اوایل دهه 1970 به عنوان “یک کپی کارآمد و ایزوله، از یک ماشین رایانه واقعی” تعریف شد.
ماشینهای مجازی که امروزه میشناسیم، طی 15 سال گذشته به خاطر استفاده از مجازیسازی سرور، به منظور استفاده کارآمدتر از قدرت محاسبه سرورهای فیزیکی خود ، نیاز به سرورهای فیزیکی را کاهش داده و باعث صرفه جویی در فضای مرکز داده شدهاند. از آنجا که برنامههایی با سیستمعاملهای مختلف میتوانند بر روی یک میزبان فیزیکی اجرا شوند، برای هر یک از آنها نیازی به سختافزار سرورهای مختلف نیست.
انواع ماشین مجازی
به طور کلی، دو نوع ماشین مجازی وجود دارد:
- ماشین مجازی پردازشی که یک فرآیند و سیستم را جدا میکند
- ماشین مجازی سیستم که جدایی کامل سیستم عامل و برنامهها را از رایانه فیزیکی ارائه میدهد.
نمونه هایی از ماشینهای مجازی فرآیندی شامل: ماشین مجازی جاوا، دات نت فریم ورک و ماشین مجازی پرت(Parrot) است.
سیستم ماشین مجازی به عنوان یک راهحل بین دسترسی نرمافزار به منابع سخت افزاری، به hypervisors متکی هستند.hypervisor یا (مانیتور ماشین مجازی،VMM ، مجازی ساز) نرم افزار رایانهای، سیستم عامل یا سخت افزاری است که ماشینهای مجازی را ایجاد و اجرا می کند. رایانه ای که یک هایپروایزر بر روی آن یک یا چند ماشین مجازی را اجرا میکند، ماشین میزبان و به هر ماشین مجازی، ماشین مهمان گفته میشود.
برندهای بزرگ در فضای hypervisor شامل VMware (ESX / ESXi) ، Intel / Linux Foundation (Xen) ، Oracle (MV Server برای SPARC و Oracle VM Server برای x86) و Microsoft (Hyper-V) است.
سیستمهای کامپیوتر رومیزی نیز میتوانند از ماشینهای مجازی استفاده کنند. بزرگترین مثال در این مورد، میتواند یک کاربر Mac باشد که یک نمونه مجازی ویندوز 10 را روی سخت افزار فیزیکی Mac خود اجرا میکند.
مزایای ماشینهای مجازی
از آنجا که این نرمافزار از رایانه هاست فیزیکی جدا است، کاربران میتوانند چندین سیستمعامل را روی یک قطعه سخت افزاری اجرا کنند و باعث صرفه جویی در وقت شرکت، هزینههای مدیریت و فضای فیزیکی شوند.
مزیت دیگر این است که ماشینهای مجازی میتوانند از برنامههای قدیمی پشتیبانی کنند، این امر نیاز و هزینه مهاجرت از یک برنامه قدیمی به سیستم عامل به روز شده یا متفاوت را کاهش داده یا از بین میبرد.
توسعه دهندگان برای آزمایش برنامهها در یک محیط امن و sandbox، از ماشینهای مجازی استفاده میکنند. این کار میتواند به جداسازی بدافزارهایی که ممکن است یک نمونه ماشین مجازی خاص را آلوده کند، کمک کند. از آنجا که بدافزار موجود در داخل یک ماشین مجازی نمیتواند در رایانه میزبان تداخل ایجاد کند، نرمافزار مخرب نمیتواند به همان اندازه آسیب برساند.
نکات منفی ماشین مجازی
ماشینهای مجازی چند نکته منفی دارند. اجرای همزمان چندین ماشین مجازی در یک میزبان فیزیکی میتواند منجر به عملکرد ناپایدار شود، خصوصاً اگر شرایط زیرساختی برای یک برنامه خاص برآورده نشود. این امر همچنین باعث میشود در مقایسه با رایانه فیزیکی، در بسیاری از موارد کارآیی کمتری داشته باشند. بیشتر عملیات IT از تعادل بین سیستمهای فیزیکی و مجازی استفاده میکنند.
انواع دیگر مجازیسازی
موفقیت این ماشینها در مجازیسازی سرور، منجر به اعمال مجازیسازی در مناطق دیگر از جمله فضای ذخیره سازی، شبکه و دسک تاپ شد. اگر نوعی سخت افزار در مرکز داده، مورد استفاده قرار گیرد احتمال وجود دارد که مفهوم مجازیسازی آن مورد بررسی قرار گیرد.
در مجازیسازی شبکه، شرکتها گزینههای شبکه به عنوان سرویس و مجازیسازی توابع شبکه ( NFV ) را کشف کردهاند که از سرورهای کالا ( commodity servers ) برای جایگزینی لوازم شبکه ویژه برای فعال کردن خدمات انعطافپذیرتر و مقیاسپذیرتر استفاده میکند. این کمی با شبکه تعریف شده توسط نرمافزار متفاوت است، که صفحه کنترل شبکه را از صفحه حمل و نقل جدا میکند تا تأمین خودکار و مدیریت مبتنی بر سیاست منابع شبکه را امکانپذیر کند.
فناوری سوم، توابع شبکه مجازی، سرویس های مبتنی بر نرمافزار هستند که میتوانند در یک محیط NFV اجرا شوند، از جمله فرآیندهایی مانند مسیریابی، فایروال، تعادل بار، شتاب WAN و رمزگذاری.
ماشینهای مجازی و کانتینرها ( Containers )
رشد ماشینهای مجازی منجر به توسعه بیشتر فناوریهایی مانند کانتینرها شده است که این مفهوم یک قدم دیگر برداشته و در بین توسعهدهندگان برنامههای وب جذابیت بیشتری پیدا کرده است.
کانتینر چیست؟
با استفاده از کانتینرها، به جای مجازیسازی کامپیوتر اصلی ( که در ماشین مجازی صورت میگیرد )، فقط سیستم عامل، مجازی است. کانتینرها در بالای سرور فیزیکی و سیستم عامل میزبان آن قرار دارند. هر کانتینر، هسته سیستم عامل میزبان و معمولاً باینریها و کتابخانهها را نیز به اشتراک میگذارد.
با تنظیم کانتینر، میتوان یک برنامه واحد را به همراه وابستگیهای آن مجازیسازی کرد؛ با سربار کمتر از ماشین مجازی.
در حالی که برخی فکر می کنند توسعه کانتینرها ممکن است باعث از بین رفتن ماشین مجازی شود، اما تواناییها و مزایای ماشینهای مجازی به اندازه کافی وجود دارد که باعث میشود این فناوری به جلو حرکت کند.
گری چن مدیر تحقیق در بخش “محاسبات تعریف شده توسط نرم افزار” میگوید ماشین مجازی همچنان یک فناوری بنیادی است ( با وجود کانتیرها و کلاود ) و طی 5 سال آینده بسیار رشد خواهد داشت و به اشباع خواهد رسید.
اگر مفهوم کانتینر و ماشین مجازی هنوز برایتان به صورت کامل روشن نشده است پیشنهاد می شود مقاله ای که در مورد تفاوت ماشین مجازی و کانتینر است را مطالعه نمایید.
رایانه لبهای و ماشین مجازی و 5G
ماشینهای مجازی به عنوان بخشی از فناوریهای جدید مانند 5G و رایانههای لبهای دیده میشوند. به عنوان مثال، فروشندگان زیرساخت دسکتاپ مجازی (VDI) مانند مایکروسافت، VM و سیتریکس در حال بررسی روشهایی برای گسترش سیستم های VDI خود به کارمندانی هستند که اکنون به دلیل ویروس COVID-19 در خانه کار میکنند.
اگر مفاهیم اصلی ماشین وجود نداشت بسیاری از فناوریهای امروزی، رشد و پیشرفت نمیکردند.