ماشین مجازی (VM) یک منبع محاسباتی است که به جای رایانه فیزیکی از نرم افزار برای اجرای و استقرار برنامهها استفاده میکند. یک یا چند ماشین مجازی “guest” روی یک ماشین “host” فیزیکی اجرا میشود. هر ماشین مجازی سیستم عامل خود را اجرا میکند و به طور جداگانه از ماشینهای مجازی دیگر عمل میکند، حتی زمانی که همه آنها بر روی یک میزبان اجرا میشوند. این بدان معنی است که، برای مثال، یک ماشین مجازی MacOS میتواند بر روی یک کامپیوتر فیزیکی اجرا شود.
فناوری ماشین مجازی برای بسیاری از موارد استفاده در محیطهای داخلی و ابری استفاده میشود. اخیراً، سرویسهای ابر عمومی از ماشینهای مجازی برای ارائه منابع برنامه مجازی به چندین کاربر به طور همزمان استفاده میکنند تا محاسباتی حتی مقرون به صرفهتر و منعطفتر.
جدول محتوا
ماشینهای مجازی چه کاربردی دارند؟
ماشینهای مجازی (VM) به یک کسبوکار اجازه میدهند سیستم عاملی را اجرا کنند که مانند یک رایانه کاملاً مجزا در یک پنجره برنامه روی دسکتاپ رفتار میکند. ماشینهای مجازی ممکن است برای پاسخگویی به سطوح مختلف نیازهای قدرت پردازشی، اجرای نرمافزارهایی که به سیستمعامل متفاوتی نیاز دارند، یا برای آزمایش برنامهها در یک محیط امن به کار گرفته شوند.
ماشینهای مجازی از گذشته برای مجازیسازی سرور استفاده میشدهاند که تیمهای فناوری اطلاعات را قادر میسازد منابع محاسباتی خود را یکپارچه کرده و کارایی را بهبود بخشند. علاوه بر این، ماشینهای مجازی میتوانند وظایف خاصی را انجام دهند که انجام آنها در محیط هاستینگ بسیار خطرناک است، مانند دسترسی به دادههای آلوده به ویروس یا آزمایش سیستمهای عامل. از آنجایی که ماشین مجازی از بقیه سیستم جدا شده است، نرم افزار داخل ماشین مجازی نمیتواند کامپیوتر هاست را دستکاری کند.
ماشینهای مجازی چگونه کار میکنند؟
ماشین مجازی مشابه هر برنامه دیگری، در سیستم عامل ماشین فیزیکی به عنوان یک process در یک windows application اجرا میشود. فایلهای کلیدی که یک ماشین مجازی را تشکیل میدهند شامل فایل لاگ، فایل تنظیمات NVRAM، فایل دیسک مجازی و فایل پیکربندی میشوند.
مزایای ماشین مجازی
مدیریت و نگهداری ماشینهای مجازی آسان است و مزایای زیادی نسبت به ماشینهای فیزیکی دارند:
- ماشین های مجازی میتوانند چندین محیط سیستم عامل را بر روی یک کامپیوتر فیزیکی اجرا کنند که باعث صرفه جویی در فضای فیزیکی، زمان و هزینههای مدیریت میشود.
- ماشینهای مجازی از برنامههای Legacy پشتیبانی میکنند و هزینه مهاجرت به یک سیستم عامل جدید را کاهش میدهند. به عنوان مثال، ماشین مجازی aLinux که توزیعی از لینوکسها را به عنوان سیستم عامل مهمان اجرا میکند، میتواند روی ahostserver که یک سیستم غیر عامل لینوکس مانند ویندوز را اجرا میکند وجود داشته باشد.
- ماشینهای مجازی همچنین میتوانند integrated disaster recovery و application provisioning را ارائه دهند.
معایب ماشینهای مجازی
در حالی که ماشینهای مجازی مزایای متعددی نسبت به ماشینهای فیزیکی دارند، معایب بالقوهای نیز وجود دارد:
- اجرای چندین ماشین مجازی روی یک ماشین فیزیکی میتواند منجر به عملکرد ناپایدار در صورت کمبود نیازهای زیرساختی شود.
- ماشینهای مجازی کارایی کمتری دارند و کندتر از یک کامپیوتر فیزیکی کامل کار میکنند. اکثر شرکتها از ترکیبی از زیرساختهای فیزیکی و مجازی برای ایجاد تعادل بین مزایا و معایب مربوطه استفاده میکنند.
دو نوع ماشین مجازی
کاربران میتوانند از بین دو نوع مختلف ماشین مجازی، process VMs یا system VMs را انتخاب کنند:
process virtual machine اجازه میدهد تا یک فرآیند واحد به عنوان یک برنامه کاربردی بر روی یک ماشین میزبان اجرا شود و با پوشاندن اطلاعات سخت افزار یا سیستم عامل، یک محیط برنامه نویسی مستقل از پلتفرم را فراهم میکند. نمونه ای از ماشین مجازی پردازشی، ماشین مجازی جاوا است که به هر سیستم عاملی امکان میدهد برنامههای جاوا را به گونهای اجرا کند که گویی بومی آن سیستم هستند.
system virtual machine به طور کامل مجازی سازی شده است تا جایگزین ماشین فیزیکی شود. یک پلتفرم سیستمی از اشتراک منابع فیزیکی کامپیوتر میزبان بین چندین ماشین مجازی پشتیبانی میکند که هر کدام نسخهای از سیستم عامل خود را اجرا میکنند. این فرآیند مجازی سازی متکی به یک Hypervisor است که میتواند بر روی سخت افزارهای خالی مانند VMware ESXi یا بالای یک سیستم عامل اجرا شود.
معرفی 5 نوع مجازی سازی
امروزه تمام اجزای یک مرکز داده سنتی و یا زیرساخت IT قابلیت مجازی سازی شدن توسط انواع مختلف مجازی ساز را دارند:
مجازیسازی سختافزار: هنگام مجازیسازی سختافزار، نسخههای مجازی رایانهها و سیستمهای عامل (VM) ایجاد میشوند و در یک سرور فیزیکی اصلی و منفرد ادغام میشوند. یک هایپروایزر مستقیماً با فضای دیسک و CPU یک سرور فیزیکی برای مدیریت ماشینهای مجازی ارتباط برقرار میکند. مجازیسازی سختافزار، که به عنوان مجازی سازی سرور نیز شناخته میشود، اجازه میدهد تا از منابع سختافزاری بهطور کارآمدتر استفاده شود و یک ماشین سیستمعاملهای مختلف را به طور همزمان اجرا کند.
مجازی سازی نرم افزار: مجازی سازی نرم افزار یک سیستم کامپیوتری کامل با سخت افزار ایجاد میکند که به یک یا چند سیستم عامل مهمان (Guest) اجازه میدهد روی یک ماشین میزبان فیزیکی اجرا شوند. به عنوان مثال، سیستم عامل اندروید میتواند بر روی یک دستگاه میزبان که به طور بومی از سیستم عامل ویندوز مایکروسافت استفاده میکند، اجرا شود و از سخت افزاری مشابه دستگاه میزبان استفاده میکند. علاوه بر این، برنامهها را میتوان مجازی کرد و از یک سرور hp به دستگاه کاربر نهایی، مانند لپتاپ یا گوشی هوشمند، تحویل داد. این به کارمندان اجازه میدهد تا هنگام کار از راه دور به برنامههای هاستینگ مرکزی دسترسی داشته باشند.
مجازی سازی فضای ذخیره سازی: فضای ذخیره سازی را میتوان با ادغام چند دستگاه ذخیره سازی فیزیکی مجازی سازی کرد تا به عنوان یک دستگاه ذخیره سازی واحد ظاهر شود. از مزایای آن میتوان به افزایش عملکرد و سرعت، تعادل بار کاری و کاهش هزینهها اشاره کرد. مجازیسازی استوریج همچنین به برنامهریزی برای بازیابی کمک میکند، زیرا دادههای ذخیرهسازی مجازی را میتوان کپی کرد و به سرعت به مکان دیگری منتقل کرد و زمان خرابی (downtime) را کاهش داد.
مجازی سازی شبکه: چندین شبکه فرعی را میتوان در یک شبکه فیزیکی با ترکیب تجهیزات در یک منبع شبکه مجازی مبتنی بر نرم افزار ایجاد کرد. مجازی سازی شبکه همچنین پهنای باند موجود را به چندین کانال مستقل تقسیم میکند که هر کدام میتوانند به سرورها و دستگاهها در زمان واقعی اختصاص داده شوند. از مزایای آن میتوان به افزایش قابلیت اطمینان، سرعت شبکه، امنیت و نظارت بهتر بر استفاده از دادهها اشاره کرد. مجازی سازی شبکه میتواند انتخاب خوبی برای شرکتهایی با حجم بالای کاربر باشد که همیشه نیاز به دسترسی دارند.
مجازی سازی دسکتاپ: این نوع رایج مجازی سازی، محیط دسکتاپ را از دستگاه فیزیکی جدا میکند و یک دسکتاپ را روی یک سرور راه دور (remote server) ذخیره میکند و به کاربران امکان میدهد از هر کجا و در هر دستگاهی به دسکتاپ خود دسترسی داشته باشند. علاوه بر دسترسی آسان، مزایای دسکتاپ مجازی شامل امنیت بهتر دادهها، صرفه جویی در هزینه مجوزها و به روز رسانی نرم افزار و مدیریت آسان است.
کانتینر در مقابل ماشین مجازی
مانند ماشینهای مجازی، فناوری کانتینری مانند Kubernetes از نظر اجرای برنامههای مجزا روی یک پلتفرم مشابه است. در حالی که ماشینهای مجازی لایه سختافزار را مجازی میکنند تا یک «کامپیوتر» ایجاد کنند، کانتینرها تنها یک برنامه را به همراه وابستگیهای آن بستهبندی میکنند. ماشینهای مجازی اغلب توسط یک هایپروایزر مدیریت میشوند، در حالی که سیستمهای کانتینری خدمات سیستم عامل مشترک را از هاستینگ اصلی ارائه میکنند و برنامهها را با استفاده از سختافزار حافظه مجازی جدا میکنند.
یکی از مزایای کلیدی کانتینرها این است که سربار کمتری نسبت به ماشینهای مجازی دارند. کانتینرها فقط شامل باینریها، کتابخانهها و سایر وابستگیهای مورد نیاز و برنامه هستند. کانتینرهایی که روی یک هاست قرار دارند هسته سیستم عامل یکسانی دارند و کانتینرها را بسیار کوچکتر از ماشینهای مجازی میکند. در نتیجه، کانتینرها سریعتر بوت میشوند، منابع سرور را به حداکثر میرسانند و تحویل برنامهها را آسانتر میکنند. کانتینرها برای موارد استفاده مانند برنامههای کاربردی وب، آزمایش DevOps، میکروسرویسها و به حداکثر رساندن تعداد برنامههای قابل استقرار در هر سرور محبوب شدهاند.
ماشینهای مجازی بزرگتر و کندتر از کانتینرها راه اندازی میشوند. آنها به طور منطقی با هسته سیستم عامل خود از یکدیگر جدا هستند و مزایای یک سیستم عامل کاملاً مجزا را ارائه میدهند. ماشینهای مجازی برای اجرای چندین برنامه با هم، برنامههای یکپارچه، جداسازی بین برنامهها و برای برنامههای قدیمی که روی سیستمعاملهای قدیمیتر اجرا میشوند، بهترین هستند. کانتینرها و ماشینهای مجازی ممکن است با هم نیز استفاده شوند.