مدیریت RAM در VMware ESXi: تفاوت Reservation، Limit و Share در ماشینهای مجازی

در دنیای مجازیسازی، مدیریت بهینه منابع سختافزاری از اهمیت بالایی برخوردار است. یکی از مهمترین منابع در هاستهای مجازی RAM است که باید بهطور هوشمند بین ماشینهای مجازی (VMها) توزیع شود تا عملکرد مطلوبی داشته باشند. VMware ESXi به کاربران این امکان را میدهد که از طریق سه مفهوم Reservation، Limit و Share مدیریت دقیقی روی تخصیص RAM داشته باشند. در این مقاله، مدیریت RAM در VMware ESXi و تفاوت Reservation، Limit و Share در ماشینهای مجازی و همچنین Reserve all guest memory خواهیم پرداخت و نقش آنها را در بهینهسازی عملکرد ماشینهای مجازی بررسی میکنیم.
در مورد CPU هم در VMware ESXi مفاهیم مشابهی وجود دارد که باید به آنها توجه کنید. همانطور که برای RAM تنظیماتی مثل Reservation، Limit و Share داریم، برای CPU هم دقیقاً همین سه گزینه وجود دارد که در انتهای مطلب به آن خواهیم پرداخت.
آنچه قراره یاد بگیریم اینجاست!
مدیریت RAM در VMware ESXi
مدیریت RAM در VMware ESXi یکی از مهمترین بخشهایی است که هر ادمین شبکه باید در مورد آن بداند و تفاوت Reservation، Limit و Share در ماشینهای مجازی میتواند روی عملکرد یک ماشین مجازی تاثیر بسزایی بذارد. الان نوبت این است با تکتک این موارد در ESXi آشنا شویم.
RAM Reservation (رزرو حافظه رم) 🏦
Reservation حداقل مقدار RAMی است که برای یک ماشین مجازی تضمین شده و توسط ESXi برای آن رزرو میشود. این مقدار همیشه در دسترس این VM خواهد بود، حتی اگر دیگر ماشینهای مجازی به RAM بیشتری نیاز داشته باشند.
چرا اهمیت دارد؟
- از تأخیر و کاهش عملکرد ماشینهای مجازی حیاتی جلوگیری میکند.
- تضمین میکند که VM همیشه به مقدار مشخصی RAM فیزیکی دسترسی دارد.
- در شرایطی که منابع کم هستند، این مقدار به هیچ ماشین مجازی دیگری اختصاص داده نمیشود.
مثالی از RAM Reservation در ماشینهای مجازی
یک VM دارای ۸GB RAM است و مقدار Reservation را روی ۴GB تنظیم کردهایم.
این به این معنی است که ESXi همیشه ۴ گیگابایت از RAM فیزیکی را برای این VM کنار میگذارد، حتی اگر سیستم تحت فشار باشد.
اگر هاست فقط ۴GB رم آزاد داشته باشد، این VM همچنان ۴GB خود را خواهد داشت و دچار کاهش عملکرد نخواهد شد.
RAM Limit (محدودیت استفاده از RAM 🚧)
Limit حداکثر میزان رم قابل استفاده برای یک ماشین مجازی را مشخص میکند. حتی اگر VM مقدار بیشتری RAM اختصاص داده شده داشته باشد یا هاست دارای RAM آزاد باشد، این VM نمیتواند از مقدار تعیینشده در Limit فراتر رود. به تصویر زیر نگاه کنید تمامی بخشهای مدیریت RAM در VMware ESXi توضیح داده خواهند شد.

چرا اهمیت دارد؟
امکان مدیریت منابع و جلوگیری از مصرف بیشازحد RAM توسط یک VM را فراهم میکند.
در صورتی که بهدرستی تنظیم نشود، میتواند باعث مشکلاتی مانند Ballooning و Swapping شود.
مثالی از RAM Limit در ماشینهای مجازی
یک VM دارای ۸GB RAM است، اما مقدار Limit روی ۴GB تنظیم شده است.
حتی اگر این ماشین به ۸GB RAM نیاز داشته باشد و هاست هم RAM کافی داشته باشد، این VM فقط ۴GB مصرف خواهد کرد.
این میتواند باعث کندی سیستمعامل داخل VM شود و برخی از برنامهها بهدرستی اجرا نشوند.
RAM Share (اولویت تخصیص RAM ⚖️)
Share مقدار نسبی اولویت یک ماشین مجازی در دریافت RAM در شرایط کمبود منابع را مشخص میکند. این مقدار فقط زمانی مؤثر است که هاست با کمبود RAM مواجه باشد.
چرا اهمیت دارد؟
در مواقعی که منابع کم است، مشخص میکند کدام VM باید اولویت بیشتری در تخصیص RAM داشته باشد.
مقدار Share میتواند Low (کم)، Normal (متوسط)، High (زیاد) یا مقدار عددی دلخواه باشد.
مثالی از RAM Share در ماشینهای مجازی
VM1: Reservation ۲GB، Limit ۶GB، Share High
VM2: Reservation ۱GB، Limit نامحدود، Share Low
اگر هاست ESXi دچار کمبود RAM شود، VM1 به دلیل Share بالاتر رم بیشتری دریافت میکند، درحالیکه VM2 ممکن است با کاهش RAM مواجه شود و کند شود.
گزینه “Reserve all guest memory” چیست؟
این گزینه تضمین میکند که تمام مقدار RAM تخصیص دادهشده به VM از RAM فیزیکی هاست تأمین شود و از Swap یا Ballooning استفاده نشود.
چرا اهمیت دارد؟
مخصوصاً برای برنامههای حساس به تأخیر مانند پایگاههای داده یا اپلیکیشنهای بلادرنگ مفید است. از هرگونه کندی ناشی از انتقال داده به Swap File یا Memory Overcommitment جلوگیری میکند. اگر یک ماشین مجازی ۸GB RAM دارد و گزینه Reserve all guest memory فعال باشد، ESXi همیشه ۸GB RAM فیزیکی را برای آن کنار میگذارد. این یعنی هیچوقت این VM از فایل Swap استفاده نمیکند و همیشه بهترین عملکرد را دارد.
❗ نکته مهم: اگر این گزینه را فعال کنید، ممکن است باعث شود که منابع برای سایر VMها محدود شوند، بهخصوص اگر هاست مقدار کافی RAM نداشته باشد.
تأثیر Overcommitment در RAM Management
در VMware ESXi، معمولاً مقدار RAM تخصیصیافته به ماشینهای مجازی بیشتر از مقدار فیزیکی موجود در هاست است. به این کار Overcommitment گفته میشود. وقتی چندین VM از مقدار بیشتری RAM نسبت به کل RAM فیزیکی هاست استفاده کنند، ESXi از تکنیکهایی مانند Ballooning، Swapping و Compression استفاده میکند که میتواند باعث کند شدن عملکرد شود.
راهحل چیست؟ با استفادهی مناسب از Reservation، Limit و Share میتوان جلوی این مشکل را گرفت. همچنین فعال کردن “Reserve all guest memory” از استفاده از Swap جلوگیری میکند.
مفهوم Memory Ballooning در ESXi
وقتی یک هاست ESXi دچار کمبود RAM شود، از Memory Ballooning استفاده میکند. در این حالت، یک درایور مخصوص (VMware Tools Balloon Driver) روی VM نصبشده و شروع به پس گرفتن RAM از ماشینهای مجازی و آزادسازی آن برای سایر VMها میکند.
چگونه از مدیریت RAM در VMware ESXi در پروژههای واقعی استفاده کنیم؟
اگر یک سرور ESXi دارید و چندین ماشین مجازی روی آن اجرا میکنید، برای هر ماشین مجازی بر اساس نوع کاری که انجام میدهد، تنظیمات مناسب را انجام دهید:
- سرورهای دیتابیس (SQL, Oracle): Reservation بالا + Reserve all guest memory برای جلوگیری از Swap و Ballooning
- سرورهای وب (IIS, Apache, Nginx): مقدار Reservation متوسط برای حفظ عملکرد
- ماشینهای تست و توسعه: مقدار Share پایین و Limit محدود برای جلوگیری از مصرف بیرویه منابع
- مقدار Reservation را مناسب تنظیم کنید تا VM همیشه RAM مورد نیازش را داشته باشد.
- در صورت امکان، از Swap کمتر استفاده کنید (با تنظیم Limit).
- در ماشینهای مجازی حیاتی، “Reserve all guest memory” را فعال کنید تا از Ballooning جلوگیری شود.
نتیجهگیری | مدیریت RAM در VMware ESXi
برای بهینهسازی عملکرد ماشینهای مجازی در VMware ESXi، باید تفاوتهای Reservation، Limit و Share را درک کنید و متناسب با نیازهای سیستم خود از آنها استفاده کنید:
- ✅ Reservation: حداقل مقدار RAM تضمینشده برای VM 🚀
- 🚧 Limit: حداکثر مقدار RAM که یک VM میتواند مصرف کند ⚠️
- 📊 Share: اولویت استفاده از RAM هنگام کمبود منابع ⚖️
- 🔒 Reserve all guest memory: اختصاص ۱۰۰٪ RAM فیزیکی به VM بدون استفاده از Swap 🔥
💡 در چه آموزشی این مفاهیم را یاد میگیرید؟
دوره ادمین شبکه برتر | وارد بازار کار شو!
🚀 دوره پشتیبان شبکه (Help Desk) | راهی سریع به دنیای IT
🎯 آیا به دنیای فناوری و شبکه علاقه داری؟
🔧 میخواهی وارد دنیای شغلهای پردرآمد IT بشی؟
💡 این دوره تمام چیزی است که برای شروع نیاز داری!
مدیریت منابع CPU در VMware ESXi
وقتی چندین ماشین مجازی روی یک هاست ESXi اجرا میشوند، پردازنده فیزیکی (pCPU) بین آنها بهصورت اشتراکی تخصیص داده میشود. بنابراین، VMware باید تصمیم بگیرد که کدام VM چقدر از CPU دریافت کند.
سه مفهوم کلیدی در مدیریت CPU وجود دارد:
1️⃣ CPU Reservation ✅
2️⃣ CPU Limit ❌
3️⃣ CPU Shares ⚖️
CPU Reservation (حداقل CPU تضمینشده)
مقدار حداقل پردازندهای که یک VM به آن نیاز دارد و همیشه در اختیارش خواهد بود (صرفنظر از بار کاری سایر VMها). بعنوان مثال اگر یک VM دارای ۲ vCPU باشد و هرکدام ۱۰۰۰ مگاهرتز Reservation داشته باشند، این ماشین همیشه حداقل ۲ گیگاهرتز از پردازنده را خواهد داشت. برای ماشینهایی که بار پردازشی حساس دارند (مثل دیتابیس یا اپلیکیشنهای بلادرنگ) و همیشه باید منابع CPU در دسترسشان باشد.
✅ نکته: اگر مجموع CPU Reservationهای ماشینهای مجازی بیشتر از پردازنده فیزیکی باشد، برخی از VMها دچار مشکل خواهند شد و ESXi نمیتواند همهی درخواستها را برآورده کند.
CPU Limit (حداکثر CPU مجاز برای یک VM)
حداکثر مقدار CPU که یک ماشین مجازی میتواند مصرف کند، حتی اگر هاست ظرفیت بیشتری داشته باشد. بعنوان مثال اگر یک ماشین مجازی دارای ۸ vCPU باشد ولی Limit آن ۲ گیگاهرتز تنظیم شود، حتی اگر هاست ۱۰ گیگاهرتز آزاد داشته باشد، این VM نمیتواند بیش از ۲ گیگاهرتز استفاده کند.
❌ نکته: استفاده از Limit میتواند باعث کاهش عملکرد شود، مخصوصاً اگر اشتباهاً مقدار آن خیلی پایین تنظیم شود. در تصویر زیر مقدار Limit به اشتباه تنظیم شده است.

CPU Shares (اولویتبندی در هنگام کمبود منابع)
مقدار نسبی CPU که یک ماشین در صورت رقابت با سایر VMها دریافت میکند. بعنوان مثال اگر دو VM داشته باشیم، یکی با Shares = 2000 و دیگری با Shares = 1000، در صورت کمبود منابع، ماشین اول دو برابر بیشتر CPU دریافت میکند.
🔹 کاربرد: برای اولویتبندی ماشینها در هنگام استفادهی بیش از حد از CPU هاست.
⚖️ نکته: CPU Shares فقط در زمانی اثر دارد که هاست دچار کمبود CPU شود. در غیر این صورت، همهی VMها آزادانه از CPU استفاده میکنند.
📌 مثال از تنظیمات بهینه CPU برای ماشینهای مختلف
سرورهای پایگاه داده (SQL, Oracle):
- Reservation بالا برای اطمینان از عملکرد ثابت
- Limit تنظیم نشود
- Shares بالا برای اولویت داشتن در پردازش
سرورهای وب (IIS, Apache, Nginx):
- Reservation متوسط
- Shares پیشفرض یا متوسط
ماشینهای تست و توسعه:
- Shares پایین
- Limit کم برای جلوگیری از مصرف بیش از حد منابع
جمعبندی مدیریت منابع CPU در VMware ESXi
✔️ تنظیم درست Reservation، Limit و Shares برای CPU در VMware ESXi میتواند عملکرد ماشینهای مجازی را بهینه کند و از مشکلاتی مثل Overcommitment و NUMA Miss جلوگیری کند.
✔️ سرورهای حیاتی باید Reservation داشته باشند، اما استفادهی نادرست از Limit میتواند باعث کاهش کارایی شود.
✔️ در سرورهایی با چندین پردازنده فیزیکی، NUMA را در نظر بگیرید و از تخصیص vCPU بیش از حد خودداری کنید.
برخی از ویژگیهایی که در بخش CPU وجود دارد اما شاید ندانید!

1️⃣ Expose hardware-assisted virtualization to the guest OS:
این گزینه امکان اجرای Nested Virtualization را فراهم میکند، یعنی اجرای یک Hypervisor (مانند VMware ESXi، Hyper-V، یا KVM) داخل یک ماشین مجازی. اگر میخواهید داخل یک ماشین مجازی ESXi یا Hyper-V اجرا کنید، باید این گزینه را فعال کنید. برای محیطهای آزمایشگاهی و تست Hypervisor مناسب است البته CPU باید از فناوری Intel VT-x یا AMD-V پشتیبانی کند.
2️⃣ Expose IOMMU to the guest OS:
IOMMU (Input-Output Memory Management Unit) تکنولوژیای است که امکان Direct Memory Access (DMA) را برای دستگاههای PCIe داخل یک VM فراهم میکند. این قابلیت امکان دسترسی مستقیم دستگاههای PCI (مانند کارت گرافیک، کارت شبکه، و کنترلرهای ذخیرهسازی) به حافظه ماشین مجازی را میدهد. اگر میخواهید مثلا یک کارت گرافیک NVIDIA را مستقیما به یک مشاین مجازی اختصاص دهید باید این گزینه را فعال کنید. این قابلیت معمولاً در سرورهای جدیدتر با پشتیبانی از VT-d (در پردازندههای Intel) یا AMD-Vi (در پردازندههای AMD) فعال میشود. بدون IOMMU، دستگاههای سختافزاری نمیتوانند بهصورت مستقیم به یک ماشین مجازی متصل شوند.
3️⃣ Enable virtualized CPU performance counters:
این گزینه به سیستمعامل مهمان اجازه میدهد تا از شمارندههای عملکرد پردازنده (Performance Counters) در داخل VM استفاده کند. این قابلیت برای مانیتورینگ و پروفایلینگ پردازنده در محیطهای توسعه و تست مفید است. ابزارهایی مانند Perf (در لینوکس)، Windows Performance Monitor (در ویندوز)، و ابزارهای دیگر تحلیل عملکرد پردازنده میتوانند از این شمارندهها استفاده کنند. توسعهدهندگان نرمافزار از این قابلیت برای تحلیل عملکرد کدهای سطح پایین و بهینهسازی CPU Usage استفاده میکنند.
نکته: فعال کردن این گزینه میتواند تأثیر منفی جزئی روی عملکرد VM داشته باشد، زیرا برخی از پردازندهها هنگام ارائه دادههای Performance Counters به ماشین مجازی کمی Overhead دارند. اگر ماشینهای مجازی شما کاربرد توسعهای یا تست Performance ندارند، نیازی به فعالسازی این گزینه نیست.
این مفاهیم بهطور کامل در دوره جامع شبکه توضیح داده میشوند. اگر میخواهید مدیریت حرفهای VMware و مجازیسازی را یاد بگیرید و عملکرد VMهای خود را بهینه کنید، این دوره را از دست ندهید!
📌 برای اطلاعات بیشتر و ثبتنام، به لینک زیر مراجعه کنید:
📌 دوره جامع شبکه | وارد بازار شبکه شو!
منبع: آکادمی بامادون