使用 Azure CLI 在 Azure 中备份虚拟机

Azure CLI 用于从命令行或脚本创建和管理 Azure 资源。 可以通过定期创建备份来保护数据。 Azure 备份可创建恢复点,这些恢复点可存储在异地冗余的恢复保管库中。 本文详细介绍如何使用 Azure CLI 在 Azure 中备份虚拟机 (VM)。 也可以使用 Azure PowerShellAzure 门户执行这些步骤。

参考本快速入门可在现有的 Azure VM 上备份。 如果需要创建 VM,可以使用 Azure CLI 创建 VM

先决条件

  • 如需在本地运行 CLI 参考命令,请安装 Azure CLI。 如果在 Windows 或 macOS 上运行,请考虑在 Docker 容器中运行 Azure CLI。 有关详细信息,请参阅如何在 Docker 容器中运行 Azure CLI

    • 如果使用的是本地安装,请使用 az login 命令登录到 Azure CLI。 若要完成身份验证过程,请遵循终端中显示的步骤。 有关其他登录选项,请参阅使用 Azure CLI 登录

    • 出现提示时,请在首次使用时安装 Azure CLI 扩展。 有关扩展详细信息,请参阅使用 Azure CLI 的扩展

    • 运行 az version 以查找安装的版本和依赖库。 若要升级到最新版本,请运行 az upgrade

  • 本快速入门需要 Azure CLI 版本 2.0.18 或更高版本。

创建恢复服务保管库

恢复服务保管库是一个逻辑容器,用于存储每个受保护资源(例如 Azure VM)的备份数据。 运行受保护资源的备份作业时,该作业会在恢复服务保管库中创建一个恢复点。 然后,可以使用其中一个恢复点将数据还原到给定的时间点。

使用 az backup vault create 创建恢复服务保管库。 指定与想要保护的 VM 相同的资源组和位置。 如果使用过 VM 快速入门,则已创建:

  • 名为 myResourceGroup 的资源组;
  • 名为 myVM 的 VM ;
  • chinanorth 位置的资源。
az backup vault create --resource-group myResourceGroup \
    --name myRecoveryServicesVault \
    --location chinanorth

默认情况下,恢复服务保管库是针对异地冗余存储设置的。 异地冗余存储可确保将备份数据复制到距主要区域数百英里以外的 Azure 次要区域。 如果存储冗余设置需要修改,请使用 az backup vault backup-properties set cmdlet。

az backup vault backup-properties set \
    --name myRecoveryServicesVault  \
    --resource-group myResourceGroup \
    --backup-storage-redundancy "LocallyRedundant/GeoRedundant"

为 Azure VM 启用备份

创建一个保护策略,用于定义:备份作业的运行时间以及恢复点的存储期限。 默认保护策略每天运行一个备份作业,并将恢复点保留 30 天。 可以使用这些默认策略值来快速保护 VM。 若要为 VM 启用备份保护,请使用 az backup protection enable-for-vm。 指定要保护的资源组和 VM,再指定要使用的策略:

az backup protection enable-for-vm \
    --resource-group myResourceGroup \
    --vault-name myRecoveryServicesVault \
    --vm myVM \
    --policy-name DefaultPolicy

注意

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

az backup protection enable-for-vm \
    --resource-group myResourceGroup \
    --vault-name myRecoveryServicesVault \
    --vm $(az vm show -g VMResourceGroup -n MyVm --query id | tr -d '"') \
    --policy-name DefaultPolicy

重要

使用 CLI 一次为多个 VM 启用备份时,请确保单个策略关联的 VM 不超过 100 个。 这是建议的最佳做法。 目前,如果 VM 超过 100 个,PowerShell 客户端不会显式阻止,但计划在将来添加检查。

备份加密 VM 的先决条件

要在加密的 VM(使用 BEK 和 KEK 加密)上启用保护,必须为 Azure 备份服务授予从密钥保管库读取密钥和密码的权限。 为此,请设置具有所需权限的 keyvault 访问策略,如下所示:

# Enter the name of the resource group where the key vault is located on this variable
AZ_KEYVAULT_RGROUP=TestKeyVaultRG

# Enter the name of the key vault on this variable
AZ_KEYVAULT_NAME=TestKeyVault

# Get the object id for the Backup Management Service on your subscription
AZ_ABM_OBJECT_ID=$( az ad sp list --display-name "Backup Management Service" --query '[].objectId' -o tsv --only-show-errors )

# This command will grant the permissions required by the Backup Management Service to access the key vault
az keyvault set-policy --key-permissions get list backup --secret-permissions get list backup \
  --resource-group $AZ_KEYVAULT_RGROUP --name $AZ_KEYVAULT_NAME --object-id $AZ_ABM_OBJECT_ID

启动备份作业

若要立即开始备份而不是等待默认策略根据计划的时间运行作业,请使用 az backup protection backup-now。 第一个备份作业会创建一个完整恢复点。 初始备份后的每个备份作业都会创建增量恢复点。 增量恢复点有利于存储并具有时效性,因为它们仅传输自上次备份以来所做的更改。

以下参数用于备份 VM:

  • --container-name 是 VM 的名称
  • --item-name 是 VM 的名称
  • 应以 UTC 时间格式 (dd-mm-yyyy) 将 --retain-until 值设置为希望恢复点可用的最后一个日期

以下示例备份名为 myVM 的 VM,并将恢复点的过期时间设置为 2017 年 10 月 18 日:

az backup protection backup-now \
    --resource-group myResourceGroup \
    --vault-name myRecoveryServicesVault \
    --container-name myVM \
    --item-name myVM \
    --backup-management-type AzureIaaSVM
    --retain-until 18-10-2017

监视备份作业

若要监视备份作业的状态,请使用 az backup job list

az backup job list \
    --resource-group myResourceGroup \
    --vault-name myRecoveryServicesVault \
    --output table

输出如以下示例所示,其中显示备份作业的状态为“正在进行”:

Name      Operation        Status      Item Name    Start Time UTC       Duration
--------  ---------------  ----------  -----------  -------------------  --------------
a0a8e5e6  Backup           InProgress  myvm         2017-09-19T03:09:21  0:00:48.718366
fe5d0414  ConfigureBackup  Completed   myvm         2017-09-19T03:03:57  0:00:31.191807

当备份作业的“状态”报告为“已完成”时,表示 VM 已受恢复服务的保护,并且已存储完整的恢复点。

清理部署

如果不再需要,可以在 VM 上禁用保护,删除还原点和恢复服务保管库,然后删除资源组和关联的 VM 资源。 如果使用了现有的 VM,可以跳过最后一个 az group delete 命令,以保留资源组和 VM。

若要尝试备份教程,了解如何还原 VM 的数据,请转到后续步骤

az backup protection disable \
    --resource-group myResourceGroup \
    --vault-name myRecoveryServicesVault \
    --container-name myVM \
    --item-name myVM \
    --backup-management-type AzureIaaSVM
    --delete-backup-data true
az backup vault delete \
    --resource-group myResourceGroup \
    --name myRecoveryServicesVault \
az group delete --name myResourceGroup

后续步骤

本快速入门介绍了如何创建恢复服务保管库,如何在 VM 上启用保护,以及如何创建初始恢复点。 若要详细了解 Azure 备份和恢复服务,请继续学习其他教程。