将增量快照复制到新区域
可通过两种方法跨区域复制增量快照。 第一种方法是使用一个托管流程(推荐使用),它将为你执行复制。 该流程由 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 资源管理器模板复制增量快照。 必须使用 2020-12-01 版或更新版本的 Azure 计算 REST API。 以下代码片段是使用资源管理器模板跨区域复制增量快照的示例:
{
"$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 托管磁盘备份复制到另一区域。
如果对快照有其他疑问,请参阅常见问题解答的快照部分。