قابلیت موجود در VMware به نام EVC
بحث این مقاله در مورد قابلیت موجود در VMware به نام EVC می باشد که با بحث VMotion مرتبط است. زمانیکه شما می خواهید در یک Cluster در VMware ماشین های مجازی خودتان را از Host ای به Host دیگر منتقل کنید حتما باید نوع CPU سرور اول با نوع CPU سرور دوم مشابه باشد تا بتوانید به درستی VMotion را انجام دهید. این یک مشکل حاد در VMotion محسوب می شود چراکه همیشه Host های شما از یک نوع سخت افزار نیستند و بعضا ممکن است در یک Cluster چندین Host مختلف با انواع CPU های مختلف داشته باشید که با این شرایط شما نمی توانید عملیات VMotion را انجام دهید. برای حل کردن این مشکل شرکت VMware بعد از معرفی محصول VMware ESX 3.5 Update 2 قابلیتی به نام EVC یا Enhanced VMotion Compatibility را معرفی نمود که برای برطرف کردن همین مشکل ارائه شده بود.
EVC این قابلیت را به محیط مجازی سازی VMware می دهد که بتوانید VM های خودتان را بین Host های مختلف ESXi که دارای CPU های مختلف می باشندVMotion کنید. روش کاری EVC به این شکل است که در هنگام انتقال یا VMotion کردن VM ها قابلیت های CPU ای که بین سیستم مبدا و سیستم مقصد یکسان نیستند و یا سیستم مقصد از آنها پشتیبانی نمی کند را از داخل VM ها حذف می کند تا به یک درجه مساوی از قابلیت ها برسد ، برای مثال مواردی از قبیل Clock Speed و یا تعداد Core های CPU را در بین Host ها تغییر می دهد تا با همدیگر تناسب پیدا کنند. این قابلیت با انواع نسخه های مختلف CPU که از یک سازنده و برند باشند کار می کند. به این مورد کاملا دقت کنید که VMware EVC نمی تواند بین پردازنده های AMD و Intel فرآیند VMotion را انجام دهد اما قبل از اینکه بخواهد فرآیند VMotion را انجام دهد سیستم Host اول و Host دوم را از نظر هماهنگ بودن نوع CPU ها با همدیگر بررسی می کند و اگر عدم هماهنگی وجود داشته باشد به شما گزارش می دهد. البته به غیر از قابلیت EVC شرکت VMware یک قابلیت ساده تر به نامCompatibility Mask CPU وجود دارد که با استفاده از آن می تواند برخی از قابلیت های CPU را از VM ها پنهان کند اما این قابلیت پیشنهاد نمی شود. درست است که EVC هم تقریبا چنین کاری انجام می دهد اما EVC همیشه هم نمی تواند باعث شود که VM نتواند به قابلیت های CPU دسترسی داشته باشد و این بستگی به نرم افزارها و Application هایی دارد که بر روی ماشین مجازی نصب شده اند.
شما می توانید بصورت پیشفرض فقط VMotion را بر روی Host هایی انجام دهید که ساختار CPU های آنها یا کاملا مثل هم هستند و یا بسیار شبیه به هم هستند. این موضوع باعث می شود که سازمان در خرید کردن سرورهای جدید و اضافه کردن آنها در Cluster مجازی سازی خود کمی دچار مشکل شود. تصور کنید که شما در حال حاضر در سازمان خود یک سری سرور Host با برند HP مدل G6 دارید که بر روی آنها از قبل ESX نصب شده است و دارای سری خاصی از CPU های شرکت Intel هستند و در نهایت درون Cluster قرار گرفته اند. حال سازمان شما تصمیم می گیرد که برای رشدی که در آینده خواهد داشت ، یک سری سرور جدید برند HP مدل G9 را به مجموعه Cluster اضافه کندکه آنها هم برای خودشان دارای یک سری خاص CPU هستند.
زمانیکه شما می خواهید عملیات VMotion را برای VM های این Host ها که دارای CPU های متفاوتی هستند انجام دهید اتفاقی که می افتد این است که در لایه سیستم عاملی که در VM نصب شده است ، VM دارای یک سری دستورالعمل ها و اطلاعات درون CPU است زمانیکه VMotion می شوند و در Host جدید قرار می گیرند به دلیل مشابه نبودن ساختار CPU قادر به اجرا و ادامه کار نخواهند داشت ، این موضوع باعث می شود که در سیستم عامل های ویندوز مجازی شما با صفحات Blue Screen و در سیستم عامل های لینوکس مجازی با مشکل Kernel Crash مواجه شوید ، دلیل بروز مشکل کاملا مشخص است ، دستورات و داده هایی که در CPU وجود داشتند به دلیل عدم هماهنگی بین CPU ها به یکباره دیگر در دسترس نخواهند بود.
برای جلوگیری از به وجود آمدن اینگونه Crash های سیستم عامل مجازی دو تکنیک مختلف استفاده می کند. اولین تکنیک زمانیکه مدیر شبکه درخواست انجام فرآیند VMotion را صادر می کند vCenter Server هم CPU مبدا و هم CPU مقصد را ارزیابی می کند و بررسی می کند که آیا هر دوی این CPU ها توانایی انجام شدن VMotion را دارند یا خیر ، اگر امکان انجام VMotion وجود نداشته باشد در همان لحظه به مدیر شبکه اطلاع رسانی خواهد شد. اما روش دوم که تا حدودی هم به آن اشاره کردیم به نام CPU Masking معروف است. CPU Masking کاری می کند که قابلیت هایی که بر روی CPU وجود دارند بر روی VM قابل مشاهده نباشند و در واقع به VM گفته نمی شود که CPU ای که از آن استفاده می کند چه قابلیت هایی دارد ، بنابراین سیستم عامل موجود در VM هم هیچ دیدی از نوع CPU ای که استفاده می کند نخواهد داشت این تکنیک باعث می شود که قابلیت های اضافه تری که معمولا باعث ایجاد شدن Crash در VM ها در زمان VMotion می شوند عملا از نظر سیستم عامل مجازی وجود نداشته باشد که باعث به وجود آمدن Crash بشود. اما تکنیک VMware Enhanced VMotion Compatibility یا EVC یک لایه از CPU Masking معمولی بالاتر است ، در CPU Masking قابلیت های CPU در لایه سیستم عامل مجازی مخفی می شود اما در EVC مخفی کردن یا CPU Masking در لایه Host انجام می شود و طبیعتا در درجه بالاتری انجام می شود. دقت کنید که EVC هم بستگی به نرم افزارهایی دارد که از امکانات خاص CPU مثل CPUID استفاده می کنند ممکن است به درستی کار نکند و دچار مشکل شود اما تعداد نرم افزارهایی که به گونه ی برنامه نویسی می شوند که مثلا با قابلیت خاص CPU کار کنند بسیار معدود است و همین باعث می شود که EVC تقریبا بتواند در بیشتر موارد کار را به درستی انجام دهد.
دیدگاه خود را ثبت کنید
تمایل دارید در گفتگوها شرکت کنید؟در گفتگو ها شرکت کنید.