ماشین مجازی نسخهای دیجیتال از یک کامپیوتر فیزیکی است. با استفاده از یک نرمافزار مجازیساز مانند ماشین مجازی شما قابلیت آن را دارید که سیستم عاملهای جداگانهای را بهصورت همزمان روی کامپیوتر خود اجرا کنید. در این شرایط هر سیستم عامل دارای محیط مستقلی برای اجرا نرمافزارها میشود و از منابع سختافزاری مختص به خود استفاده میکند.
برای مثال تصور کنید که شما در محیط سیستم عامل ویندوز، قصد دارید یک نسخه از سیستم عامل لینوکس را نیز بهصورت زنده و همزمان در اختیار داشته باشید. در این حالت میتوانید یک ماشین مجازی را با استفاده از ابزاری مانند Virtual Box ایجاد کرده و لینوکس را در آن نصب کنید.
در این حالت سیستم عامل شما را Guest یا مهمان و کامپیوتر فیزیکی شما که لینوکس روی آن نصب شده است، Host یا میزبان میگویند.
برای اینکه بهصورت عمیقتری با چیستی ماشین مجازی آشنا شویم، نیاز است که ابتدا با شیوه کاری آن آشنا شویم.
ماشین مجازی چگونه کار میکند؟
ماشین مجازی از تکنیک مجازیسازی یا Virtualization برای ساخت یک نسخه نرمافزاری از کامپیوتر استفاده میکند. اما همین نسخه نرمافزاری نیز منابع سختافزاری تعیینشدهای داشته و در واقع از منابع Host (پردازنده، حافظه اصلی و حافظه ذخیرهسازی) استفاده میکند.
این نکته را در نظر داشته باشید که Host تنها محدود به کامپیوترهای شخصی نبوده و بیشتر استفاده از ماشینهای مجازی در ریموت سرورها (Remote Server) اتفاق میافتد.
هر ماشین مجازی از یک فایل به نام Image ساخته میشود و تمام محتویات ضروری برای راهاندازی یک سیستم عامل جداگانه را در خود نگهداری میکند. همچنین اطلاعات داخل هر ایمیج مستقل از دیگر ایمیجها بوده و تاثیری بر محتوای خارج از خود نخواهد داشت.
برای مثال اگر سیستم عامل ویندوز شما که بهصورت مجازی ایجاد شده، ویروسی شود، روی سیستم عامل Host تاثیر نخواهد گذاشت، چرا که محیطهای مجازی از استقلال کاملی برخوردار هستند.
چرا از ماشین مجازی استفاده میکنیم؟
ماشینهای مجازی استفادههای متنوعی دارند و بیشتر شرکتهای بزرگ آز آنها استفاده میکنند. در ادامه این مطلب قصد داریم با برخی از اصلیترین کاربردها و استفادههای ماشینهای مجازی آشنا شویم:
اجرای سیستمعاملهای متفاوت روی یک Host
بسیاری از افراد از سیستم عامل ویندوز استفاده میکنند و به همین دلیل از قدرت سیستم عاملهای دیگر بیبهره هستند. در این شرایط اگر کسی قصد داشته باشد که برای یکی از پروژههایش از لینوکس استفاده کند، چه کاری باید انجام دهد؟
استفاده از ماشین مجازی یکی از راهها برای انجام چنین کاریست. با استفاده از ماشین مجازی، میتوانید در کنار سیستم عاملی که دارید، هر سیستم عامل دیگری را نیز نصب کرده و بهصورت همزمان از آنها استفاده کنید.
توسعه نرمافزار برای پلتفرمهای دیگر
با استفاده از ماشین مجازی، شما قابلیت توسعه و تست اپلیکیشن یا وبسایتتان روی سیستم عاملهای دیگر را دارید. اگر از افرادی باشید که به توسعه چند-سکویی علاقهمند هستید و پروژههایتان مربوط به این حالت میشود، استفاده از چنین قابلیتی در ماشینهای مجازی مطمئنا منفعتهای بسیار زیادی برایتان خواهد داشت.
آزمایش عدم وجود بد افزار
تصور کنید که قصد بررسی یک فایل دانلود شده را دارید و میخواهید آن را در محیطی کاملا امن اجرا کنید. امن به این لحاظ که اگر نرم افزار را اجرا کردید و با یک بد افزار روبهرو شدید، کلیت سیستم عاملتان به این بدافزار دچار نشده و بتوانید بهسادگی آن را حذف کنید.
با اجرای نرم افزار مد نظر در محیط مجازی این قابلیت را خواهید داشت. همانطور که قبلا اشاره کردیم، ماشینهای مجازی محیطهای پردازشی مستقلی هستند و روی یکدیگر تاثیر نخواهند گذاشت.
اجرای نرمافزارهای قدیمی و ناسازگار
در برخی از مواقع اجرای یک نرم افزار قدیمی بسیار ضروری بوده و عاقلانه هم نیست که سیستم عامل کنونیتان را پاک کنید تا یک سیستم عامل قدیمی مانند XP را تنها برای اجرا یک نرم افزار نصب کنید.
در چنین حالتهایی تنها کافیست سیستم عامل مورد نظر را روی یک Virtual Machine نصب کرده و نرم افزار را در همان محیط اجرا کنید.
مزایای ماشین مجازی
ماشین مجازی بنابر ساختاری که دارد از مزیتها و ویژگیهای منحصر به فردی برخوردار است که در ادامه این مطلب با برخی از مهمترین آنها آشنا خواهیم شد.
استفاده بهینه از منابع
بیشتر اپلیکیشنها تنها مقدار کمی از منابع فیزیکی موجود در Host را استفاده میکنند. به همین دلیل منابع بسیار زیادی بدون استفاده مانده و کاربردی در این حالت نخواهند داشت.
با ایجاد ماشینهای مجازی شما این قابلیت را دارید که منابع سخت افزاری خودتان را بین اپلیکیشنهای متفاوت به اشتراک بگذارید و به صورت بهینه از آنها استفاده کنید.
امنیت
هر ماشین مجازی در یک محیط محاسباتی مستقل و ایزوله اجرا شده و روی ماشینهای مجازی دیگر تاثیری نخواهد گذاشت. بنابراین هر شکلی از مشکلات امنیتی مربوط به یک virtual machine، تنها به خود آن ارتباط دارد و نیازی به نگرانی در ارتباط با موارد دیگر نیست.
این موضوع در نهایت باعث میشود امنیت سازمانی بیشتر شده و سطح کیفی آن بالاتر برود.
همچنین یکی دیگر از استفادههای ماشینهای مجازی در این زمینه این است که نرمافزارها و آپدیتهای در حال توسعه برای تست شدن، قبل از انتشار نهایی، روی ماشین مجازی اجرا میشوند. بعد از تست کامل و در صورت نبود هیچگونه مشکلی، نرمافزار در محیط Production دیپلوی میشود.
از این جهت میتوان ماشینهای مجازی را به عنوان یک ابزار مناسب برای تست اپلیکیشن در نظر گرفت.
قابل حمل بودن یا Portability
فرایند انتقال و ادغام ماشین مجازی از یک سرور به سرور دیگر به سادگی انجامپذیر بوده و این به دلیل میزان بالای Portability ماشینهای مجازی است.
Cold Migration و Hot Migration دو حالت از مهاجرت ماشین مجازی از یک سرور به سروری دیگر هستند که براساس نیازمندیها از آنها استفاده میشود.
مقرون به صرفه بودن
از آنجایی که شما با استفاده از تکنولوژی Virtual Machine امکان استقرار چندین اپلیکیشن روی یک هاست را دارید، میتوانید میزان قابل توجهی از هزینههایتان را صرفهجویی کنید و بهصورت بهینهتری از منابع بهره ببرید.
مقیاسپذیری
در زمینه مقیاسپذیری، ماشینهای مجازی به شما سه قابلیت مهم را میدهند:
- پیادهسازی و راهاندازی سریع
- کلون گرفتن از ماشینهای مجازی موجود
- تخصیص منابع جدید و یا از دسترس خارج کردن آن براساس میزان استفاده
معایب و مشکلات ماشین مجازی
در کنار مزایا و ویژگیهایی که virtual machineبه ما ارائه میدهد، یکسری مشکلات و معایب نیز وجود دارد که در ادامه برخی از آنها را بررسی خواهیم کرد.
هزینه اولیه زیاد
در حالیکه در بلند مدت ممکن است ماشین مجازی برای برخی از حالتها مقرون به صرفه باشد، اما در ابتدای راهاندازی یک استارتاپ و با اشتباه در نظر گرفتن نیازمندیها، هزینه اولیه ممکن است زیاد باشد.
پیکربندی پیچیده
پیادهسازی یک معماری مبتنی بر virtual machine، کار چندان سادهای نیست و نیاز به متخصصین مختلفی دارد.
مشکلات اجرایی
با استفاده کردن از چندین ماشین مجازی روی یک سرور یا فضای میزبانی، مشکلات اجرایی مختلفی ممکن است پیش بیاید. از آنجایی که در برخی از حالتها مانیتورینگ دقیق امکان پذیر نیست، این مشکلات به صورت ناگهانی اتفاق میافتند.
ماشین مجازی در مقابل داکر
ماشین مجازی و داکر اگرچه در بیشتر حالتها با یک هدف (اجرای یک نرم افزار در محیطهای مختلف) استفاده میشوند، اما تفاوتهای ساختاری بسیار زیادی با همدیگر دارند. در ادامه میتوانید به صورت خلاصه با برخی از اصلیترین تفاوتها آشنا شوید.
داکر | ماشین مجازی | |
مدت زمان راهاندازی | در چند ثانیه اجرا میشود | معمولا نسبت به داکر کُندتر عمل میکند |
معماری اجرایی | داکر برای اجرا شدن از Execution Engine یا موتور اجرایی مستقل (Docker Engine) استفاده میکند. | ماشین مجازی از تکنولوژی Hypervisor بهره میگیرد. |
استفاده از RAM و منابع | داکر میزان بسیار کمی از حافظه اصلی را اشغال میکند و میزان مصرف بهینهتری از منابع دارد | ماشین مجازی از منابع سختافزاری بیشتری استفاده کرده و به همین دلیل پرهزینهتر است |
فرایند دیپلوی کردن | دیپلوی در داکر فرایند بسیار سادهای داشته و از طریق ساختار Image انجام میشود. | فرایند دیپلوی در ماشین مجازی سختتر از داکر بوده و برای استقرار چند اپلیکیشن نیاز به ایجاد نمونههای متعدد از ماشین مجازی دارد |
جمعبندی
ماشین مجازی یکی از تکنولوژیهای بسیار مهم برای اجرا نرمافزار در محیطهای مختلف است که به شما قابلیتهای بسیار زیادی را میدهد. در این مطلب از وبلاگ همروش، ما به صورت کلی با چیستی و معماری ماشین مجازی آشنا شدیم و همچنین مزایا و معایب آن را بررسی کردیم. در آینده نیز مطالب بیشتری در ارتباط با همین موضوع منتشر خواهیم کرد.