适用于:✔️ Linux VM ✔️ Windows VM
创建虚拟机 (VM)、启动任何已停止(已解除分配)的 VM 或调整 VM 大小时,Microsoft Azure 会为订阅分配计算资源。 我们会不断投入其他基础结构和功能,确保始终提供可用于支持客户需求的所有 VM 类型。 但是,偶尔可能会遇到因特定区域对 Azure 服务的需求空前增长而导致资源分配失败的情况。 尝试在区域中创建、启动 VM 或调整 VM 大小时,可能会出现此问题,同时 VM 可能会显示错误代码和消息,如以下文本所示:
错误代码:AllocationFailed 或 ZonalAllocationFailed
错误消息:“分配失败。 对于此区域中请求的 VM 大小,我们的容量不够。 有关提高分配成功可能性的详细信息,请参阅https://aka.ms/allocation-guidance";
备用建议:收到备用建议意味着所请求的 VM 大小当前在所选区域中不可用。 要增加成功分配虚拟机的机会,可以选择一种备用选项。 只需对 VM 输入选择应用更改,或使用所需选项调整当前现有 VM 的大小,然后尝试重新启动或创建 VM。
例如,请尝试以下替代选项之一,以提高分配成功的可能性:
- 同一区域的备用 VM 大小:Standard_A2_v2、Standard_A2m_v2 或 Standard_D2a_v4
- 相同 VM 大小和区域的备用区域:区域 1 和 3
备注
如果要对虚拟机规模集 (VMSS) 进行故障排除,则过程与标准 VM 相同。 要解决此问题,应按照本文中的说明进行操作。
错误消息:“分配失败。 如果尝试将新 VM 添加到包含单个放置组的虚拟机规模集,或者更新虚拟机规模集中包含单个放置组的现有 VM /调整其大小,请注意,此类分配可能仅限于单个群集,并且群集的容量可能不足。 有关提高分配成功可能性的详细信息,请参阅http://aka.ms/allocation-guidance.";
本文说明一些常见分配故障的原因,并建议可能的补救方法。
在首选区域中提供首选的 VM 类型前,建议遇到部署问题的客户考虑本指南,作为临时解决办法。
确定最适合你的情况的方案,然后使用对应的建议解决办法重试分配请求,增加分配成功的可能性。 或者,始终可以稍后重试。 这是因为群集、区域 (region) 或区域 (zone) 中已释放足够资源,可以满足你的请求。
为确保容量始终可用于工作负载,请考虑使用按需容量预留。 使用此选项可以提前预留计算容量,确保可以根据需要部署 VM,而不会出现分配失败问题。 此方法可以提高部署的可靠性和可预测性。
独立 VM
原因
如果 Azure 中有独立 VM,这意味着它不属于其他 VM 的可用性集或邻近放置组,并且尝试创建、启动或重新部署操作时遇到分配失败,则指示 Azure 当前缺少足够的容量来满足指定区域中的请求。
解决方法
若要解决此问题,请使用以下某种方法:
重试分配
有时,此问题可能是暂时的,在短时间内重试分配可以解决问题。
重设 VM 大小
请考虑将 VM 更改为在区域中可能具有更高可用性的其他大小。
更改区域
如果当前区域需求较高,请尝试在可能有更多容量的其他区域或可用性区域部署 VM。
根据现有可用性集调整 VM 大小、添加 VM 或启动部分停止的(已解除分配)VM
备注
只有在创建 VM 期间才能将 VM 添加到可用性集。 要将现有 VM 添加到可用性集,或更改 VM 的可用性集,必须删除并重新创建 VM。 有关详细信息,请参阅使用 Azure PowerShell 更改 VM 的可用性集。
原因
必须在托管现有可用性集的原始群集上请求调整 VM 大小或向现有可用性集添加 VM。 群集可能不支持请求的 VM 大小,或者当前容量不够。
部分解除分配表示已停止(解除分配)可用性集中的一或多个(但不是全部)VM。 解除分配 VM 时会释放相关联的资源。 在已部分解除分配的可用性集中启动 VM 相当于向现有可用性集添加 VM。 因此,必须在托管容量可能不足的现有可用性集的原始群集上发出分配请求。
解决方法
若要解决此问题,请使用以下某种方法:
对于新的 VM 部署,如果此 VM 可以属于不同的可用性集,则请在不同的可用性集(位于相同区域)中创建 VM。 然后,可以将这个新的 VM 添加到相同的虚拟网络中。
请考虑将 VM 大小调整为可能在区域中具有更高可用性的其他大小。 要确保可用性集中支持 VM 大小,请使用“可用性集”-“列出可用大小”-“REST API”。
停止(解除分配)同一可用性集中的所有 VM,然后批量启动所有适用的 VM,以允许从所有可用群集进行分配,而不仅仅是从当前分配可用性集的群集进行分配。
要停止可用性集中的所有 VM,请执行以下步骤:
- 在 Azure 门户中,导航到“虚拟机”。
- 选择“添加筛选器”并为要管理的可用性集添加筛选器。
- 选中可用性集中所有 VM 的复选框。
- 选择“停止”,然后等待操作完成,并等待所有 VM 报告“已停止(已解除分配)”状态。
- 选择“启动”以再次分配所有 VM。
在可用性集中启动完全停止(已解除分配)的 VM
原因
完全解除分配表示已停止(解除分配)可用性集中的所有 VM。 启动这些 VM 的分配请求将针对区域中支持所需大小的所有群集。
解决方法
若要解决此问题,请使用以下某种方法:
重试分配
有时,此问题可能是暂时的,在短时间内重试分配可以解决问题。
调整 VM 大小
请考虑将 VM 大小调整为可能在区域中具有更高可用性的其他大小。 要确保可用性集中支持 VM 大小,请使用“可用性集”-“列出可用大小”-“REST API”。
更改区域
如果当前区域需求较高,请尝试将 VM 部署或迁移到可能有更多容量的其他区域或可用性区域。
可用性区域中 VM 的分配失败
原因
Azure 可用性区域是 Azure 区域中物理上和逻辑上独立的数据中心。 每个可用性区域都有自己独立的电源、冷却和网络基础结构。 它们旨在将故障隔离到单个区域,以确保高可用性和复原能力,从而最大限度地减少对同一区域中其他区域的影响。
但是,与可用性区域关联的其他部署约束条件可能会导致分配失败。
解决方法
若要解决此问题,请使用以下某种方法:
重试分配
有时,稍后重试分配请求会有所帮助,因为资源可能已在该区域中释放。
重设 VM 大小
请考虑将 VM 大小调整为可能在区域中具有更高可用性的其他大小。
更改区域
如果当前区域需求较高,请尝试将 VM 部署或迁移到可能有更多容量的其他区域或可用性区域。 可以使用以下方法更改区域:
使用 OS 磁盘副本在其他区域中或没有区域约束的情况下新建 VM。 移除区域约束会将分配选项扩展到整个区域,而不是将其限制为单个区域。
有关详细信息,请参阅以下文章:
在不同区域中迁移或创建 VM。 有关详细信息,请参阅跨区域移动 Azure VM。
过度约束的分配失败
原因
当 Azure 计算平台无法分配满足请求中指定的所需约束的 VM 时,会发生过度约束的分配失败。 当在可用资源中无法满足特定要求时,通常会发生这些故障。 它们通常由类似OverconstrainedZonalAllocationRequest或OverconstrainedAllocationRequest这样的错误指示。
这些约束通常(但并非总是)包含以下项:
- VM 大小/SKU
- 加速网络
- 可用性区域
- 临时磁盘
- 邻近放置组 (PPG)
- 超级磁盘或 PremiumSSDv2
解决方法
若要解决此问题,请使用以下某种方法:
重试分配
有时,稍后重试分配请求会有所帮助,因为资源可能已在该区域中释放。
重设 VM 大小
请考虑将 VM 大小调整为可能在区域中具有更高可用性的其他大小。
更改区域
如果当前区域需求较高,请尝试将 VM 部署或迁移到可能有更多容量的其他区域或可用性区域。 可以使用以下方法更改区域:
使用 OS 磁盘副本在其他区域中或没有区域约束的情况下新建 VM。 移除区域约束会将分配选项扩展到整个区域,而不是将其限制为单个区域。
有关详细信息,请参阅以下文章:
在不同区域中迁移或创建 VM。 有关详细信息,请参阅跨区域移动 Azure VM。
调整可能限制分配的约束:区域中的 VM SKU 可能有足够的可用性。 但是,定义的约束可能会阻止分配。 要增加成功分配的可能性,请考虑通过以下方式调整约束:
- 禁用加速网络。
- 从任何邻近放置组中移除 VM。
- 移除任何 UltraSSD 或 PemiumSSDv2 磁盘。
使用邻近放置组的 VM 分配失败
邻近放置组可确保资源并置在同一数据中心内,以减少延迟。 但是,添加的部署约束有时可能会导致分配失败。 有关详细信息和最佳做法,请参阅邻近放置组。
原因
请求启动或分配邻近放置组中的第一个 VM 时,将自动选择数据中心。 如果所需的 VM 大小在该数据中心不可用,请求将失败。 在动态添加或移除 VM 实例的弹性工作负载的情况下,强制实施邻近放置组约束可能会导致分配失败,指示无法完成分配请求。
解决方法
解除分配邻近放置组中的所有 VM,并尝试更改启动 VM 的顺序。 首先使用最严格的 SKU 启动 VM 可以提高成功分配的机会。
针对较旧 VM 大小(Av1、Dv1、DSv1、D15v2、DS15v2 等)的分配失败
在扩展 Azure 基础结构期间,我们将部署旨在支持最新虚拟机类型的新一代硬件。 某些较旧 VM 系列不在我们最新的基础结构上运行。 因此,客户偶尔可能遇到这些旧版 SKU 的分配失败。 为避免此问题,建议使用旧版虚拟机系列的客户考虑按以下建议迁移至等效的新版 VM。 这些 VM 已针对最新的硬件进行优化,使你能够享受更高的性价比。
| 旧版 VM 系列/大小 | 建议使用新版 VM 系列/大小 | 详细信息 |
|---|---|---|
| Av1 系列 | Av2 系列 | https://azure.microsoft.com/blog/new-av2-series-vm-sizes/ |
| Dv1 或 DSv1 系列(D1 到 D5) | Dv3 或 DSv3 系列 | https://azure.microsoft.com/blog/introducing-the-new-dv3-and-ev3-vm-sizes/ |
| Dv1 或 DSv1 系列(D11 到 D14) | Ev3 或 ESv3 系列 | |
| D15v2 或 DS15v2 | 请考虑迁移到 D16v3/DS16v3 或 D32v3/DS32v3。 这些为在最新硬件上运行而设计。 如果要确保 VM 实例独立于单个客户专用的硬件,请考虑迁移到新的独立 VM 大小(E64i_v3 或 E64is_v3),这些大小旨在在最新一代硬件上运行。 | https://azure.microsoft.com/blog/new-isolated-vm-sizes-now-available/ |
大型部署(超过 500 个内核)的分配失败
减少请求的 VM 大小的实例数,然后重试部署操作。 此外,对于大型部署,建议使用多个放置组评估 Azure 虚拟机规模集。 VM 实例数可自动增加或减少以响应需求或定义的计划,并且分配成功的可能性更大,因为部署在部署为多放置组时可以跨多个群集分布。 详细了解如何使用大型虚拟机规模集,以及如何将现有规模集转换为跨多个放置组。 请注意,你可以将规模集从支持单个放置组更改为支持多个放置组,但无法执行另一个方向的转换。
背景信息
分配的工作原理
Azure 数据中心的服务器分区成群集。 通常会尝试在多个群集中分配请求,但分配请求中的某些约束(例如 VM 大小、超级 SSD 和邻近放置组)可能会强制 Azure 平台仅在一个群集中尝试该请求。 以下示例图 1 演示在多个群集中尝试正常分配的情况。
发生分配失败的原因
如果分配包含大量约束条件,由于可用的资源池较小,很可能找不到闲置资源。 此外,如果分配请求受到限制(例如,使用邻近放置组时,但所请求的资源类型不受群集集和附近群集的支持),则即使群集具有可用资源,请求也会失败。 以下示例图 2 演示分配失败的情况,因为与邻近放置组关联的候选群集没有闲置资源。 图 3 演示了分配失败的情况,因为与邻近放置组关联的候选群集不支持所请求的 VM 大小,即使群集具有可用资源。
联系我们寻求帮助
如果有疑问,可以询问 Azure 社区支持。 你还可以将产品反馈提交到 Azure 反馈社区。