ماشین‌های مجازی در مقابل داکر - معرفی ماشین‌های مجازی

گردآوری و تالیف : ارسطو عباسی
تاریخ انتشار : 09 مرداد 1398
دسته بندی ها : آموزشی

ماشین‌های مجازی و کانتینرهای داکر هر دو می‌توانند به خوبی از منابع نرم‌افزاری و سخت‌افزاری موجود در یک کامپیوتر استفاده کنند. داکر نسبتا حالتی جدیدتر است اما ماشین‌های مجازی برای مدت بسیار زیادی است که در دیتا سنترها حضور داشته و استفاده می‌شوند. اگر شما بخواهید که بهترین حالت‌ را برای اجرای سرویس‌های‌تان در محیط کلود انتخاب کنید نیاز است تا ابتدا هر کدام این تکنولوژی‌های مجازی‌سازی را به خوبی یاد بگیرید. 

بسیاری از سازمان‌ها و شرکت‌ها در حال رفتن به سراغ سرویس‌های محاسبه ابری هستند. این سرویس‌ها می‌توانند به شما حجم بسیار زیادی از منابع با قابلیت پیکربندی را بدهند که قابلیت اشتراک گذاری را نیز دارند. برای مثال می‌توان در میان این منابع به شبکه‌های کامپیوتری، درایوهای ذخیره‌سازی، سرور‌ها و… اشاره کرد. در روش سنتی برای پیاده‌سازی یک سرویس پردازش ابری ما از ماشین‌های مجازی استفاده می‌کردیم. با این حال متد جدیدتری به نام داکر عرضه شده که در مدت زمان کوتاهی به محبوبیت بسیار زیادی رسیده است. در مقایسه با ماشین مجازی، داکر بسیار سبک‌تر است.

براساس گزارشات موجود، پیش‌بینی می‌شود که ۴۰ درصد اپلیکیشن‌ها تا پایان سال ۲۰۲۰ از داکر استفاده خواهند کرد. داکر از آنجایی که در روند توسعه Agile می‌تواند به خوبی عمل کرده و امکانات را به صورت سریع در اختیارمان قرار دهد به محبوبیت بالایی رسیده است. اما دقیقا داکر با ماشین مجازی چه تفاوتی دارد؟ خب قبل از هر توضیحی بسیار مهم است که بدانیم داکر نسخه‌ای سبک یا کوچک شده از ماشین مجازی نیست، این دو فلسفه‌های متفاوتی دارند. بیایید ابتدا به درک خوبی از هر دو مورد رسیده و سپس موضوع تفاوت‌ها را شروع کنیم.

ماشین مجازی چیست؟

ماشین‌های مجازی زمانی ساخته شدند که قدرت پردازشی سرور‌ها و همچنین میزان فضای ذخیره‌سازی آن‌ها افزایش پیدا کرد اما اپلیکیشن‌های ساخته شده نمی‌توانستند به خوبی از این منابع سخت‌افزاری استفاده بکنند. در چنین شرایطی ماشین مجازی سعی داشت تا با اجرا شدن روی سخت‌افزار اصلی و ارائه غیرمستقیم منابع به نرم‌افزار،‌ منابع مورد نظر را در اختیار وی قرار دهد. یکی از اجزای مهم یک ماشین مجازی hypervisor نام دارد که میان ماشین مجازی و سخت‌افزار قرار می‌گیرد و به عنوان المانی مهم در مجازی‌سازی شناخته می‌شود. از آنجایی که همه قصد وارد شدن به سرویس‌های محاسبه ابری را داشتند و مجازی‌سازی امری مقرون به صرفه بود، بیشتر شرکت‌های بزرگ و حتی شرکت‌های کوچک نیز برای آنکه هزینه‌های‌شان را کم کنند و کارایی را بالا ببرند از قدرت ماشین مجازی بهره بردند. 

درک ماشین مجازی

حال بیایید از لایه‌های ابتدایی تا لایه‌های پایانی یک سیستم ماشین مجازی را بررسی کنیم:

  • زیرساخت یا Infrastructure: این قسمت می‌تواند هر چیزی باشد. یک کامپیوتر/لپ‌تاپ، یک سرور اختصاصی در یک مرکز دیتا، یک VPS و… .
  • سیستم عامل میزبان یا Host Operating System: درست در بالای لایه زیرساخت سیستم عامل اجرا می‌شود. اگر از یک کامپیوتر شخصی استفاده کنید این سیستم عامل ممکن است ویندوز، لینوکس و یا مک باشد. البته دسته خاصی از سیستم عامل‌ها نیز برای این قسمت وجود دارد.
  • Hypervisor: این قسمت با نام مانیتور ماشین مجازی نیز شناخته می‌شود. شما می‌توانید یک ماشین مجازی را مانند یک کامپیوتر Self-contained در نظر بگیرید که در یک فایل قرار گرفته است. Hypervisor وظیفه اجرای این فایل را دارد. Hypervisor در دو دسته قرار می‌گیرد. دسته اول مربوط به خود سیستم عامل هستند که در بین آن‌ها می‌شود به Hyper-V برای ویندوز، HyperKit برای مک‌او‌اس و KVM برای لینوکس اشاره کرد. دسته دوم نیز ابزارهایی مانند VirtualBox و VMWare هستند.
  • سیستم عامل مهمان یا Guest Operating System: فکر کنید که قصد اجرای ۳ نرم‌افزار به صورت ایزوله شده را روی سرور‌تان دارید. برای انجام چنین کاری شما باید ۳ سیستم عامل مهمان را نیز اجرا کنید. این سیستم عامل‌های مهمان توسط Hypervisorها کنترل می‌شوند. هر کدام از این سیستم عامل‌های مهمان حجمی حدود ۷۰۰ مگابایت از حافظه را اشغال می‌کنند که در ارتباط با سه مورد این حجم در کل به ۲.۱ گیگابایت می‌رسد. البته این حالت در زمانی که سیستم عامل مهمان از منابع پردازشی و حافظه خودش نیز استفاده می کند بسیار پیچیده‌تر می‌شود. این موضوعی است که باعث سنگین بودن ماشین مجازی می‌شود.
  • BINS/LIBS:‌ هر سیستم عامل مهمانی از یکسری باینری و کتابخانه منحصر به خودش برای اجرای برنامه‌ها استفاده می کند. برای مثال، اگر شما از پایتون یا نودجی‌اس استفاده می‌کنید، نیاز دارید که پکیج‌های مربوط به آن‌ها را در این لایه داشته باشید. از آنجایی که هر اپلیکیشن می‌‌تواند متفاوت از مورد دیگر باشد بنابراین انتظار می‌رود که نیازمندی‌های متفاوتی نیز وجود داشته باشد.
  • لایه اپلیکیشن یا Application Layer: این لایه‌ای است که کدهای منبع شما در آن قرار دارد. هر کدام از اپلیکیشن‌های قرار گرفته در این لایه ایزوله شده‌اند. بنابراین شما نیاز دارید که هر اپلیکیشن را در سیستم عامل مهمان خودش اجرا کنید.

انواع ماشین‌های مجازی

به صورت کلی دو نوع ماشین مجازی وجود دارد که هر کدام از آن‌ها کارکردهای متفاوتی را عرضه می‌کنند:

ماشین‌های مجازی سیستمی

ماشین مجازی سیستمی یک نوع از ماشین مجازی است که اجازه می‌دهد تا سیستم‌ عامل‌های مختلفی روی یک سیستم میزبانی اجرا شده و منابع فیزیکی را به اشتراک بگذارند. هدف این سیستم‌ها آن است که بتوانیم سیستم عامل‌های مختلفی را روی یک سیستم سخت‌افزاری شبیه‌سازی کنیم. دو مزیت استفاده از این ماشین‌ها:

  • چندین محیط سیستم عامل می‌توانند روی یک سخت‌افزار با پارتیشن‌های مجازی قرار بگیرند. 
  • میزان دسترسی‌پذیری و نگه‌داری در این سیستم‌ها بسیار بالاست. 

دو عیب اصلی در استفاده از این ماشین‌ها:

  • با دسترسی غیر مستقیم یک ماشین مجازی به یک سرویس میزبانی، میزان کارایی ماشین پایین خواهد آمد.
  • سیستم‌های محافظت در برابر بد‌افزار در این ماشین‌ها چندان سازگاری ندارند.

ماشین‌های مجازی پردازشی

یک ماشین مجازی پردازشی که با نام‌هایی مانند ماشین مجازی اپلیکیشن و یا محیط اجرایی مدیریت شده نیز شناخته می‌شود برای اجرا کردن یک کامپایلر در یک سیستم عامل میزبانی شده مورد استفاده قرار می‌گیرد. این ماشین‌ مجازی از یک پردازش پشتیبانی می‌کند. هدف اصلی این نوع از ماشین مجازی ایجاد یک نوع محیط برنامه‌نویسی مستقل از پلتفرم است.

فواید ماشین‌های مجازی

مجازی‌سازی مزیت‌های بسیاری را برای ما فراهم می‌کند که در بین آن‌ها می‌شود به مدیریت متمرکز شبکه، کاهش نیازمندی‌ها با افزودن سخت‌افزار و نرم افزار جدید و… اشاره کرد. فارغ از این‌ها، ماشین مجازی سه فایده دیگر را نیز بوجود خواهد آورد:

  • چندین سیستم عامل می‌توانند به صورت همزمان روی یک ماشین اجرا شوند – اگرچه این محیط‌ها از همدیگر ایزوله هستند. 
  • ماشین‌های مجازی یک معماری منحصر به فرد را ارائه می‌کنند که با کامپیوترهای واقعی تفاوت دارند.
  • نگه‌داری، موجودیت و قابلیت بازیابی در ماشین‌های مجازی بسیار بالاست.

فراهم‌کنندگان ماشین مجازی

سه مورد از محبوب‌ترین فراهم‌کنندگان ماشین‌های مجازی را می‌توانید در زیر مشاهده کنید:

Oracle VM Virtualbox

Oracle VM Virtualbox یک ماشین مجازی رایگان است که از سیستم‌ عامل‌های مختلف مانند ویندوز، مک و لینوکس پشتیبانی می‌کند و قابلیت میزبانی ۱۰۰ هزار کاربر رجیستر شده را دارد.


VMware Fusion and Workstation

WMware Workstation و WMware Fusion دو مورد از بزرگترین ابزارهای مجازی‌سازی هستند. در واقع می‌توان این دو مورد را ابزارهای اصلی دانست که اغلب شرکت‌های بزرگ از آن‌ها استفاده می‌کنند. این ابزارها از نرم‌افزارهایی مانند CAD و دیگر نرم‌افزارهایی که نیاز زیادی به GPU دارند پشتیبانی می‌کند. 


Red Hat Virtualization

Red Hat Virtualization گزینه‌ای برای کاربران سازمانی است که به دنبال گزینه‌های قدرتمند هستند. این ابزار دو نسخه پایه و پیچیده دارد که هر کدام گستره متفاوتی از ویژگی‌ها را عرضه می‌کنند.

ویژگی‌های کلیدی ماشین‌های مجازی

  • پیکربندی سخت‌افزاری یک سیستم ماشین مجازی شبیه به تنظیمات سخت‌افزاری در حالت پیشفرض است.
  • حالت اجرایی برای موتور مجازی‌سازی براساس CPU فضای میزبانی و قابلیت‌های سیستم عامل مهمان صورت می‌گیرد.
  • قابلیت پشتیبانی از USB Controller، کارت صدا، پورت شبکه، درایوهای نوری و… .
  • پشتیبانی از Drag-and-Drop، Cut and Paste و… .
  • قابلیت دسترسی ریموت با استفاده از کلاینت‌های VNC.

مقاله «داکر در مقابل ماشین مجازی» در سه عنوان ارائه می‌شود که این مورد اولین مطلب در این سری بود.

منبع

مقالات پیشنهادی