Поделиться через


Резервное копирование управляемых дисков Azure с помощью Azure CLI

В этой статье описывается резервное копирование управляемого диска Azure с помощью Azure CLI. Rest API также можно использовать для создания политики резервного копирования и настройки резервного копирования для управляемого диска Azure.

Внимание

Поддержка резервного копирования и восстановления управляемых дисков Azure с помощью CLI предоставляется как расширение для Az версии 2.15.0 и выше. Доступна предварительная версия функции. Расширение устанавливается автоматически при выполнении команд az dataprotection . Дополнительные сведения о расширениях.

Сведения о доступности региона резервного копирования дисков Azure, поддерживаемых сценариях и ограничениях.

Примечание.

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

Создание хранилища для резервных копий

Хранилище резервных копий — это элемент хранилища Azure, который содержит данные резервного копирования для различных новых поддерживаемых рабочих нагрузок в Azure Backup, таких как серверы баз данных в Azure для PostgreSQL, BLOB-объекты в учетных записях хранения и диски Azure. Хранилища резервных копий упрощают организацию данных резервного копирования, одновременно снижая накладные затраты на управление. Хранилища резервных копий основаны на модели Azure Resource Manager в экосистеме Azure, которая предоставляет расширенные возможности для более надежной защиты данных резервного копирования.

Перед созданием хранилища Backup выберите избыточность данных в хранилище. Затем приступите к созданию резервного хранилища с указанной избыточностью и расположением. В этой статье мы создадим хранилище для резервного копирования TestBkpVault в регионе westus в группе ресурсов testBkpVaultRG. Используйте команду az dataprotection vault create для создания хранилища backup. Дополнительные сведения о создании хранилища резервных копий.

az dataprotection backup-vault create -g testBkpVaultRG --vault-name TestBkpVault -l westus --type SystemAssigned --storage-settings datastore-type="VaultStore" type="LocallyRedundant"
{
  "eTag": null,
  "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/testBkpVaultRG/providers/Microsoft.DataProtection/BackupVaults/TestBkpVault",
  "identity": {
    "principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222",
    "tenantId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "type": "SystemAssigned"
  },
  "location": "westus",
  "name": "TestBkpVault",
  "properties": {
    "provisioningState": "Succeeded",
    "storageSettings": [
      {
        "datastoreType": "VaultStore",
        "type": "LocallyRedundant"
      }
    ]
  },
  "resourceGroup": "testBkpVaultRG",
  "systemData": null,
  "tags": null,
  "type": "Microsoft.DataProtection/backupVaults"
}

После создания хранилища мы создадим политику Backup для защиты дисков Azure.

Создание политики резервного копирования

Чтобы понять внутренние компоненты политики резервного копирования для резервного копирования дисков Azure, получите шаблон политики с помощью команды az dataprotection backup-policy get-default-policy-template . Эта команда возвращает шаблон политики по умолчанию для заданного типа источника данных. Используйте этот шаблон политики для создания новой политики.

az dataprotection backup-policy get-default-policy-template --datasource-type AzureDisk
{
  "datasourceTypes": [
    "Microsoft.Compute/disks"
  ],
  "name": "DiskPolicy",
  "objectType": "BackupPolicy",
  "policyRules": [
    {
      "backupParameters": {
        "backupType": "Incremental",
        "objectType": "AzureBackupParams"
      },
      "dataStore": {
        "dataStoreType": "OperationalStore",
        "objectType": "DataStoreInfoBase"
      },
      "name": "BackupHourly",
      "objectType": "AzureBackupRule",
      "trigger": {
        "objectType": "ScheduleBasedTriggerContext",
        "schedule": {
          "repeatingTimeIntervals": [
            "R/2020-04-05T13:00:00+00:00/PT4H"
          ]
        },
        "taggingCriteria": [
          {
            "isDefault": true,
            "tagInfo": {
              "id": "Default_",
              "tagName": "Default"
            },
            "taggingPriority": 99
          }
        ]
      }
    },
    {
      "isDefault": true,
      "lifecycles": [
        {
          "deleteAfter": {
            "duration": "P7D",
            "objectType": "AbsoluteDeleteOption"
          },
          "sourceDataStore": {
            "dataStoreType": "OperationalStore",
            "objectType": "DataStoreInfoBase"
          }
        }
      ],
      "name": "Default",
      "objectType": "AzureRetentionRule"
    }
  ]
}

Шаблон политики состоит из триггера (который определяет, что активирует резервное копирование) и жизненного цикла (который принимает решение об удалении, копировании и перемещении резервной копии). При резервном копировании диска Azure значение триггера по умолчанию — запланированная активация каждые 4 часа (PT4H) и хранение каждой резервной копии в течение семи дней.

Запланированный триггер:

"trigger": {
        "objectType": "ScheduleBasedTriggerContext",
        "schedule": {
          "repeatingTimeIntervals": [
            "R/2020-04-05T13:00:00+00:00/PT4H"
          ]
        }
}

Жизненный цикл хранения по умолчанию:

"lifecycles": [
        {
          "deleteAfter": {
            "duration": "P7D",
            "objectType": "AbsoluteDeleteOption"
          },
          "sourceDataStore": {
            "dataStoreType": "OperationalStore",
            "objectType": "DataStoreInfoBase"
          }
        }
      ]

Внимание

Расписание резервного копирования соответствует формату длительности ISO 8601. Однако префикс R повторяющегося интервала не поддерживается, так как резервные копии настроены на неограниченное время. Любое значение, указанное с параметром R , будет игнорироваться.

Служба резервного копирования дисков Azure предлагает создавать резервные копии несколько раз в день. Если требуется более частое резервное копирование, выберите частоту почасового резервного копирования с возможностью создания резервных копий с интервалами каждые 4, 6, 8 или 12 часов. Резервные копии запланированы на основе выбранного интервала времени .

Например, если выбрать каждые 4 часа, резервные копии выполняются примерно в интервале каждые 4 часа, чтобы резервные копии распределялись одинаково в течение дня. Если достаточно один раз в день резервного копирования, выберите частоту ежедневного резервного копирования. В случае ежедневного резервного копирования можно указать время суток, в которое будут создаваться резервные копии.

Внимание

Указываемое время суток обозначает время запуска резервного копирования, а не время, когда создание резервной копии будет завершено.

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

Примечание.

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

Дополнительные сведения о создании политики см. в статье о создании политики резервного копирования дисков Azure.

После загрузки шаблона в виде JSON-файла его можно изменить для планирования и хранения по мере необходимости. Затем создайте новую политику с этим JSON-файлом. Если вы хотите изменить почасовую частоту или период хранения, используйте команду az dataprotection backup-policy trigger set и/или az dataprotection backup-policy storage-rule set . После того как json политики содержит все необходимые значения, перейдите к созданию новой политики из объекта политики с помощью команды az dataprotection backup-policy create .

az dataprotection backup-policy get-default-policy-template --datasource-type AzureDisk > policy.json
az dataprotection backup-policy create -g testBkpVaultRG --vault-name TestBkpVault -n mypolicy --policy policy.json
{
"id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/testBkpVaultRG/providers/Microsoft.DataProtection/backupVaults/TestBkpVault/backupPolicies/mypolicy",
"name": "mypolicy",
"properties": {
"datasourceTypes": [
"Microsoft.Compute/disks"
],
"objectType": "BackupPolicy",
"policyRules": [
{
"backupParameters": {
"backupType": "Incremental",
"objectType": "AzureBackupParams"
},
"dataStore": {
"dataStoreType": "OperationalStore",
"objectType": "DataStoreInfoBase"
},
"name": "BackupHourly",
"objectType": "AzureBackupRule",
"trigger": {
"objectType": "ScheduleBasedTriggerContext",
"schedule": {
"repeatingTimeIntervals": [
"R/2020-04-05T13:00:00+00:00/PT4H"
]
},
"taggingCriteria": [
{
"criteria": null,
"isDefault": true,
"tagInfo": {
"eTag": null,
"id": "Default_",
"tagName": "Default"
},
"taggingPriority": 99
}
]
}
},
{
"isDefault": true,
"lifecycles": [
{
"deleteAfter": {
"duration": "P7D",
"objectType": "AbsoluteDeleteOption"
},
"sourceDataStore": {
"dataStoreType": "OperationalStore",
"objectType": "DataStoreInfoBase"
},
"targetDataStoreCopySettings": null
}
],
"name": "Default",
"objectType": "AzureRetentionRule"
}
]
},
"resourceGroup": "testBkpVaultRG",
"systemData": null,
"type": "Microsoft.DataProtection/backupVaults/backupPolicies"
}

Настроить резервное копирование

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

Ключевые задействованные сущности

Защищаемый диск

Получите идентификатор ARM и сведения о расположении защищаемого диска. Он будет служить идентификатором диска. Мы рассмотрим пример диска CLITestDisk в группе ресурсов diskrg в другой подписке.

$DiskId = "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourcegroups/diskrg/providers/Microsoft.Compute/disks/CLITestDisk"

Группа ресурсов моментальных снимков

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

$snapshotrg = "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourceGroups/snapshotrg"

Хранилище резервных копий

Хранилищам Backup требуются разрешения на диск и группу ресурсов моментальных снимков для активации моментальных снимков и управления их жизненным циклом. Для назначения таких разрешений используется назначенное системой управляемое удостоверение хранилища. Используйте команду az dataprotection backup-vault update, чтобы включить управляемую идентификацию, назначаемую системой, для хранилища Recovery Services.

az dataprotection backup-vault update -g testBkpVaultRG --vault-name TestBkpVault --type SystemAssigned

Назначьте разрешения

Вам необходимо назначить несколько разрешений через RBAC для хранилища (представленного через MSI хранилища), а также для соответствующего диска и/или группы ресурсов диска. Эту операцию можно выполнить на портале Azure или с помощью CLI. Чтобы назначить связанные разрешения, см. предварительные требования для настройки резервного копирования управляемых дисков.

Подготовка запроса

После установки всех соответствующих разрешений выполняется конфигурация резервного копирования, состоящая из двух этапов. Сначала мы подготавливаем соответствующий запрос, используя соответствующее хранилище, политику, диск и группу ресурсов моментальных снимков с помощью команды az dataprotection backup-instance initialize. Команда initialize создаст JSON-файл, после чего нужно будет обновить значение ресурсной группы снимка. Затем мы отправим запрос на защиту диска с помощью команды az dataprotection backup-instance create .

az dataprotection backup-instance initialize --datasource-type AzureDisk  -l southeastasia --policy-id "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/testBkpVaultRG/providers/Microsoft.DataProtection/backupVaults/TestBkpVault/backupPolicies/mypolicy" --datasource-id "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourcegroups/diskrg/providers/Microsoft.Compute/disks/CLITestDisk" > backup_instance.json

Откройте JSON-файл и измените идентификатор группы ресурсов моментального снимка в resource_group_id разделе data_store_parameters_list .

{
  "backup_instance_name": "diskrg-CLITestDisk-3df6ac08-9496-4839-8fb5-8b78e594f166",
  "properties": {
    "data_source_info": {
      "datasource_type": "Microsoft.Compute/disks",
      "object_type": "Datasource",
      "resource_id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourcegroups/diskrg/providers/Microsoft.Compute/disks/CLITestDisk",
      "resource_location": "southeastasia",
      "resource_name": "CLITestDisk",
      "resource_type": "Microsoft.Compute/disks",
      "resource_uri": ""
    },
    "data_source_set_info": null,
    "object_type": "BackupInstance",
    "policy_info": {
      "policy_id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/testBkpVaultRG/providers/Microsoft.DataProtection/BackupVaults/TestBkpVault/backupPolicies/DiskPolicy",
      "policy_parameters": {
        "data_store_parameters_list": [
          {
            "data_store_type": "OperationalStore",
            "object_type": "AzureOperationalStoreParameters",
            "resource_group_id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/snapshotrg"
          }
        ]
      }
    }
  }
}

Примечание.

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

Создайте экземпляр резервной копии управляемого диска Azure с помощью отредактированного JSON-файла.

az dataprotection backup-instance create -g testBkpVaultRG --vault-name TestBkpVault --backup-instance backup_instance.json
{
  "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/testBkpVaultRG/providers/Microsoft.DataProtection/BackupVaults/TestBkpVault/backupInstances/diskrg-CLITestDisk-3df6ac08-9496-4839-8fb5-8b78e594f166",
  "name": "diskrg-CLITestDisk-3df6ac08-9496-4839-8fb5-8b78e594f166",
  "properties": {
    "currentProtectionState": "ProtectionConfigured",
    "dataSourceInfo": {
      "datasourceType": "Microsoft.Compute/disks",
      "objectType": "Datasource",
      "resourceId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourcegroups/diskrg/providers/Microsoft.Compute/disks/CLITestDisk",
      "resourceLocation": "southeastasia",
      "resourceName": "CLITestDisk",
      "resourceType": "Microsoft.Compute/disks",
      "resourceUri": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourcegroups/diskrg/providers/Microsoft.Compute/disks/CLITestDisk"
    },
    "dataSourceSetInfo": null,
    "friendlyName": "CLITestDisk",
    "objectType": "BackupInstance",
    "policyInfo": {
      "policyId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/testBkpVaultRG/providers/Microsoft.DataProtection/BackupVaults/TestBkpVault/backupPolicies/DiskPolicy",
      "policyParameters": {
        "dataStoreParametersList": [
          {
            "dataStoreType": "OperationalStore",
            "objectType": "AzureOperationalStoreParameters",
            "resourceGroupId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/sarath-rg"
          }
        ]
      },
      "policyVersion": null
    },
    "protectionErrorDetails": null,
    "protectionStatus": {
      "errorDetails": null,
      "status": "ProtectionConfigured"
    },
    "provisioningState": "Succeeded"
  },
  "resourceGroup": "testBkpVaultRG",
  "systemData": null,
  "type": "Microsoft.DataProtection/backupVaults/backupInstances"
}

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

Выполнение резервного копирования по требованию

Перечислите все экземпляры резервного копирования в хранилище с помощью команды az dataprotection backup-instance list , а затем получите соответствующий экземпляр с помощью команды az dataprotection backup-instance show . Кроме того, для крупномасштабных сценариев можно перечислить экземпляры резервных копий в хранилищах и подписках с помощью команды az dataprotection backup-instance list-from-resourcegraph.

az dataprotection backup-instance list-from-resourcegraph --datasource-type AzureDisk --datasource-id /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourcegroups/diskrg/providers/Microsoft.Compute/disks/CLITestDisk
[
  {
    "datasourceId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourcegroups/diskrg/providers/Microsoft.Compute/disks/CLITestDisk",
    "extendedLocation": null,
    "id": "//subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/testBkpVaultRG/providers/Microsoft.DataProtection/BackupVaults/TestBkpVault/backupInstances/diskrg-CLITestDisk-3df6ac08-9496-4839-8fb5-8b78e594f166",
    "identity": null,
    "kind": "",
    "location": "",
    "managedBy": "",
    "name": "diskrg-CLITestDisk-3df6ac08-9496-4839-8fb5-8b78e594f166",
    "plan": null,
    "properties": {
      "currentProtectionState": "ProtectionConfigured",
      "dataSourceInfo": {
        "baseUri": null,
        "datasourceType": "Microsoft.Compute/disks",
        "objectType": "Datasource",
        "resourceID": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourcegroups/diskrg/providers/Microsoft.Compute/disks/CLITestDisk",
        "resourceLocation": "westus",
        "resourceName": "CLITestDisk",
        "resourceType": "Microsoft.Compute/disks",
        "resourceUri": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourcegroups/diskrg/providers/Microsoft.Compute/disks/CLITestDisk"
      },
      "dataSourceProperties": null,
      "dataSourceSetInfo": null,
      "datasourceAuthCredentials": null,
      "friendlyName": "CLITestDisk",
      "objectType": "BackupInstance",
      "policyInfo": {
        "policyId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/testBkpVaultRG/providers/Microsoft.DataProtection/BackupVaults/TestBkpVault/backupPolicies/DiskPolicy",
        "policyParameters": {
          "dataStoreParametersList": [
            {
              "dataStoreType": "OperationalStore",
              "objectType": "AzureOperationalStoreParameters",
              "resourceGroupId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/snapshotrg"
            }
          ]
        },
        "policyVersion": null
      },
      "protectionErrorDetails": null,
      "protectionStatus": {
        "errorDetails": null,
        "status": "ProtectionConfigured"
      },
      "provisioningState": "Succeeded"
    },
    "protectionState": "ProtectionConfigured",
    "resourceGroup": "testBkpVaultRG",
    "sku": null,
    "subscriptionId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "tags": null,
    "tenantId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "type": "microsoft.dataprotection/backupvaults/backupinstances",
    "vaultName": "TestBkpVault",
    "zones": null
  }
]

При активации резервного копирования можно указать правило и имя тега. Чтобы просмотреть правила в политике, ознакомьтесь с файлом JSON политики. В следующем примере отображается правило с именем "BackupDaily"и именем "default" тега, и мы будем использовать это правило для резервного копирования по запросу.

"name": "BackupDaily",
        "objectType": "AzureBackupRule",
        "trigger": {
          "objectType": "ScheduleBasedTriggerContext",
          "schedule": {
            "repeatingTimeIntervals": [
              "R/2022-09-27T23:30:00+00:00/P1D"
            ],
            "timeZone": "UTC"
          },
         "taggingCriteria": [
           {
              "criteria": null,
              "isDefault": true,
              "tagInfo": {
                "eTag": null,
                "id": "Default_",
                "tagName": "Default"
              },
              "taggingPriority": 99
    }

Активируйте резервное копирование по запросу с помощью команды az dataprotection backup-instance adhoc-backup .

az dataprotection backup-instance adhoc-backup --name "diskrg-CLITestDisk-3df6ac08-9496-4839-8fb5-8b78e594f166" --rule-name "BackupDaily" --resource-group "000pikumar" --vault-name "PratikPrivatePreviewVault1" --retention-tag-override "default"

Отслеживание работы

Отслеживайте все задания с помощью команды az dataprotection job list . Можно вывести список всех заданий и получить сведения о конкретном задании.

Для отслеживания всех заданий во всех хранилищах Backup можно также использовать Az.ResourceGraph. Используйте команду az dataprotection job list-from-resourcegraph, чтобы получить релевантное задание, которое может находиться в любом хранилище резервных копий.

az dataprotection job list-from-resourcegraph --datasource-type AzureDisk --status Completed

Дальнейшие шаги

Восстановление управляемого диска с помощью портала Azure, Azure PowerShell, Azure CLI.