使用 Azure PowerShell 还原 Azure 托管磁盘
本文将讲解如何从 Azure 备份创建的还原点还原 Azure 托管磁盘。
目前,不支持通过替换备份所在的现有源磁盘选择 Original-Location Recovery (OLR) 还原选项。 可从恢复点还原,以在备份所在的源磁盘所属资源组或任何其他资源组创建一个新磁盘。 这种方法名为 Alternate-Location Recovery (ALR),有助于保留源磁盘和还原的(新)磁盘。
本文将指导如何进行以下操作:
还原并创建新磁盘
跟踪还原操作状态
示例中,我们将参考资源组“testBkpVaultRG”下的现有备份保管库“TestBkpVault”
$TestBkpVault = Get-AzDataProtectionBackupVault -VaultName TestBkpVault -ResourceGroupName "testBkpVaultRG"
还原并创建新磁盘
设置权限
备份保管库使用托管标识来访问其他 Azure 资源。 若要从备份中还原,备份保管库的托管标识需要对待还原磁盘所在的资源组拥有一组权限。
备份系统管库使用系统分配的托管标识(限制为每个资源一个),并绑定到此资源的生命周期。 可使用 Azure 基于角色的访问控制 (Azure RBAC) 来授予托管标识的访问权限。 托管标识是一种只能用于 Azure 资源的特殊类型的服务主体。 详细了解托管标识。
为保管库系统分配的托管标识分配对磁盘还原/创建所在目标资源组的相关权限,如此处所述。
正在提取相关恢复点
使用 Get-AzDataProtectionBackupInstance 命令获取所有实例并标识相关实例。
$AllInstances = Get-AzDataProtectionBackupInstance -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name
还可使用 Az.Resourcegraph 和 Search-AzDataProtectionBackupInstanceInAzGraph 命令搜索多个保管库和订阅中的实例。
$AllInstances = Search-AzDataProtectionBackupInstanceInAzGraph -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -DatasourceType AzureDisk -ProtectionStatus ProtectionConfigured
标识实例后,提取相关恢复点。
$rp = Get-AzDataProtectionRecoveryPoint -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -BackupInstanceName $AllInstances[2].BackupInstanceName
正在准备还原请求
创建目标资源组中要创建的新磁盘的 ARM ID,已分配对目标资源组的权限(如上详述)以及所需磁盘名称。 例如,在具有不同订阅的资源组 targetrg 下,磁盘可以命名为 PSTestDisk2。
$targetDiskId = /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourceGroups/targetrg/providers/Microsoft.Compute/disks/PSTestDisk2
使用 Initialize-AzDataProtectionRestoreRequest 命令以准备还原请求的所有相关详细信息。
$restorerequest = Initialize-AzDataProtectionRestoreRequest -DatasourceType AzureDisk -SourceDataStore OperationalStore -RestoreLocation $TestBkpVault.Location -RestoreType AlternateLocation -TargetResourceId $targetDiskId -RecoveryPoint $rp[0].Name
触发还原
使用 Start-AzDataProtectionBackupInstanceRestore 命令以通过上述准备的请求来触发还原。
Start-AzDataProtectionBackupInstanceRestore -BackupInstanceName $AllInstances[2].BackupInstanceName -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -Parameter $restorerequest
跟踪作业
使用 Get-AzDataProtectionJob 命令以跟踪所有作业。 你可以列出所有作业并提取特定作业详细信息。
还可使用 Az.ResourceGraph 以跟踪所有备份保管库中的所有作业。 使用 Search-AzDataProtectionJobInAzGraph 命令以获取跨任何备份保管库的相关作业。
$job = Search-AzDataProtectionJobInAzGraph -Subscription $sub -ResourceGroupName "testBkpVaultRG" -Vault $TestBkpVault.Name -DatasourceType AzureDisk -Operation OnDemandBackup