آشنایی با بستر مجازی سازی مبتنی بر لینوکس KVM – مزایای مجازی سازی – بخش سوم

مجازی سازی سیستم عامل و جداسازی آن:

مجازی سازی سیستم عامل به یک سیستم فیریکی این امکان را می دهد تا حجم کار (Workload) های متفاوتی ایجاد کند واین حجم کار را از یکدیگر جداسازد. توجه کنید که این حجم کار در یک سیستم عامل به طور جداگانه عمل می کنند.این امر به سرور فیزیکی این اجازه را می دهد که نمونه(Instance) های متفاوتی از یک سیستم عامل را که محفظه (Container) نام دارد اجرا کند.این روش مجازی سازی را می توان مجازی سازی مبتنی بر محفظه نامید.مزیت این نوع مجازی سازی این است که سیستم عامل میزبان نیازی به شبیه سازی واسط های فراخوانی سیستم (System call interface) برای سیستم عامل های متفاوت از خود را ندارد.به دلیل اینکه این واسط ها وجود ندارند امکان اجرای یک سیستم عامل متفاوت با سیستم عامل میزبان با استفاده از این نوع مجازی سازی وجود ندارد،این موضوع یکی از ضعف های اصلی و قابل درک این نوع از مجازی سازی است.Solaris Container، Free BSD jail ،Parallel’s OpenVZ جزء این دسته از مجازی سازی هستند.با استفاده از این نوع مجازی سازی همه ی حجم کار بر روی یک سیستم اجرا می شوند.جداسازی پروسس ها و مدیریت منابع به عهده کرنل سیستم عامل می باشد.با وجود اینکه همه ی محفظه ها یا ماشین های مجازی بر روی یک ماشین مجازی اجرا می شوند هرکدام دارای File system ، پروسس ها ،حافظه ،دستگاه (Device) ها و… منحصر به خود هستند.

از طرفی ترکیب اجرای حجم کار ویندوز ،یونیکس(Unix) ،لینوکس (Linux) بر روی یک سیستم فیزیکی با استفاده از این نوع مجازی سازی امکان پذیر نمی باشد.با این وجود محدودیت های این نوع مجازی سازی بسیار کمتر از مزایای آن مانند سرعت وبازدهی بالا آن است.این بازدهی بالا بدلیل این است که یک سیستم عامل تمامی محیط های مجازی را پشتیبانی می کند ،علاوه بر این سرعت جابه جا شدن از یک محفظه به محفظه دیگری بسیار بالاست.

قبل ازینکه بیشتر راجع مجازی سازی بحث کنیم و نوع دیگر آن را(مبتنی بر Hypervisor) بررسی کنیم بهتر است که با مقداری از زبان تخصصی علوم کامپیوتر آشنا بشویم .ابتدا از مفهومی به نام “حلقه های محافظتی” (Protection Rings) شروع می کنیم. در علوم کامپیوتر انواع مختلفی از دامنه یا حلقه های محافظتی وجود دارند.این حلقه ها مکانیزمی هستند که از بروزخطا جلوگیری کرده و داده ها را بر اساس اعمال محدودیت هایی که برای دسترسی به منابع در یک سیستم کامپیوتری می گذارد محافظت می کنند. حلقه های محافظتی به امنیت سیستم کمک می کنند.

همانطور که در تصویر بالا نمایش داده شده ،حلقه های محافظتی به ترتیب از بیشترین تا کمترین دسترسی شماره گذاری شده اند.حلقه شماره 0 بیشترین میزان دسترسی را دارد و به طور مستقیم با سخت افزار فیزیکی مانند حافظه و پردازنده ارتباط برقرار می کند .منابعی مانند حافظه،پورت هایI/O و دستورالعمل های پردازنده توسط این حلقه ها محافظت می شوند.حلقه های 1 و 2 معمولا بلا استفاده هستند .بیشتر سیستم های همه کاره (General purpose systems) تنها از دو حلقه استفاده می کنند، حتی اگر سخت افزاری که بر روی آن اجرا می شوند از حالت های بیشتری پشتیبانی کند.

دو حالت اصلی پردازنده حالت کرنل (kernel mode) و حالت کاربر (user mode) است .از دید یک سیستم عامل حلقه 0 حالت کرنل و حلقه 3 حالت کاربر نامیده می شود همانطور که واضح است برنامه ها در حلقه 3 اجرا می شوند. سیستم عامل هایی مثل ویندوز و لینوکس از حالت supervisor یا کرنل و حالت کاربر استفاده می کنند. در حالت کاربر بدلیل محدودیت در دسترسی به حافظه ،پردازنده و پورت های I/O تقریبا هیچ عملی که به دنیای بیرون ارتباط دارد بدون فراخوانی کرنل یا کمک از آن امکان پذیر نیست .کرنل ها می توانند در حلقه 0 اجرا شوند .برای اجرای عمل های بخصوص کدی که در حالت کاربر اجرا می شود باید یک فراخوانی سیستم انجام دهد . که در این حالت یک کد مورد اعتماد سیستم عامل وظیفه ی مورد نظر را انجام میدهد و نتیجه ی آن را به محیط کاربر برمی گرداند.به طور خلاصه سیستم عامل در شرایط عادی در حلقه 0 اجرا می شود. زیرا برای مدیریت منابع و تامین دسترسی به سخت افزار احتیاج به بیشترین سطح دسترسی را دارد.تصویر زیر این موضوع را نمایش می دهد:

حلقه های بالاتر از حلقه ی 0 دستورالعمل هارا در حالتی در پردازنده به نام حالت محافظت نشده (unprotected mode) اجرا می کنند.

Hypervisor/VMM(Virtual machine monitor) نیاز به دسترسی به CPU، حافظه و دستگاه های ورودی و خروجی میزبان دارد.به دلیل اینکه تنها کدهایی که در حلقه 0 اجرا می شوند اجازه دسترسی به این منابع را دارند ،Hypervisor باید درحالتی با بیشترین سطح دسترسی که در واقع همان حلقه 0 است در کنار کرنل اجرا شود. در سخت افزار هایی که از قابلیت مجازی سازی پشتیبانی نمی کنند hypervisor یا VMM در حلقه ی 0 اجرا می شود ،این امر از واقع شدن سیستم عامل میهمان در حلقه 0 جلوگیری می کند بنابرین سیستم عامل میهمان بایستی در حلقه 1 جای گیرد ،از طرف دیگر سیستم عاملی که به صورت مجازی اجرا می شود از آنجایی که از مجازی بودن بستر خود اطلاعی ندارد انتظار دسترسی به تمام منابع سخت افزاری سیستم را دارد برای تحقق این امر بایستی سیستم عامل میهمان مشابه به VMM در حلقه 0 اجرا شود .با توجه به اینکه تنها یک کرنل در آن واحد می تواند در حلقه 0 اجرا شود سیستم عامل میهمان باید در حلقه ایی دیگر با سطح دسترسی کمتر اجرا شود و یا بایستی سیستم عامل را دستکاری کرد تا بتوان آن را در حالت user mode اجرا کرد.

این امر باعث ظهور چندین روش مجازی سازی مانند full virtualization وparavirtualization شده است که ما در بخش های بعدی به آن می پردازیم.

آشنایی با بستر مجازی سازی مبتنی بر لینوکس KVM – مفاهیم – بخش اول
آشنایی با بستر مجازی سازی مبتنی بر لینوکس KVM – مفاهیم – بخش دوم

دیدگاه

آدرس ایمیل شما منتشر نخواهد شد.