Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
本文介绍如何使用 Azure CLI 备份 Azure 托管磁盘。 还可以使用 REST API 为 Azure托管磁盘创建备份策略和配置备份。
重要
预览版支持通过 CLI 进行 Azure 托管硬盘备份和还原,并在 Az 2.15.0 及更高版本中作为扩展提供。 运行 az dataprotection 命令时会自动安装该扩展。 了解更多关于扩展程序的信息。
了解 Azure 磁盘备份区域可用性、支持的方案和限制。 有关常见问题,请参阅 常见问题。
注意事项
- 如果目标磁盘作为永久性卷附加到 AKS 群集,请选择 Azure Backup for AKS,而不要选择独立的磁盘备份解决方案。 它支持以 Kubernetes 感知的方式将磁盘作为快照与容器化应用程序作为一个单元一起备份。 此外,还可以使用 AKS 备份获取跨区域还原和勒索软件防护功能。
创建备份保管库
备份保管库是 Azure 中的存储实体,用于储存 Azure Backup 支持的各种较新工作负载的备份数据,例如 Azure Database for PostgreSQL 服务器、Azure 存储帐户中的 blob 和 Azure 磁盘。 备份保管库便于组织备份数据,并最大限度降低管理开销。 备份保管库基于Azure的Azure Resource Manager模型,该模型提供了增强的功能来帮助保护备份数据。
在创建备份保管库之前,请选择保管库中数据的storage冗余。 然后,继续创建具有该存储冗余和位置的备份保管库。 在本文中,我们将在资源组“testBkpVaultRG”下,在区域“chinanorth”中创建一个备份保管库 TestBkpVault。 使用 az dataprotection vault create 命令创建备份保管库。 了解更多创建备份保管库。
az dataprotection backup-vault create -g testBkpVaultRG --vault-name TestBkpVault -l chinanorth --type SystemAssigned --storage-settings datastore-type="VaultStore" type="LocallyRedundant"
{
"eTag": null,
"id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/testBkpVaultRG/providers/Microsoft.DataProtection/BackupVaults/TestBkpVault",
"identity": {
"principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222",
"tenantId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"type": "SystemAssigned"
},
"location": "chinaeast2",
"name": "TestBkpVault",
"properties": {
"provisioningState": "Succeeded",
"storageSettings": [
{
"datastoreType": "VaultStore",
"type": "LocallyRedundant"
}
]
},
"resourceGroup": "testBkpVaultRG",
"systemData": null,
"tags": null,
"type": "Microsoft.DataProtection/backupVaults"
}
创建保管库后,让我们创建一个备份策略来保护Azure磁盘。
创建备份策略
若要了解备份策略Azure磁盘备份的内部组件,请使用 az dataprotection backup-policy get-default-policy-template 命令检索策略模板。 此命令返回给定数据源类型的默认策略模板。 使用此策略模板创建新策略。
az dataprotection backup-policy get-default-policy-template --datasource-type AzureDisk
{
"datasourceTypes": [
"Microsoft.Compute/disks"
],
"name": "DiskPolicy",
"objectType": "BackupPolicy",
"policyRules": [
{
"backupParameters": {
"backupType": "Incremental",
"objectType": "AzureBackupParams"
},
"dataStore": {
"dataStoreType": "OperationalStore",
"objectType": "DataStoreInfoBase"
},
"name": "BackupHourly",
"objectType": "AzureBackupRule",
"trigger": {
"objectType": "ScheduleBasedTriggerContext",
"schedule": {
"repeatingTimeIntervals": [
"R/2020-04-05T13:00:00+00:00/PT4H"
]
},
"taggingCriteria": [
{
"isDefault": true,
"tagInfo": {
"id": "Default_",
"tagName": "Default"
},
"taggingPriority": 99
}
]
}
},
{
"isDefault": true,
"lifecycles": [
{
"deleteAfter": {
"duration": "P7D",
"objectType": "AbsoluteDeleteOption"
},
"sourceDataStore": {
"dataStoreType": "OperationalStore",
"objectType": "DataStoreInfoBase"
}
}
],
"name": "Default",
"objectType": "AzureRetentionRule"
}
]
}
策略模板由触发器(决定备份的触发因素)和生命周期(决定删除/复制/移动备份的时间)。 在 Azure 磁盘备份中,触发条件的默认设置为每 4 小时触发一次(PT4H),并将每个备份保留 7 天。
定时触发:
"trigger": {
"objectType": "ScheduleBasedTriggerContext",
"schedule": {
"repeatingTimeIntervals": [
"R/2020-04-05T13:00:00+00:00/PT4H"
]
}
}
默认保留生命周期:
"lifecycles": [
{
"deleteAfter": {
"duration": "P7D",
"objectType": "AbsoluteDeleteOption"
},
"sourceDataStore": {
"dataStoreType": "OperationalStore",
"objectType": "DataStoreInfoBase"
}
}
]
重要
备份计划遵循 ISO 8601 持续时间格式。 但是,不支持重复间隔前缀 R ,因为备份配置为无限期运行。 使用 R 指定的任何值将被忽略。
Azure磁盘备份每天提供多个备份。 如果需要更频繁地进行备份,请选择“每小时”备份频率,让你能够以每 4、6、8 或 12 小时的间隔进行备份。 根据所选的“时间”间隔安排备份。
例如,如果选择“每 4 小时”备份一次,则会按 4 小时的间隔执行备份,以便备份在一天中均匀分布。 如果每天备份一次即可满足需求,则选择“每日”备份频率。 可在每日备份频率中指定每日备份时间。
重要
每日备份时间表示备份开始时间,而不是备份完成时间。
完成备份操作所需时间取决于多种因素,包括磁盘的大小和连续备份之间的变更率。 但是,Azure磁盘备份是一种无代理备份,它使用创建快照,这不会影响生产应用程序的性能。
注意事项
尽管所选保管库可能具有全局冗余设置,但目前,Azure磁盘备份仅支持快照数据存储。 所有备份都存储在您的订阅中的资源组中,并且不会复制到备份保管库存储中。
若要了解有关策略创建的详细信息,请参阅如何创建Azure磁盘备份策略。
将模板下载为 JSON 文件后,可对其进行编辑,以根据需要进行计划和保留。 然后使用生成的 JSON 创建新策略。 如果要编辑每小时频率或保留期,请使用 az dataprotection 备份策略触发器集和/或 az dataprotection backup-policy retention-rule set 命令。 策略 JSON 具有所有必需的值后,使用 az dataprotection backup-policy create 命令从策略对象创建新策略。
az dataprotection backup-policy get-default-policy-template --datasource-type AzureDisk > policy.json
az dataprotection backup-policy create -g testBkpVaultRG --vault-name TestBkpVault -n mypolicy --policy policy.json
{
"id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/testBkpVaultRG/providers/Microsoft.DataProtection/backupVaults/TestBkpVault/backupPolicies/mypolicy",
"name": "mypolicy",
"properties": {
"datasourceTypes": [
"Microsoft.Compute/disks"
],
"objectType": "BackupPolicy",
"policyRules": [
{
"backupParameters": {
"backupType": "Incremental",
"objectType": "AzureBackupParams"
},
"dataStore": {
"dataStoreType": "OperationalStore",
"objectType": "DataStoreInfoBase"
},
"name": "BackupHourly",
"objectType": "AzureBackupRule",
"trigger": {
"objectType": "ScheduleBasedTriggerContext",
"schedule": {
"repeatingTimeIntervals": [
"R/2020-04-05T13:00:00+00:00/PT4H"
]
},
"taggingCriteria": [
{
"criteria": null,
"isDefault": true,
"tagInfo": {
"eTag": null,
"id": "Default_",
"tagName": "Default"
},
"taggingPriority": 99
}
]
}
},
{
"isDefault": true,
"lifecycles": [
{
"deleteAfter": {
"duration": "P7D",
"objectType": "AbsoluteDeleteOption"
},
"sourceDataStore": {
"dataStoreType": "OperationalStore",
"objectType": "DataStoreInfoBase"
},
"targetDataStoreCopySettings": null
}
],
"name": "Default",
"objectType": "AzureRetentionRule"
}
]
},
"resourceGroup": "testBkpVaultRG",
"systemData": null,
"type": "Microsoft.DataProtection/backupVaults/backupPolicies"
}
配置备份
创建保管库和策略后,需要考虑保护Azure磁盘的三个关键点。
所涉关键实体
要保护的磁盘
提取要保护的磁盘的 ARM ID 和位置。 用作磁盘的标识符。 我们以其他订阅的资源组“diskrg”下名为“CLITestDisk”的磁盘为例。
$DiskId = "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourcegroups/diskrg/providers/Microsoft.Compute/disks/CLITestDisk"
快照资源组
磁盘快照存储在订阅内的资源组中。 作为准则,我们建议创建专用资源组作为快照数据存储,供Azure Backup服务使用。 使用专用资源组可以限制对资源组的access权限,从而提供备份数据的安全和轻松管理。 请记录您希望放置磁盘快照的资源组的 ARM ID。
$snapshotrg = "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourceGroups/snapshotrg"
备份保管库
备份保管库需要磁盘和快照资源组的权限,以便能够触发快照并管理其生命周期。 保管库的系统分配的托管身份用于分配此类权限。 使用 az dataprotection backup-vault update 命令为恢复服务保管库启用系统分配的托管标识。
az dataprotection backup-vault update -g testBkpVaultRG --vault-name TestBkpVault --type SystemAssigned
分配权限
你需要通过 RBAC 向保管库(保管库 MSI 表示)、相关磁盘和/或磁盘 RG 分配少量权限。 可以通过 Azure portal 或 CLI 执行这些作。 若要分配相关权限,请参阅配置托管磁盘备份的必需条件。
准备请求
一旦设置了所有相关的权限,就可以分 2 步执行备份配置。 首先,我们使用 az dataprotection backup-instance initialize 命令使用相关的保管库、策略、磁盘和快照资源组来准备相关请求。 initialize 命令将返回 JSON 文件,然后必须更新快照资源组值。 然后,我们使用 az dataprotection backup-instance create 命令提交保护磁盘的请求。
az dataprotection backup-instance initialize --datasource-type AzureDisk -l chinaeast2 --policy-id "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/testBkpVaultRG/providers/Microsoft.DataProtection/backupVaults/TestBkpVault/backupPolicies/mypolicy" --datasource-id "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourcegroups/diskrg/providers/Microsoft.Compute/disks/CLITestDisk" > backup_instance.json
打开 JSON 文件,并在 部分下的 resource_group_id 中编辑 data_store_parameters_list。
{
"backup_instance_name": "diskrg-CLITestDisk-3df6ac08-9496-4839-8fb5-8b78e594f166",
"properties": {
"data_source_info": {
"datasource_type": "Microsoft.Compute/disks",
"object_type": "Datasource",
"resource_id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourcegroups/diskrg/providers/Microsoft.Compute/disks/CLITestDisk",
"resource_location": "chinaeast2",
"resource_name": "CLITestDisk",
"resource_type": "Microsoft.Compute/disks",
"resource_uri": ""
},
"data_source_set_info": null,
"object_type": "BackupInstance",
"policy_info": {
"policy_id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/testBkpVaultRG/providers/Microsoft.DataProtection/BackupVaults/TestBkpVault/backupPolicies/DiskPolicy",
"policy_parameters": {
"data_store_parameters_list": [
{
"data_store_type": "OperationalStore",
"object_type": "AzureOperationalStoreParameters",
"resource_group_id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/snapshotrg"
}
]
}
}
}
}
注意事项
备份实例名称由客户端生成,因此这将是唯一值。 它基于数据源名称和唯一 GUID。 列出备份实例后,应该可以检查备份实例的名称和相关数据源名称。
使用编辑的 JSON 文件创建Azure托管磁盘的备份实例。
az dataprotection backup-instance create -g testBkpVaultRG --vault-name TestBkpVault --backup-instance backup_instance.json
{
"id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/testBkpVaultRG/providers/Microsoft.DataProtection/BackupVaults/TestBkpVault/backupInstances/diskrg-CLITestDisk-3df6ac08-9496-4839-8fb5-8b78e594f166",
"name": "diskrg-CLITestDisk-3df6ac08-9496-4839-8fb5-8b78e594f166",
"properties": {
"currentProtectionState": "ProtectionConfigured",
"dataSourceInfo": {
"datasourceType": "Microsoft.Compute/disks",
"objectType": "Datasource",
"resourceId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourcegroups/diskrg/providers/Microsoft.Compute/disks/CLITestDisk",
"resourceLocation": "chinaeast2",
"resourceName": "CLITestDisk",
"resourceType": "Microsoft.Compute/disks",
"resourceUri": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourcegroups/diskrg/providers/Microsoft.Compute/disks/CLITestDisk"
},
"dataSourceSetInfo": null,
"friendlyName": "CLITestDisk",
"objectType": "BackupInstance",
"policyInfo": {
"policyId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/testBkpVaultRG/providers/Microsoft.DataProtection/BackupVaults/TestBkpVault/backupPolicies/DiskPolicy",
"policyParameters": {
"dataStoreParametersList": [
{
"dataStoreType": "OperationalStore",
"objectType": "AzureOperationalStoreParameters",
"resourceGroupId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/sarath-rg"
}
]
},
"policyVersion": null
},
"protectionErrorDetails": null,
"protectionStatus": {
"errorDetails": null,
"status": "ProtectionConfigured"
},
"provisioningState": "Succeeded"
},
"resourceGroup": "testBkpVaultRG",
"systemData": null,
"type": "Microsoft.DataProtection/backupVaults/backupInstances"
}
创建备份实例后,如果不想等待策略计划,可以继续触发按需备份。
运行按需备份
使用 az dataprotection backup-instance list 命令列出保管库中的所有备份实例,然后使用 az dataprotection backup-instance show 命令提取相关实例。 或者,对于大规模使用场景,可以使用 az dataprotection backup-instance list-from-resourcegraph 命令,在不同的保管库和订阅中列出备份实例。
az dataprotection backup-instance list-from-resourcegraph --datasource-type AzureDisk --datasource-id /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourcegroups/diskrg/providers/Microsoft.Compute/disks/CLITestDisk
[
{
"datasourceId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourcegroups/diskrg/providers/Microsoft.Compute/disks/CLITestDisk",
"extendedLocation": null,
"id": "//subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/testBkpVaultRG/providers/Microsoft.DataProtection/BackupVaults/TestBkpVault/backupInstances/diskrg-CLITestDisk-3df6ac08-9496-4839-8fb5-8b78e594f166",
"identity": null,
"kind": "",
"location": "",
"managedBy": "",
"name": "diskrg-CLITestDisk-3df6ac08-9496-4839-8fb5-8b78e594f166",
"plan": null,
"properties": {
"currentProtectionState": "ProtectionConfigured",
"dataSourceInfo": {
"baseUri": null,
"datasourceType": "Microsoft.Compute/disks",
"objectType": "Datasource",
"resourceID": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourcegroups/diskrg/providers/Microsoft.Compute/disks/CLITestDisk",
"resourceLocation": "chinaeast2",
"resourceName": "CLITestDisk",
"resourceType": "Microsoft.Compute/disks",
"resourceUri": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourcegroups/diskrg/providers/Microsoft.Compute/disks/CLITestDisk"
},
"dataSourceProperties": null,
"dataSourceSetInfo": null,
"datasourceAuthCredentials": null,
"friendlyName": "CLITestDisk",
"objectType": "BackupInstance",
"policyInfo": {
"policyId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/testBkpVaultRG/providers/Microsoft.DataProtection/BackupVaults/TestBkpVault/backupPolicies/DiskPolicy",
"policyParameters": {
"dataStoreParametersList": [
{
"dataStoreType": "OperationalStore",
"objectType": "AzureOperationalStoreParameters",
"resourceGroupId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/snapshotrg"
}
]
},
"policyVersion": null
},
"protectionErrorDetails": null,
"protectionStatus": {
"errorDetails": null,
"status": "ProtectionConfigured"
},
"provisioningState": "Succeeded"
},
"protectionState": "ProtectionConfigured",
"resourceGroup": "testBkpVaultRG",
"sku": null,
"subscriptionId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"tags": null,
"tenantId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"type": "microsoft.dataprotection/backupvaults/backupinstances",
"vaultName": "TestBkpVault",
"zones": null
}
]
可在触发备份时指定规则和标记名。 若要查看策略中的规则,请浏览策略 JSON。 以下示例显示了名为 "BackupDaily" 的规则和标记名 "default",我们将使用该规则进行按需备份。
"name": "BackupDaily",
"objectType": "AzureBackupRule",
"trigger": {
"objectType": "ScheduleBasedTriggerContext",
"schedule": {
"repeatingTimeIntervals": [
"R/2022-09-27T23:30:00+00:00/P1D"
],
"timeZone": "UTC"
},
"taggingCriteria": [
{
"criteria": null,
"isDefault": true,
"tagInfo": {
"eTag": null,
"id": "Default_",
"tagName": "Default"
},
"taggingPriority": 99
}
使用 az dataprotection backup-instance adhoc-backup 命令触发按需备份。
az dataprotection backup-instance adhoc-backup --name "diskrg-CLITestDisk-3df6ac08-9496-4839-8fb5-8b78e594f166" --rule-name "BackupDaily" --resource-group "000pikumar" --vault-name "PratikPrivatePreviewVault1" --retention-tag-override "default"
跟踪任务
使用 az dataprotection job list 命令监控所有作业。 你可以列出所有作业并提取特定作业详细信息。
还可以使用 Az.ResourceGraph 跟踪所有备份保管库中的所有作业。 使用 az dataprotection job list-from-resourcegraph 命令获取可以跨任何备份保管库的相关作业。
az dataprotection job list-from-resourcegraph --datasource-type AzureDisk --status Completed
后续步骤
- 使用 Azure portal、Azure PowerShell、Azure CLI 还原托管磁盘。
- 排查 Azure 磁盘备份问题。