简单的问题,我有三台运行4.1 Essentials Plus的主机与vmware HA。 我试图创build几个虚拟机,占用每个服务器内存容量的90%。 我知道vmware在虚拟机中具有非常复杂的内存pipe理function,但是我不明白vCenter如何能够让我甚至能够启动超过关键内存级别的虚拟机,而主机故障恢复仍然可以处理。
是否由于虚拟机没有使用内存,因此它仍然被认为是免费的,因此虚拟机可以启动? 但是,如果所有虚拟机在主机出现故障之前真正使用内存,将会发生什么情况 – 发生故障后,不能将其迁移到其他主机。
XenServer中的默认行为是自动计算可在集群内使用的最大内存级别,以便主机故障仍受保护。 Vmware做同样的事情?
准入策略已启用。 启用Vmware HA。
高可用性准入控制使用所谓的“插槽”来计算在configuration的主机故障的情况下是否有空间容纳所有的虚拟机。 插槽计算是什么使您可以继续启动虚拟机,即使集群中的内存资源看起来可怕。
“插槽”机制旨在通过一种通用的方式将群集分解为VM大小的块的估计,然后确保在configuration的主机数量丢失的情况下,每个运行的VM仍将有可用的插槽。
在插槽大小计算中发生的第一件事。 它所需要的是保留资源 ,或者更具体地说,就保留资源而言, 群集中最大的虚拟机 。 这样做的原因是为了确保集群中的每个资源插槽能够提供足够的资源来满足该最大虚拟机上的资源预留,从而在发生HA故障切换。
对于CPU,find虚拟机上的最高预留量并将其用作插槽大小。 如果没有预留,则使用在集群的das.vmCpuMinMHz设置中configuration的das.vmCpuMinMHz ; 在4.1中默认是256Mhz,但在5.0中降到32Mhz。
对于内存,使用内存预留加上虚拟机的内存开销 – 因此,如果没有预留,那么您的插槽大小将是最高VM的内存开销编号或集群的das.vmMemoryMinMB设置(如果已configuration( 文档目前说默认是256MB;事实并非如此,在4.1+中默认是0)。
这些数字组合在一起给你的群集的插槽大小。
假设你没有任何保留,你的插槽大小可能是最小的 – 对于CPU来说是256Mhz,而内存插槽大小将是开销最大的VM的内存开销大小。
在频谱的另一端,如果你有一个虚拟机有大量的内存预留,但没有CPU预留,另一个虚拟机有大量的内存预留,你的插槽大小将根据每个预留的大数来计算 – 每个在这两种资源中,插槽都会非常大,这是非常有限的 – 在您达到相关的资源使用级别之前,您将很难通过启动虚拟机进行准入控制。
要解决这个问题,您可以手动设置每个资源的插槽大小的上限:
das.slotCpuInMHz设置时隙计算的CPU部分的最大大小 das.slotMemInMB设置内存的最大值 如果使用这些,那么在这些号码上的虚拟机将被分配多个插槽,以便在故障转移之后仍然保证其资源的预留价值。
一旦确定了插槽大小,就会计算集群中每个主机上插槽的数量。
较低的资源决定了它们的限制 – 所以如果一个主机可以以CPU资源的百分比容纳CPU插槽大小的100倍,但是只能容纳30倍的内存限制,则主机有30个插槽。
该号码是为集群中的每个主机添加的。 这是configuration的准入控制限制启动的时间。如果您已将群集configuration为允许1个主机故障,则会丢弃其计算中具有最多时隙的主机; 如果设置了2个主机故障,则丢弃前两个槽位计数主机。 它假定你会失去你最大的主机。
一旦完成,群集中剩余主机上的插槽数量就会相加 – 这就是允许虚拟机运行的插槽数量,它将阻止您启动虚拟机。
群集摘要选项卡中的“高级运行时信息”链接将告诉您您的插槽设置为什么。

(忽略vCPU计数;不再用于槽计算)
我知道你在想什么
“ 等一下,我的虚拟机有一些RAM的瘟疫!如何在他们应该运行在一个像256MB的任意小尺寸的”槽“?
他们应该按照他们的资源预定指定的最低水平运行; 如果他们没有保留,那么他们不一定要运行良好。
如果在已经有相当大的资源使用情况下发生HA故障,那么当额外的VM添加到负载时,可能会发生严重的资源争用。
如果CPU资源处于竞争状态,这意味着所有正在运行的虚拟机都会有效地减less可用CPU时间。 这在某些情况下可能会产生相当严重的影响 – 在具有多个vCPU的计算机上使用的虚拟对称多处理实际上可能在CPU时间争用时受到影响。
如果内存是竞争的资源..那么,这是什么时候变得有趣。
ESX(i)有许多处理内存争用的技术。 这里有一个非常深入的文档,但是总结一下,hypervisor采取了这些方法:
Mem.ShareScanTime设置确定的时间表Mem.ShareScanTime – 每小时一次是默认设置。 它们的最小插槽大小与虚拟机的内存开销相关并不是偶然的。 这是因为开销数字确实是运行虚拟机绝对必需的唯一内存 – 尽pipe如果虚拟机的整个内存以交换结束,“运行”可能太强大了。
所以,准入控制并不是要确保所有的虚拟机在HA故障转移后运行良好,而是希望确保所有的虚拟机都能正常运行。
准入控制尝试在HA故障转移的情况下实施最低级别的服务。 但是,只有当你确定了最低的服务水平时才会这样。 许多环境不需要或不需要保留。
如果您打算使用准入控制,我build议您调查您的广告位尺寸,并将它们推向对您有意义的值; 如果您不需要它们来影响准入控制,就不要开始创build预定。
如果您的插槽大小由于在群集中没有任何保留而被设置为最小值或接近最小值,那么将其推向更适合您的环境的“正常”VM大小。 在集群的高级设置中设置如下所示:
das.vmCpuMinMHz = 500 das.vmMemoryMinMB = 2048
如果由于less量的高预留虚拟机而导致您的插槽大小设置得过高,请适当地将其推下。
das.slotCpuInMHz = 1000 das.slotCpuInMHz = 4096
确保准入控制的值对于你的环境是有意义的 – 你绝对不希望从交换空间运行一半的虚拟机,因为准入控制认为你不关心它们的服务水平!