你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
修改产能预留
适用于:✔️ Linux VM ✔️ Windows VM ✔️ 统一规模集 ✔️ 灵活规模集
创建产能预留组和产能预留后,你可能想要修改预留。 本文介绍如何使用 API、Azure 门户和 PowerShell 执行以下操作。
- 更新容量预留中预留的实例数
- 重设与产能预留组关联的 VM 的大小
- 删除产能预留组和产能预留
更新预留的实例数
更新产能预留中预留的虚拟机实例数。
重要
在 Azure 无法满足增加现有容量预留的预留数量这一请求等极少数情况下,预留状态可能会更改为“失败”且变得不可用,直到数量还原到原始数额。
PATCH https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/CapacityReservationGroups/{CapacityReservationGroupName}/capacityReservations/{capacityReservationName}?api-version=2021-04-01
在请求正文中,将 capacity
属性更新为要保留的新计数:
{
"sku":
{
"capacity": 5
}
}
请注意,在此示例中,capacity
属性现在设置为 5。
重设与产能预留组关联的 VM 的大小
如果要重设大小的 VM 当前已附加到产能预留组,并且该组没有目标大小预留,则必须执行以下选项之一:
- 为该大小创建新预留
- 在重设大小之前,从预留组中删除虚拟机。
检查目标大小是否属于预留组:
获取组内所有容量预留的名称。
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/CapacityReservationGroups/{CapacityReservationGroupName}?api-version=2021-04-01
{ "name": "<CapacityReservationGroupName>", "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/capacityReservationGroups/{CapacityReservationGroupName}", "type": "Microsoft.Compute/capacityReservationGroups", "location": "eastUS", "zones": [ "1" ], "properties": { "capacityReservations": [ { "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/capacityReservationGroups/{CapacityReservationGroupName}/capacityReservations/{capacityReservationName1}" }, { "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/capacityReservationGroups/{CapacityReservationGroupName}/capacityReservations/{capacityReservationName2}" } ] } }
查找每个预留所预留的 VM 大小。 以下示例适用于
capacityReservationName1
,但可以对其他预留重复此步骤。GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/CapacityReservationGroups/{CapacityReservationGroupName}/capacityReservations/{capacityReservationName1}?api-version=2021-04-01
{ "name": "capacityReservationName1", "id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/capacityReservationGroups/{CapacityReservationGroupName}/capacityReservations/{capacityReservationName1}", "type": "Microsoft.Compute/capacityReservationGroups/capacityReservations", "location": "eastUS", "sku": { "name": "Standard_D2s_v3", "capacity": 3 }, "zones": [ "1" ], "properties": { "reservationId": "<reservationId>", "provisioningTime": "<provisioningTime>", "provisioningState": "Succeeded" } }
请考虑下列情形:
删除产能预留组和产能预留
如果某个组的所有成员产能预留均已删除且没有 VM 与该组关联,那么 Azure 允许删除该组。
若要删除产能预留,请先查找与其关联的所有虚拟机。 虚拟机列表位于 virtualMachinesAssociated
属性下。
首先,查找与产能预留组关联的所有虚拟机并将它们解除关联。
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/CapacityReservationGroups/{CapacityReservationGroupName}?$expand=instanceView&api-version=2021-04-01
{
"name": "<capacityReservationGroupName>",
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/capacityReservationGroups/{capacityReservationGroupName}",
"type": "Microsoft.Compute/capacityReservationGroups",
"location": "eastus",
"properties": {
"capacityReservations": [
{
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/capacityReservationGroups/{capacityReservationGroupName}/capacityReservations/{capacityReservationName}"
}
],
"virtualMachinesAssociated": [
{
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{VirtualMachineName1}"
},
{
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{VirtualMachineName2}"
}
],
"instanceView": {
"capacityReservations": [
{
"name": "{capacityReservationName}",
"utilizationInfo": {
"virtualMachinesAllocated": [
{
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{VirtualMachineName1}"
}
]
},
"statuses": [
{
"code": "ProvisioningState/succeeded",
"level": "Info",
"displayStatus": "Provisioning succeeded",
"time": "<time>"
}
]
}
]
}
}
}
从上述响应中,查找 virtualMachinesAssociated
属性下所有虚拟机的名称,并按照删除与产能预留的 VM 关联中的步骤将它们从产能预留组中删除。
从产能预留组中删除所有虚拟机后,删除成员产能预留:
DELETE https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/CapacityReservationGroups/{CapacityReservationGroupName}/capacityReservations/{capacityReservationName}?api-version=2021-04-01
最后,删除父产能预留组。
DELETE https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/CapacityReservationGroups/{CapacityReservationGroupName}?api-version=2021-04-01
还原实例数量
无论与预留关联的 VM 数量如何,格式正确的预留数量减少请求都应始终成功。 但是,要增加预留数量,可能需要更多配额,并且只有 Azure 才能满足额外的容量请求。 在 Azure 无法满足增加现有预留的预留数量这一请求等极少数场景中,预留状态可能会更改为“失败”且变得不可用,直到预留数量还原到原始数额。
注意
如果预留处于“失败”状态,则与预留关联的所有 VM 都将继续正常工作。
例如,假设 myCapacityReservation
的预留数量为 5。 你请求 5 个额外的实例,使预留总数量等于 10。 但是,由于该区域的容量受到限制,Azure 无法满足请求的额外 5 个数量。 在这种情况下,myCapacityReservation
将无法满足其预留数量为 10 的预期状态,并且状态会更改为“失败”。
要解决此失败,请执行以下步骤来查找旧的预留数量值:
- 转到 Azure 门户中的应用程序更改分析
- 在筛选器中选择适用的“订阅”、“资源组”和“时间范围”
- 在“时间范围”筛选器中,最多只能追溯到过去 14 天
- 搜索产能预留的名称
- 查找对该预留的
sku.capacity
属性所做的更改- 旧的预留数量将是“旧值”列下的值
将 myCapacityReservation
更新为旧的预留数量。 更新后,预留可立即供虚拟机使用。