当可用资源容量无法满足资源用户(和虚拟化开销)的需求时,管理员可能需要对分配给虚拟机或 vSphere 中资源池的资源量进行自定义。

资源分配设置(份额、预留和限制)用于确定为虚拟机提供的 CPU、内存和存储资源量。特别是,管理员有多个用于分配资源的选项。

  • 预留主机或集群的物理资源。
  • 为可以分配给虚拟机的资源量设置上限。
  • 保证为特定虚拟机分配的物理资源百分比始终高于其他虚拟机。
注: 本章中“内存”是指物理内存。

资源分配份额

份额指定虚拟机(或资源池)的相对重要性。如果某个虚拟机的资源份额是另一个虚拟机的两倍,则在这两个虚拟机争用资源时,第一个虚拟机有权消耗两倍于第二个虚拟机的资源。

份额通常指定为正常,这些值将分别按 4:2:1 的比例指定份额值。还可以选择自定义为各虚拟机分配特定的份额值(表示比例权重)。

指定份额仅对同级虚拟机或资源池(即在资源池层次结构中具有相同父级的虚拟机或资源池)有意义。同级将根据其相对份额值共享资源,该份额值受预留和限制的约束。为虚拟机分配份额时,始终会相对于其他已打开电源的虚拟机来为该虚拟机指定优先级。

下表显示了虚拟机的默认 CPU 和内存份额值。对于资源池,默认的 CPU 份额值和内存份额值是相同的,但是必须将二者相乘,就好像是资源池是具有四个虚拟 CPU 和 16 GB 内存的虚拟机一样。

表 1. 份额值
设置 CPU 份额值 内存份额值
每个虚拟 CPU 具有 2000 个份额 所配置的虚拟机内存的每兆字节具有 20 个份额。
正常 每个虚拟 CPU 具有 1000 个份额 所配置的虚拟机内存的每兆字节具有 10 个份额。
每个虚拟 CPU 具有 500 个份额 所配置的虚拟机内存的每兆字节具有 5 个份额。

例如,一台具有两个虚拟 CPU 和 1GB 内存且 CPU 和内存份额设置为正常的 SMP 虚拟机具有 2x1000=2000 个 CPU 份额和 10x1024=10240 个内存份额。

具有一个以上虚拟 CPU 的虚拟机称为 SMP(对称多处理)虚拟机。

打开新虚拟机电源时,每个份额所代表的相对优先级会改变。这将影响同一资源池内的所有虚拟机。所有虚拟机都具有相同数量的虚拟 CPU。请考虑以下示例。

  • 一台聚合 CPU 容量为 8 GHz 的主机上运行着两个受 CPU 约束的虚拟机。它们的 CPU 份额设置为正常,因此各得 4GHz。
  • 现在打开了第三个受 CPU 约束的虚拟机的电源。它的 CPU 份额设置为,这意味着它拥有的份额值应该是设置为正常的虚拟机的两倍。新的虚拟机获得 4GHz,其他两个虚拟机各自仅获得 2GHz。如果用户为第三个虚拟机指定的自定义份额值为 2000,也会出现相同的结果。

资源分配预留

预留指定保证为虚拟机分配的最少资源量。

仅在有足够的未预留资源满足虚拟机的预留时,vCenter ServerESXi 才允许您打开虚拟机电源。即使物理服务器负载较重,服务器也会确保该资源量。预留用具体单位(兆赫兹 (GHz) 或兆字节 (MB))表示。

例如,假定您有 2GHz 可用,并且为 VM1 和 VM2 各指定了 1GHz 的预留量。现在每个虚拟机都能保证在需要时获得 1GHz。但是,如果 VM1 只用了 500MHz,则 VM2 可使用 1.5GHz。

预留默认为 0。如果需要,可以指定预留以保证虚拟机始终可使用最少的必要 CPU 或内存量。

资源分配限制

限制功能为可以分配到虚拟机的 CPU、内存或存储 I/O 资源指定上限。

服务器分配给虚拟机的资源可大于预留,但决不可大于限制,即使系统上有未使用的资源也是如此。限制用具体单位(兆赫兹 (GHz) 或兆字节 (MB) 或每秒 I/O 操作数)表示。

CPU、内存和存储 I/O 资源限制默认为无限制。如果内存无限制,则在创建虚拟机时为该虚拟机配置的内存量将成为其有效限制因素。

多数情况下无需指定限制。指定限制的优缺点如下:

  • 优点 — 如果开始时虚拟机的数量较少,并且您想对用户期望数量的虚拟机进行管理,则分配一个限制将非常有效。但随着用户添加的虚拟机数量增加,性能将会降低。因此,您可以通过指定限制来模拟减少可用资源。
  • 缺点 — 如果指定限制,可能会浪费闲置资源。系统不允许虚拟机使用的资源超过限制,即使系统未充分利用并且有闲置资源可用时也是如此。请仅在有充分理由的情况下指定限制。

资源分配设置建议

选择适合 ESXi 环境的资源分配设置(预留、限制和份额)。

遵循以下准则有助于使虚拟机获得更好性能。

  • 使用预留来指定可接受的最低 CPU 量或内存量,而不是想要使用的量。预留表示的具体资源量不会随环境改变(例如添加或移除虚拟机)而变化。主机可以根据虚拟机的限制、份额的数量和估计需求将额外的资源指定为可用资源。
  • 请不要将所有资源全部指定为虚拟机的预留(请计划将至少 10% 的资源保留为未预留)。系统容量越接近于被全部预留,想要在不违反接入控制的情况下更改预留和资源池层次结构就越困难。在支持 DRS 的集群内,如果预留完全占用集群或集群内各台主机的容量,则会阻止 DRS 在主机之间迁移虚拟机。
  • 如需频繁更改总可用资源,可使用份额在虚拟机之间合理分配资源。例如,如果使用份额,并且升级主机,那么,即使每个份额代表较大的内存量、CPU 量或存储 I/O 资源量,每个虚拟机也保持相同的优先级(保持相同数量的份额)。

编辑 vSphere 中的设置

可以使用“编辑设置”对话框更改内存和 CPU 资源的分配。

过程

  1. vSphere Client 中,浏览到虚拟机。
  2. 右键单击并选择编辑设置
  3. 编辑 CPU 资源。
    选项 描述
    份额 此资源池拥有的、相对于父级的总 CPU 份额值。同级资源池根据由其预留和限制限定的相对份额值共享资源。选择正常,这三种级别分别按 1:2:4 这个比率指定份额值。选择自定义可为每个虚拟机提供表示比例权重的特定份额数。
    预留 保证为该资源池分配的 CPU 量。
    限制 该资源池的 CPU 分配上限。选择无限可指定无上限。
  4. 编辑内存资源。
    选项 描述
    份额 此资源池拥有的、相对于父级的总内存份额值。同级资源池根据由其预留和限制限定的相对份额值共享资源。选择正常,这三种级别分别按 1:2:4 这个比率指定份额值。选择自定义可为每个虚拟机提供表示比例权重的特定份额数。
    预留 保证为该资源池分配的内存量。
    限制 该资源池的内存分配上限。选择无限可指定无上限。
  5. 单击确定

更改资源分配设置 — 示例

以下示例说明了如何更改资源分配设置以提高虚拟机性能。

假定在某个 ESXi 主机上,您创建了两个新的虚拟机,一台用于 QA (VM-QA) 部门,另一台用于市场 (VM-Marketing) 部门。

图 1. 具有两个虚拟机的单台主机

在此示例中,单台主机具有两个虚拟机。

在接下来的示例中,假定 VM-QA 占用大量内存,因此,您需要将这两个虚拟机的资源分配设置相应地更改为以下内容:

  • 指定当系统内存过载时,VM-QA 可使用的 CPU 和内存资源是市场部虚拟机的两倍。将 VM-QA 的 CPU 份额和内存份额设置为,并将 VM-Marketing 设置为正常
  • 保证市场部虚拟机具有一定量的 CPU 资源。您可以使用预留设置来达到此目的。

过程

  1. vSphere Client 中,浏览到虚拟机。
  2. 在要更改其份额的虚拟机上,右键单击 VM-QA,然后选择编辑设置
  3. 虚拟硬件下,展开“CPU”,然后从共享下拉菜单中选择
  4. 虚拟硬件下,展开“内存”,然后从共享下拉菜单中选择
  5. 单击确定
  6. 右键单击市场部虚拟机 (VM-Marketing),然后选择编辑设置
  7. 虚拟硬件下,展开“CPU”,然后将预留值更改为所需值。
  8. 单击确定

vSphere中的准入控制

启动虚拟机时,系统会检查尚未预留的 CPU 和内存资源量。系统将根据可用的未预留资源确定是否可保证为虚拟机所配置的预留(如果有)。此过程称为准入控制。

如果有足够的未预留 CPU 和内存可用,或者没有预留,虚拟机将启动。否则将显示一条资源不足警告。

注: 除用户指定的内存预留外,各虚拟机还有一个开销内存量。此额外内存使用量包含在准入控制计算中。

启用了 vSphere DPM 功能时,可能会将主机置于待机模式(即关闭电源)以降低功耗。这些主机所提供的未预留资源将被视为可用于准入控制的资源。如果某个虚拟机没有这些资源就无法启动,系统会建议启动足够的待机主机。有关详细信息,请参见管理电源资源