Compartilhar via

使用 Azure PowerShell 备份Azure Managed Disks

本文介绍如何使用 Azure PowerShell 备份 Azure 托管磁盘。 还可以使用 REST API 为 Azure托管磁盘创建备份策略配置备份

了解 Azure 磁盘备份区域可用性、支持的方案和限制。 有关常见问题,请参阅 常见问题

注意事项

  • 如果目标磁盘作为永久性卷附加到 AKS 群集,请选择 用于 AKS 的 Azure 备份,而不是独立磁盘备份解决方案。 它支持以 Kubernetes 感知的方式将磁盘作为快照与容器化应用程序作为一个单元一起备份。 此外,还可以使用 AKS 备份获取跨区域还原和勒索软件防护功能。

创建备份保管库

备份保管库是Azure中的存储实体,用于保存Azure Backup支持的各种较新的工作负荷的备份数据,例如Azure Database for PostgreSQL服务器和Azure Disks。 备份保管库便于组织备份数据,并最大限度降低管理开销。 备份保管库基于Azure的Azure Resource Manager模型,该模型提供了增强的功能来帮助保护备份数据。

在创建备份保管库之前,请选择在保管库中数据的存储冗余。 然后,继续创建具有该存储冗余和位置指定的备份保管库。 在本文中,我们将在资源组“testBkpVaultRG”下的“chinanorth”区域中创建备份保管库“TestBkpVault”。 使用 New-AzDataProtectionBackupVault 命令创建备份保管库。 了解更多创建备份保管库

$storageSetting = New-AzDataProtectionBackupVaultStorageSettingObject -Type LocallyRedundant/GeoRedundant -DataStoreType VaultStore
New-AzDataProtectionBackupVault -ResourceGroupName testBkpVaultRG -VaultName TestBkpVault -Location chinanorth -StorageSetting $storageSetting
$TestBkpVault = Get-AzDataProtectionBackupVault -VaultName TestBkpVault
$TestBKPVault | fl
ETag                :
Id                  : /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourceGroups/testBkpVaultRG/providers/Microsoft.DataProtection/backupVaults/TestBkpVault
Identity            : Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210201Preview.DppIdentityDetails
IdentityPrincipalId :
IdentityTenantId    :
IdentityType        :
Location            : chinanorth
Name                : TestBkpVault
ProvisioningState   : Succeeded
StorageSetting      : {Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210201Preview.StorageSetting}
SystemData          : Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210201Preview.SystemData
Tag                 : Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210201Preview.DppTrackedResourceTags
Type                : Microsoft.DataProtection/backupVaults

创建保管库后,让我们创建一个备份策略来保护Azure磁盘。

创建备份策略

若要了解用于Azure磁盘备份的备份策略的内部组件,请使用命令 Get-AzDataProtectionPolicyTemplate 检索策略模板。 此命令返回给定数据源类型的默认策略模板。 使用此策略模板创建新策略。

$policyDefn = Get-AzDataProtectionPolicyTemplate -DatasourceType AzureDisk
$policyDefn | fl


DatasourceType : {Microsoft.Compute/disks}
ObjectType     : BackupPolicy
PolicyRule     : {BackupHourly, Default}

$policyDefn.PolicyRule | fl


BackupParameter           : Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210201Preview.AzureBackupParams
BackupParameterObjectType : AzureBackupParams
DataStoreObjectType       : DataStoreInfoBase
DataStoreType             : OperationalStore
Name                      : BackupHourly
ObjectType                : AzureBackupRule
Trigger                   : Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210201Preview.ScheduleBasedTriggerContext
TriggerObjectType         : ScheduleBasedTriggerContext

IsDefault  : True
Lifecycle  : {Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210201Preview.SourceLifeCycle}
Name       : Default
ObjectType : AzureRetentionRule

策略模板由触发器(决定备份的触发因素)和生命周期(决定删除/复制/移动备份的时间)。 在 Azure 磁盘备份中,触发器的默认值是每 4 小时计划一次的触发器(PT4H),每次备份会保留 7 天。

 $policyDefn.PolicyRule[0].Trigger | fl


ObjectType                    : ScheduleBasedTriggerContext
ScheduleRepeatingTimeInterval : {R/2020-04-05T13:00:00+00:00/PT4H}
TaggingCriterion              : {Default}
$policyDefn.PolicyRule[1].Lifecycle | fl


DeleteAfterDuration        : P7D
DeleteAfterObjectType      : AbsoluteDeleteOption
SourceDataStoreObjectType  : DataStoreInfoBase
SourceDataStoreType        : OperationalStore
TargetDataStoreCopySetting :

Azure磁盘备份每天提供多个备份。 如果需要更频繁地进行备份,请选择“每小时”备份频率,让你能够以每 4、6、8 或 12 小时的间隔进行备份。 根据所选的“时间”间隔安排备份。 例如,如果选择“每 4 小时”备份一次,则会按 4 小时的间隔执行备份,以便备份在一天中均匀分布。 如果每天备份一次即可满足需求,则选择“每日”备份频率。 可在每日备份频率中指定每日备份时间。 请注意,每日备份时间表示备份开始时间,而不是备份完成时间。 完成备份操作所需时间取决于各种因素,包括磁盘大小和连续备份之间的变动率。 但是,Azure磁盘备份是一种无代理程序备份,它使用增量快照,这不会影响生产应用程序的性能。

注意事项

  • 尽管所选保管库可能具有全局冗余设置,但当前Azure磁盘备份仅支持快照数据存储。 所有备份都存储在订阅中的资源组中,并且不会复制到备份库存储。
  • 对于属于标准 HDD、标准 SSD 和高级 SSD SKU 的Azure磁盘,可以使用 Hourly 频率(1、2、4、6、8 或 12 小时)和 Daily 频率定义备份计划。
  • 对于属于高级 V2 和超级磁盘 SKU 的Azure磁盘,可以使用 Hourly 频率定义备份计划,频率仅为 12 小时,Daily 频率。

若要了解有关策略创建的详细信息,请参阅如何创建Azure磁盘备份策略

如果要编辑每小时频率或保持期,请使用Edit-AzDataProtectionPolicyTriggerClientObject 和/或 Edit-AzDataProtectionPolicyRetentionRuleClientObject 命令。 一旦策略对象具有所有所需值,请使用 New-AzDataProtectionBackupPolicy从策略对象创建新策略。

New-AzDataProtectionBackupPolicy -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -Name diskBkpPolicy -Policy $policyDefn

Name                   Type
----                   ----
diskBkpPolicy       Microsoft.DataProtection/backupVaults/backupPolicies

$diskBkpPol = Get-AzDataProtectionBackupPolicy -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -Name "diskBkpPolicy"

配置备份

创建保管库和策略后,用户需要考虑保护Azure磁盘的 3 个关键点。

所涉关键实体

要保护的磁盘

提取要保护的磁盘 ARM ID。 用作磁盘的标识符。 我们以其他订阅的资源组“diskrg”下名为“PSTestDisk”的磁盘为例。

$DiskId = "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourcegroups/diskrg/providers/Microsoft.Compute/disks/PSTestDisk"

快照资源组

磁盘快照存储在订阅内的资源组中。 作为准则,建议创建专用资源组作为快照数据存储,供Azure Backup服务使用。 使用专用资源组可以限制对资源组的access权限,从而提供备份数据的安全和轻松管理。 请记录您希望放置磁盘快照的资源组的 ARM ID。

$snapshotrg = "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourceGroups/snapshotrg"

备份保管库

备份保管库需要磁盘和快照资源组的权限,以便能够触发快照并管理其生命周期。 保管库的系统分配的托管身份用于分配此类权限。 使用Update-AzRecoveryServicesVault命令启用恢复服务保管库的系统分配托管标识。

分配权限

用户需要通过 RBAC 向保管库(保管库 MSI 表示)、相关磁盘和/或磁盘 RG 分配少量权限。 可以通过门户或 PowerShell 执行上述操作。

备份保管库使用托管标识来访问其他 Azure 资源。 若要配置托管磁盘的备份,备份保管库的托管标识需要在创建和管理快照的源磁盘和资源组上拥有一组权限。

系统分配的托管标识仅限于每个资源一个,并与该资源的生命周期相关联。 可以使用 Azure 角色基于的访问控制(Azure RBAC)授予托管标识权限。 托管标识是一种特殊类型的服务主体,只能与Azure资源一起使用。 详细了解 托管身份

要配置托管磁盘的备份,请确保满足以下先决条件:

  • 请将磁盘备份读取者角色分配给需要备份的源磁盘上的备份保管库托管标识。

    1. 转到需要备份的磁盘。

    2. 转到 Access control (IAM)并选择添加角色分配

    3. 在右侧的上下文窗格中,在“角色”下拉列表中选择“磁盘备份读取者”。

    4. 选择备份保管库的托管标识,然后单击“保存”。

      提示

      键入备份保管库名称以选择保管库的托管标识。

    显示在需要备份的源磁盘上,将“磁盘备份读取者”角色分配到备份保管库的托管标识的过程的屏幕截图。

  • Disk Snapshot Contributor 角色分配给资源组中备份保管库的托管标识,在该资源组中,备份由 Azure Backup 服务创建和管理。 磁盘快照存储在订阅内的资源组中。 若要允许Azure Backup服务创建、存储和管理快照,需要向备份保管库提供权限。

    1. 转到资源组。 例如,资源组是 SnapshotRG,它与要备份的磁盘位于同一订阅中。

    2. 转到 Access control (IAM)并选择添加角色分配

    3. 在右侧的上下文窗格中,在“角色”下拉列表中选择“磁盘快照贡献者”。

    4. 选择备份保管库的托管标识,然后单击“保存”。

      提示

      键入备份保管库名称以选择保管库的托管标识。

    屏幕截图显示了在资源组上将“磁盘快照参与者”角色分配给备份库托管标识的过程。

  • 验证备份保管库的托管标识在作为快照数据存储区的源磁盘和资源组上是否具有正确的角色分配。

    1. 转到 Backup vault ->Identity 并选择 Azure 角色分配

      屏幕截图显示选择 Azure 角色分配。

    2. 验证角色、资源名称和资源类型是否正确。

      显示角色、资源名称和资源类型的验证的屏幕截图。

注意事项

虽然在门户中正确地反映了角色分配,但可能需要大约 15 - 30 分钟才能将权限应用到备份管理库的托管标识上。

准备请求

一旦设置了所有相关的权限,就可以分 2 步执行备份配置。 首先,使用 Initialize-AzDataProtectionBackupInstance 命令通过使用相关保管库、策略、磁盘和快照资源组准备相关请求。 然后,使用New-AzDataProtectionBackupInstance命令提交磁盘保护请求。

$instance = Initialize-AzDataProtectionBackupInstance -DatasourceType AzureDisk -DatasourceLocation $TestBkpvault.Location -PolicyId $diskBkpPol[0].Id -DatasourceId $DiskId 
$instance.Property.PolicyInfo.PolicyParameter.DataStoreParametersList[0].ResourceGroupId = $snapshotrg
New-AzDataProtectionBackupInstance -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -BackupInstance $instance

Name                                                       Type                                                  BackupInstanceName
----                                                       ----                                                  ------------------
diskrg-PSTestDisk-3df6ac08-9496-4839-8fb5-8b78e594f166 Microsoft.DataProtection/backupVaults/backupInstances diskrg-PSTestDisk-3df6ac08-9496-4839-8fb5-8b78e594f166

运行按需备份

使用Get-AzDataProtectionBackupInstance提取用户需要触发备份的相关备份实例

$instance = Get-AzDataProtectionBackupInstance -SubscriptionId "xxxx-xxx-xxx" -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -Name "BackupInstanceName"

可在触发备份时指定保留规则。 若要查看保留规则,请导航至策略对象来查看。 以下示例显示名为 'default' 的规则,我们将使用该规则进行按需备份

$policyDefn.PolicyRule | fl


BackupParameter           : Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210201Preview.AzureBackupParams
BackupParameterObjectType : AzureBackupParams
DataStoreObjectType       : DataStoreInfoBase
DataStoreType             : OperationalStore
Name                      : BackupHourly
ObjectType                : AzureBackupRule
Trigger                   : Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210201Preview.ScheduleBasedTriggerContext
TriggerObjectType         : ScheduleBasedTriggerContext

IsDefault  : True
Lifecycle  : {Microsoft.Azure.PowerShell.Cmdlets.DataProtection.Models.Api20210201Preview.SourceLifeCycle}
Name       : Default
ObjectType : AzureRetentionRule

使用Backup-AzDataProtectionBackupInstanceAdhoc命令触发按需备份。

$AllInstances = Get-AzDataProtectionBackupInstance -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name
Backup-AzDataProtectionBackupInstanceAdhoc -BackupInstanceName $AllInstances[0].Name -ResourceGroupName "testBkpVaultRG" -VaultName $TestBkpVault.Name -BackupRuleOptionRuleName "Default"

跟踪任务

使用Get-AzDataProtectionJob命令跟踪所有作业。 你可以列出所有作业并提取特定作业详细信息。

你还可以使用 Az ResourceGraph 跟踪所有备份保管库中的所有作业。 使用Search-AzDataProtectionJobInAzGraph命令获取可跨任何备份保管库的相关作业。

  $job = Search-AzDataProtectionJobInAzGraph -Subscription $sub -ResourceGroupName "testBkpVaultRG" -Vault $TestBkpVault.Name -DatasourceType AzureDisk -Operation OnDemandBackup

后续步骤