我在高可用性集群中有一对 ESXi (5.1) 主机。每台主机有 48GB 的 RAM。我目前有 18 个虚拟机在运行,配置的内存量如下:
- 1x 4GB,1 个 vCPU
- 1x 4GB,4 个 vCPU
- 5x 2GB,1 个 vCPU
- 5x 1GB,1 个 vCPU
- 4x 512MB,1 个 vCPU
- 2x 512MB,1 vCPU,具有容错功能(因此消耗的内存加倍)
这应该会增加 27GB 的 RAM。基于资源管理指南(假设 2 GB、1 vCPU VM 的开销为 38 MB,512 MB、1 vCPU VM 的开销为 23 MB),则应该有大约 612 MB 的开销,总计大约 28 GB。
当我查看各个主机时,使用的内存似乎与此一致。在“摘要”选项卡上,“内存使用情况”中,一个主机显示 14240.00 MB,另一个主机显示 14897.00 MB,总计约 28.5 GB。
但是,vSphere Client 中我的集群的“资源分配”选项卡显示以下内容:
- 总容量:89705 MB
- 预留容量:47210 MB
- 可用容量:42495 MB
撇开两台主机的 48 GB RAM 是 98304 MB 而不是 89705 MB 的事实,为什么预留容量这么高?单个主机声称使用的容量(28 GB)与集群声称使用的容量(46 GB)之间相差近 20 GB。此外,这阻止我添加新的虚拟机,因为 HA 集群需要能够容忍一台主机的故障,并且软件认为我在这个限制下以满负荷运行。
我的所有虚拟机均配置为没有 RAM 限制且没有 RAM 预留,但两个容错虚拟机除外,它们的所有 RAM 均已预留。
这是使用 vSphere 5.1 标准许可证。
答案1
在与 VMware 支持人员进行一些 (长时间的) 对话后,我得出了以下认识:
“预留容量”中的数字不是集群虚拟机内存配置的函数。它是多个因素的总和:任何内存保留在虚拟机上声明的容量、根据 HA 准入策略计算的值以及用于内存管理开销的额外容量。HA 准入控制值直接来自准入控制策略;在我的例子中,由于我已将其设置为容忍单个主机的故障,因此其中一台主机上的总 RAM 量已添加到集群的保留容量中。
除其他限制外,HA 准入控制似乎不允许预留容量超过单个主机中的 RAM。(要么就是不允许可用容量低于单个主机中的 RAM;我仍然不清楚这两种情况到底是哪种情况,因为它们在我的双主机集群中是同一种情况。)这导致的最终结果是,实际上任何数量的内存预留都与双主机集群中 HA 准入策略的自然设置不兼容。由于容错强制内存预留,因此它同样不兼容。有人告诉我,如果集群中有更多主机,预留容量将“分散”到更多主机上,并且可以进行一定程度的内存预留。
对我来说,最终结果是我必须改变我的 HA 准入政策以保留一定比例的可用资源(而不是“一个主机的价值”),并计算该百分比以排除使用容错所必需的任何内存保留。
答案2
在我看来,这是您将 HA 集群准入控制策略设置为“集群资源预留百分比”并为其预留 50% 的功能。因此,它按预期运行。