زمانی که صحبت از مدیریت مصرف منابع در Hyper-V می شود، بسیار مهم است که از بهره وری ابزارهای خود اطمینان حاصل کنید بذاب مثال یکی از این موارد مدیریت رم VM می باشد. چندین نرم افزار شاخص برای مانیتورینگ وجود دارد که شمائی کلی از میزان مصرف سیستم را به دست می دهد و حتی امکان برنامه ریزی ظرفیت را برای آینده ممکن می کنند، اما بعضی مواقع اینها کافی نیستند. در مقابل، ویژگیهای تعبیه شده ای در درون Hyper-V وجود دارد که این امکانات را در سطح تنظیمات خود Hyper-V در اختیار شما می گذارد. Dynamic memory یکی از این تکنولوژی هاست که با استفاده از آن می توانید مدیریت بسیار موثرتری بر ماشینهای مجازی Hyper-V داشته باشید، که در ادامه به آن می پردازیم.
Hyper-V dynamic memory چیست ؟
Dynamic memory قابلیتی است در Hyper-V که اولین بار در windows server 2008 sp1 معرفی شد و بعد از آن در windows server 2012 گسترش پیدا کرد. این تکنولوژی این امکان را به hypervisor می دهد که در صورت امکان مصرف رم موجود در VMهای میزبانی شده را به شکل انعطاف پذیرتری مدیریت کند. به عنوان مثال، hypervisor می توانید به صورت dynamic زمانی که سیستم عامل مهمان به رم بیشتری نیاز داشت آن را به VM مربوطه اختصاص دهد و یا زمانی که VM در حالت تاخیر است رم اختصاصی داده شده را بازپس گیرد.
هرچند امروزه با توجه به کاهش هزینه رم همچون گذشته کمبود رم به عنوان مشکلی عمده وجود ندارد، اما بعضا این تکنولوژی بسیار کاربری است. به عنوان نمونه زمانی که قصد انجام پروژه ای با هزینه محدود را داشته باشید و یا در حال استفاده از سروری قدیمی هستید که امکان ارتقا رم آن به راحتی امکانپذیر نیست. علاوه بر این، این تکنولوژی برای مدیریت اضافه مصرف در تعداد بالای VMها بسیار مناسب است، اللخصوص هنگامی که تعداد زیادی ماشین مجازی با تاخیر بالا و یا بار کاری اندک داشته باشید (به عنوان مثال محیط VDI)
تنظیمات Hyper-V dynamic memory
بیایید نگاهی به تنظیمات و نحوه کار با Hyper-V dynamic memory داشته باشیم.
تمامی پیکربندی ها باید در تنظیمات داخل VM در مدیریت Hyper-V انجام شود. مدنظر داشته باشید برای فعال و غیرفعال کردن dynamic memory ماشین مجازی در آن لحظه باید خاموش باشد. زمانی که یک VM را ایجاد کردید و در حال ویرایش یک نمونه از قبل ایجاد شده هستید، دو روش برای اختصاص رم پیش رو خواهید داشت : به صورت دستی مقدار رم مورد نظر را وارد کنید (static) و یا اینکه dynamic memory را فعال کرده و اجازه دهید که hypervisor مدیریت را در دست گیرد. در صورتیکه در حالت static مقدار را وارد کنید، بدون توجه به شرایط ماشین مجازی که می تواند در حال استارت، تاخیر، انجام فعالیتی خاص و یا خاموش شدن باشد، میزان رم اختصاص داده شده هیچ تغییری نخواهد کرد. اما با استفاده از dynamic memory میزان رم قابل استفاده توسط ماشین مجازی بسته به وضعیت آن تغییر می کند.
اگر تصمیم به استفاده از dynamic memory دارید، باید تغییر مولفه های زیر را مدنظر داشته باشید:
Startup RAM :
مقدار رمی است که در زمان طی کردن پروسه روشن شدن به VM اختصاص می یابد. این مقدار می توانید برابر با “minimum RAM” و یا بیشتر، نهایتا تا مقدار “maximum RAM” ، باشد. مقدار startup RAM را نمی توان در زمان روشن بودن یک VM پیکربندی نمود.
زمانی که VM مراحل بوت شدن را به پایان رساند و hypervisor استارت شد، از مقدار رمی که برای minimum RAM تعریف شده است، استفاده خواهد کرد.
Minimum RAM :
حداقل رمی است که به ماشین مجازی پس از بوت شدن اختصاص داده می شود. در زمانهایی که چندین VM درخواست رم بیشتری می دهند، Hyper-V میزبان می تواند رم سایر ماشینهای مجازی را تا حداقل میزان تعیین شده از آنها باز پس گیرد و به سایرین اختصاص دهد.
این تنظیمات را در زمان روشن بودن VM می توان کاهش داد اما نمی توان افزایش داد. مراقب این تنظیمات باشید، زیرا تغییرات در لحظه اعمال می شوند و در صورتیکه میزان رم اختصاص داده شده را بسیار پایین در نظر بگیرید مجبور می شوید برای افزایش مجدد آن ماشین مجازی را خاموش نمایید.
Maximum RAM :
حداکثر رم قابل اختصاص را مشخص می کند.
این متغیر را می توان از ۵% تا ۲۰۰% با مقدار پیش فرض ۲۰% ست کرد.
میزبان Hyper-V با استفاده از مقدار رم درخواستی حال حاظر VM محاسبه می کند که چه میزان حافظه را برای buffer رزرو کند. به عنوان مثال، برای یک ماشین مجازی با میزان مصرف رم ۱TB ، Hyper-V مقدار ۲۰% را به عنوان بافر نگه می دارد و به VM 1.2 رم اختصاص می دهد.
Memory weight :
میزان اولویتی است که برای یک VM در مقایسه با سایر VMهای میزبانی شده در یک هاست Hyper-V در نظر گرفته می شود.
توجه داشته باشید، هرچند که تنظیمات حافظه در ظاهر سریع است اما در عمل قدری محافظه کارانه اعمال می شود. بدین معنی که، یک میزبان مجازی سازی تمامی منابع یکجا در اختیار ماشین مجازی نمی گذارد هرچند که توان این کار را داشته باشد. در عوض، سعی می کند که براساس میزان رم در حال مصرف و همچنین تنظیمات buffer عمل کند.
Dynamic memory در عمل
برای آنکه مشاهده کنیم این سرویس دقیقا چطور عمل می کند VM تستی ایجاد کردیم و تنظیمات را بر روی آن اعمال کردیم. ویندوز ۸.۱ ، رم آغازین برابر با ۲GB ، حداقل رم ۳۲MB ، حداکثر رم ۱TB و memory buffer برابر با ۲۰% . زمانی که ماشین مجازی استارت شد همانطور که انتظار می رفت در بازه ی بوت شدن رم اختصاص داده شده ۲GB در نظر گرفته شد.
پس از بوت شدن، قابل مشاهده بود که hypervisor در حال بازپس گیری رم بود که نهایتا به عدد ۶۹۸MB رسیدیم.
سپس اپلیکیشن Backup & Replication را اجرا کردیم تا پروسه بک آپ گیری آغاز شده و بارکاری ماشین مجازی افزایش پیدا کند. همانطور که انتظار می رفت، VM درخواست رم بیشتری از hypervisor کرد که hypervisor نیز به مرور این رم را اختصاص داد.
در این بین سری نیز به Task manager سیستم عامل مهمان زدیم و معلوم شد که قدری کند به این تغییرات واکنش نشان می دهد و مقدار رم را در لحظه به درستی نمایش نمی دهد، فلذا بهتر است به اطلاعات نمایش داده شده از Hyper-V Manager اطمینان کنیم.
نتیجه گیری:
Hyper-V dynamic memory کمک بزرگی برای ادمینهای Hyper-V به حساب می آید. این تکنولوژی موقعیتی فراهم می کند تا بتوانید چندین ماشین مجازی که وجود اضافه مصرف رم در آنها حتمی است را اجرا کنید و به صورت dynamic بتوانید با توجه به مقدار بار کاری موجود بر VM منابع آنها را مدیریت کنید. هر زمان که با کمبود رم در سرور خود مواجه شدید و یا نیت کردید که مدیریت دقیقتری بر منابع مصرفی داشته باشید، می دانید که کدام قابلیت را فعال کنید!