可通过两种方法跨区域复制增量快照。 第一种方法是使用一个托管流程(推荐使用),它将为你执行复制。 此过程由Azure处理,并通过在目标区域中暂存存储帐户来消除管理复制过程的维护开销。 Azure可确保仅将自目标区域中上一个快照以来的更改复制到目标区域,以减少数据占用,从而降低恢复点目标。 你可以检查复制进度,以便了解目标快照何时准备就绪,可用来还原磁盘。 对于此托管流程,你只需为跨区域传输数据的带宽成本和源快照上的读取事务付费。 复制目标快照时,请勿删除源快照。
第二种方法是手动复制,你可获取两个增量快照之间的更改(细化到块级别),并手动将其从一个区域复制到另一个区域。 大多数用户应当使用托管流程,但如果你希望提高复制速度,第二种方法允许你使用计算资源来加快复制速度。
本文介绍如何将增量快照从一个区域复制到另一个区域。 有关增量快照的概念详细信息,请参阅为托管磁盘创建增量快照。
限制
- 你可以在每个区域的每个订阅中同时并行复制 100 个增量快照。
- 如果使用 REST API,则必须使用版本 2020-12-01 或更高版本的 Azure 计算 REST API。
- 一次只能复制特定磁盘的一个增量快照。
- 必须按创建快照的顺序复制快照。
- 只有增量快照才可以跨区域复制。 完整快照无法跨区域复制。
受控复制
可以使用Azure CLI复制增量快照。 需要最新版本的Azure CLI。 请参阅以下文章,了解如何安装或更新Azure CLI。
以下脚本会将增量快照从一个区域复制到另一个区域:
subscriptionId=<yourSubscriptionID>
resourceGroupName=<yourResourceGroupName>
targetSnapshotName=<name>
sourceSnapshotName=<name>
targetRegion=<validRegion>
sourceSnapshotId=$(az snapshot show -n $sourceSnapshotName -g $resourceGroupName --query [id] -o tsv)
az snapshot create -g $resourceGroupName -n $targetSnapshotName -l $targetRegion --source $sourceSnapshotId --incremental --copy-start
检查复制状态
可以通过检查 CompletionPercent 属性来检查单个快照的状态。 将 $sourceSnapshotName 替换为你的快照名称,然后运行以下命令。 属性值必须为 100,才能使用快照还原磁盘或生成 SAS URI 来下载基础数据。
az snapshot show -n $sourceSnapshotName -g $resourceGroupName --query [completionPercent] -o tsv
可以使用Azure PowerShell模块复制增量快照。 需要最新版本的 Azure PowerShell 模块。 以下命令将安装最新版本或将现有安装更新到最新版本:
Install-Module -Name Az -AllowClobber -Scope CurrentUser
安装之后,使用 Connect-AzAccount -Environment AzureChinaCloud 登录到 PowerShell 会话。
以下脚本会将增量快照从一个区域复制到另一个区域。
$subscriptionId="yourSubscriptionIdHere"
$resourceGroupName="yourResourceGroupNameHere"
$sourceSnapshotName="yourSourceSnapshotNameHere"
$targetSnapshotName="yourTargetSnapshotNameHere"
$targetRegion="desiredRegion"
Set-AzContext -Subscription $subscriptionId
$sourceSnapshot=Get-AzSnapshot -ResourceGroupName $resourceGroupName -SnapshotName $sourceSnapshotName
$snapshotconfig = New-AzSnapshotConfig -Location $targetRegion -CreateOption CopyStart -Incremental -SourceResourceId $sourceSnapshot.Id
New-AzSnapshot -ResourceGroupName $resourceGroupName -SnapshotName $targetSnapshotName -Snapshot $snapshotconfig
检查复制状态
可以检查单个快照的 CompletionPercent 属性以获取其状态。 替换 yourResourceGroupNameHere 和 yourSnapshotName,然后运行脚本。 属性值必须为 100,才能使用快照还原磁盘或生成 SAS URI 来下载基础数据。
$resourceGroupName = "yourResourceGroupNameHere"
$snapshotName = "yourSnapshotName"
$targetSnapshot=Get-AzSnapshot -ResourceGroupName $resourceGroupName -SnapshotName $snapshotName
$targetSnapshot.CompletionPercent
还可以在 Azure 门户跨区域复制增量快照。
登录到 Azure 门户,然后导航到要迁移的增量快照。
选择“复制快照”。
对于快照类型在实例详情下,选择增量。
将“区域”更改为要将快照复制到的区域。
选择“审阅 + 创建”,然后选择“创建” 。
还可以使用Azure Resource Manager模板复制增量快照。 必须使用版本 2020-12-01 或更高版本的 Azure 计算 REST API。 以下代码片段演示如何使用 Resource Manager 模板跨区域复制增量快照:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"name": {
"defaultValue": "isnapshot1",
"type": "String"
},
"sourceSnapshotResourceId": {
"defaultValue": "<your_incremental_snapshot_resource_ID>",
"type": "String"
},
"skuName": {
"defaultValue": "Standard_LRS",
"type": "String"
},
"targetRegion": {
"defaultValue": "desired_region",
"type": "String"
}
},
"variables": {},
"resources": [
{
"type": "Microsoft.Compute/snapshots",
"sku": {
"name": "[parameters('skuName')]",
"tier": "Standard"
},
"name": "[parameters('name')]",
"apiVersion": "2020-12-01",
"location": "[parameters('targetRegion')]",
"scale": null,
"properties": {
"creationData": {
"createOption": "CopyStart",
"sourceResourceId": "[parameters('sourceSnapshotResourceId')]"
},
"incremental": true
},
"dependsOn": []
}
]
}
手动复制
增量快照提供差异化功能。 它们可以让你获取同一托管磁盘的两个增量快照之间的差异,直至块级别。 在跨区域复制快照时,可以使用此功能来减少数据占用空间。 例如,可以将第一个增量快照下载到另一个区域作为基础 Blob。 对于后续增量快照,只需要将自上次快照以来的更改复制到基本 Blob 中。 复制更改后,您可以在基础 Blob 上创建快照,该快照代表磁盘在其他区域的时间点备份。 可以从基本 Blob 或从其他区域的基本 Blob 上的快照中还原磁盘。
后续步骤
如果您想查看使用 .NET 演示增量快照差异功能的示例代码,请参阅“将 Azure 托管磁盘备份复制到另一个具有增量快照差异功能的区域”。
如果对快照有其他疑问,请参阅常见问题解答的快照部分。