适用于 Azure 虚拟机的选择性磁盘备份和还原

Azure 备份支持使用虚拟机备份解决方案同时备份 VM 中的所有磁盘(操作系统和数据)。 现在,可以使用选择性磁盘备份和还原功能备份 VM 中的一部分数据磁盘。

增强策略以及标准策略都支持此功能。 这样就提供了一个高效且经济的针对备份和还原需求的解决方案。 每个恢复点仅包含备份操作中包含的磁盘。 这进一步允许你在还原操作期间从给定的恢复点还原一部分磁盘。 这适用于从快照和保管库还原。

注意

  • 备份策略(增强策略标准策略)都支持此功能。
  • 增强策略中的选择性磁盘备份和还原可在所有 Azure 区域(包括公共、政府和 Air-Gapped 区域)中使用。
  • 如果在 Linux VM 上使用选择性磁盘备份和 增强策略,请确保 lsblklssci 在分发版中可用,以便 排除 磁盘。

方案

此解决方案特别适用于以下情况:

  1. 如果仅将关键数据备份在一个磁盘或一部分磁盘中,并且不想备份附加到 VM 的其余磁盘,以最大程度地减少备份存储成本。
  2. 如果对部分 VM 或数据使用其他备份解决方案。 例如,如果使用其他工作负荷备份解决方案备份数据库或数据,并且想对其余数据或磁盘使用 Azure VM 级备份,以使用可用的最佳功能来生成高效可靠的系统。
  3. 如果使用增强策略,则可以使用此解决方案排除不受支持的磁盘类型并配置 VM 进行备份。 对于 VM 中的共享磁盘,可以从 VM 备份中排除该磁盘,并使用 Azure 磁盘备份对共享磁盘执行崩溃一致性备份。

借助 PowerShell、Azure CLI 或 Azure 门户,可以配置 Azure VM 的选择性磁盘备份。 借助脚本,可以通过 LUN 编号包含或排除数据磁盘。 通过 Azure 门户配置选择性磁盘备份的功能限制为“仅备份 OS 磁盘”(对于标准策略),但是可以针对所有数据磁盘进行配置(对于增强策略)。

注意

默认情况下,OS 磁盘已添加到 VM 备份中,不能排除。

使用 Azure CLI

确保使用 Az CLI 2.0.80 或更高版本。 可以使用以下命令获取 CLI 版本:

注意

这些 CLI 步骤适用于使用两种策略(增强策略和标准策略)的 VM 的选择性磁盘备份。

az --version

登录到恢复服务保管库和 VM 所在的订阅 ID:

az account set -s {subscriptionID}

注意

在下面的每个命令中,只需提供与保管库对应的 resourcegroup 名称(而不是对象)。

使用 Azure CLI 配置备份

在配置保护操作期间,需要使用 inclusion/exclusion 参数指定磁盘列表设置,以提供要在备份中包含或排除的磁盘的 LUN 编号。

注意

“配置保护”操作将覆盖以前的设置,而不会累积。

az backup protection enable-for-vm --resource-group {resourcegroup} --vault-name {vaultname} --vm {vmname} --policy-name {policyname} --disk-list-setting include --diskslist {LUN number(s) separated by space}
az backup protection enable-for-vm --resource-group {resourcegroup} --vault-name {vaultname} --vm {vmname} --policy-name {policyname} --disk-list-setting exclude --diskslist 0 1

如果 VM 与保管库不在同一个资源组中,则 ResourceGroup 指代创建保管库所在的资源组。 如下所示,请提供 VM ID 而不是 VM 名称。

az backup protection enable-for-vm  --resource-group {ResourceGroup} --vault-name {vaultname} --vm $(az vm show -g VMResourceGroup -n MyVm --query id --output tsv) --policy-name {policyname} --disk-list-setting include --diskslist {LUN number(s) separated by space}

使用 Azure CLI 修改对已备份 VM 的保护

az backup protection update-for-vm --resource-group {resourcegroup} --vault-name {vaultname} -c {vmname} -i {vmname} --disk-list-setting exclude --diskslist {LUN number(s) separated by space}

在配置备份期间使用 Azure CLI 仅备份 OS 磁盘

az backup protection enable-for-vm --resource-group {resourcegroup} --vault-name {vaultname} --vm {vmname} --policy-name {policyname} --exclude-all-data-disks

在修改保护期间使用 Azure CLI 仅备份 OS 磁盘

az backup protection update-for-vm --resource-group {resourcegroup} --vault-name {vaultname} -c {vmname} -i {vmname} --backup-management-type AzureIaasVM --exclude-all-data-disks

使用 Azure CLI 还原磁盘

az backup restore restore-disks --resource-group {resourcegroup} --vault-name {vaultname} -c {vmname} -i {vmname} -r {restorepoint} --target-resource-group {targetresourcegroup} --storage-account {storageaccountname} --diskslist {LUN number of the disk(s) to be restored}

使用 Azure CLI 仅还原 OS 磁盘

az backup restore restore-disks --resource-group {resourcegroup} --vault-name {vaultname} -c {vmname} -i {vmname} -r {restorepoint} } --target-resource-group {targetresourcegroup} --storage-account {storageaccountname} --restore-only-osdisk

使用 Azure CLI 获取受保护的项,以获取磁盘排除详细信息

az backup item show -c {vmname} -n {vmname} --vault-name {vaultname} --resource-group {resourcegroup} --backup-management-type AzureIaasVM

下面显示了添加到受保护项的附加 diskExclusionProperties 参数:

"extendedProperties": {
      "diskExclusionProperties": {
        "diskLunList": [
          0,
          1
        ],
        "isInclusionList": true
      }

使用 Azure CLI 获取备份作业

az backup job show --vault-name {vaultname} --resource-group {resourcegroup} -n {BackupJobID}

此命令有助于获取已备份磁盘和已排除磁盘的详细信息,如下所示:

   "Backed-up disk(s)": "diskextest_OsDisk_1_170808a95d214428bad92efeecae626b; diskextest_DataDisk_0; diskextest_DataDisk_1",  "Backup Size": "0 MB",
   "Excluded disk(s)": "diskextest_DataDisk_2",

BackupJobID 是备份作业名称。 若要提取作业名称,请运行以下命令:

az backup job list --resource-group {resourcegroup} --vault-name {vaultname}

使用 Azure CLI 列出恢复点

az backup recoverypoint list --vault-name {vaultname} --resource-group {resourcegroup} -c {vmname} -i {vmname} --backup-management-type AzureIaasVM

这将提供 VM 中附加和备份的磁盘数的信息。

      "recoveryPointDiskConfiguration": {
        "excludedDiskList": null,
        "includedDiskList": null,
        "numberOfDisksAttachedToVm": 4,
        "numberOfDisksIncludedInBackup": 3
};

使用 Azure CLI 获取恢复点

az backup recoverypoint show --vault-name {vaultname} --resource-group {resourcegroup} -c {vmname} -i {vmname} --backup-management-type AzureIaasVM -n {recoverypointID}

每个恢复点都具有包含和排除的磁盘的信息:

  "recoveryPointDiskConfiguration": {
      "excludedDiskList": [
        {
          "lun": 2,
          "name": "diskextest_DataDisk_2"
        }
      ],
      "includedDiskList": [
        {
          "lun": -1,
          "name": "diskextest_OsDisk_1_170808a95d214428bad92efeecae626b"
        },
        {
          "lun": 0,
          "name": "diskextest_DataDisk_0"
        },
        {
          "lun": 1,
          "name": "diskextest_DataDisk_1"
        }
      ],
      "numberOfDisksAttachedToVm": 4,
      "numberOfDisksIncludedInBackup": 3

使用 Azure CLI 删除磁盘排除设置并获取受保护的项

az backup protection update-for-vm --vault-name {vaultname} --resource-group {resourcegroup} -c {vmname} -i {vmname} --disk-list-setting resetexclusionsettings

az backup item show -c {vmname} -n {vmname} --vault-name {vaultname} --resource-group {resourcegroup}

执行这些命令时将看到 "diskExclusionProperties": null

使用 PowerShell

确保使用 Azure PowerShell 3.7.0 或更高版本。

在配置保护操作期间,需要使用 inclusion/exclusion 参数指定磁盘列表设置,以提供要在备份中包含或排除的磁盘的 LUN 编号。

注意

“配置保护”操作将覆盖以前的设置,而不会累积。

使用 PowerShell 启用备份

例如:

$disks = ("0","1")
$targetVault = Get-AzRecoveryServicesVault -ResourceGroupName "rg-p-recovery_vaults" -Name "rsv-p-servers"
Set-AzRecoveryServicesVaultContext -Vault $targetVault
Get-AzRecoveryServicesBackupProtectionPolicy
$pol = Get-AzRecoveryServicesBackupProtectionPolicy -Name "P-Servers"
Enable-AzRecoveryServicesBackupProtection -Policy $pol -Name "V2VM" -ResourceGroupName "RGName1"  -InclusionDisksList $disks -VaultId $targetVault.ID
Enable-AzRecoveryServicesBackupProtection -Policy $pol -Name "V2VM" -ResourceGroupName "RGName1"  -ExclusionDisksList $disks -VaultId $targetVault.ID

在配置备份期间使用 PowerShell 仅备份 OS 磁盘

Enable-AzRecoveryServicesBackupProtection -Policy $pol -Name "V2VM" -ResourceGroupName "RGName1"  -ExcludeAllDataDisks -VaultId $targetVault.ID

使用 PowerShell 获取要在修改保护操作中传递的备份项对象

$item= Get-AzRecoveryServicesBackupItem -BackupManagementType "AzureVM" -WorkloadType "AzureVM" -VaultId $targetVault.ID -FriendlyName "V2VM"

需要将上面获取的 $item 对象传递给以下 cmdlet 中的 -Item 参数。

使用 PowerShell 修改对已备份 VM 的保护

Enable-AzRecoveryServicesBackupProtection -Item $item -InclusionDisksList[Strings] -VaultId $targetVault.ID  -Policy $pol

在修改保护期间使用 PowerShell 仅备份 OS 磁盘

Enable-AzRecoveryServicesBackupProtection -Item $item  -ExcludeAllDataDisks -VaultId $targetVault.ID -Policy $pol

使用 PowerShell 重置磁盘排除设置

Enable-AzRecoveryServicesBackupProtection -Item $item -ResetExclusionSettings -VaultId $targetVault.ID -Policy $pol

注意

如果命令失败,并出现表明需要策略参数的错误,请检查备份项的保护状态。 很可能是因为保护已停止,因而需要使用策略来恢复保护,还需要重置以前的所有磁盘排除设置。

使用 PowerShell 还原选择性磁盘

$startDate = (Get-Date).AddDays(-7)
$endDate = Get-Date
$rp = Get-AzRecoveryServicesBackupRecoveryPoint -Item $item -StartDate $startdate.ToUniversalTime() -EndDate $enddate.ToUniversalTime() -VaultId $targetVault.ID
Restore-AzRecoveryServicesBackupItem -RecoveryPoint $rp[0] -StorageAccountName "DestAccount" -StorageAccountResourceGroupName "DestRG" -TargetResourceGroupName "DestRGforManagedDisks" -VaultId $targetVault.ID -RestoreDiskList [$disks]

使用 PowerShell 仅还原 OS 磁盘

Restore-AzRecoveryServicesBackupItem -RecoveryPoint $rp[0] -StorageAccountName "DestAccount" -StorageAccountResourceGroupName "DestRG" -TargetResourceGroupName "DestRGforManagedDisks" -VaultId $targetVault.ID -RestoreOnlyOSDisk

使用 Azure 门户

注意

还可以通过备份中心访问以下部分中描述的功能。 备份中心是 Azure 中的一种统一管理体验。 它使企业能够大规模管理、监视、操作和分析备份。 使用此解决方案,你可以执行大多数密钥备份管理操作,而不必局限于单个保管库的范围。

使用 Azure 门户,可以从 VM 备份详细信息窗格和备份作业详细信息窗格中查看包含和排除的磁盘。 在还原过程中选择要从中还原的恢复点时,可以查看该恢复点中的备份磁盘。

在此处,可以从门户的 VM 备份详细信息窗格中查看虚拟机包含和排除的磁盘:

View included and excluded disks from backup details pane

在此处,可以从作业详细信息窗格中查看备份中包含和排除的磁盘:

View included and excluded disks from job details pane

在还原过程中选择要从中还原的恢复点时,可以在此处查看备份的磁盘:

View backed-up disks during restore

  • 如果使用标准策略备份 VM,则通过 Azure 门户为 VM 配置选择性磁盘备份体验仅限于“仅备份 OS 磁盘”选项。 若要在已备份的 VM 上使用选择性磁盘备份,或对 VM 的特定数据磁盘进行高级包含或排除操作,请使用 PowerShell 或 Azure CLI。

  • 如果使用增强策略来备份 VM,则可以选择要备份的数据磁盘,也可以选择包括将来添加到 VM 进行备份的磁盘。

注意

如果数据跨多个磁盘,请确保备份中包含所有从属磁盘。 如果未备份某个卷中的所有从属磁盘,则在还原期间,不会创建包含一些未备份磁盘的卷。

Azure 门户中的“仅备份 OS 磁盘”(标准策略)

使用 Azure 门户启用备份时,可以选择“仅备份 OS 磁盘”选项。 因此,可以使用 OS 磁盘配置 Azure VM 的备份,并排除附加到该 VM 的所有数据磁盘。

Configure backup for the OS disk only

在 Azure 门户中配置选择性磁盘备份(增强策略)

使用 Azure 门户启用备份操作时,可以选择要包含在备份中的数据磁盘(OS 磁盘始终包含在内)。 还可以通过启用“包括将来的磁盘”选项,选择包含将来自动添加用于备份的磁盘。

注意

目前,只能在 VM 首次受到保护时在门户中配置一组磁盘。 需要使用 CLIPowerShell 命令编辑保护后或 恢复保护 操作期间备份的磁盘集。

使用 Azure REST API

此处所述,可以使用几个选定磁盘配置 Azure VM 备份,也可以修改对现有 VM 的保护,以包含/排除几个磁盘。

选择性磁盘还原

选择性磁盘还原是启用选择性磁盘备份功能时获得的附加功能。 借助此功能,可以从恢复点中备份的所有磁盘还原选择性磁盘。 这种方法更高效,并有助于在知道需要还原哪些磁盘的情况下节省时间。

  • 默认情况下,OS 磁盘包含在 VM 备份和还原中,不能排除。
  • 只有在启用磁盘排除功能后创建的恢复点才支持选择性磁盘还原。
  • 磁盘排除设置为“打开”的备份仅支持“磁盘还原”选项。 在这种情况下,不支持“VM 还原”或“替换现有项”还原选项。

The option to restore VM and replace existing aren't available during the restore operation

限制

经典虚拟机和加密虚拟机不支持标准策略的选择性磁盘备份功能。 因此,不支持使用 BitLocker(用于加密 Windows VM)通过 Azure 磁盘加密 (ADE) 来加密 Azure VM,也不支持对 Linux VM 使用 dm-crypt 功能。 但是,已启用 Azure 磁盘加密的 VM 可以使用具有增强策略的选择性磁盘备份。

启用了选择性磁盘备份功能的 VM 不支持用于“新建 VM”和“替换现有项”的还原选项。

目前,Azure VM 备份不支持附加有共享磁盘的 VM。 在这种情况下,不能使用标准策略的选择性磁盘备份,那样会排除磁盘并备份 VM。 可以使用具有增强策略的选择性磁盘备份来排除这些磁盘并配置备份。

如果在备份 Azure VM 时使用磁盘排除设置或选择性磁盘,请停止保护并保留备份数据。 恢复此资源的备份时,需要再次设置磁盘排除设置。

计费

Azure 虚拟机备份遵循现有定价模式,此处详细说明了该模式。

标准版策略

如果使用标准策略,则仅当选择使用“仅 OS 磁盘”选项进行备份时,才为 OS 磁盘计算受保护的实例 (PI) 成本。 如果配置备份并选择至少一个数据磁盘,则将为附加到 VM 的所有磁盘计算 PI 成本。 系统仅基于包含磁盘计算备份存储成本,因此可以节省存储成本。 系统始终为 VM 中的所有磁盘(包含和排除的磁盘)计算快照成本。

如果已选择跨区域还原 (CRR) 功能,则排除磁盘后,CRR 定价适用于备份存储成本。

增强策略

如果使用增强策略,则受保护的实例 (PI) 成本、快照成本和保管库层存储成本都是根据包括在备份中的磁盘计算的。

已知的限制

OS 类型 限制
Windows - 跨区卷:对于跨区卷(分布在多个物理磁盘上的卷),请确保备份中包括所有磁盘。 否则,Azure 备份可能无法可靠地还原数据并将其排除在计费之外。

- 存储池:如果使用从存储池中分离出的磁盘,并且如果备份中包括的 LUN 编号在虚拟磁盘和数据磁盘之间是通用的,则除了数据磁盘外,虚拟磁盘的大小也会包含在备份大小中。
Linux - 逻辑卷:对于分布在多个磁盘上的逻辑卷,请确保备份中包含所有磁盘。 否则,Azure 备份可能无法可靠地还原数据并将其排除在计费之外。

- 发行版支持:Azure 备份使用 lsscsilsblk 来确定要排除的备份磁盘,并估算为受保护实例费用计算备份的数据大小。 如果分发版(Debian 8.11、10.13 等)不支持 lsscsi,请使用 sudo apt install lsscsi 安装它以确保选择性磁盘备份正常工作。 否则,将基于传输的备份数据(而不是使用 lsscsilsblk)计算受保护的实例费用。

如果已选择跨区域还原 (CRR) 功能,则排除磁盘后,CRR 定价适用于备份存储成本。

常见问题

在 Windows 和 Linux 中仅进行 OS 磁盘备份时,如何计算受保护实例 (PI) 的成本?

PI 成本将根据 VM 的实际(已用)大小计算。

  • 对于 Windows:已用空间计算将基于存储操作系统的驱动器(通常为 C:)。
  • 对于 Linux:已用空间计算将基于装载根文件系统 (/) 的设备。

我仅配置了 OS 磁盘备份,为什么会对所有磁盘拍摄快照?

如果使用标准策略,则选择性磁盘备份功能可让你通过强化备份中包含的磁盘来节省备份保管库存储成本。 但是,这样会对附加到 VM 的所有磁盘拍摄快照。 因此,系统始终会针对 VM 中的所有磁盘(包括的磁盘和排除的磁盘)计算快照成本。 有关详细信息,请参阅计费

如果使用增强策略,则仅针对包含的 OS 磁盘和数据磁盘拍摄快照。

我无法通过排除附加到 VM 的共享磁盘来配置 Azure 虚拟机的备份

如果使用标准策略,则 Azure VM 备份不支持附加有共享磁盘的 VM,并且无法通过选择性磁盘备份来排除它们,然后配置备份。

如果使用增强策略,则可以通过选择性磁盘备份(在 Azure 门户、CLI、PowerShell 等中)从备份中排除不受支持的磁盘,并为 VM 配置备份。

后续步骤