سرورها, فناوری, مطالب ویژه

تفاوت کانتینر و ماشین مجازی (VM)

مقایسه ماشین مجازی و کانتینر

معرفی

کانتینرها (Containers) و ماشین‌های مجازی (Virtual Machines)  دو روش برای راه اندازی سرویس‌های چندگانه مجزا بر روی یک پلتفرم می‌باشند. پیشتر درباره مفهوم کانتینر صحبت شد. حال ببینیم تفاوت آن با ماشین مجازی چیست؟

توسعه دهندگان میانی نرم افزار (Embedded Developers) ، برای بهره گیری  از تمام پتانسیل سخت‌افزارهایی که روز به روز کاراییشان رو به افزایش و بهبود است‌، به برپایی سیستم‌های پیچیده‌تری نیاز دارند. نوشتن یک نرم افزار کوچک با یک میکروکنترلر کوچک همچنان قابل مدیریت است اما برای سیستم‌های بزرگ‌تر که به امکانات ماژولار بیشتری نیاز دارند،  چالشی بزرگ است. اضافه نمودن یک سیستم عامل همه منظوره به ترکیب، اجرای چندین نرم افزار را آسان تر می‌کند. هر چند امروزه حتی یک سیستم عامل واحد هم همیشه بهترین راه حل نیست.

هایپروایزرها روشی برای مدیریت ماشین‌های مجازی بر روی پردازنده‌هایی که از تکثیر مجازی سخت افزاری پشتیبانی می‌کنند، به حساب می‌آیند. این قابلیت توسط همه پردازنده‌ها  پشتیبانی نمی‌شود و معمولا در ریزپردازنده‌های میان رده و رده بالا یافت می‌شود. این استاندارد را می‌توان بر روی پردازنده‌های سرور مانند سری  Xeon ساخت شرکت اینتل و اکثر پردازنده‌های کاربردی نظیر سری Arm Cortex-A یافت. بطور معمول یک ماشین مجازی، هر نرم‌افزار قابل اجرا بر روی یک سخت‌افزار فیزیکی را به طور مجزا از سخت افزار واقعی، اجرا می‌کند. هایپروایزر نوع نخست (hypervisor type I) مستقیماً بر روی سخت افزار اجرا می شوند نظیر VMware vSphere/ESXi یا Microsoft Hyper-V در حالی که نوع دوم  (hypervisor type II) تحت مدیریت یک سیستم عامل پایه اجرا می شود مانند VMware Workstation, VirtualBox.

انواع هایپروایزر

کانتینرها در برابر ماشین های مجازی

کانتینرسازی نیز راهی برای ایزوله‌ کردن نرم‌افزارها و فرآهم آوردن پلتفرمی جهت اجرای نرم‌افزارها، ارائه می دهد. اینک دو تفاوت اصلی میان کانتینر و سیستم هایپروایزر:

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

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

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

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

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

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

شماری از فناوری های کانتینر در حال حاضر وجود دارند که با لینوکس پیشتاز هستند. محبوب ترین پلتفرم Docker نام دارد، که برپایه libcontainer لینوکس است. در واقع Docker یک سیستم مدیریت است که برای ایجاد، مدیریت و تحت نظر داشتن فرآیند کانتینرهای لینوکس مورد استفاده قرار می‌‌گیرید. Ansible یکی دیگر از سیستم‌های موفق مدیریت کانتینر می‌باشد که توسط Red Hat ایجاد شده است.

مایکروسافت از قافله عقب ماند و کمی دیر رسید اما کانتینر ویندوز راهی برای ارائه سرویس‌های کانتینر بر روی پلتفرم ویندوز است. البته ممکن است یک سرویس کانتینر لینوکسی به عنوان ماشین مجازی بر روی پلتفرم سرور مایکروسافت مانند Hyper-v میزبانی شود. سیستم های مدیریت کانتینر مانند Docker و Ansible می توانند سرورهای مبتنی بر ویندوز را که از کانتینر پشتییانی می کنند مدیریت کنند.

نوشته: William Wong در نشریه اینترنتی ElectronicDesign بتاریخ: ۱۵ ماه جولای ۲۰۱۶
منبع: EctronicDesign

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *