آشنایی با بستر مجازی سازی مبتنی بر لینوکس KVM – مزایای مجازی سازی – بخش چهارم
Full virtualization:
در Full virtualization ،دستوراتی که برای اجرا به سطح دسترسی بالا احتیاج دارند شبیه سازی (Emulate) می شوند تا از محدودیت های که هنگام اجرای سیستم عامل در حلقه 1 و VMM درحلقه 0 ایجاد می شود مصون بمانند .full virtualization اولین بار در نسل اول VMM های x86 پیاده سازی شد . این روش تکیه بر روش هایی مانند ترجمه باینری دارد تا اجرای دستورالعمل هایی که حساس و غیرقابل مجازی سازی هستند را پیداکرده و مجازی کند.بنابرین در ترجمه باینری بعضی از فرخوانی های سیستمی (system call ) ترجمه شده و به صورت پویا دوباره نوشته می شوند.تصویر زیر نمایش میدهد که چگونه سیستم عامل میهمان برای دستورالعمل های ویژه از طریق حلقه 1 به سخت افزار کامپیوتر میزبان دسترسی پیدا می کند و همچنین چگونه دستورات معمول بدون دخالت حلقه 1 اجرا می شوند :
با این روش دستورالعمل های حساس شناسایی شده(بصورت استاتیک ویا پویا) و به صورت پویا بازنویسی می شوند.ترجمه باینری ممکن است باعث ایجاد افت بازدهی زیادی نسبت به ماشین مجازیی که در یک محیط مجازی طبیعی در حال اجراست بشود.
با این وجود همانطور که در شکل بالا مشخص است هنگامی که از full virtualization استفاده می کنیم میتوانیم از سیستم عامل میهمان دستکاری نشده استفاده کنیم .این بدان معنیست که برای اجرای سیستم عامل میهمان برروی VMM مجبور به تغییر دادن کرنل آن نیستیم. هنگامی که کرنل سیستم عامل میهمان عملیات هایی که سطح دسترسی بالایی احتیاج دارند (Privileged operations) را انجام می دهد ،VMM شبیه سازی پردازشگر را فراهم می کند تا این عملیات ها را مدیریت و اصلاح کند،اما همانطور که قبلا اشاره شد این امر باعث افت بازدهی نسبت به نوع دیگر مجازی سازی که paravirtualization نام دارد می گردد.
Paravirtualization:
در paravirtualization باید درسیستم عامل میهمان دستکاری شود تا دستورالعمل ها اجازه دسترسی به حلقه 0 را پیدا کنند،به زبانی دیگر سیستم عامل میهمان بایستی دستکاری بشود تا با Hypervisor /VMM از طریق راه پشتی (Backend path ) و یا (Hypercalls) ارتباط برقرار کند.
Paravirtualization تکنیکی است که در آن hypervisor یک API فراهم می کند و سیستم عامل ماشین مجازی میهمان آن را فراخوانی می کند برای انجام اینکار سیستم عامل میهمان نیاز به دستکاری شدن دارد . دستورالعمل هایی که نیاز به سطح دسترسی بالا دارند با توابع API که توسط VMM فراهم شده جایگزین می شوند .در این حالت سیستم عامل میهمان می تواند در حلقه 0 اجرا شود. همانطور که واضح است در این حالت کرنل سیستم عامل میهمان اصلاح می شود تا بتواند در VMM اجرا شود. به عبارتی دیگر سیستم عامل میهمان از مجازی سازی شدن خود با خبر است.
دستور العمل های که باید در حلقه 0 اجرا شوند با فراخوانی هایی که به Hypercall معروف اند جایگزین می شوند که با VMM ارتباط برقرار می کنند.Hypercall ها VMM را احضار می کنند تا وظایف کرنل سیستم عامل میهمان را به نمایندگی آن انجام دهد.از آنجایی که کرنل سیستم عامل میهمان این قابلیت را دارد که با استفاده از Hypercall ها به طور مستقیم با VMM ارتباط برقرار کند این تکنیک بهره وری بالاتری را نسبت به Full virtualization داراست .اما این روش نیازمند سیستم عاملی با کرنل بخصوص است که از paravirtualization انجام شده در سیستم آگاهی دارد و دارای نرم افزار های مورد نیاز آن است.
آشنایی با بستر مجازی سازی مبتنی بر لینوکس KVM – مفاهیم – بخش اول
آشنایی با بستر مجازی سازی مبتنی بر لینوکس KVM – مفاهیم – بخش دوم
آشنایی با بستر مجازی سازی مبتنی بر لینوکس KVM – مفاهیم – بخش سوم
تشکر
عالی بود.
عاشق سایت شما هستم خیلی جالب کار میکنین روزی 3 باز سر میزنم