你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

处理将虚拟机移动到资源组或订阅时的特殊情况

本文介绍将虚拟机移动到新资源组或 Azure 订阅时需要额外步骤的特殊情况。 如果虚拟机使用磁盘加密、市场计划或 Azure 备份,则必须使用本文中描述的解决方法之一。 对于所有其他方案,请使用 Azure 门户Azure CLIAzure PowerShell 的标准操作移动虚拟机。 对于 Azure CLI,请使用 az resources move 命令。 对于 Azure PowerShell,请使用 Move-AzResource 命令。

若要将虚拟机移到新区域,请参阅教程:跨区域移动 Azure VM

不支持的方案

以下方案尚不受支持:

  • 无法移动具有标准 SKU 负载均衡器或标准 SKU 公共 IP 的虚拟机规模集。
  • 仅当现有虚拟网络及其所有相关资源也被移动时,才能将该虚拟网络中的虚拟机移到新订阅。
  • 无法跨订阅移动基于附加了计划的市场资源创建的虚拟机。 有关可能的解决方法,请参阅具有 Azure 市场计划的虚拟机
  • 低优先级虚拟机与低优先级虚拟机规模集不能在资源组或订阅之间移动。
  • 可用性集中的虚拟机不能单独移动。
  • 不能跨资源组或订阅移动使用计划的修补的虚拟机。 有关可能的解决方法,请参阅《使用维护配置管理 VM 更新

Azure 磁盘加密

与 Key Vault 集成以实现适用于 Linux VM 的 Azure 磁盘加密适用于 Windows VM 的 Azure 磁盘加密的虚拟机处于解除分配状态时,可移动到其他资源组。

但是,若要将此类虚拟机移到其他订阅,必须禁用加密。

az vm encryption disable --resource-group demoRG --name myVm1 --volume-type all

具有 Azure 市场计划的虚拟机

无法跨订阅移动基于附加了计划的市场资源创建的虚拟机。 若要解决此限制问题,可以取消预配当前订阅中的虚拟机,并在新订阅中再次部署该虚拟机。 通过以下步骤可在新订阅中重新创建虚拟机。 但不一定适用于所有方案。 如果该计划在 Azure 市场中不再可用,这些步骤将不起作用。

  1. 获取有关计划的信息。

    az vm show --resource-group demoRG --name myVm1 --query plan
    
  2. 请检查该产品/服务是否仍然在市场中。

    az vm image list-skus --publisher Fabrikam --offer LinuxServer --location centralus
    
  3. 将 OS 磁盘克隆到目标订阅,或在源订阅中删除虚拟机后移动原始磁盘。

  4. 在目标订阅中,接受相关计划的 Azure 市场条款。 可以通过运行以下 PowerShell 命令来接受这些条款:

    az vm image terms accept --publisher {publisher} --offer {product/offer} --plan {name/SKU}
    

    或可以通过门户使用相关计划创建虚拟机的新实例。 在接受新订阅中的条款后可以删除虚拟机。

  5. 在目标订阅中,使用 PowerShell、CLI 或 Azure 资源管理器模板从克隆的 OS 磁盘中重新创建该虚拟机。 包含附加到磁盘的市场计划。 有关计划的信息应与在新订阅中购买的计划匹配。 有关详细信息,请参阅创建 VM

有关详细信息,请参阅将 Azure 市场虚拟机迁移到其他订阅

使用 Azure 备份的虚拟机

若要移动使用 Azure 备份配制的虚拟机,必须从保管库中删除还原点集合(快照)。 可以保留和移动已复制到保管库的还原点。

如果为虚拟机启用了软删除,则在保留这些还原点的情况下,你将无法移动虚拟机。 请禁用软删除,或在删除还原点后等待 14 天。

门户

  1. 暂时停止备份并保留备份数据。

  2. 若要移动配置了 Azure 备份的虚拟机,请执行以下步骤:

    1. 查找包含备份的资源组。 如果使用了默认资源组,它会具有以下命名模式:AzureBackupRG_<VM location>_1。 例如,名称的格式为 AzureBackupRG_westus2_1

      如果创建了自定义资源组,请选择该资源组。 如果找不到资源组,请在门户中搜索“还原点集合”。 查找具有命名模式 AzureBackup_<VM name>_########### 的集合。

    2. 选择具有命名模式 AzureBackup_<VM name>_########### 的还原点集合类型的资源。

    3. 删除此资源。 此操作仅删除即时恢复点,不删除保管库中的备份数据。

    4. 删除操作完成后,可以移动虚拟机。

  3. 将 VM 移到目标资源组。

  4. 重新配置备份。

Script

  1. 查找包含备份的资源组。 如果使用了默认资源组,它会具有以下命名模式:AzureBackupRG_<VM location>_1。 例如,名称的格式为 AzureBackupRG_westus2_1

    如果创建了自定义资源组,请查找该资源组。 如果找不到资源组,请使用以下命令,并提供虚拟机的名称。

    az resource list --resource-type Microsoft.Compute/restorePointCollections --query "[?starts_with(name, 'AzureBackup_<vm-name>')].resourceGroup"
    
  2. 如果只移动一个虚拟机,请获取该虚拟机的还原点集合。

    RESTOREPOINTCOL=$(az resource list -g AzureBackupRG_<VM location>_1 --resource-type Microsoft.Compute/restorePointCollections --query "[?starts_with(name, 'AzureBackup_<VM name>')].id" --output tsv)
    

    删除此资源。 此操作仅删除即时恢复点,不删除保管库中的备份数据。

    az resource delete --ids $RESTOREPOINTCOL
    
  3. 如果要在此位置将所有虚拟机与备份一起移动,请获取这些虚拟机的还原点集合。

    RESTOREPOINTCOL=$(az resource list -g AzureBackupRG_<VM location>_1 --resource-type Microsoft.Compute/restorePointCollections)
    

    删除每个资源。 此操作仅删除即时恢复点,不删除保管库中的备份数据。

    az resource delete --ids $RESTOREPOINTCOL
    

后续步骤