我在将第 1 代 Azure VM 恢复到新的(第 1 代)VM 时遇到问题。此新 VM 将存在于不同的资源组中(位于不同的 Azure 位置),并且该资源组包含新 VM 的虚拟网络。正如您在下面的代码(用 PowerShell 编写)中看到的,我从相关恢复服务保管库中获取最新的恢复点,然后将其用于恢复操作。
# Get the most recent recovery point name
[string]$rpName = az backup recoverypoint list --resource-group $vm.resourceGroup `
--vault-name $vm.vaultName `
--backup-management-type 'AzureIaasVM' `
--container-name $vm.vmName `
--item-name $vm.vmName `
--query '[0].name' `
--output 'tsv'
Write-Output "Restoring $($vm.vmName) to $($vm.targetVmName)"
az backup restore restore-disks --resource-group $vm.resourceGroup `
--vault-name $vm.vaultName `
--container-name $vm.vmName `
--item-name $vm.vmName `
--restore-mode 'AlternateLocation' `
--storage-account $storageAccountName `
--storage-account-resource-group $storageAccountRg `
--target-resource-group $vm.targetVnetResourceGroup `
--rp-name $rpName `
--target-vm-name $vm.targetVmName `
--target-vnet-name $vm.targetVnetName `
--target-vnet-resource-group $vm.targetVnetResourceGroup `
--target-subnet-name $vm.targetSubnetName
这将启动我可以在备份中心监控的恢复。大约20分钟后,恢复状态将变为
Completed with warnings
。如果我深入研究备份作业,我看到的错误代码是 CloudInternalError
,并带有以下警告消息:Microsoft Azure Backup encountered an internal error.
该工作本身包含 2 个子任务:
第一步完成,但第二步就出现错误了。用于还原的存储帐户是 Standard_LRS、StorageV2 帐户。
我哪里出错了?
我设法解决了恢复的问题。因此,这里的问题是,存储帐户和虚拟网络都位于一个区域,该区域不是原始虚拟机所在区域的故障转移/辅助区域。因此,在本例中,由于虚拟机和恢复服务保管库位于
East US 2
,新虚拟机的基础设施也位于 East US 2
或配对区域,即 Central US
。
因此,如果我在
Central US
区域中重新创建基础设施,并将 --use-secondary-region
标志添加到 az backup restore restore-disks
调用中,则两个恢复都会在备份中心中正确注册为跨区域恢复,并且成功完成。请注意,必须在恢复服务保管库中启用跨区域恢复才能正常工作。