Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье описывается резервное копирование и восстановление виртуальной машины Azure в хранилище служб восстановления Azure с помощью командлетов PowerShell.
Azure Backup создает независимые, изолированные резервные копии для защиты от непреднамеренного уничтожения данных на виртуальных машинах. Резервные копии хранятся на складе служб восстановления со встроенным управлением точками восстановления. Конфигурация и масштабирование просты, резервное копирование оптимизировано, а восстановление выполняется легко.
Прежде чем можно будет переходить к резервному копированию (или защите) виртуальной машины, вам потребуется выполнить необходимые условия, чтобы подготовить среду для защиты виртуальных машин.
Перед началом работы
- Дополнительные сведения о хранилищах Служб восстановления.
- Рассмотрите архитектуру для резервного копирования виртуальных машин Azure, изучите процесс резервного копирования и ознакомьтесь со сведениями о поддержке, ограничениях и предварительных требованиях.
- Изучите иерархию объектов PowerShell для Служб восстановления.
Иерархия объектов Служб восстановления
Иерархия объектов представлена на следующей схеме.
Ознакомьтесь со справочником по командлетуAZ.RecoveryServices в библиотеке Azure.
Настройка Azure PowerShell для резервного копирования виртуальных машин Azure
Примечание.
Мы рекомендуем использовать модуль Azure Az PowerShell для взаимодействия с Azure. Чтобы начать работу, см. статью Установка Azure PowerShell. Чтобы узнать, как перейти на модуль Az PowerShell, см. статью Перенос Azure PowerShell с AzureRM на Az.
Чтобы начать работу, сделайте следующее:
Чтобы получить список доступных командлетов PowerShell для службы архивации Azure, введите следующую команду:
Get-Command *azrecoveryservices*Отображаются псевдонимы и командлеты для службы архивации Azure, Azure Site Recovery и хранилища служб восстановления. Ниже приведен пример того, что вы увидите. Это неполный список командлетов.
Для входа в вашу учетную запись Azure используйте командлет Connect-AzAccount. Откроется веб-станица, на которой пользователю предлагается ввести данные для входа в учетную запись:
- Кроме того, учетные данные можно добавить в качестве параметра в командлет Connect-AzAccount, используя параметр -Credential.
- Если вы — партнер CSP, работающий от имени арендатора, вам потребуется указать заказчика в качестве арендатора. Для этого нужно ввести идентификатор или основное доменное имя арендатора. Например: Connect-AzAccount -Tenant "fabrikam.com".
Свяжите подписку, которую собираетесь использовать, с учетной записью, так как последняя может иметь несколько подписок:
Select-AzSubscription -SubscriptionName $SubscriptionNameЕсли вы используете Azure Backup впервые, выполните командлет Register-AzResourceProvider, чтобы зарегистрировать поставщика службы восстановления Azure в своей подписке.
Register-AzResourceProvider -ProviderNamespace "Microsoft.RecoveryServices"Вы можете проверить, зарегистрированы ли поставщики, выполнив следующие команды:
Get-AzResourceProvider -ProviderNamespace "Microsoft.RecoveryServices"В выходных данных команды RegistrationState должно измениться на Registered. Если это не так, повторно выполните командлет Register-AzResourceProvider.
Создание хранилища служб восстановления для резервного копирования виртуальных машин Azure
Чтобы создать хранилище служб восстановления, выполните описанные ниже действия. Хранилище служб восстановления отличается от хранилища службы архивации.
Хранилище служб восстановления представляет собой ресурс Resource Manager, поэтому вам потребуется разместить его в группе ресурсов. Вы можете использовать имеющуюся группу ресурсов или создать новую, выполнив командлет New-AzResourceGroup. При создании группы ресурсов укажите ее имя и расположение.
New-AzResourceGroup -Name "test-rg" -Location "West US"Воспользуйтесь командлетом New-AzRecoveryServicesVault, чтобы создать хранилище Служб восстановления. Убедитесь, что для хранилища указано то же местоположение, что и для группы ресурсов.
New-AzRecoveryServicesVault -Name "testvault" -ResourceGroupName "test-rg" -Location "West US"Укажите необходимый тип избыточности хранилища: Вы можете использовать Локально избыточное хранилище (LRS), Геоизбыточное хранилище (GRS) или хранилище, избыточное между зонами (ZRS). В следующем примере показан параметр -BackupStorageRedundancy, установленный для
testvaultравным GeoRedundant.$vault1 = Get-AzRecoveryServicesVault -Name "testvault" Set-AzRecoveryServicesBackupProperty -Vault $vault1 -BackupStorageRedundancy GeoRedundantСовет
Для многих командлетов службы архивации Azure требуется объект хранилища служб восстановления в качестве входных данных. По этой причине объект хранилища Служб восстановления резервных копий удобно хранить в переменной.
Просмотр хранилищ в подписке
Чтобы просмотреть все хранилища в подписке, используйте Get-AzRecoveryServicesVault.
Get-AzRecoveryServicesVault
Результат будет аналогичен приведенному ниже; обратите внимание, что указаны соответствующие ResourceGroupName и Location.
Name : Contoso-vault
ID : /subscriptions/1234
Type : Microsoft.RecoveryServices/vaults
Location : WestUS
ResourceGroupName : Contoso-docs-rg
SubscriptionId : 1234-567f-8910-abc
Properties : Microsoft.Azure.Commands.RecoveryServices.ARSVaultProperties
Резервное копирование виртуальных машин Azure
Используйте хранилище служб восстановления для защиты виртуальной машины. Прежде чем применить защиту, задайте контекст хранилища (тип данных, защиту которых обеспечивает хранилище) и проверьте политику защиты. Политика защиты — это график выполнения заданий резервного копирования и срок хранения каждого моментального снимка резервной копии.
Установка контекста хранилища
Перед включением защиты на виртуальной машине выполните командлет Set-AzRecoveryServicesVaultContext, чтобы задать контекст хранилища. Заданный контекст хранилища применяется ко всем последующим командлетам. В следующем примере задается контекст хранилища для хранилища testvault.
Get-AzRecoveryServicesVault -Name "testvault" -ResourceGroupName "Contoso-docs-rg" | Set-AzRecoveryServicesVaultContext
Получение идентификатора хранилища
Мы планируем отказаться от параметра контекста хранилища в соответствии с рекомендациями Azure PowerShell. Вместо этого можно сохранить или извлечь ID хранилища и передать его соответствующим командам. Таким образом, если вы не указали контекст хранилища или хотите указать команду для выполнения в определенном хранилище, передайте идентификатор хранилища как "-vaultID" во все соответствующие команды следующим образом:
$targetVault = Get-AzRecoveryServicesVault -ResourceGroupName "Contoso-docs-rg" -Name "testvault"
$targetVault.ID
Или
$targetVaultID = Get-AzRecoveryServicesVault -ResourceGroupName "Contoso-docs-rg" -Name "testvault" | select -ExpandProperty ID
Изменение параметров репликации хранилища
Чтобы задать для хранилища конфигурацию репликации LRS (локально избыточное хранилище) или GRS (геоизбыточное хранилище), используйте команду Set-AzRecoveryServicesBackupProperty.
Set-AzRecoveryServicesBackupProperty -Vault $targetVault -BackupStorageRedundancy GeoRedundant/LocallyRedundant
Примечание.
Избыточность хранилища можно изменить только в том случае, если в хранилище нет защищённых предметов резервного копирования.
Создание политики защиты
Создаваемое хранилище служб восстановления поставляется с политиками защиты и хранения по умолчанию. Политика защиты по умолчанию запускает задание резервного копирования каждый день в указанное время. Политика хранения по умолчанию хранит ежедневную точку восстановления в течение 30 дней. С помощью политики по умолчанию можно быстро защитить виртуальную машину. Кроме того, политику можно изменить позже, задав другие сведения.
Используйте командлет Get-AzRecoveryServicesBackupProtectionPolicy, чтобы просмотреть доступные в хранилище политики защиты. С его помощью можно получить конкретную политику или просмотреть политики, связанные с типом рабочей нагрузки. В следующем примере возвращаются политики для типа рабочей нагрузки: AzureVM.
Get-AzRecoveryServicesBackupProtectionPolicy -WorkloadType "AzureVM" -VaultId $targetVault.ID
Результат будет аналогичен следующему примеру:
Name WorkloadType BackupManagementType BackupTime DaysOfWeek
---- ------------ -------------------- ---------- ----------
DefaultPolicy AzureVM AzureVM 4/14/2016 5:00:00 PM
Примечание.
Часовой пояс поля BackupTime в PowerShell — UTC. Однако при отображении времени архивации на портале Azure время меняется в соответствии с локальным часовым поясом.
Политика защиты архивации связана по крайней мере с одной политикой хранения. Политика хранения определяет продолжительность хранения точки восстановления до ее удаления.
- Используйте Get-AzRecoveryServicesBackupRetentionPolicyObject для просмотра политики хранения по умолчанию.
- Аналогичным образом для получения политики расписания по умолчанию используется командлет Get-AzRecoveryServicesBackupSchedulePolicyObject.
- Командлет New-AzRecoveryServicesBackupProtectionPolicy создает объект PowerShell, который содержит сведения о политике архивации.
- Объекты политик расписания и хранения используются в качестве входных данных в командлете New-AzRecoveryServicesBackupProtectionPolicy.
По умолчанию время запуска определено в объекте политики Schedule. Используйте следующий пример, чтобы изменить время запуска на нужное значение. Требуемое время запуска также должно быть в формате UTC. В следующем примере предполагается, что требуемое время запуска для ежедневного резервного копирования — 01:00 UTC.
$schPol = Get-AzRecoveryServicesBackupSchedulePolicyObject -WorkloadType "AzureVM"
$UtcTime = Get-Date -Date "2019-03-20 01:00:00Z"
$UtcTime = $UtcTime.ToUniversalTime()
$schpol.ScheduleRunTimes[0] = $UtcTime
Внимание
Время запуска должно быть указано с кратностью 30 минут. В приведенном выше примере это может быть только "01:00:00" или "02:30:00". Время запуска не может быть равным "01:15:00".
В следующем примере показано сохранение политик расписания и хранения в переменных. В примере эти переменные используются для определения параметров при создании политики защиты NewPolicy.
$retPol = Get-AzRecoveryServicesBackupRetentionPolicyObject -WorkloadType "AzureVM"
New-AzRecoveryServicesBackupProtectionPolicy -Name "NewPolicy" -WorkloadType "AzureVM" -RetentionPolicy $retPol -SchedulePolicy $schPol -VaultId $targetVault.ID
Результат будет аналогичным следующему примеру.
Name WorkloadType BackupManagementType BackupTime DaysOfWeek
---- ------------ -------------------- ---------- ----------
NewPolicy AzureVM AzureVM 4/24/2016 1:30:00 AM
Включить защиту
После определения политики защиты по-прежнему необходимо включить политику для элемента. Для включения защиты используется командлет Enable-AzRecoveryServicesBackupProtection. Для включения защиты требуются два объекта: элемент и политика. После того как политика была связана с хранилищем, рабочий процесс архивации будет запускаться в соответствии со временем, указанным в расписании политики.
Внимание
При использовании PowerShell для одновременного резервного копирования нескольких виртуальных машин убедитесь, что с одной политикой связано не более 100 виртуальных машин. Это рекомендуемый метод. В настоящее время клиент PowerShell не выполняет явную блокировку при наличии более 100 виртуальных машин, но в будущем планируется добавить проверку.
В следующих примерах включается защита для элемента V2VM с помощью политики NewPolicy. Примеры отличаются в зависимости от того, зашифрована ли виртуальная машина и какой у нее тип шифрования.
Включение защиты на виртуальных машинах Resource Manager без шифрования
$pol = Get-AzRecoveryServicesBackupProtectionPolicy -Name "NewPolicy" -VaultId $targetVault.ID
Enable-AzRecoveryServicesBackupProtection -Policy $pol -Name "V2VM" -ResourceGroupName "RGName1" -VaultId $targetVault.ID
Чтобы включить защиту на зашифрованных виртуальных машинах (зашифрованных с помощью BEK и KEK), необходимо предоставить службе Azure Backup разрешения на доступ для чтения ключей и секретов из хранилища ключей.
Set-AzKeyVaultAccessPolicy -VaultName "KeyVaultName" -ResourceGroupName "RGNameOfKeyVault" -PermissionsToKeys backup,get,list -PermissionsToSecrets get,list -ServicePrincipalName 262044b1-e2ce-469f-a196-69ab7ada62d3
$pol = Get-AzRecoveryServicesBackupProtectionPolicy -Name "NewPolicy" -VaultId $targetVault.ID
Enable-AzRecoveryServicesBackupProtection -Policy $pol -Name "V2VM" -ResourceGroupName "RGName1" -VaultId $targetVault.ID
Чтобы включить защиту на зашифрованных виртуальных машинах (зашифрованных только с помощью BEK), необходимо предоставить службе архивации Azure разрешения на доступ для чтения секретов из хранилища ключей.
Set-AzKeyVaultAccessPolicy -VaultName "KeyVaultName" -ResourceGroupName "RGNameOfKeyVault" -PermissionsToSecrets backup,get,list -ServicePrincipalName 262044b1-e2ce-469f-a196-69ab7ada62d3
$pol = Get-AzRecoveryServicesBackupProtectionPolicy -Name "NewPolicy" -VaultId $targetVault.ID
Enable-AzRecoveryServicesBackupProtection -Policy $pol -Name "V2VM" -ResourceGroupName "RGName1" -VaultId $targetVault.ID
Примечание.
Если вы работаете в облаке Azure для государственных организаций, используйте значение ff281ffe-705c-4f53-9f37-a40e6f2c68f3 для параметра ServicePrincipalName в командлете Set-AzKeyVaultAccessPolicy.
Если вы хотите выборочно создать резервные копии для нескольких дисков и исключить другие, как упоминалось в этих сценариях, можно настроить защиту и резервное копирование только для соответствующих дисков, как описано здесь.
Отслеживание задания резервного копирования виртуальной машины Azure
Вы можете отслеживать длительные операции, например задания резервного копирования, без использования портала Azure. Чтобы получить состояние выполняющегося задания, используйте командлет Get-AzRecoveryservicesBackupJob. Этот командлет возвращает задания резервного копирования для конкретного хранилища, и это хранилище указывается в контексте хранилища. Следующий пример возвращает состояние выполняющегося задания в виде массива и сохраняет состояние в переменной $joblist.
$joblist = Get-AzRecoveryservicesBackupJob –Status "InProgress" -VaultId $targetVault.ID
$joblist[0]
Результат будет аналогичным следующему примеру.
WorkloadName Operation Status StartTime EndTime JobID
------------ --------- ------ --------- ------- ----------
V2VM Backup InProgress 4/23/2016 5:00:30 PM cf4b3ef5-2fac-4c8e-a215-d2eba4124f27
Вместо опроса этих заданий о ходе их выполнения, который требует выполнения дополнительного кода, используйте командлет Wait-AzRecoveryServicesBackupJob. Этот командлет приостанавливает выполнение до тех пор, пока задание не будет завершено или не будет достигнуто указанное значение таймаута.
Wait-AzRecoveryServicesBackupJob -Job $joblist[0] -Timeout 43200 -VaultId $targetVault.ID
Управление резервными копиями виртуальных машин Azure
Изменение политики защиты
Чтобы изменить политику защиты, используйте командлет Set-AzRecoveryServicesBackupProtectionPolicy для изменения объектов SchedulePolicy или RetentionPolicy.
Изменение запланированного времени
При создании политики защиты ей по умолчанию назначается время запуска. В следующих примерах показано, как изменить время запуска политики защиты.
$SchPol = Get-AzRecoveryServicesBackupSchedulePolicyObject -WorkloadType "AzureVM"
$UtcTime = Get-Date -Date "2019-03-20 01:00:00Z" (This is the time that you want to start the backup)
$UtcTime = $UtcTime.ToUniversalTime()
$SchPol.ScheduleRunTimes[0] = $UtcTime
$pol = Get-AzRecoveryServicesBackupProtectionPolicy -Name "NewPolicy" -VaultId $targetVault.ID
Set-AzRecoveryServicesBackupProtectionPolicy -Policy $pol -SchedulePolicy $SchPol -VaultId $targetVault.ID
Изменение срока хранения
В следующем примере количество дней хранения точки восстановления изменяется на 365.
$retPol = Get-AzRecoveryServicesBackupRetentionPolicyObject -WorkloadType "AzureVM"
$retPol.DailySchedule.DurationCountInDays = 365
$pol = Get-AzRecoveryServicesBackupProtectionPolicy -Name "NewPolicy" -VaultId $targetVault.ID
Set-AzRecoveryServicesBackupProtectionPolicy -Policy $pol -RetentionPolicy $RetPol -VaultId $targetVault.ID
Настройка параметров хранения мгновенного восстановления моментальных снимков
Примечание.
Начиная с версии Azure PowerShell версии 1.6.0 можно изменить период хранения моментальных снимков мгновенного восстановления в политике с помощью PowerShell.
$bkpPol = Get-AzRecoveryServicesBackupProtectionPolicy -WorkloadType "AzureVM" -VaultId $targetVault.ID
$bkpPol.SnapshotRetentionInDays=7
Set-AzRecoveryServicesBackupProtectionPolicy -policy $bkpPol -VaultId $targetVault.ID
По умолчанию будет использоваться значение 2. Можно задать значение от 1 до 5. Для политик еженедельного резервного копирования период имеет значение 5, и его невозможно изменить.
Создание группы ресурсов Azure Backup во время хранения моментальных снимков
Примечание.
Начиная с версии Azure PowerShell 3.7.0 можно создать и изменить группу ресурсов, созданную для хранения мгновенных моментальных снимков.
Дополнительные сведения о правилах создания групп ресурсов и другую полезную информацию см. в документации по группе ресурсов Azure Backup для виртуальных машин.
$bkpPol = Get-AzureRmRecoveryServicesBackupProtectionPolicy -name "DefaultPolicyForVMs"
$bkpPol.AzureBackupRGName="Contoso_"
$bkpPol.AzureBackupRGNameSuffix="ForVMs"
Set-AzureRmRecoveryServicesBackupProtectionPolicy -policy $bkpPol
Исключение дисков для защищенной виртуальной машины
Служба резервного копирования виртуальных машин Azure позволяет выборочно исключать и включать диски, что полезно в этих сценариях. Если виртуальная машина уже защищена службой резервного копирования виртуальных машин Azure и при этом выполняется резервное копирование всех дисков, можно изменить защиту, чтобы выборочно включить или исключить диски, как описано здесь.
Запуск резервного копирования
Для активации задания резервного копирования используйте командлет Backup-AzRecoveryServicesBackupItem. Если это начальное резервное копирование, оно является полным. При последующем резервном копировании создается инкрементная копия. В следующем примере резервная копия виртуальной машины будет храниться в течение 60 дней.
$namedContainer = Get-AzRecoveryServicesBackupContainer -ContainerType "AzureVM" -Status "Registered" -FriendlyName "V2VM" -VaultId $targetVault.ID
$item = Get-AzRecoveryServicesBackupItem -Container $namedContainer -WorkloadType "AzureVM" -VaultId $targetVault.ID
$endDate = (Get-Date).AddDays(60).ToUniversalTime()
$job = Backup-AzRecoveryServicesBackupItem -Item $item -VaultId $targetVault.ID -ExpiryDateTimeUTC $endDate
Результат будет аналогичным следующему примеру.
WorkloadName Operation Status StartTime EndTime JobID
------------ --------- ------ --------- ------- ----------
V2VM Backup InProgress 4/23/2016 5:00:30 PM cf4b3ef5-2fac-4c8e-a215-d2eba4124f27
Примечание.
Часовой пояс для полей StartTime и EndTime в PowerShell — UTC. Однако при отображении времени на портале Azure время меняется в соответствии с локальным часовым поясом.
Изменение политики для элементов резервных копий
Можно внести изменения в существующую политику или изменить политику для элемента резервного копирования с Policy1 на Policy2. Чтобы переключить политики для архивированного элемента, извлеките соответствующую политику и элемент резервной копии и примените команду Enable-AzRecoveryServices с этим элементом в качестве параметра.
$TargetPol1 = Get-AzRecoveryServicesBackupProtectionPolicy -Name <PolicyName> -VaultId $targetVault.ID
$anotherBkpItem = Get-AzRecoveryServicesBackupItem -WorkloadType AzureVM -BackupManagementType AzureVM -Name "<BackupItemName>" -VaultId $targetVault.ID
Enable-AzRecoveryServicesBackupProtection -Item $anotherBkpItem -Policy $TargetPol1 -VaultId $targetVault.ID
Команда ожидает завершения настройки резервного копирования и возвращает следующие выходные данные.
WorkloadName Operation Status StartTime EndTime JobID
------------ --------- ------ --------- ------- -----
TestVM ConfigureBackup Completed 3/18/2019 8:00:21 PM 3/18/2019 8:02:16 PM 654e8aa2-4096-402b-b5a9-e5e71a496c4e
Отключение защиты
Сохранение данных
Если нужно отключить защиту, можно использовать командлет PowerShell Disable-AzRecoveryServicesBackupProtection. Это остановит создание запланированных резервных копий, но данные, сохраненные до текущего момента, будут храниться неограниченное время.
$bkpItem = Get-AzRecoveryServicesBackupItem -BackupManagementType AzureVM -WorkloadType AzureVM -Name "<backup item name>" -VaultId $targetVault.ID
Disable-AzRecoveryServicesBackupProtection -Item $bkpItem -VaultId $targetVault.ID
Возобновить резервное копирование
Если защита остановлена и данные резервной копии сохранены, вы можете возобновить защиту еще раз. Необходимо установить политику для обновления защиты. Командлет аналогичен изменению политики элементов резервного копирования.
$TargetPol1 = Get-AzRecoveryServicesBackupProtectionPolicy -Name <PolicyName> -VaultId $targetVault.ID
$anotherBkpItem = Get-AzRecoveryServicesBackupItem -WorkloadType AzureVM -BackupManagementType AzureVM -Name "<BackupItemName>" -VaultId $targetVault.ID
Enable-AzRecoveryServicesBackupProtection -Item $anotherBkpItem -Policy $TargetPol1 -VaultId $targetVault.ID
удаление резервных копий;
Чтобы полностью удалить сохраненные резервные копии данных из хранилища, добавьте параметр -RemoveRecoveryPoints к команде отключения защиты disable.
Disable-AzRecoveryServicesBackupProtection -Item $bkpItem -VaultId $targetVault.ID -RemoveRecoveryPoints
Восстановление виртуальной машины Azure
Операции восстановления виртуальной машины через портал Azure и с помощью Azure PowerShell существенно отличаются. При использовании PowerShell операция восстановления завершается созданием дисков и сведений о конфигурации из точки восстановления. Виртуальная машина при операции восстановления не создается. Чтобы создать виртуальную машину с диска, см. раздел Создание виртуальной машины с восстановленного диска. Чтобы восстановить несколько файлов из резервной копии виртуальной машины Azure без восстановления всей виртуальной машины, изучите раздел о восстановлении файлов.
Совет
Виртуальная машина при операции восстановления не создается.
На следующем рисунке показана иерархия объектов снизу RecoveryServicesVault до .BackupRecoveryPoint
Чтобы восстановить данные резервной копии, определите архивный элемент и точку восстановления, которая содержит данные на определенный момент времени. Выполните командлет Restore-AzRecoveryServicesBackupItem, чтобы восстановить данные из хранилища в свою учетную запись.
Ниже перечислены основные шаги для восстановления виртуальной машины Azure.
- Выберите виртуальную машину.
- Выберите точку восстановления.
- Восстановите диски.
- Создайте виртуальную машину с хранимых дисков.
Теперь можно также использовать PowerShell для непосредственного восстановления содержимого резервной копии на виртуальной машине (исходной или новой), не выполняя описанные выше действия отдельно. Дополнительные сведения см. в разделе Восстановление данных на виртуальную машину с помощью PowerShell.
Выбор виртуальной машины (при восстановлении файлов)
Чтобы получить объект PowerShell, определяющий правильный архивный элемент, начните с контейнера в хранилище и пройдите постепенно вниз по иерархии объектов. Чтобы выбрать контейнер, который представляет виртуальную машину, используйте командлет Get-AzRecoveryServicesBackupContainer и передайте найденный контейнер в командлет Get-AzRecoveryServicesBackupItem.
$namedContainer = Get-AzRecoveryServicesBackupContainer -ContainerType "AzureVM" -Status "Registered" -FriendlyName "V2VM" -VaultId $targetVault.ID
$backupitem = Get-AzRecoveryServicesBackupItem -Container $namedContainer -WorkloadType "AzureVM" -VaultId $targetVault.ID
Выбор точки восстановления (при восстановлении файлов)
Выполните командлет Get-AzRecoveryServicesBackupRecoveryPoint, чтобы получить все точки восстановления для элемента резервного копирования. Затем выберите точку восстановления для восстановления. Если вы не знаете, какую точку восстановления выбрать, используйте последнюю точку RecoveryPointType = AppConsistent в списке.
В следующем сценарии переменная $rpпредставляет собой массив точек восстановления для выбранного архивного элемента за последние семь дней. Массив сортируется по времени в обратном порядке, так что последняя точка восстановления получает индекс 0. Используйте стандартное индексирование массива PowerShell для выбора точки восстановления. В примере $rp[0] выбирает последнюю точку восстановления.
$startDate = (Get-Date).AddDays(-7)
$endDate = Get-Date
$rp = Get-AzRecoveryServicesBackupRecoveryPoint -Item $backupitem -StartDate $startdate.ToUniversalTime() -EndDate $enddate.ToUniversalTime() -VaultId $targetVault.ID
$rp[0]
Результат будет аналогичным следующему примеру.
RecoveryPointAdditionalInfo :
SourceVMStorageType : NormalStorage
Name : 15260861925810
ItemName : VM;iaasvmcontainer;RGName1;V2VM
RecoveryPointId : /subscriptions/XX/resourceGroups/ RGName1/providers/Microsoft.RecoveryServices/vaults/testvault/backupFabrics/Azure/protectionContainers/IaasVMContainer;iaasvmcontainer;RGName1;V2VM/protectedItems/VM;iaasvmcontainer; RGName1;V2VM/recoveryPoints/15260861925810
RecoveryPointType : AppConsistent
RecoveryPointTime : 4/23/2016 5:02:04 PM
WorkloadType : AzureVM
ContainerName : IaasVMContainer;iaasvmcontainer; RGName1;V2VM
ContainerType : AzureVM
BackupManagementType : AzureVM
Восстановление дисков
Выполните командлет Restore-AzRecoveryServicesBackupItem, чтобы восстановить данные и конфигурацию элемента резервного копирования в точке восстановления. Используйте выбранную точку восстановления как значение для параметра -RecoveryPoint. В предыдущем примере была выбрана точка восстановления $rp[0]. В следующем примере кода $rp[0] является точкой восстановления, которая используется для восстановления диска.
Восстановление дисков и сведений о конфигурации
$restorejob = Restore-AzRecoveryServicesBackupItem -RecoveryPoint $rp[0] -StorageAccountName "DestAccount" -StorageAccountResourceGroupName "DestRG" -VaultId $targetVault.ID
$restorejob
Восстановление управляемых дисков
Примечание.
Если в резервной копии виртуальной машины содержатся управляемые диски и вы хотите восстановить их как управляемые диски, мы предоставили такую возможность, начиная с версии 6.7.0 модуля Azure PowerShell RM. далее.
Укажите дополнительный параметр TargetResourceGroupName для указания группы ресурсов, в которой будут восстановлены управляемые диски.
Внимание
Рекомендуется использовать параметр TargetResourceGroupName для восстановления управляемых дисков, так как он приводит к значительным улучшениям производительности. Учетная запись хранения затем используется для файла конфигурации виртуальной машины и временных файлов восстановления. Azure Backup не поддерживает восстановление дисков как неуправляемых дисков. Для устаревших точек восстановления на виртуальных машинах, использующих неуправляемые диски, восстановите их в качестве управляемых дисков.
$restorejob = Restore-AzRecoveryServicesBackupItem -RecoveryPoint $rp[0] -StorageAccountName "DestAccount" -StorageAccountResourceGroupName "DestRG" -TargetResourceGroupName "DestRGforManagedDisks" -VaultId $targetVault.ID
Файл VMConfig.JSON будет восстановлен в целевую учетную запись хранения, а управляемые диски — в указанную целевую группу ресурсов.
Результат будет аналогичным следующему примеру.
WorkloadName Operation Status StartTime EndTime JobID
------------ --------- ------ --------- ------- ----------
V2VM Restore InProgress 4/23/2016 5:00:30 PM cf4b3ef5-2fac-4c8e-a215-d2eba4124f27
Чтобы дождаться завершения задания восстановления, используйте командлет Wait-AzRecoveryServicesBackupJob.
Wait-AzRecoveryServicesBackupJob -Job $restorejob -Timeout 43200
Когда задание восстановления будет выполнено, выполните командлет Get-AzRecoveryServicesBackupJobDetail, чтобы получить сведения об операции восстановления. Свойство JobDetails содержит сведения, необходимые для повторного создания виртуальной машины.
$restorejob = Get-AzRecoveryServicesBackupJob -Job $restorejob -VaultId $targetVault.ID
$details = Get-AzRecoveryServicesBackupJobDetail -Job $restorejob -VaultId $targetVault.ID
Использование управляемого удостоверения для восстановления дисков
Azure Backup также позволяет использовать управляемое удостоверение (MSI) во время операции восстановления для доступа к учетным записям хранения, в которые необходимо восстановить диски. В настоящее время этот параметр поддерживается только для восстановления управляемого диска.
Если вы хотите использовать системно назначенное управляемое удостоверение хранилища для восстановления дисков, передайте дополнительный флаг -UseSystemAssignedIdentity команде Restore-AzRecoveryServicesBackupItem. Если вы хотите использовать управляемое удостоверение, назначаемое пользователем, передайте параметр -UserAssignedIdentityId и идентификатор Azure Resource Manager управляемого удостоверения хранилища в качестве значения этого параметра. Сведения о том, как включить управляемое удостоверение для хранилищ, см. в этой статье.
Восстановление выборочных дисков
Пользователь может выборочно восстановить несколько дисков вместо всего набора резервного копирования. Укажите номера LUN необходимых дисков в качестве параметра, чтобы восстановить только их вместо всего набора, как описано здесь.
Внимание
Для выборочного восстановления дисков необходимо выборочно создать их резервные копии. Дополнительные сведения см. здесь.
Восстановив диски, перейдите к следующему разделу по созданию виртуальной машины.
Восстановление дисков во вторичном регионе
Если для хранилища, с помощью которого защищены виртуальные машины, включено восстановление между регионами, резервные копии данных реплицируются в дополнительный регион. Резервные копии данных можно использовать для восстановления. Чтобы активировать восстановление в дополнительном регионе, выполните следующие действия.
Получите идентификатор хранилища, с помощью которого защищены виртуальные машины.
Выберите правильный элемент резервного копирования для восстановления.
Выберите соответствующую точку восстановления в дополнительном регионе, который будет использоваться для восстановления.
Чтобы выполнить этот шаг, выполните следующую команду:
$rp=Get-AzRecoveryServicesBackupRecoveryPoint -UseSecondaryRegion -Item $backupitem -VaultId $targetVault.ID $rp=$rp[0]Выполните командлет Restore-AzRecoveryServicesBackupItem с параметром
-RestoreToSecondaryRegion, чтобы активировать восстановление в дополнительном регионе.Чтобы выполнить этот шаг, выполните следующую команду:
$restorejob = Restore-AzRecoveryServicesBackupItem -RecoveryPoint $rp[0] -StorageAccountName "DestAccount" -StorageAccountResourceGroupName "DestRG" -TargetResourceGroupName "DestRGforManagedDisks" -VaultId $targetVault.ID -VaultLocation $targetVault.Location -RestoreToSecondaryRegion -RestoreOnlyOSDiskРезультат будет выглядеть примерно так:
WorkloadName Operation Status StartTime EndTime JobID ------------ --------- ------ --------- ------- ---------- V2VM CrossRegionRestore InProgress 4/23/2016 5:00:30 PM cf4b3ef5-2fac-4c8e-a215-d2eba4124f27Выполните командлет Get-AzRecoveryServicesBackupJob с параметром
-UseSecondaryRegionдля отслеживания задания восстановления.Чтобы выполнить этот шаг, выполните следующую команду:
Get-AzRecoveryServicesBackupJob -From (Get-Date).AddDays(-7).ToUniversalTime() -To (Get-Date).ToUniversalTime() -UseSecondaryRegion -VaultId $targetVault.IDРезультат будет выглядеть примерно так:
WorkloadName Operation Status StartTime EndTime JobID ------------ --------- ------ --------- ------- ----- V2VM CrossRegionRestore InProgress 2/8/2021 4:24:57 PM 2d071b07-8f7c-4368-bc39-98c7fb2983f7
Восстановление между зонами
Виртуальные машины Azure, прикрепленные к зонам, можно восстановить в любой зоне доступности одного региона.
Чтобы восстановить виртуальную машину в другой зоне, укажите параметр TargetZoneNumber в командлете Restore-AzRecoveryServicesBackupItem.
$restorejob = Restore-AzRecoveryServicesBackupItem -RecoveryPoint $rp[0] -StorageAccountName "DestAccount" -StorageAccountResourceGroupName "DestRG" -VaultId $targetVault.ID -TargetZoneNumber 3
Результат будет выглядеть примерно так:
WorkloadName Operation Status StartTime EndTime JobID
------------ --------- ------ --------- ------- -----
zonevmeus2 Restore InProgress 1/3/2022 10:27:20 AM b2298...
Восстановление между зонами поддерживается только в следующих сценариях:
- Исходная виртуальная машина прикреплена к зоне и не зашифрована.
- Точка восстановления существует только на уровне хранилища. Не поддерживаются восстановление только моментальных снимков или моментальных снимков и уровня хранилища.
- Для восстановления можно создать новую виртуальную машину или восстановить диски. Параметр "Замена дисков" заменяет исходные данные, следовательно, параметр зоны доступности не применим.
- Создание виртуальных машин или дисков в одном регионе при избыточности хранилища уровня ZRS (Zone Redundant Storage). Обратите внимание, что этот вариант не работает, если хранилище является геоизбыточным, даже если исходная виртуальная машина прикреплена к зоне.
- Создание виртуальных машин или дисков в связанном регионе, если включена избыточность хранилища для восстановления между регионами и если связанный регион поддерживает зоны.
Замена дисков в виртуальной машине Azure
Чтобы заменить диски и сведения о конфигурации, выполните следующие действия.
- Шаг 1. Восстановление дисков
- Шаг 2. Отключение диска данных с помощью PowerShell
- Шаг 3. Подключение диска данных к виртуальной машине Windows с помощью PowerShell
Создание виртуальной машины с восстановленного диска
После восстановления дисков создайте и настройте виртуальную машину с диска, выполнив описанные ниже действия.
Примечание.
- Требуется модуль AzureAz 3.0.0 или более поздней версии.
- При создании зашифрованных виртуальных машин с помощью восстановленных дисков у роли Azure должно быть разрешение на выполнение действия Microsoft.KeyVault/vaults/deploy/action. Если у роли нет этого разрешения, создайте пользовательскую роль с этой функцией. Дополнительные сведения см. в статье Настраиваемые роли Azure.
- После восстановления дисков можно получить шаблон развертывания, который можно использовать непосредственно для создания виртуальной машины. Для создания управляемых виртуальных машин, зашифрованных или незашифрованных, вам не нужны разные командлеты PowerShell.
Создание виртуальной машины с помощью шаблона развертывания
В подробных сведениях о результирующем задании указан URI шаблона, который можно запросить и развернуть.
$properties = $details.properties
$storageAccountName = $properties["Target Storage Account Name"]
$containerName = $properties["Config Blob Container Name"]
$templateBlobURI = $properties["Create VM Template Blob Uri"]
Этот шаблон недоступен напрямую, так как он находится в учетной записи хранения клиента, в указанном контейнере. Для доступа к этому шаблону требуется полный URL-адрес (вместе с временным маркером SAS).
Сначала извлеките имя шаблона из templateBlobURI. Этот формат упоминается ниже. Для извлечения окончательного имени шаблона из этого URL-адреса можно использовать операцию разделения в PowerShell.
https://<storageAccountName.blob.core.windows.net>/<containerName>/<templateName>Затем можно создать полный URL-адрес, как описано здесь.
Set-AzCurrentStorageAccount -Name $storageAccountName -ResourceGroupName <StorageAccount RG name> $templateBlobFullURI = New-AzStorageBlobSASToken -Container $containerName -Blob <templateName> -Permission r -FullUriРазверните шаблон, чтобы создать виртуальную машину, как описано здесь.
New-AzResourceGroupDeployment -Name ExampleDeployment -ResourceGroupName ExampleResourceGroup -TemplateUri $templateBlobFullURI
Создание виртуальной машины с помощью файла конфигурации
В следующем разделе перечислены действия, необходимые для создания виртуальной машины с помощью VMConfig файла.
Примечание.
Для создания виртуальной машины настоятельно рекомендуется использовать шаблон развертывания, описанный выше. Действия, указанные в этом разделе (пункты 1–6), скоро перестанут использоваться.
Запросите свойства восстановленного диска для получения сведений о задании.
$properties = $details.properties $storageAccountName = $properties["Target Storage Account Name"] $containerName = $properties["Config Blob Container Name"] $configBlobName = $properties["Config Blob Name"]Задайте контекст хранилища Azure и восстановите файл конфигурации JSON.
Set-AzCurrentStorageAccount -Name $storageaccountname -ResourceGroupName "testvault" $destination_path = "C:\vmconfig.json" Get-AzStorageBlobContent -Container $containerName -Blob $configBlobName -Destination $destination_path $obj = ((Get-Content -Path $destination_path -Raw -Encoding Unicode)).TrimEnd([char]0x00) | ConvertFrom-JsonИспользуйте файл конфигурации JSON для создания конфигурации виртуальной машины.
$vm = New-AzVMConfig -VMSize $obj.'properties.hardwareProfile'.vmSize -VMName "testrestore"Подключите диск операционной системы и диски данных. Здесь приводятся примеры для различных конфигураций управляемых и зашифрованных виртуальных машин. Используйте пример, подходящий для вашей конфигурации виртуальных машин.
- Используйте следующий пример для неуправляемой виртуальной машины без шифрования.
Set-AzVMOSDisk -VM $vm -Name "osdisk" -VhdUri $obj.'properties.StorageProfile'.osDisk.vhd.Uri -CreateOption "Attach" $vm.StorageProfile.OsDisk.OsType = $obj.'properties.StorageProfile'.OsDisk.OsType foreach($dd in $obj.'properties.StorageProfile'.DataDisks) { $vm = Add-AzVMDataDisk -VM $vm -Name "datadisk1" -VhdUri $dd.vhd.Uri -DiskSizeInGB 127 -Lun $dd.Lun -CreateOption "Attach" }- Неуправляемые и зашифрованные виртуальные машины с идентификатором Microsoft Entra ID (только BEK) — для неуправляемых зашифрованных виртуальных машин с идентификатором Microsoft Entra (зашифрованным только с помощью BEK), необходимо восстановить секрет в хранилище ключей, прежде чем подключить диски. Дополнительные сведения см. в статье Восстановление зашифрованной виртуальной машины из точки восстановления Azure Backup. В следующем примере показано, как подключить диски операционной системы и диски данных к зашифрованной виртуальной машине. При указании диска операционной системы указывайте соответствующий тип операционной системы.
$dekUrl = "https://ContosoKeyVault.vault.azure.net:443/secrets/ContosoSecret007/xx000000xx0849999f3xx30000003163" $dekUrl = "/subscriptions/abcdedf007-4xyz-1a2b-0000-12a2b345675c/resourceGroups/ContosoRG108/providers/Microsoft.KeyVault/vaults/ContosoKeyVault" Set-AzVMOSDisk -VM $vm -Name "osdisk" -VhdUri $obj.'properties.storageProfile'.osDisk.vhd.uri -DiskEncryptionKeyUrl $dekUrl -DiskEncryptionKeyVaultId $keyVaultId -CreateOption "Attach" -Windows/Linux $vm.StorageProfile.OsDisk.OsType = $obj.'properties.storageProfile'.osDisk.osType foreach($dd in $obj.'properties.storageProfile'.dataDisks) { $vm = Add-AzVMDataDisk -VM $vm -Name "datadisk1" -VhdUri $dd.vhd.Uri -DiskSizeInGB 127 -Lun $dd.Lun -CreateOption "Attach" }- Неуправляемые и зашифрованные виртуальные машины с идентификатором Microsoft Entra (BEK и KEK) — для неуправляемых зашифрованных виртуальных машин с идентификатором Microsoft Entra (зашифрованным с помощью BEK и KEK), восстановите ключ и секрет в хранилище ключей перед присоединением дисков. Дополнительные сведения см. в статье Восстановление зашифрованной виртуальной машины из точки восстановления Azure Backup. В следующем примере показано, как подключить диски операционной системы и диски данных к зашифрованной виртуальной машине.
$dekUrl = "https://ContosoKeyVault.vault.azure.net:443/secrets/ContosoSecret007/xx000000xx0849999f3xx30000003163" $kekUrl = "https://ContosoKeyVault.vault.azure.net:443/keys/ContosoKey007/x9xxx00000x0000x9b9949999xx0x006" $keyVaultId = "/subscriptions/abcdedf007-4xyz-1a2b-0000-12a2b345675c/resourceGroups/ContosoRG108/providers/Microsoft.KeyVault/vaults/ContosoKeyVault" Set-AzVMOSDisk -VM $vm -Name "osdisk" -VhdUri $obj.'properties.storageProfile'.osDisk.vhd.uri -DiskEncryptionKeyUrl $dekUrl -DiskEncryptionKeyVaultId $keyVaultId -KeyEncryptionKeyUrl $kekUrl -KeyEncryptionKeyVaultId $keyVaultId -CreateOption "Attach" -Windows $vm.StorageProfile.OsDisk.OsType = $obj.'properties.storageProfile'.osDisk.osType foreach($dd in $obj.'properties.storageProfile'.dataDisks) { $vm = Add-AzVMDataDisk -VM $vm -Name "datadisk1" -VhdUri $dd.vhd.Uri -DiskSizeInGB 127 -Lun $dd.Lun -CreateOption "Attach" }- Неуправляемые и зашифрованные виртуальные машины без идентификатора Microsoft Entra (только BEK) — Для неуправляемых зашифрованных виртуальных машин без идентификатора Microsoft Entra (зашифрованных только с помощью BEK), если недоступны секрет в хранилище ключей, восстановите секреты в хранилище ключей с помощью процедуры в разделе Восстановление незашифрованной виртуальной машины из точки восстановления Azure Backup. Затем выполните следующие скрипты, чтобы задать сведения о шифровании для большого двоичного объекта с восстановленной операционной системой (этот шаг необязателен для больших двоичных объектов данных). $dekurl можно извлечь из восстановленного хранилища ключей.
Скрипт ниже следует выполнять только в том случае, если исходный keyVault/секрет недоступен.
$dekUrl = "https://ContosoKeyVault.vault.azure.net/secrets/ContosoSecret007/xx000000xx0849999f3xx30000003163" $keyVaultId = "/subscriptions/abcdedf007-4xyz-1a2b-0000-12a2b345675c/resourceGroups/ContosoRG108/providers/Microsoft.KeyVault/vaults/ContosoKeyVault" $encSetting = "{""encryptionEnabled"":true,""encryptionSettings"":[{""diskEncryptionKey"":{""sourceVault"":{""id"":""$keyVaultId""},""secretUrl"":""$dekUrl""}}]}" $osBlobName = $obj.'properties.StorageProfile'.osDisk.name + ".vhd" $osBlob = Get-AzStorageBlob -Container $containerName -Blob $osBlobName $osBlob.ICloudBlob.Metadata["DiskEncryptionSettings"] = $encSetting $osBlob.ICloudBlob.SetMetadata()После того как секреты станут доступны и заданы детали шифрования на Blob операционной системы, подключите диски, используя скрипт ниже.
Если в исходном хранилище ключей секреты уже доступны, приведенный выше скрипт выполнять не нужно.
Set-AzVMOSDisk -VM $vm -Name "osdisk" -VhdUri $obj.'properties.StorageProfile'.osDisk.vhd.Uri -CreateOption "Attach" $vm.StorageProfile.OsDisk.OsType = $obj.'properties.StorageProfile'.OsDisk.OsType foreach($dd in $obj.'properties.StorageProfile'.DataDisks) { $vm = Add-AzVMDataDisk -VM $vm -Name "datadisk1" -VhdUri $dd.vhd.Uri -DiskSizeInGB 127 -Lun $dd.Lun -CreateOption "Attach" }- Неуправляемые и зашифрованные виртуальные машины без идентификатора Microsoft Entra (BEK и KEK) — для неуправляемых, зашифрованных виртуальных машин без идентификатора Microsoft Entra (зашифрованных с помощью BEK и KEK), если исходные хранилищеКлючей/ключ/секрет недоступны, восстановите ключ и секреты в хранилище ключей, следуя процедуре восстановления незашифрованной виртуальной машины из точки восстановления Azure Backup. Затем выполните следующие скрипты, чтобы задать сведения о шифровании для большого двоичного объекта с восстановленной операционной системой (этот шаг необязателен для больших двоичных объектов данных). $dekurl и $kekurl можно извлечь из восстановленного хранилища ключей.
Приведенный ниже скрипт нужно выполнять только в том случае, если в исходном хранилище ключей недоступны ключи и секреты.
$dekUrl = "https://ContosoKeyVault.vault.azure.net/secrets/ContosoSecret007/xx000000xx0849999f3xx30000003163" $kekUrl = "https://ContosoKeyVault.vault.azure.net/keys/ContosoKey007/x9xxx00000x0000x9b9949999xx0x006" $keyVaultId = "/subscriptions/abcdedf007-4xyz-1a2b-0000-12a2b345675c/resourceGroups/ContosoRG108/providers/Microsoft.KeyVault/vaults/ContosoKeyVault" $encSetting = "{""encryptionEnabled"":true,""encryptionSettings"":[{""diskEncryptionKey"":{""sourceVault"":{""id"":""$keyVaultId""},""secretUrl"":""$dekUrl""},""keyEncryptionKey"":{""sourceVault"":{""id"":""$keyVaultId""},""keyUrl"":""$kekUrl""}}]}" $osBlobName = $obj.'properties.StorageProfile'.osDisk.name + ".vhd" $osBlob = Get-AzStorageBlob -Container $containerName -Blob $osBlobName $osBlob.ICloudBlob.Metadata["DiskEncryptionSettings"] = $encSetting $osBlob.ICloudBlob.SetMetadata()После того, как ключи или секреты будут доступны и будут установлены сведения о шифровании для облачного контейнера операционной системы, подключите диски с помощью нижеприведённого скрипта.
Если в исходном хранилище ключей ключи и секреты уже доступны, приведенный выше скрипт выполнять не нужно.
Set-AzVMOSDisk -VM $vm -Name "osdisk" -VhdUri $obj.'properties.StorageProfile'.osDisk.vhd.Uri -CreateOption "Attach" $vm.StorageProfile.OsDisk.OsType = $obj.'properties.StorageProfile'.OsDisk.OsType foreach($dd in $obj.'properties.StorageProfile'.DataDisks) { $vm = Add-AzVMDataDisk -VM $vm -Name "datadisk1" -VhdUri $dd.vhd.Uri -DiskSizeInGB 127 -Lun $dd.Lun -CreateOption "Attach" }Управляемые и незашифрованные виртуальные машины. Для управляемых незашифрованных виртуальных машин подключите восстановленные управляемые диски. Более подробные сведения см. в статье Подключение диска данных к виртуальной машине Windows с помощью PowerShell.
Управляемые и зашифрованные виртуальные машины с идентификатором Microsoft Entra (только BEK) — для управляемых зашифрованных виртуальных машин с идентификатором Microsoft Entra (зашифрованным только с помощью BEK), присоединяйте восстановленные управляемые диски. Более подробные сведения см. в статье Подключение диска данных к виртуальной машине Windows с помощью PowerShell.
Управляемые и зашифрованные виртуальные машины с идентификатором Microsoft Entra (BEK и KEK) — для управляемых зашифрованных виртуальных машин с идентификатором Microsoft Entra (зашифрованным с помощью BEK и KEK), подключите восстановленные управляемые диски. Более подробные сведения см. в статье Подключение диска данных к виртуальной машине Windows с помощью PowerShell.
Управляемые и зашифрованные виртуальные машины без Microsoft Entra ID (только BEK) — для управляемых, зашифрованных виртуальных машин без идентификатора Microsoft Entra ID (зашифрованных только с помощью BEK), если исходные хранилище ключей или секрет недоступны, восстановите секреты в хранилище ключей, используя процедуру восстановления не зашифрованной виртуальной машины из точки восстановления Azure Backup. Затем выполните следующие скрипты, чтобы задать сведения о шифровании для восстановленного диска операционной системы (этот шаг необязателен для диска данных). $dekurl можно извлечь из восстановленного хранилища ключей.
Скрипт ниже нужно выполнять только в случае, если недоступно исходное хранилище ключей или секрет.
$dekUrl = "https://ContosoKeyVault.vault.azure.net/secrets/ContosoSecret007/xx000000xx0849999f3xx30000003163" $keyVaultId = "/subscriptions/abcdedf007-4xyz-1a2b-0000-12a2b345675c/resourceGroups/ContosoRG108/providers/Microsoft.KeyVault/vaults/ContosoKeyVault" $diskupdateconfig = New-AzDiskUpdateConfig -EncryptionSettingsEnabled $true $encryptionSettingsElement = New-Object Microsoft.Azure.Management.Compute.Models.EncryptionSettingsElement $encryptionSettingsElement.DiskEncryptionKey = New-Object Microsoft.Azure.Management.Compute.Models.KeyVaultAndSecretReference $encryptionSettingsElement.DiskEncryptionKey.SourceVault = New-Object Microsoft.Azure.Management.Compute.Models.SourceVault $encryptionSettingsElement.DiskEncryptionKey.SourceVault.Id = $keyVaultId $encryptionSettingsElement.DiskEncryptionKey.SecretUrl = $dekUrl $diskupdateconfig.EncryptionSettingsCollection.EncryptionSettings = New-Object System.Collections.Generic.List[Microsoft.Azure.Management.Compute.Models.EncryptionSettingsElement] $diskupdateconfig.EncryptionSettingsCollection.EncryptionSettings.Add($encryptionSettingsElement) $diskupdateconfig.EncryptionSettingsCollection.EncryptionSettingsVersion = "1.1" Update-AzDisk -ResourceGroupName "testvault" -DiskName $obj.'properties.StorageProfile'.osDisk.name -DiskUpdate $diskupdateconfigПосле того как секреты станут доступны и на диске ОС будут установлены сведения о шифровании, выполните действия для подключения восстановленных управляемых дисков, приведенные в статье Подключение диска данных к виртуальной машине Windows с помощью PowerShell.
- Управляемые и зашифрованные виртуальные машины без идентификатора Microsoft Entra (BEK и KEK) — для управляемых зашифрованных виртуальных машин без идентификатора Microsoft Entra (зашифрованных с помощью BEK и KEK), если исходные ключ/ключ/секрет недоступны, то восстановите ключ и секреты в хранилище ключей с помощью процедуры восстановления нешифрованной виртуальной машины из точки восстановления Azure Backup. Затем выполните следующие скрипты, чтобы задать сведения о шифровании для восстановленного диска операционной системы (этот шаг необязателен для дисков данных). $dekurl и $kekurl можно извлечь из восстановленного хранилища ключей.
Приведенный ниже скрипт нужно выполнять только в том случае, если в исходном хранилище ключей недоступны ключи и секреты.
$dekUrl = "https://ContosoKeyVault.vault.azure.net/secrets/ContosoSecret007/xx000000xx0849999f3xx30000003163" $kekUrl = "https://ContosoKeyVault.vault.azure.net/keys/ContosoKey007/x9xxx00000x0000x9b9949999xx0x006" $keyVaultId = "/subscriptions/abcdedf007-4xyz-1a2b-0000-12a2b345675c/resourceGroups/ContosoRG108/providers/Microsoft.KeyVault/vaults/ContosoKeyVault" $diskupdateconfig = New-AzDiskUpdateConfig -EncryptionSettingsEnabled $true $encryptionSettingsElement = New-Object Microsoft.Azure.Management.Compute.Models.EncryptionSettingsElement $encryptionSettingsElement.DiskEncryptionKey = New-Object Microsoft.Azure.Management.Compute.Models.KeyVaultAndSecretReference $encryptionSettingsElement.DiskEncryptionKey.SourceVault = New-Object Microsoft.Azure.Management.Compute.Models.SourceVault $encryptionSettingsElement.DiskEncryptionKey.SourceVault.Id = $keyVaultId $encryptionSettingsElement.DiskEncryptionKey.SecretUrl = $dekUrl $encryptionSettingsElement.KeyEncryptionKey = New-Object Microsoft.Azure.Management.Compute.Models.KeyVaultAndKeyReference $encryptionSettingsElement.KeyEncryptionKey.SourceVault = New-Object Microsoft.Azure.Management.Compute.Models.SourceVault $encryptionSettingsElement.KeyEncryptionKey.SourceVault.Id = $keyVaultId $encryptionSettingsElement.KeyEncryptionKey.KeyUrl = $kekUrl $diskupdateconfig.EncryptionSettingsCollection.EncryptionSettings = New-Object System.Collections.Generic.List[Microsoft.Azure.Management.Compute.Models.EncryptionSettingsElement] $diskupdateconfig.EncryptionSettingsCollection.EncryptionSettings.Add($encryptionSettingsElement) $diskupdateconfig.EncryptionSettingsCollection.EncryptionSettingsVersion = "1.1" Update-AzDisk -ResourceGroupName "testvault" -DiskName $obj.'properties.StorageProfile'.osDisk.name -DiskUpdate $diskupdateconfigПосле того как секреты станут доступны и на диске ОС будут установлены сведения о шифровании, выполните действия для подключения восстановленных управляемых дисков, приведенные в статье Подключение диска данных к виртуальной машине Windows c помощью PowerShell.
Задайте параметры сети.
$nicName="p1234" $pip = New-AzPublicIpAddress -Name $nicName -ResourceGroupName "test" -Location "WestUS" -AllocationMethod Dynamic $virtualNetwork = New-AzVirtualNetwork -ResourceGroupName "test" -Location "WestUS" -Name "testvNET" -AddressPrefix 10.0.0.0/16 $virtualNetwork | Set-AzVirtualNetwork $vnet = Get-AzVirtualNetwork -Name "testvNET" -ResourceGroupName "test" $subnetindex=0 $nic = New-AzNetworkInterface -Name $nicName -ResourceGroupName "test" -Location "WestUS" -SubnetId $vnet.Subnets[$subnetindex].Id -PublicIpAddressId $pip.Id $vm=Add-AzVMNetworkInterface -VM $vm -Id $nic.IdСоздайте виртуальную машину.
New-AzVM -ResourceGroupName "test" -Location "WestUS" -VM $vmЗапустите расширение ADE. Если расширения ADE не отправятся, диски данных будут помечены как незашифрованные, поэтому в обязательном порядке выполните указанные ниже действия.
Для виртуальной машины с идентификатором Microsoft Entra — используйте следующую команду, чтобы вручную включить шифрование дисков данных
Только BEK
Set-AzVMDiskEncryptionExtension -ResourceGroupName $RG -VMName $vm.Name -AadClientID $aadClientID -AadClientSecret $aadClientSecret -DiskEncryptionKeyVaultUrl $dekUrl -DiskEncryptionKeyVaultId $keyVaultId -VolumeType DataBEK и KEK
Set-AzVMDiskEncryptionExtension -ResourceGroupName $RG -VMName $vm.Name -AadClientID $aadClientID -AadClientSecret $aadClientSecret -DiskEncryptionKeyVaultUrl $dekUrl -DiskEncryptionKeyVaultId $keyVaultId -KeyEncryptionKeyUrl $kekUrl -KeyEncryptionKeyVaultId $keyVaultId -VolumeType DataДля виртуальной машины без идентификатора Microsoft Entra— используйте следующую команду, чтобы вручную включить шифрование дисков данных.
Если во время выполнения команды запрашивается AADClientID, необходимо обновить Azure PowerShell.
Только BEK
Set-AzVMDiskEncryptionExtension -ResourceGroupName $RG -VMName $vm.Name -DiskEncryptionKeyVaultUrl $dekUrl -DiskEncryptionKeyVaultId $keyVaultId -SkipVmBackup -VolumeType "All"BEK и KEK
Set-AzVMDiskEncryptionExtension -ResourceGroupName $RG -VMName $vm.Name -DiskEncryptionKeyVaultUrl $dekUrl -DiskEncryptionKeyVaultId $keyVaultId -KeyEncryptionKeyUrl $kekUrl -KeyEncryptionKeyVaultId $keyVaultId -SkipVmBackup -VolumeType "All"
Примечание.
Обязательно вручную удалите файлы JASON, созданные в процессе восстановления диска зашифрованной виртуальной машины.
Восстановление файлов из резервной копии виртуальной машины Azure
Из резервной копии виртуальной машины Azure можно восстанавливать не только диски, но и отдельные файлы. Функция восстановления отдельных файлов предоставляет доступ ко всем файлам в точке восстановления. Управляйте файлами через Проводник файлов, как и для обычных файлов.
Основные шаги по восстановлению файла из резервной копии виртуальной машины Azure:
- Выбор виртуальной машины.
- Выбор точки восстановления
- Монтирование дисков точки восстановления
- Копирование необходимых файлов.
- Отсоедините диск.
Выбор виртуальной машины (при восстановлении виртуальной машины)
Чтобы получить объект PowerShell, определяющий правильный архивный элемент, начните с контейнера в хранилище и пройдите постепенно вниз по иерархии объектов. Чтобы выбрать контейнер, который представляет виртуальную машину, используйте командлет Get-AzRecoveryServicesBackupContainer и передайте найденный контейнер в командлет Get-AzRecoveryServicesBackupItem.
$namedContainer = Get-AzRecoveryServicesBackupContainer -ContainerType "AzureVM" -Status "Registered" -FriendlyName "V2VM" -VaultId $targetVault.ID
$backupitem = Get-AzRecoveryServicesBackupItem -Container $namedContainer -WorkloadType "AzureVM" -VaultId $targetVault.ID
Выбор точки восстановления (при восстановлении виртуальной машины)
Выполните командлет Get-AzRecoveryServicesBackupRecoveryPoint, чтобы получить все точки восстановления для элемента резервного копирования. Затем выберите точку восстановления для восстановления. Если вы не знаете, какую точку восстановления выбрать, используйте последнюю точку RecoveryPointType = AppConsistent в списке.
В следующем сценарии переменная $rpпредставляет собой массив точек восстановления для выбранного архивного элемента за последние семь дней. Массив сортируется по времени в обратном порядке, так что последняя точка восстановления получает индекс 0. Используйте стандартное индексирование массива PowerShell для выбора точки восстановления. В примере $rp[0] выбирает последнюю точку восстановления.
$startDate = (Get-Date).AddDays(-7)
$endDate = Get-Date
$rp = Get-AzRecoveryServicesBackupRecoveryPoint -Item $backupitem -StartDate $startdate.ToUniversalTime() -EndDate $enddate.ToUniversalTime() -VaultId $targetVault.ID
$rp[0]
Результат будет аналогичным следующему примеру.
RecoveryPointAdditionalInfo :
SourceVMStorageType : NormalStorage
Name : 15260861925810
ItemName : VM;iaasvmcontainer;RGName1;V2VM
RecoveryPointId : /subscriptions/XX/resourceGroups/ RGName1/providers/Microsoft.RecoveryServices/vaults/testvault/backupFabrics/Azure/protectionContainers/IaasVMContainer;iaasvmcontainer;RGName1;V2VM/protectedItems/VM;iaasvmcontainer; RGName1;V2VM/recoveryPoints/15260861925810
RecoveryPointType : AppConsistent
RecoveryPointTime : 4/23/2016 5:02:04 PM
WorkloadType : AzureVM
ContainerName : IaasVMContainer;iaasvmcontainer; RGName1;V2VM
ContainerType : AzureVM
BackupManagementType : AzureVM
Подключите диски точки восстановления
Используйте командлет Get-AzRecoveryServicesBackupRPMountScript, чтобы получить скрипт для подключения всех дисков точки восстановления.
Примечание.
Диски подключаются к виртуальной машине, на которой выполняется скрипт, в качестве присоединенных дисков iSCSI. Монтирование выполняется немедленно, и плата не взимается.
Get-AzRecoveryServicesBackupRPMountScript -RecoveryPoint $rp[0] -VaultId $targetVault.ID
Результат будет аналогичным следующему примеру.
OsType Password Filename
------ -------- --------
Windows e3632984e51f496 V2VM_wus2_8287309959960546283_451516692429_cbd6061f7fc543c489f1974d33659fed07a6e0c2e08740.exe
Запустите скрипт на виртуальной машине, на которой нужно восстановить файлы. Чтобы выполнить сценарий, необходимо ввести предоставленный пароль. Присоединив диски, используйте проводник Windows для просмотра новых томов и файлов. Дополнительные сведения см. в статье Восстановление файлов из резервной копии виртуальной машины Azure.
Размонтировать диски
После копирования необходимых файлов используйте командлет Disable-AzRecoveryServicesBackupRPMountScript для размонтирования дисков. Убедитесь, что диски размонтированы, чтобы предотвратить доступ к файлам точки восстановления.
Disable-AzRecoveryServicesBackupRPMountScript -RecoveryPoint $rp[0] -VaultId $targetVault.ID
Восстановление данных на виртуальную машину с помощью PowerShell
Теперь вы можете напрямую восстановить данные на исходную или альтернативную виртуальную машину без выполнения нескольких действий.
Восстановление данных на исходную виртуальную машину
$vault = Get-AzRecoveryServicesVault -ResourceGroupName "resourceGroup" -Name "vaultName"
$BackupItem = Get-AzRecoveryServicesBackupItem -BackupManagementType "AzureVM" -WorkloadType "AzureVM" -Name "V2VM" -VaultId $vault.ID
$StartDate = (Get-Date).AddDays(-7)
$EndDate = Get-Date
$RP = Get-AzRecoveryServicesBackupRecoveryPoint -Item $BackupItem -StartDate $StartDate.ToUniversalTime() -EndDate $EndDate.ToUniversalTime() -VaultId $vault.ID
$OriginalLocationRestoreJob = Restore-AzRecoveryServicesBackupItem -RecoveryPoint $RP[0] -StorageAccountName "DestStorageAccount" -StorageAccountResourceGroupName "DestStorageAccRG" -VaultId $vault.ID -VaultLocation $vault.Location
WorkloadName Operation Status StartTime EndTime
------------ --------- ------ --------- -------
V2VM Restore InProgress 26-Apr-16 1:14:01 PM 01-Jan-01 12:00:00 AM
Последняя команда активирует операцию восстановления в исходное расположение для восстановления данных на месте на существующей виртуальной машине.
Восстановление данных на только что созданную виртуальную машину
$vault = Get-AzRecoveryServicesVault -ResourceGroupName "resourceGroup" -Name "vaultName"
$BackupItem = Get-AzRecoveryServicesBackupItem -BackupManagementType "AzureVM" -WorkloadType "AzureVM" -Name "V2VM" -VaultId $vault.ID
$StartDate = (Get-Date).AddDays(-7)
$EndDate = Get-Date
$RP = Get-AzRecoveryServicesBackupRecoveryPoint -Item $BackupItem -StartDate $StartDate.ToUniversalTime() -EndDate $EndDate.ToUniversalTime() -VaultId $vault.ID
$AlternateLocationRestoreJob = Restore-AzRecoveryServicesBackupItem -RecoveryPoint $RP[0] -TargetResourceGroupName "Target_RG" -StorageAccountName "DestStorageAccount" -StorageAccountResourceGroupName "DestStorageAccRG" -TargetVMName "TargetVirtualMachineName" -TargetVNetName "Target_VNet" -TargetVNetResourceGroup "" -TargetSubnetName "subnetName" -VaultId $vault.ID -VaultLocation $vault.Location
WorkloadName Operation Status StartTime EndTime
------------ --------- ------ --------- -------
V2VM Restore InProgress 26-Apr-16 1:14:01 PM 01-Jan-01 12:00:00 AM
Последняя команда активирует операцию восстановления в альтернативном расположении для создания виртуальной машины в группе ресурсов Target_RG в соответствии с входными данными, указанными с помощью параметров TargetVMName, TargetVNetName, TargetVNetResourceGroup, TargetSubnetName. Это гарантирует восстановление данных в требуемой виртуальной машине, виртуальной сети и подсети.
Следующие шаги
Если вы предпочитаете использовать PowerShell для взаимодействия с ресурсами Azure, см. статью Развертывание и управление резервным копированием для Windows Server с помощью PowerShell. Сведения об управлении резервными копиями DPM см. в статье Развертывание службы архивации для DPM и управление ею.