Руководство по восстановлению виртуальной машины с помощью Azure CLI

В этом руководстве описывается восстановление полной виртуальной машины с помощью интерфейса командной строки.

Служба архивации Azure создает точки восстановления, которые хранятся в геоизбыточных хранилищах восстановления. Используя точку восстановления, можно восстановить всю виртуальную машину или только отдельные файлы.

Сведения об использовании PowerShell для восстановления диска и создания восстановленной виртуальной машины см. в разделе о резервном копировании и восстановление виртуальных машин Azure с помощью PowerShell.

Теперь можно также использовать CLI для непосредственного восстановления содержимого резервной копии на виртуальной машине (исходной или новой), не выполняя описанные выше действия отдельно. Дополнительные сведения см. в разделе Восстановление данных на виртуальную машину с помощью интерфейса командной строки.

Предварительные требования

  • Для работы с этим руководством требуется Azure CLI версии 2.0.18 или более поздней. Если вы используете Azure Cloud Shell, последняя версия уже установлена.

  • Для выполнения этого руководства требуется виртуальная машина Linux, защищенная с помощью службы архивации Azure. Для имитации случайного удаления виртуальной машины и процесса восстановления виртуальная машина создается на основе диска в точке восстановления. Если вам требуется виртуальная машина Linux, защищенная с помощью службы архивации Azure, см. раздел Резервное копирование виртуальной машины в Azure с помощью интерфейса командной строки.

Обзор резервного копирования для виртуальных машин Azure

Когда система Azure запускает архивацию, расширение резервного копирования на виртуальной машине делает моментальный снимок резервной копии. Расширение резервного копирования устанавливается на виртуальной машине при запросе первой резервной копии. Если на момент архивации виртуальная машина не запущена, Azure Backup также может создать моментальный снимок базового хранилища.

По умолчанию Azure Backup создает согласованную с файловой системой резервную копию. После создания моментального снимка службой архивации Azure данные передаются в хранилище служб восстановления. Для повышения эффективности служба архивации Azure анализирует блоки данных и передает только те из них, которые были изменены с момента предыдущего резервного копирования.

После передачи данных моментальный снимок удаляется, и создается точка восстановления.

Список доступных точек восстановления для виртуальной машины

Чтобы восстановить диск, выберите точку восстановления в качестве источника данных восстановления. Поскольку политика по умолчанию создает точку восстановления каждый день и хранит все точки в течение 30 дней, вы можете сохранить набор точек восстановления, а затем выбрать определенный момент времени для восстановления.

Чтобы просмотреть список доступных точек восстановления, используйте команду az backup recoverypoint list. Имя точки восстановления используется для восстановления дисков. В рамках этого руководства нам требуется последняя доступная точка восстановления. Параметр --query [0].name выбирает имя самой последней точки восстановления следующим образом:

az backup recoverypoint list \
    --resource-group myResourceGroup \
    --vault-name myRecoveryServicesVault \
    --backup-management-type AzureIaasVM \
    --container-name myVM \
    --item-name myVM \
    --query [0].name \
    --output tsv

Восстановление диска виртуальной машины

Внимание

Мы настоятельно рекомендуем использовать Azure CLI версии 2.0.74 или более поздней, чтобы получить все преимущества быстрого восстановления, в том числе восстановление управляемых дисков. Лучше всегда использовать последнюю версию.

Восстановление управляемого диска

Если в виртуальной машине, для которой используется резервное копирование, есть управляемые диски и вы намерены восстанавливать эти управляемые диски из точки восстановления, вам необходимо предоставить учетную запись хранения Azure. Эта учетная запись хранения используется для сохранения конфигурации виртуальной машины и шаблона развертывания, которые позже можно применить для развертывания виртуальной машины с восстановленных дисков. Затем вам также нужно предоставить целевую группу ресурсов, в которую будут восстановлены управляемые диски.

  1. Создайте учетную запись хранения с помощью команды az storage account create. Имя учетной записи хранения следует указывать в нижнем регистре, оно должно быть глобально уникальным. Замените mystorageaccount собственным уникальным именем:

    az storage account create \
        --resource-group myResourceGroup \
        --name mystorageaccount \
        --sku Standard_LRS
    
  2. Восстановите диск из точки восстановления с помощью команды az backup restore restore-disks. Замените mystorageaccount именем учетной записи хранения, созданной с помощью предыдущей команды. Замените myRecoveryPointName именем точки восстановления, полученной в выходных данных предыдущей команды az backup recoverypoint list. Также предоставьте целевую группу ресурсов, где будут восстановлены управляемые диски.

    az backup restore restore-disks \
        --resource-group myResourceGroup \
        --vault-name myRecoveryServicesVault \
        --container-name myVM \
        --item-name myVM \
        --storage-account mystorageaccount \
        --rp-name myRecoveryPointName \
        --target-resource-group targetRG
    

    Предупреждение

    Укажите целевую группу ресурсов для восстановления управляемого диска. Azure Backup не поддерживает восстановление дисков как неуправляемых дисков. Устаревшие точки восстановления из виртуальных машин, использующих неуправляемые диски, см. в разделе "Восстановление устаревших точек восстановления" на виртуальных машинах, использующих неуправляемые диски.

Восстановление дисков во вторичном регионе

Данные резервных копий реплицируются в дополнительный регион при включении восстановления данных между регионами для хранилища, в котором защищены ваши виртуальные машины. Вы можете использовать данные резервной копии для выполнения операции восстановления.

Чтобы восстановить диски в дополнительном регионе, используйте флаг --use-secondary-region в команде az backup restore restore-disks. Убедитесь, что вы указали целевую учетную запись хранения, расположенную в дополнительном регионе.

az backup restore restore-disks \
    --resource-group myResourceGroup \
    --vault-name myRecoveryServicesVault \
    --container-name myVM \
    --item-name myVM \
    --storage-account targetStorageAccountID \
    --rp-name myRecoveryPointName \
    --target-resource-group targetRG
    --use-secondary-region

Кросс-зональное восстановление

Виртуальные машины Azure, прикрепленные к зонам, можно восстановить в любой зоне доступности одного региона.

Чтобы восстановить виртуальную машину в другой зоне, задайте параметр TargetZoneNumber в команде az backup restore restore-disks.

az backup restore restore-disks \
    --resource-group myResourceGroup \
    --vault-name myRecoveryServicesVault \
    --container-name myVM \
    --item-name myVM \
    --storage-account targetStorageAccountID \
    --rp-name myRecoveryPointName \
    --target-resource-group targetRG
    --target-zone 3

Восстановление между зонами поддерживается только в следующих сценариях:

  • Исходная виртуальная машина прикреплена к зоне и не зашифрована.
  • Точка восстановления существует только на уровне хранилища. Не поддерживаются восстановление только моментальных снимков или моментальных снимков и уровня хранилища.
  • Для восстановления можно создать новую виртуальную машину или восстановить диски. Параметр "Замена дисков" заменяет исходные данные, следовательно, параметр зоны доступности не применим.
  • Создание виртуальных машин или дисков в одном регионе при избыточности хранилища уровня ZRS (Zone Redundant Storage). Обратите внимание, что этот вариант не работает, если хранилище является геоизбыточным, даже если исходная виртуальная машина прикреплена к зоне.
  • Создание виртуальных машин или дисков в связанном регионе, если включена избыточность хранилища для восстановления между регионами и если связанный регион поддерживает зоны.

Восстановление неуправляемых дисков

Если точка восстановления находится на виртуальной машине, которая использовала неуправляемые диски, Служба архивации Azure восстанавливает эти диски только как управляемые диски. Предоставьте учетную запись хранения Azure для хранения конфигурации виртуальной машины, шаблона развертывания и временных VHD-файлов и предоставления целевой группы ресурсов для восстановленных управляемых дисков.

В дополнительных шагах восстановленные диски используются для создания виртуальной машины.

  1. Создайте учетную запись хранения с помощью команды az storage account create. Имя учетной записи хранения следует указывать в нижнем регистре, оно должно быть глобально уникальным. Замените mystorageaccount собственным уникальным именем:

    az storage account create \
        --resource-group myResourceGroup \
        --name mystorageaccount \
        --sku Standard_LRS
    
  2. Восстановите диск из точки восстановления с помощью команды az backup restore restore-disks. Замените mystorageaccount именем учетной записи хранения, созданной с помощью предыдущей команды. Замените myRecoveryPointName именем точки восстановления, полученной в выходных данных предыдущей команды az backup recoverypoint list. Кроме того, предоставьте целевую группу ресурсов для восстановленных управляемых дисков:

    az backup restore restore-disks \
        --resource-group myResourceGroup \
        --vault-name myRecoveryServicesVault \
        --container-name myVM \
        --item-name myVM \
        --storage-account mystorageaccount \
        --rp-name myRecoveryPointName \
        --target-resource-group targetRG
    

Восстановление на неуправляемых дисках не поддерживается. Для устаревших точек восстановления на виртуальных машинах, использующих неуправляемые диски, следуйте инструкциям в статье "Восстановление устаревших точек восстановления" на виртуальных машинах, использующих неуправляемые диски.

Мониторинг задания восстановления

Чтобы отслеживать состояние задания восстановления, используйте 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
--------  ---------------  ----------  -----------  -------------------  --------------
7f2ad916  Restore          InProgress  myvm         2017-09-19T19:39:52  0:00:34.520850
a0a8e5e6  Backup           Completed   myvm         2017-09-19T03:09:21  0:15:26.155212
fe5d0414  ConfigureBackup  Completed   myvm         2017-09-19T03:03:57  0:00:31.191807

Параметр Состояние для задания восстановления принимает значение Завершено, это когда вся необходимая информация (конфигурация виртуальной машины и шаблон развертывания) восстановлена в учетной записи хранения.

Использование управляемого удостоверения для восстановления дисков

Azure Backup также позволяет использовать управляемое удостоверение (MSI) во время операции восстановления для доступа к учетным записям хранения, в которые необходимо восстановить диски. В настоящее время этот параметр поддерживается только для восстановления управляемого диска.

Если вы хотите использовать управляемое удостоверение, назначенное системой хранилища, для восстановления дисков, передайте дополнительный флажок --mi-system-assigned команде az backup restore restore-disks. Если вы хотите использовать управляемое удостоверение, назначаемое пользователем, передайте параметр --mi-user-assigned с идентификатором Azure Resource Manager управляемого удостоверения хранилища в качестве значения этого параметра. Чтобы узнать, как включить управляемое удостоверение для хранилищ, см. в этой статье.

Создание виртуальной машины на основе восстановленного диска

Последним шагом является создание виртуальной машины на основе восстановленных дисков. Для создания виртуальной машины можно использовать шаблон развертывания, скачанный в указанную учетную запись хранения.

Получение подробных сведений о задании

В подробных сведениях о результирующем задании указан URI шаблона, который можно запросить и развернуть. Используйте команду "job show", чтобы получить дополнительные сведения о запущенном задании восстановления.

az backup job show \
    -v myRecoveryServicesVault \
    -g myResourceGroup \
    -n 1fc2d55d-f0dc-4ca6-ad48-aca0fe5d0414

Выходные данные этого запроса содержат подробные сведения, из которых нас интересует только содержимое учетной записи хранения. Для получения нужных сведений мы можем использовать функцию запросов в Azure CLI.

az backup job show \
    -v myRecoveryServicesVault \
    -g myResourceGroup \
    -n 1fc2d55d-f0dc-4ca6-ad48-aca0fe5d0414 \
    --query properties.extendedInfo.propertyBag

{
  "Config Blob Container Name": "myVM-daa1931199fd4a22ae601f46d8812276",
  "Config Blob Name": "config-myVM-1fc2d55d-f0dc-4ca6-ad48-aca0fe5d0414.json",
  "Config Blob Uri": "https://mystorageaccount.blob.core.windows.net/myVM-daa1931199fd4a22ae601f46d8812276/config-appvm8-1fc2d55d-f0dc-4ca6-ad48-aca0519c0232.json",
  "Job Type": "Recover disks",
  "Recovery point time ": "12/25/2019 10:07:11 PM",
  "Target Storage Account Name": "mystorageaccount",
  "Target resource group": "mystorageaccountRG",
  "Template Blob Uri": "https://mystorageaccount.blob.core.windows.net/myVM-daa1931199fd4a22ae601f46d8812276/azuredeploy1fc2d55d-f0dc-4ca6-ad48-aca0519c0232.json"
}

Извлеките шаблон развертывания

Этот шаблон недоступен напрямую, так как он находится в учетной записи хранения клиента, в указанном контейнере. Для доступа к этому шаблону требуется полный URL-адрес (вместе с временным маркером SAS).

Сначала извлеките URI объекта BLOB шаблона из сведений о задании.

az backup job show \
    -v myRecoveryServicesVault \
    -g myResourceGroup \
    -n 1fc2d55d-f0dc-4ca6-ad48-aca0fe5d0414 \
    --query properties.extendedInfo.propertyBag."""Template Blob Uri"""

"https://mystorageaccount.blob.core.windows.net/myVM-daa1931199fd4a22ae601f46d8812276/azuredeploy1fc2d55d-f0dc-4ca6-ad48-aca0519c0232.json"

URI шаблона Blob будет в таком формате, из которого вы можете извлечь имя шаблона.

https://<storageAccountName.blob.core.windows.net>/<containerName>/<templateName>

Например, в приведенном выше примере имя шаблона имеет значение azuredeploy1fc2d55d-f0dc-4ca6-ad48-aca0519c0232.json, а имя контейнера — myVM-daa1931199fd4a22ae601f46d8812276.

Теперь получите маркер SAS для этого контейнера и шаблона, как описано здесь.

expiretime=$(date -u -d '30 minutes' +%Y-%m-%dT%H:%MZ)
token=$(az storage blob generate-sas --account-name $storageAccountName --container-name $containerName --name $templateName --permissions r --expiry $expiretime --auth-mode login --as-user --https-only --output tsv)
url=$(az storage blob url --account-name $storageAccountName --container-name $containerName --name $templateName --output tsv --auth-mode login)

Развертывание шаблона для создания виртуальной машины

Теперь разверните шаблон, чтобы создать виртуальную машину, как описано здесь.

az deployment group create \
  --resource-group ExampleGroup \
  --template-uri $url?$token

Чтобы убедиться, что виртуальная машина была создана на основе восстановленного диска, перечислите виртуальные машины в группе ресурсов с помощью команды az vm list следующим образом:

az vm list --resource-group myResourceGroup --output table

Восстановление данных на виртуальную машину с помощью интерфейса командной строки

Теперь вы можете напрямую восстановить данные на исходную или альтернативную виртуальную машину без выполнения нескольких действий.

Восстановление данных на исходную виртуальную машину

az backup restore restore-disks \
    --resource-group myResourceGroup \
    --vault-name myRecoveryServicesVault \
    --container-name myVM \
    --item-name myVM \
    --restore-mode OriginalLocation 
    --storage-account mystorageaccount \
    --rp-name myRecoveryPointName \ 
Name      Operation        Status      Item Name    Start Time UTC       Duration
--------  ---------------  ----------  -----------  -------------------  --------------
7f2ad916  Restore          InProgress  myVM         2017-09-19T19:39:52  0:00:34.520850

Последняя команда активирует операцию восстановления в исходное расположение для восстановления данных на месте на существующей виртуальной машине.

Восстановление данных на только что созданную виртуальную машину

az backup restore restore-disks \
    --resource-group myResourceGroup \
    --vault-name myRecoveryServicesVault \
    --container-name myVM \
    --item-name myVM \
    --restore-mode AlternateLocation \
    --storage-account mystorageaccount \

--target-resource-group "Target_RG" \
    --rp-name myRecoveryPointName \
    --target-vm-name "TargetVirtualMachineName" \
    --target-vnet-name "Target_VNet" \
    --target-vnet-resource-group "Target_VNet_RG" \
    --target-subnet-name "targetSubNet"
Name      Operation        Status      Item Name    Start Time UTC       Duration
--------  ---------------  ----------  -----------  -------------------  --------------
7f2ad916  Restore          InProgress  myVM         2017-09-19T19:39:52  0:00:34.520850

Последняя команда активирует операцию восстановления в альтернативном расположении для создания виртуальной машины в группе ресурсов Target_RG в соответствии с входными данными, указанными с помощью параметров TargetVMName, TargetVNetName, TargetVNetResourceGroup, TargetSubnetName. Это гарантирует восстановление данных в требуемой виртуальной машине, виртуальной сети и подсети.

Следующие шаги

В этом руководстве описывается восстановление диска из точки восстановления, а затем создание виртуальной машины на его основе. Вы научились выполнять следующие задачи:

  • Составление списка и выбор точек восстановления
  • Восстановление диска из точки восстановления
  • Создание виртуальной машины на основе восстановленного диска

Перейдите к следующему руководству, чтобы узнать о восстановлении отдельных файлов из точки восстановления.