Fazer backup e restaurar VMs do Azure usando o Azure PowerShell
Este artigo descreve como fazer backup e restaurar uma VM do Azure em um cofre dos Serviços de Recuperação de Backup do Azure usando cmdlets do PowerShell.
O Azure Backup fornece cópias de segurança independentes e isoladas para que estas protejam os dados nas suas VMs contra a destruição acidental. As cópias de segurança são armazenadas num cofre dos Serviços de Recuperação com gestão de pontos de recuperação incorporada. A configuração e o dimensionamento são simples, as cópias de segurança são otimizadas e pode restaurar facilmente, conforme necessário.
Antes de poder criar cópias de segurança (ou proteger) uma máquina virtual, tem de concluir os pré-requisitos para preparar o seu ambiente para proteger as VMs.
Antes de começar
- Saiba mais sobre os cofres dos Serviços de Recuperação.
- Analise a arquitetura do backup de VM do Azure, saiba mais sobre o processo de backup e analise o suporte, as limitações e os pré-requisitos.
- Analise a hierarquia de objetos do PowerShell para Serviços de Recuperação.
Hierarquia de objetos dos Serviços de Recuperação
A hierarquia de objetos é resumida no diagrama a seguir.
Analise a referência de referência do cmdlet Az.RecoveryServices na biblioteca do Azure.
Configurar e registar
Nota
Recomendamos que utilize o módulo Azure Az do PowerShell para interagir com o Azure. Para começar, consulte Instalar o Azure PowerShell. Para saber como migrar para o módulo do Az PowerShell, veja Migrar o Azure PowerShell do AzureRM para o Az.
Para começar:
Encontre os cmdlets do PowerShell de Backup do Azure disponíveis digitando o seguinte comando:
Get-Command *azrecoveryservices*
Os aliases e cmdlets do Backup do Azure, do Azure Site Recovery e do cofre dos Serviços de Recuperação são exibidos. A imagem a seguir é um exemplo do que você verá. Não é a lista completa de cmdlets.
Entre na sua conta do Azure usando Connect-AzAccount. Este cmdlet exibe uma página da Web solicitando as credenciais da sua conta:
- Como alternativa, você pode incluir suas credenciais de conta como um parâmetro no cmdlet Connect-AzAccount , usando o parâmetro -Credential .
- Se você for um parceiro CSP trabalhando em nome de um locatário, especifique o cliente como um locatário, usando seu tenantID ou tenant primary domain name. Por exemplo: Connect-AzAccount -Tenant "fabrikam.com"
Associe a subscrição que pretende utilizar à conta, uma vez que uma conta pode ter várias subscrições:
Select-AzSubscription -SubscriptionName $SubscriptionName
Se você estiver usando o Backup do Azure pela primeira vez, deverá usar o cmdlet Register-AzResourceProvider para registrar o provedor do Serviço de Recuperação do Azure com sua assinatura.
Register-AzResourceProvider -ProviderNamespace "Microsoft.RecoveryServices"
Você pode verificar se os Provedores se registraram com êxito, usando os seguintes comandos:
Get-AzResourceProvider -ProviderNamespace "Microsoft.RecoveryServices"
Na saída do comando, o RegistrationState deve mudar para Registered. Caso contrário, execute o cmdlet Register-AzResourceProvider novamente.
Criar um cofre dos Serviços de Recuperação
As etapas a seguir orientam você na criação de um cofre dos Serviços de Recuperação. Um cofre dos Serviços de Recuperação é diferente de um cofre de Backup.
O cofre dos Serviços de Recuperação é um recurso do Gerenciador de Recursos, portanto, você precisa colocá-lo em um grupo de recursos. Você pode usar um grupo de recursos existente ou criar um grupo de recursos com o cmdlet New-AzResourceGroup. Ao criar um grupo de recursos, especifique o nome e o local para o grupo de recursos.
New-AzResourceGroup -Name "test-rg" -Location "West US"
Use o cmdlet New-AzRecoveryServicesVault para criar o cofre dos Serviços de Recuperação. Certifique-se de especificar o mesmo local para o cofre que foi usado para o grupo de recursos.
New-AzRecoveryServicesVault -Name "testvault" -ResourceGroupName "test-rg" -Location "West US"
Especifique o tipo de redundância de armazenamento a ser usado. Você pode usar o Armazenamento Localmente Redundável (LRS), o Armazenamento com Redundância Geográfica (GRS) ou o Armazenamento com Redundância de Zona (ZRS). O exemplo a seguir mostra a opção -BackupStorageRedundancy para
testvault
definir como GeoRedundant.$vault1 = Get-AzRecoveryServicesVault -Name "testvault" Set-AzRecoveryServicesBackupProperty -Vault $vault1 -BackupStorageRedundancy GeoRedundant
Gorjeta
Muitos cmdlets do Azure Backup requerem o objeto do cofre dos Serviços de Recuperação como entrada. Por esse motivo, é conveniente armazenar o objeto do cofre dos Serviços de Recuperação de Backup em uma variável.
Ver os cofres numa subscrição
Para exibir todos os cofres na assinatura, use Get-AzRecoveryServicesVault:
Get-AzRecoveryServicesVault
A saída é semelhante ao exemplo a seguir, observe que ResourceGroupName e Location associados são fornecidos.
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
Fazer cópia de segurança de VMs do Azure
Use um cofre dos Serviços de Recuperação para proteger suas máquinas virtuais. Antes de aplicar a proteção, defina o contexto do cofre (o tipo de dados protegidos no cofre) e verifique a política de proteção. A política de proteção é o agendamento quando os trabalhos de backup são executados e por quanto tempo cada instantâneo de backup é mantido.
Definir contexto do cofre
Antes de habilitar a proteção em uma VM, use Set-AzRecoveryServicesVaultContext para definir o contexto do cofre. Quando o contexto do cofre estiver definido, é aplicado a todos os cmdlets subsequentes. O exemplo a seguir define o contexto do vault para o vault, testvault
.
Get-AzRecoveryServicesVault -Name "testvault" -ResourceGroupName "Contoso-docs-rg" | Set-AzRecoveryServicesVaultContext
Buscar o ID do cofre
Planejamos substituir a configuração de contexto do cofre de acordo com as diretrizes do Azure PowerShell. Em vez disso, você pode armazenar ou buscar o ID do cofre e passá-lo para comandos relevantes. Portanto, se você não definiu o contexto do vault ou deseja especificar o comando a ser executado para um determinado vault, passe o ID do vault como "-vaultID" para todos os comandos relevantes, da seguinte maneira:
$targetVault = Get-AzRecoveryServicesVault -ResourceGroupName "Contoso-docs-rg" -Name "testvault"
$targetVault.ID
Ou
$targetVaultID = Get-AzRecoveryServicesVault -ResourceGroupName "Contoso-docs-rg" -Name "testvault" | select -ExpandProperty ID
Modificando as configurações de replicação de armazenamento
Use o comando Set-AzRecoveryServicesBackupProperty para definir a configuração de replicação de armazenamento do vault como LRS/GRS
Set-AzRecoveryServicesBackupProperty -Vault $targetVault -BackupStorageRedundancy GeoRedundant/LocallyRedundant
Nota
A redundância de armazenamento só pode ser modificada se não houver itens de backup protegidos no cofre.
Criar uma política de proteção
Quando cria um cofre dos Serviços de Recuperação, aquele inclui políticas de proteção e retenção predefinidas. A política de proteção predefinida aciona um trabalho de cópia de segurança todos os dias a uma hora especificada. A política de retenção predefinida retém o ponto de recuperação diária durante 30 dias. Você pode usar a política padrão para proteger rapidamente sua VM e editá-la posteriormente com detalhes diferentes.
Use Get-AzRecoveryServicesBackupProtectionPolicy para exibir as políticas de proteção disponíveis no cofre. Você pode usar esse cmdlet para obter uma política específica ou para exibir as políticas associadas a um tipo de carga de trabalho. O exemplo a seguir obtém políticas para o tipo de carga de trabalho, AzureVM.
Get-AzRecoveryServicesBackupProtectionPolicy -WorkloadType "AzureVM" -VaultId $targetVault.ID
O resultado é semelhante ao seguinte exemplo:
Name WorkloadType BackupManagementType BackupTime DaysOfWeek
---- ------------ -------------------- ---------- ----------
DefaultPolicy AzureVM AzureVM 4/14/2016 5:00:00 PM
Nota
O fuso horário do campo BackupTime no PowerShell é UTC. No entanto, quando a hora de backup é mostrada no portal do Azure, a hora é ajustada ao seu fuso horário local.
Uma política de proteção de backup está associada a pelo menos uma política de retenção. Uma política de retenção define por quanto tempo um ponto de recuperação é mantido antes de ser excluído.
- Use Get-AzRecoveryServicesBackupRetentionPolicyObject para exibir a política de retenção padrão.
- Da mesma forma, você pode usar Get-AzRecoveryServicesBackupSchedulePolicyObject para obter a política de agendamento padrão.
- O cmdlet New-AzRecoveryServicesBackupProtectionPolicy cria um objeto do PowerShell que contém informações da política de backup.
- Os objetos de política de agendamento e retenção são usados como entradas para o cmdlet New-AzRecoveryServicesBackupProtectionPolicy.
Por padrão, uma hora de início é definida no Schedule Policy Object. Use o exemplo a seguir para alterar a hora de início para a hora de início desejada. A hora de início desejada também deve estar em UTC. O exemplo a seguir pressupõe que a hora de início desejada é 01:00 AM UTC para backups diários.
$schPol = Get-AzRecoveryServicesBackupSchedulePolicyObject -WorkloadType "AzureVM"
$UtcTime = Get-Date -Date "2019-03-20 01:00:00Z"
$UtcTime = $UtcTime.ToUniversalTime()
$schpol.ScheduleRunTimes[0] = $UtcTime
Importante
Você precisa fornecer a hora de início em múltiplos de 30 minutos apenas. No exemplo acima, pode ser apenas "01:00:00" ou "02:30:00". A hora de início não pode ser "01:15:00"
O exemplo a seguir armazena a política de agendamento e a política de retenção em variáveis. O exemplo usa essas variáveis para definir os parâmetros ao criar uma política de proteção, NewPolicy.
$retPol = Get-AzRecoveryServicesBackupRetentionPolicyObject -WorkloadType "AzureVM"
New-AzRecoveryServicesBackupProtectionPolicy -Name "NewPolicy" -WorkloadType "AzureVM" -RetentionPolicy $retPol -SchedulePolicy $schPol -VaultId $targetVault.ID
O resultado é semelhante ao seguinte exemplo:
Name WorkloadType BackupManagementType BackupTime DaysOfWeek
---- ------------ -------------------- ---------- ----------
NewPolicy AzureVM AzureVM 4/24/2016 1:30:00 AM
Ativar a proteção
Depois de definir a política de proteção, você ainda deve habilitá-la para um item. Use Enable-AzRecoveryServicesBackupProtection para habilitar a proteção. Habilitar a proteção requer dois objetos - o item e a política. Depois que a política for associada ao cofre, o fluxo de trabalho de backup será acionado no momento definido na agenda da política.
Importante
Ao usar o PowerShell para habilitar o backup para várias VMs ao mesmo tempo, certifique-se de que uma única política não tenha mais de 100 VMs associadas a ela. Esta é uma prática recomendada. Atualmente, o cliente PowerShell não bloqueia explicitamente se houver mais de 100 VMs, mas a verificação está planejada para ser adicionada no futuro.
Os exemplos a seguir habilitam a proteção para o item, V2VM, usando a política, NewPolicy. Os exemplos diferem com base em se a VM está criptografada e que tipo de criptografia.
Para habilitar a proteção em VMs do Gerenciador de Recursos não criptografadas:
$pol = Get-AzRecoveryServicesBackupProtectionPolicy -Name "NewPolicy" -VaultId $targetVault.ID
Enable-AzRecoveryServicesBackupProtection -Policy $pol -Name "V2VM" -ResourceGroupName "RGName1" -VaultId $targetVault.ID
Para habilitar a proteção em VMs criptografadas (criptografadas usando BEK e KEK), você deve conceder permissão ao serviço de Backup do Azure para ler chaves e segredos do cofre de chaves.
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
Para habilitar a proteção em VMs criptografadas (criptografadas usando somente BEK), você deve conceder permissão ao serviço de Backup do Azure para ler segredos do cofre de chaves.
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
Nota
Se você estiver usando a nuvem do Azure Government, use o valor ff281ffe-705c-4f53-9f37-a40e6f2c68f3
para o parâmetro ServicePrincipalName no cmdlet Set-AzKeyVaultAccessPolicy .
Se desejar fazer backup seletivamente de alguns discos e excluir outros, conforme mencionado nesses cenários, você poderá configurar a proteção e fazer backup apenas dos discos relevantes, conforme documentado aqui.
Monitorando uma tarefa de backup
Você pode monitorar operações de longa execução, como trabalhos de backup, sem usar o portal do Azure. Para obter o status de um trabalho em andamento, use o cmdlet Get-AzRecoveryservicesBackupJob . Este cmdlet obtém os trabalhos de backup para um cofre específico, e esse cofre é especificado no contexto do cofre. O exemplo a seguir obtém o status de um trabalho em andamento como uma matriz e armazena o status na variável $joblist.
$joblist = Get-AzRecoveryservicesBackupJob –Status "InProgress" -VaultId $targetVault.ID
$joblist[0]
O resultado é semelhante ao seguinte exemplo:
WorkloadName Operation Status StartTime EndTime JobID
------------ --------- ------ --------- ------- ----------
V2VM Backup InProgress 4/23/2016 5:00:30 PM cf4b3ef5-2fac-4c8e-a215-d2eba4124f27
Em vez de sondar esses trabalhos para conclusão - o que é um código adicional desnecessário - use o cmdlet Wait-AzRecoveryServicesBackupJob . Este cmdlet pausa a execução até que o trabalho seja concluído ou o valor de tempo limite especificado seja atingido.
Wait-AzRecoveryServicesBackupJob -Job $joblist[0] -Timeout 43200 -VaultId $targetVault.ID
Gerir as cópias de segurança de VMs do Azure
Modificar uma política de proteção
Para modificar a política de proteção, use Set-AzRecoveryServicesBackupProtectionPolicy para modificar os objetos SchedulePolicy ou RetentionPolicy.
Modificar a hora agendada
Quando cria uma política de proteção, é-lhe atribuída uma hora de início por predefinição. Os exemplos a seguir mostram como modificar a hora de início de uma política de proteção.
$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
Modificando a retenção
O exemplo a seguir altera a retenção do ponto de recuperação para 365 dias.
$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
Configurando a retenção de instantâneos de restauração instantânea
Nota
A partir da versão 1.6.0 do Azure PowerShell, é possível atualizar o período de retenção de instantâneo de restauração instantânea na política usando o PowerShell
$bkpPol = Get-AzRecoveryServicesBackupProtectionPolicy -WorkloadType "AzureVM" -VaultId $targetVault.ID
$bkpPol.SnapshotRetentionInDays=7
Set-AzRecoveryServicesBackupProtectionPolicy -policy $bkpPol -VaultId $targetVault.ID
O valor padrão será 2. Você pode definir o valor com um mínimo de 1 e máximo de 5. Para políticas de backup semanais, o período é definido como 5 e não pode ser alterado.
Criando o grupo de recursos do Backup do Azure durante a retenção de instantâneo
Nota
A partir da versão 3.7.0 do Azure PowerShell, é possível criar e editar o grupo de recursos criado para armazenar instantâneos instantâneos.
Para entender mais sobre as regras de criação de grupos de recursos e outros detalhes relevantes, consulte a documentação do grupo de recursos do Backup do Azure para Máquinas Virtuais .
$bkpPol = Get-AzureRmRecoveryServicesBackupProtectionPolicy -name "DefaultPolicyForVMs"
$bkpPol.AzureBackupRGName="Contoso_"
$bkpPol.AzureBackupRGNameSuffix="ForVMs"
Set-AzureRmRecoveryServicesBackupProtectionPolicy -policy $bkpPol
Excluir discos para uma VM protegida
O backup de VM do Azure fornece um recurso para excluir ou incluir seletivamente discos que são úteis nesses cenários. Se a máquina virtual já estiver protegida pelo backup da VM do Azure e se for feito backup de todos os discos, você poderá modificar a proteção para incluir ou excluir discos seletivamente, conforme mencionado aqui.
Acionar um backup
Use Backup-AzRecoveryServicesBackupItem para disparar uma tarefa de backup. Se for o backup inicial, é um backup completo. Os backups subsequentes fazem uma cópia incremental. O exemplo a seguir usa um backup de VM para ser retido por 60 dias.
$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
O resultado é semelhante ao seguinte exemplo:
WorkloadName Operation Status StartTime EndTime JobID
------------ --------- ------ --------- ------- ----------
V2VM Backup InProgress 4/23/2016 5:00:30 PM cf4b3ef5-2fac-4c8e-a215-d2eba4124f27
Nota
O fuso horário dos campos StartTime e EndTime no PowerShell é UTC. No entanto, quando a hora é mostrada no portal do Azure, a hora é ajustada ao seu fuso horário local.
Alterar a política para itens de backup
Você pode modificar a política existente ou alterar a política do item de backup de Policy1 para Policy2. Para alternar políticas para um item de backup, busque a política relevante e faça backup do item e use o comando Enable-AzRecoveryServices com o item de backup como parâmetro.
$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
O comando aguarda até que o backup de configuração seja concluído e retorna a saída a seguir.
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
Proteção contra parar
Reter dados
Se desejar interromper a proteção, você pode usar o cmdlet Disable-AzRecoveryServicesBackupProtection PowerShell. Isso interromperá os backups agendados, mas os dados de backup até agora serão retidos para sempre.
$bkpItem = Get-AzRecoveryServicesBackupItem -BackupManagementType AzureVM -WorkloadType AzureVM -Name "<backup item name>" -VaultId $targetVault.ID
Disable-AzRecoveryServicesBackupProtection -Item $bkpItem -VaultId $targetVault.ID
Retomar backup
Se a proteção for interrompida e os dados de backup forem mantidos, você poderá retomar a proteção mais uma vez. Você precisa atribuir uma política para a proteção renovada. O cmdlet é o mesmo da política de alteração de itens de backup.
$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
Eliminar dados de cópia de segurança
Para remover completamente os dados de backup armazenados no cofre, adicione o sinalizador/switch '-RemoveRecoveryPoints' ao comando de proteção 'desabilitar'.
Disable-AzRecoveryServicesBackupProtection -Item $bkpItem -VaultId $targetVault.ID -RemoveRecoveryPoints
Restaurar uma VM do Azure
Há uma diferença importante entre restaurar uma VM usando o portal do Azure e restaurar uma VM usando o PowerShell. Com o PowerShell, a operação de restauração é concluída assim que os discos e as informações de configuração do ponto de recuperação são criados. A operação de restauração não cria a máquina virtual. Para criar uma máquina virtual a partir do disco, consulte a seção Criar a VM a partir de discos restaurados. Se você não quiser restaurar a VM inteira, mas quiser restaurar ou recuperar alguns arquivos de um backup de VM do Azure, consulte a seção de recuperação de arquivos.
Gorjeta
A operação de restauração não cria a máquina virtual.
O gráfico a seguir mostra a hierarquia de objetos de RecoveryServicesVault
baixo para o BackupRecoveryPoint
.
Para restaurar os dados de backup, identifique o item de backup e o ponto de recuperação que contém os dados point-in-time. Use Restore-AzRecoveryServicesBackupItem para restaurar dados do cofre para sua conta.
As etapas básicas para restaurar uma VM do Azure são:
- Selecione a VM.
- Escolha um ponto de recuperação.
- Restaure os discos.
- Crie a VM a partir de discos armazenados.
Agora, você também pode usar o PowerShell para restaurar diretamente o conteúdo de backup para uma VM (original/nova), sem executar as etapas acima separadamente. Para obter mais informações, consulte Restaurar dados para máquina virtual usando o PowerShell.
Selecione a VM (ao restaurar arquivos)
Para obter o objeto do PowerShell que identifica o item de backup correto, comece a partir do contêiner no cofre e percorra a hierarquia de objetos. Para selecionar o contêiner que representa a VM, use o cmdlet Get-AzRecoveryServicesBackupContainer e canalize-o para o cmdlet Get-AzRecoveryServicesBackupItem .
$namedContainer = Get-AzRecoveryServicesBackupContainer -ContainerType "AzureVM" -Status "Registered" -FriendlyName "V2VM" -VaultId $targetVault.ID
$backupitem = Get-AzRecoveryServicesBackupItem -Container $namedContainer -WorkloadType "AzureVM" -VaultId $targetVault.ID
Escolha um ponto de recuperação (ao restaurar arquivos)
Use o cmdlet Get-AzRecoveryServicesBackupRecoveryPoint para listar todos os pontos de recuperação para o item de backup. Em seguida, escolha o ponto de recuperação a ser restaurado. Se você não tiver certeza de qual ponto de recuperação usar, é uma boa prática escolher o ponto RecoveryPointType = AppConsistent mais recente na lista.
No script a seguir, a variável, $rp, é uma matriz de pontos de recuperação para o item de backup selecionado, dos últimos sete dias. A matriz é classificada em ordem inversa de tempo com o ponto de recuperação mais recente no índice 0. Use a indexação de matriz padrão do PowerShell para escolher o ponto de recuperação. No exemplo, $rp[0] seleciona o ponto de recuperação mais recente.
$startDate = (Get-Date).AddDays(-7)
$endDate = Get-Date
$rp = Get-AzRecoveryServicesBackupRecoveryPoint -Item $backupitem -StartDate $startdate.ToUniversalTime() -EndDate $enddate.ToUniversalTime() -VaultId $targetVault.ID
$rp[0]
O resultado é semelhante ao seguinte exemplo:
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
Restaurar os discos
Use o cmdlet Restore-AzRecoveryServicesBackupItem para restaurar os dados e a configuração de um item de backup para um ponto de recuperação. Depois de identificar um ponto de recuperação, use-o como o valor para o parâmetro -RecoveryPoint . Na amostra acima, $rp[0] foi o ponto de recuperação a ser usado. No código de exemplo a seguir, $rp[0] é o ponto de recuperação a ser usado para restaurar o disco.
Para restaurar os discos e as informações de configuração:
$restorejob = Restore-AzRecoveryServicesBackupItem -RecoveryPoint $rp[0] -StorageAccountName "DestAccount" -StorageAccountResourceGroupName "DestRG" -VaultId $targetVault.ID
$restorejob
Restaurar discos gerenciados
Nota
Se a VM com backup tiver discos gerenciados e você quiser restaurá-los como discos gerenciados, introduzimos o recurso do módulo Azure PowerShell RM v 6.7.0. em diante.
Forneça um parâmetro adicional TargetResourceGroupName para especificar o RG para o qual os discos gerenciados serão restaurados.
Importante
É altamente recomendável usar o parâmetro TargetResourceGroupName para restaurar discos gerenciados, pois isso resulta em melhorias significativas de desempenho. Se esse parâmetro não for fornecido, você não poderá se beneficiar da funcionalidade de restauração instantânea e a operação de restauração será mais lenta em comparação. Se o objetivo for restaurar discos gerenciados como discos não gerenciados, não forneça esse parâmetro e deixe clara a intenção fornecendo o -RestoreAsUnmanagedDisks
parâmetro. O -RestoreAsUnmanagedDisks
parâmetro está disponível a partir do Azure PowerShell 3.7.0 em diante. Em versões futuras, será obrigatório fornecer qualquer um desses parâmetros para a experiência de restauração correta.
$restorejob = Restore-AzRecoveryServicesBackupItem -RecoveryPoint $rp[0] -StorageAccountName "DestAccount" -StorageAccountResourceGroupName "DestRG" -TargetResourceGroupName "DestRGforManagedDisks" -VaultId $targetVault.ID
O arquivo VMConfig.JSON será restaurado para a conta de armazenamento e os discos gerenciados serão restaurados para o RG de destino especificado.
O resultado é semelhante ao seguinte exemplo:
WorkloadName Operation Status StartTime EndTime JobID
------------ --------- ------ --------- ------- ----------
V2VM Restore InProgress 4/23/2016 5:00:30 PM cf4b3ef5-2fac-4c8e-a215-d2eba4124f27
Use o cmdlet Wait-AzRecoveryServicesBackupJob para aguardar a conclusão do trabalho de restauração.
Wait-AzRecoveryServicesBackupJob -Job $restorejob -Timeout 43200
Quando o trabalho de restauração for concluído, use o cmdlet Get-AzRecoveryServicesBackupJobDetail para obter os detalhes da operação de restauração. A propriedade JobDetails tem as informações necessárias para reconstruir a VM.
$restorejob = Get-AzRecoveryServicesBackupJob -Job $restorejob -VaultId $targetVault.ID
$details = Get-AzRecoveryServicesBackupJobDetail -Job $restorejob -VaultId $targetVault.ID
Usando a identidade gerenciada para restaurar discos
O Backup do Azure também permite que você use a identidade gerenciada (MSI) durante a operação de restauração para acessar contas de armazenamento nas quais os discos precisam ser restaurados. Atualmente, essa opção é suportada apenas para restauração de disco gerenciado.
Se desejar usar a identidade gerenciada atribuída ao sistema do cofre para restaurar discos, passe um sinalizador adicional -UseSystemAssignedIdentity para o comando Restore-AzRecoveryServicesBackupItem. Se desejar usar uma identidade gerenciada atribuída pelo usuário, passe um parâmetro -UserAssignedIdentityId com a ID do Azure Resource Manager da identidade gerenciada do cofre como o valor do parâmetro. Consulte este artigo para saber como ativar a identidade gerenciada para seus cofres.
Restaurar discos seletivos
Um usuário pode restaurar seletivamente alguns discos em vez de todo o conjunto de backup. Forneça os LUNs de disco necessários como parâmetro para restaurá-los apenas em vez de todo o conjunto, conforme documentado aqui.
Importante
É preciso fazer backup seletivo de discos para restaurar seletivamente os discos. Mais detalhes são fornecidos aqui.
Depois de restaurar os discos, vá para a próxima seção para criar a VM.
Restaurar discos para uma região secundária
Se a restauração entre regiões estiver habilitada no cofre com o qual você protegeu suas VMs, os dados de backup serão replicados para a região secundária. Você pode usar os dados de backup para executar uma restauração. Execute as seguintes etapas para acionar uma restauração na região secundária:
Obtenha o ID do cofre com o qual suas VMs estão protegidas.
Selecione o item de backup correto a ser restaurado.
Selecione o ponto de recuperação apropriado na região secundária que você deseja usar para executar a restauração.
Para concluir esta etapa, execute este comando:
$rp=Get-AzRecoveryServicesBackupRecoveryPoint -UseSecondaryRegion -Item $backupitem -VaultId $targetVault.ID $rp=$rp[0]
Execute o cmdlet Restore-AzRecoveryServicesBackupItem com o
-RestoreToSecondaryRegion
parâmetro para disparar uma restauração na região secundária.Para concluir esta etapa, execute este comando:
$restorejob = Restore-AzRecoveryServicesBackupItem -RecoveryPoint $rp[0] -StorageAccountName "DestAccount" -StorageAccountResourceGroupName "DestRG" -TargetResourceGroupName "DestRGforManagedDisks" -VaultId $targetVault.ID -VaultLocation $targetVault.Location -RestoreToSecondaryRegion -RestoreOnlyOSDisk
O resultado vai ser semelhante ao exemplo seguinte:
WorkloadName Operation Status StartTime EndTime JobID ------------ --------- ------ --------- ------- ---------- V2VM CrossRegionRestore InProgress 4/23/2016 5:00:30 PM cf4b3ef5-2fac-4c8e-a215-d2eba4124f27
Execute o cmdlet Get-AzRecoveryServicesBackupJob com o
-UseSecondaryRegion
parâmetro para monitorar o trabalho de restauração.Para concluir esta etapa, execute este comando:
Get-AzRecoveryServicesBackupJob -From (Get-Date).AddDays(-7).ToUniversalTime() -To (Get-Date).ToUniversalTime() -UseSecondaryRegion -VaultId $targetVault.ID
O resultado vai ser semelhante ao exemplo seguinte:
WorkloadName Operation Status StartTime EndTime JobID ------------ --------- ------ --------- ------- ----- V2VM CrossRegionRestore InProgress 2/8/2021 4:24:57 PM 2d071b07-8f7c-4368-bc39-98c7fb2983f7
Restauração interzonal
Você pode restaurar VMs fixas de zona do Azure em qualquer zona de disponibilidade da mesma região.
Para restaurar uma VM para outra zona, especifique o TargetZoneNumber
parâmetro no cmdlet Restore-AzRecoveryServicesBackupItem .
$restorejob = Restore-AzRecoveryServicesBackupItem -RecoveryPoint $rp[0] -StorageAccountName "DestAccount" -StorageAccountResourceGroupName "DestRG" -VaultId $targetVault.ID -TargetZoneNumber 3
O resultado vai ser semelhante ao exemplo seguinte:
WorkloadName Operation Status StartTime EndTime JobID
------------ --------- ------ --------- ------- -----
zonevmeus2 Restore InProgress 1/3/2022 10:27:20 AM b2298...
A restauração interzonal é suportada apenas em cenários onde:
- A VM de origem é fixada por zona e NÃO está criptografada.
- O ponto de recuperação está presente apenas na camada do vault. Não há suporte apenas para snapshots ou para snapshots e camadas de vault.
- A opção de recuperação é criar uma nova VM ou restaurar discos. A opção Substituir discos substitui os dados de origem; portanto, a opção de zona de disponibilidade não é aplicável.
- Criação de VM/discos na mesma região quando a redundância de armazenamento do vault é ZRS. Observe que ele não funciona se a redundância de armazenamento do vault for GRS, mesmo que a VM de origem esteja fixada na zona.
- Criação de VM/discos na região emparelhada quando a redundância de armazenamento do vault está habilitada para Restauração entre regiões e se a região emparelhada oferece suporte a zonas.
Substituir discos na VM do Azure
Para substituir os discos e as informações de configuração, execute as seguintes etapas:
- Etapa 1: Restaurar os discos
- Etapa 2: Desanexar o disco de dados usando o PowerShell
- Etapa 3: Anexar disco de dados à VM do Windows com o PowerShell
Criar uma VM a partir de discos restaurados
Depois de restaurar os discos, use as etapas a seguir para criar e configurar a máquina virtual a partir do disco.
Nota
- AzureAz módulo 3.0.0 ou superior é necessário.
- Para criar VMs criptografadas a partir de discos restaurados, sua função do Azure deve ter permissão para executar a ação, Microsoft.KeyVault/vaults/deploy/action. Se sua função não tiver essa permissão, crie uma função personalizada com esta ação. Para obter mais informações, consulte Funções personalizadas do Azure.
- Depois de restaurar os discos, agora você pode obter um modelo de implantação que pode ser usado diretamente para criar uma nova VM. O YOu não precisa de cmdlets diferentes do PowerShell para criar VMs gerenciadas/não gerenciadas que são criptografadas/não criptografadas.
Criar uma VM usando o modelo de implantação
Os detalhes do trabalho resultante fornecem o URI do modelo que pode ser consultado e implantado.
$properties = $details.properties
$storageAccountName = $properties["Target Storage Account Name"]
$containerName = $properties["Config Blob Container Name"]
$templateBlobURI = $properties["Template Blob Uri"]
O modelo não é diretamente acessível, pois está sob a conta de armazenamento de um cliente e o contêiner fornecido. Precisamos do URL completo (juntamente com um token SAS temporário) para aceder a este modelo.
Primeiro, extraia o nome do modelo do templateBlobURI. O formato é mencionado abaixo. Você pode usar a operação de divisão no PowerShell para extrair o nome do modelo final dessa URL.
https://<storageAccountName.blob.core.windows.net>/<containerName>/<templateName>
Em seguida, o URL completo pode ser gerado como explicado aqui.
Set-AzCurrentStorageAccount -Name $storageAccountName -ResourceGroupName <StorageAccount RG name> $templateBlobFullURI = New-AzStorageBlobSASToken -Container $containerName -Blob <templateName> -Permission r -FullUri
Implante o modelo para criar uma nova VM, conforme explicado aqui.
New-AzResourceGroupDeployment -Name ExampleDeployment -ResourceGroupName ExampleResourceGroup -TemplateUri $templateBlobFullURI
Criar uma VM usando o arquivo de configuração
A seção a seguir lista as etapas necessárias para criar uma VM usando VMConfig
o arquivo.
Nota
É altamente recomendável usar o modelo de implantação detalhado acima para criar uma VM. Esta secção (pontos 1 a 6) será preterida em breve.
Consulte as propriedades do disco restaurado para obter os detalhes do trabalho.
$properties = $details.properties $storageAccountName = $properties["Target Storage Account Name"] $containerName = $properties["Config Blob Container Name"] $configBlobName = $properties["Config Blob Name"]
Defina o contexto de armazenamento do Azure e restaure o arquivo de configuração 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
Use o arquivo de configuração JSON para criar a configuração da VM.
$vm = New-AzVMConfig -VMSize $obj.'properties.hardwareProfile'.vmSize -VMName "testrestore"
Conecte o disco do sistema operacional e os discos de dados. Esta etapa fornece exemplos de várias configurações de VM gerenciadas e criptografadas. Use o exemplo que se adapta à sua configuração de VM.
- VMs não gerenciadas e não criptografadas - Use o exemplo a seguir para VMs não gerenciadas e não criptografadas.
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" }
- VMs não gerenciadas e criptografadas com ID do Microsoft Entra (somente BEK) - Para VMs criptografadas e não gerenciadas com ID do Microsoft Entra (criptografadas usando somente BEK), você precisa restaurar o segredo para o cofre de chaves antes de poder anexar discos. Para obter mais informações, consulte Restaurar uma máquina virtual criptografada a partir de um ponto de recuperação do Backup do Azure. O exemplo a seguir mostra como anexar SO e discos de dados para VMs criptografadas. Ao configurar o disco do SO, certifique-se de que menciona o tipo de SO relevante.
$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" }
- VMs não gerenciadas e criptografadas com Microsoft Entra ID (BEK e KEK) - Para VMs não gerenciadas e criptografadas com Microsoft Entra ID (criptografadas usando BEK e KEK), restaure a chave e o segredo no cofre de chaves antes de anexar os discos. Para obter mais informações, consulte Restaurar uma máquina virtual criptografada a partir de um ponto de recuperação do Backup do Azure. O exemplo a seguir mostra como anexar SO e discos de dados para VMs criptografadas.
$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" }
- VMs não gerenciadas e criptografadas sem ID do Microsoft Entra (somente BEK) - Para VMs criptografadas não gerenciadas sem ID do Microsoft Entra (criptografadas usando somente BEK), se keyVault/secret de origem não estiverem disponíveis , restaure os segredos para o cofre de chaves usando o procedimento em Restaurar uma máquina virtual não criptografada de um ponto de recuperação do Backup do Azure. Em seguida, execute os scripts a seguir para definir detalhes de criptografia no blob do sistema operacional restaurado (esta etapa não é necessária para um blob de dados). O $dekurl pode ser obtido a partir do keyVault restaurado.
O script a seguir precisa ser executado somente quando a keyVault/secret de origem não estiver disponível.
$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()
Depois que os segredos estiverem disponíveis e os detalhes de criptografia também estiverem definidos no Blob do sistema operacional, anexe os discos usando o script fornecido abaixo.
Se o keyVault/secrets de origem já estiver disponível, o script acima não precisa ser executado.
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" }
- VMs não gerenciadas e criptografadas sem ID do Microsoft Entra (BEK e KEK) - Para VMs não gerenciadas e criptografadas sem ID do Microsoft Entra (criptografadas usando BEK & KEK), se keyVault/key/secret de origem não estiverem disponíveis , restaure a chave e os segredos para o cofre de chaves usando o procedimento em Restaurar uma máquina virtual não criptografada de um ponto de recuperação do Backup do Azure. Em seguida, execute os scripts a seguir para definir detalhes de criptografia no blob do sistema operacional restaurado (esta etapa não é necessária para um blob de dados). O $dekurl e $kekurl podem ser buscados no keyVault restaurado.
O script abaixo precisa ser executado somente quando a fonte keyVault/key/secret não está disponível.
$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()
Depois que a chave/segredos estiverem disponíveis e os detalhes de criptografia estiverem definidos no Blob do sistema operacional, anexe os discos usando o script fornecido abaixo.
Se o keyVault/key/secrets de origem estiver disponível, o script acima não precisará ser executado.
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" }
VMs gerenciadas e não criptografadas - Para VMs gerenciadas não criptografadas, anexe os discos gerenciados restaurados. Para obter informações detalhadas, consulte Anexar um disco de dados a uma VM do Windows usando o PowerShell.
VMs gerenciadas e criptografadas com ID do Microsoft Entra (somente BEK) - Para VMs criptografadas gerenciadas com ID do Microsoft Entra (criptografadas usando somente BEK), anexe os discos gerenciados restaurados. Para obter informações detalhadas, consulte Anexar um disco de dados a uma VM do Windows usando o PowerShell.
VMs gerenciadas e criptografadas com Microsoft Entra ID (BEK e KEK) - Para VMs criptografadas gerenciadas com ID Microsoft Entra (criptografadas usando BEK e KEK), anexe os discos gerenciados restaurados. Para obter informações detalhadas, consulte Anexar um disco de dados a uma VM do Windows usando o PowerShell.
VMs gerenciadas e criptografadas sem ID do Microsoft Entra (somente BEK) - Para VMs gerenciadas e criptografadas sem ID do Microsoft Entra (criptografadas usando somente BEK), se keyVault/secret de origem não estiverem disponíveis , restaure os segredos para o cofre de chaves usando o procedimento em Restaurar uma máquina virtual não criptografada de um ponto de recuperação do Backup do Azure. Em seguida, execute os seguintes scripts para definir os detalhes de criptografia no disco restaurado do sistema operacional (esta etapa não é necessária para um disco de dados). O $dekurl pode ser obtido a partir do keyVault restaurado.
O script abaixo precisa ser executado somente quando a keyVault/secret de origem não estiver disponível.
$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
Depois que os segredos estiverem disponíveis e os detalhes de criptografia forem definidos no disco do sistema operacional, para anexar os discos gerenciados restaurados, consulte Anexar um disco de dados a uma VM do Windows usando o PowerShell.
- VMs gerenciadas e criptografadas sem ID do Microsoft Entra (BEK e KEK) - Para VMs gerenciadas e criptografadas sem ID do Microsoft Entra (criptografadas usando BEK & KEK), se keyVault/key/secret de origem não estiverem disponíveis , restaure a chave e os segredos para o cofre de chaves usando o procedimento em Restaurar uma máquina virtual não criptografada de um ponto de recuperação do Backup do Azure. Em seguida, execute os seguintes scripts para definir os detalhes de criptografia no disco do sistema operacional restaurado (esta etapa não é necessária para discos de dados). O $dekurl e $kekurl podem ser buscados no keyVault restaurado.
O script a seguir precisa ser executado somente quando a keyVault/key/secret de origem não estiver disponível.
$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
Depois que a chave/segredos estiverem disponíveis e os detalhes de criptografia forem definidos no disco do sistema operacional, para anexar os discos gerenciados restaurados, consulte Anexar um disco de dados a uma VM do Windows usando o PowerShell.
Defina as configurações de rede.
$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
Criar a máquina virtual.
New-AzVM -ResourceGroupName "test" -Location "WestUS" -VM $vm
Empurre a extensão ADE. Se as extensões ADE não forem enviadas por push, os discos de dados serão marcados como não criptografados, portanto, é obrigatório que as etapas abaixo sejam executadas:
Para VM com ID do Microsoft Entra - Use o seguinte comando para habilitar manualmente a criptografia para os discos de dados
Apenas BEK
Set-AzVMDiskEncryptionExtension -ResourceGroupName $RG -VMName $vm.Name -AadClientID $aadClientID -AadClientSecret $aadClientSecret -DiskEncryptionKeyVaultUrl $dekUrl -DiskEncryptionKeyVaultId $keyVaultId -VolumeType Data
BEK e KEK
Set-AzVMDiskEncryptionExtension -ResourceGroupName $RG -VMName $vm.Name -AadClientID $aadClientID -AadClientSecret $aadClientSecret -DiskEncryptionKeyVaultUrl $dekUrl -DiskEncryptionKeyVaultId $keyVaultId -KeyEncryptionKeyUrl $kekUrl -KeyEncryptionKeyVaultId $keyVaultId -VolumeType Data
Para VM sem ID do Microsoft Entra - Use o seguinte comando para habilitar manualmente a criptografia para os discos de dados.
Se durante a execução do comando ele solicitar AADClientID, você precisará atualizar seu Azure PowerShell.
Apenas BEK
Set-AzVMDiskEncryptionExtension -ResourceGroupName $RG -VMName $vm.Name -DiskEncryptionKeyVaultUrl $dekUrl -DiskEncryptionKeyVaultId $keyVaultId -SkipVmBackup -VolumeType "All"
BEK e KEK
Set-AzVMDiskEncryptionExtension -ResourceGroupName $RG -VMName $vm.Name -DiskEncryptionKeyVaultUrl $dekUrl -DiskEncryptionKeyVaultId $keyVaultId -KeyEncryptionKeyUrl $kekUrl -KeyEncryptionKeyVaultId $keyVaultId -SkipVmBackup -VolumeType "All"
Nota
Certifique-se de excluir manualmente os arquivos JASON criados como parte do processo de disco de restauração de VM criptografado.
Restaurar arquivos de um backup de VM do Azure
Além de restaurar discos, você também pode restaurar arquivos individuais de um backup de VM do Azure. A funcionalidade de restauração de arquivos fornece acesso a todos os arquivos em um ponto de recuperação. Faça a gestão dos ficheiros através do Explorador de Ficheiros como faria para os ficheiros normais.
As etapas básicas para restaurar um arquivo de um backup de VM do Azure são:
- Selecione a VM
- Escolher um ponto de recuperação
- Monte os discos do ponto de recuperação
- Copie os arquivos necessários
- Desmonte o disco
Selecione a VM (ao restaurar a VM)
Para obter o objeto do PowerShell que identifica o item de backup correto, comece a partir do contêiner no cofre e percorra a hierarquia de objetos. Para selecionar o contêiner que representa a VM, use o cmdlet Get-AzRecoveryServicesBackupContainer e canalize-o para o cmdlet Get-AzRecoveryServicesBackupItem .
$namedContainer = Get-AzRecoveryServicesBackupContainer -ContainerType "AzureVM" -Status "Registered" -FriendlyName "V2VM" -VaultId $targetVault.ID
$backupitem = Get-AzRecoveryServicesBackupItem -Container $namedContainer -WorkloadType "AzureVM" -VaultId $targetVault.ID
Escolha um ponto de recuperação (ao restaurar a VM)
Use o cmdlet Get-AzRecoveryServicesBackupRecoveryPoint para listar todos os pontos de recuperação para o item de backup. Em seguida, escolha o ponto de recuperação a ser restaurado. Se você não tiver certeza de qual ponto de recuperação usar, é uma boa prática escolher o ponto RecoveryPointType = AppConsistent mais recente na lista.
No script a seguir, a variável, $rp, é uma matriz de pontos de recuperação para o item de backup selecionado, dos últimos sete dias. A matriz é classificada em ordem inversa de tempo com o ponto de recuperação mais recente no índice 0. Use a indexação de matriz padrão do PowerShell para escolher o ponto de recuperação. No exemplo, $rp[0] seleciona o ponto de recuperação mais recente.
$startDate = (Get-Date).AddDays(-7)
$endDate = Get-Date
$rp = Get-AzRecoveryServicesBackupRecoveryPoint -Item $backupitem -StartDate $startdate.ToUniversalTime() -EndDate $enddate.ToUniversalTime() -VaultId $targetVault.ID
$rp[0]
O resultado é semelhante ao seguinte exemplo:
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
Monte os discos do ponto de recuperação
Use o cmdlet Get-AzRecoveryServicesBackupRPMountScript para obter o script para montar todos os discos do ponto de recuperação.
Nota
Os discos são montados como discos conectados iSCSI na máquina onde o script é executado. A montagem ocorre imediatamente e não incorre em quaisquer encargos.
Get-AzRecoveryServicesBackupRPMountScript -RecoveryPoint $rp[0] -VaultId $targetVault.ID
O resultado é semelhante ao seguinte exemplo:
OsType Password Filename
------ -------- --------
Windows e3632984e51f496 V2VM_wus2_8287309959960546283_451516692429_cbd6061f7fc543c489f1974d33659fed07a6e0c2e08740.exe
Execute o script na máquina onde você deseja recuperar os arquivos. Para executar o script, você deve digitar a senha fornecida. Depois que os discos forem anexados, use o Explorador de Arquivos do Windows para procurar os novos volumes e arquivos. Para obter mais informações, consulte o artigo Backup, Recover files from Azure virtual machine backup.
Desmonte os discos
Depois que os arquivos necessários forem copiados, use Disable-AzRecoveryServicesBackupRPMountScript para desmontar os discos. Certifique-se de desmontar os discos para que o acesso aos arquivos do ponto de recuperação seja removido.
Disable-AzRecoveryServicesBackupRPMountScript -RecoveryPoint $rp[0] -VaultId $targetVault.ID
Restaurar dados para a máquina virtual usando o PowerShell
Agora você pode restaurar dados diretamente para a VM original/alternativa sem executar várias etapas.
Restaurar dados para a VM original
$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
O último comando dispara uma operação de restauração de local original para restaurar os dados in-loco na VM existente.
Restaurar dados para uma VM recém-criada
$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
O último comando dispara uma operação de restauração de local alternativo para criar uma nova VM em Target_RG grupo de recursos de acordo com as entradas especificadas pelos parâmetros TargetVMName, TargetVNetName, TargetVNetResourceGroup, TargetSubnetName. Isso garante que os dados sejam restaurados na VM, rede virtual e sub-rede necessárias.
Próximos passos
Se preferir usar o PowerShell para interagir com seus recursos do Azure, consulte o artigo do PowerShell, Implantar e gerenciar backup para Windows Server. Se você gerencia backups do DPM, consulte o artigo Implantar e gerenciar backup para DPM.