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

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

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

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

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

Необходимые компоненты

  • Используйте среду Bash в Azure Cloud Shell. Дополнительные сведения см . в кратком руководстве по Bash в Azure Cloud Shell.

  • Если вы предпочитаете выполнять справочные команды CLI локально, установите Azure CLI. Если вы работаете в Windows или macOS, Azure CLI можно запустить в контейнере Docker. Дополнительные сведения см. в статье Как запустить Azure CLI в контейнере Docker.

    • Если вы используете локальную установку, выполните вход в Azure CLI с помощью команды az login. Чтобы выполнить аутентификацию, следуйте инструкциям в окне терминала. Сведения о других возможностях, доступных при входе, см. в статье Вход с помощью Azure CLI.

    • Установите расширение Azure CLI при первом использовании, когда появится соответствующий запрос. Дополнительные сведения о расширениях см. в статье Использование расширений с Azure CLI.

    • Выполните команду az version, чтобы узнать установленную версию и зависимые библиотеки. Чтобы обновиться до последней версии, выполните команду az upgrade.

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

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

Обзор службы Azure Backup

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

По умолчанию служба архивации Azure создает резервную копию, согласованную с файловой системой. После создания моментального снимка службой архивации 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
    

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

    Если параметр target-resource-group не указан, управляемые диски будут восстановлены в предоставленную учетную запись в виде неуправляемых дисков. Это существенно повлияет на время восстановления, поскольку время на восстановление дисков полностью зависит от используемой учетной записи хранения. Вы можете использовать мгновенное восстановление, только если указан параметр target-resource-group. Если цель состоит в восстановлении управляемых дисков как неуправляемых, не укажите параметр целевой группы ресурсов и вместо этого укажите параметр restore-as-unmanaged-disk, как показано ниже. Этот параметр доступен в Azure CLI 3.4.0.

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

Это восстановит для данной учетной записи хранения управляемые диски как неуправляемые, и функция "мгновенного" восстановления использоваться не будет. В будущих версиях CLI необходимо будет обязательно указывать параметр target-resource-group или параметр restore-as-unmanaged-disk.

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

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

Чтобы восстановить диски в дополнительном регионе, используйте флаг --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

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

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

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

Если в виртуальной машине, для которой используется резервное копирование, есть неуправляемые диски и вы намерены восстанавливать их из точки восстановления, вам необходимо предоставить учетную запись хранения 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
    

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

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

## Monitor the restore job

To monitor the status of restore job, use [az backup job list](/cli/azure/backup/job#az-backup-job-list):

```azurecli-interactive
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)
connection=$(az storage account show-connection-string \
    --resource-group mystorageaccountRG \
    --name mystorageaccount \
    --query connectionString)
token=$(az storage blob generate-sas \
    --container-name myVM-daa1931199fd4a22ae601f46d8812276 \
    --name azuredeploy1fc2d55d-f0dc-4ca6-ad48-aca0519c0232.json \
    --expiry $expiretime \
    --permissions r \
    --output tsv \
    --connection-string $connection)
url=$(az storage blob url \
   --container-name myVM-daa1931199fd4a22ae601f46d8812276 \
    --name azuredeploy1fc2d55d-f0dc-4ca6-ad48-aca0519c0232.json \
    --output tsv \
    --connection-string $connection)

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

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

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. Это гарантирует восстановление данных в требуемой виртуальной машине, виртуальной сети и подсети.

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

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

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

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