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