Partilhar via


Tutorial: Restaurar uma VM com Azure CLI

Este tutorial descreve como restaurar uma VM completa usando CLI.

O Azure Backup cria pontos de recuperação que são armazenados em cofres de recuperação geo-redundantes. Quando restauras a partir de um ponto de recuperação, podes restaurar toda a VM ou ficheiros individuais.

Para informações sobre como usar o PowerShell para restaurar um disco e criar uma VM recuperada, consulte Backup e restore VMs Azure com PowerShell.

Agora, também pode usar a CLI para restaurar diretamente o conteúdo de backup numa VM (original/nova), sem ter de realizar os passos acima separadamente. Para mais informações, consulte Restaurar dados para máquina virtual usando CLI.

Prerequisites

  • Este tutorial requer a versão 2.0.18 ou posterior do Azure CLI. Se estiver usando o Azure Cloud Shell, a versão mais recente já está instalada.

  • Este tutorial requer uma VM Linux que tenha sido protegida com o Azure Backup. Para simular um processo acidental de eliminação e recuperação de VMs, cria-se uma VM a partir de um disco num ponto de recuperação. Se precisar de uma VM Linux protegida com o Azure Backup, veja Backup de uma máquina virtual no Azure com a CLI.

Visão geral de backup para VMs Azure

Quando o Azure inicia uma cópia de segurança, a extensão de backup na VM faz uma captura instantânea no momento. A extensão de backup é instalada na VM quando o primeiro backup é solicitado. O Azure Backup também pode tirar um instantâneo do armazenamento subjacente se a VM não estiver a correr quando o backup ocorre.

Por predefinição, o Azure Backup faz uma cópia de segurança consistente do sistema de ficheiros. Quando o Azure Backup captura o snapshot, os dados são transferidos para o cofre de Serviços de Recuperação. Para maximizar a eficiência, o Azure Backup identifica e transfere apenas os blocos de dados que mudaram desde o backup anterior.

Quando a transferência de dados está concluída, o snapshot é removido e cria-se um ponto de recuperação.

Liste pontos de recuperação disponíveis para uma VM

Para restaurar um disco, seleciona um ponto de recuperação como fonte dos dados de recuperação. Como a política padrão cria um ponto de recuperação por dia e mantém-no durante 30 dias, pode manter um conjunto de pontos de recuperação que lhe permite selecionar um determinado ponto temporal para a recuperação.

Para ver uma lista de pontos de recuperação disponíveis, use a lista de pontos de recuperação de backup do Arizona. O nome do ponto de recuperação é usado para recuperar discos. Neste tutorial, queremos o ponto de recuperação mais recente disponível. O --query [0].name parâmetro seleciona o nome mais recente do ponto de recuperação da seguinte forma:

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

Restaurar um disco de VM

Important

É fortemente recomendado usar o Az CLI versão 2.0.74 ou posterior para obter todos os benefícios de uma restauração rápida, incluindo a restauração gerida do disco. É melhor usares sempre a versão mais recente.

Restauração de Disco Gerido

Se a VM com cópia de segurança tiver discos geridos e se a intenção for restaurar discos geridos a partir do ponto de recuperação, deve primeiro fornecer uma conta de armazenamento Azure. Esta conta de armazenamento é usada para armazenar a configuração da VM e o modelo de implementação que pode ser posteriormente usado para implementar a VM a partir dos discos restaurados. Depois, também fornece um grupo de recursos alvo para os discos geridos serem restaurados.

  1. Para criar uma conta de armazenamento, use az storage account create. O nome da conta de armazenamento deve ser todo em minúsculas e ser globalmente único. Substitua mystorageaccount pelo seu próprio nome único:

    az storage account create \
        --resource-group myResourceGroup \
        --name mystorageaccount \
        --sku Standard_LRS
    
  2. Restaure o disco a partir do seu ponto de recuperação com az backup restore restore-disks. Substitua mystorageaccount pelo nome da conta de armazenamento que criou no comando anterior. Substitua myRecoveryPointName pelo nome do ponto de recuperação que obtiveste na saída do comando az backup recoverypoint list anterior. Fornece também o grupo de recursos alvo para onde os discos geridos são restaurados.

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

    Warning

    Se não for fornecido o grupo-alvo-recurso , então os discos geridos serão restaurados como discos não geridos na conta de armazenamento dada. Isto terá consequências significativas no tempo de restauração, pois o tempo necessário para restaurar os discos depende inteiramente da conta de armazenamento em questão. Só obterá o benefício da restauração instantânea quando for fornecido o parâmetro de grupo de recursos alvo. Se a intenção for restaurar discos geridos como não-geridos, então não forneça o parâmetro grupo de recursos de destino e forneça o parâmetro restaurar-como-não-gerido-disco, como mostrado abaixo. Este parâmetro está disponível a partir do Azure CLI 3.4.0 em diante.

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

Isto vai restaurar discos geridos como discos não geridos na conta de armazenamento dada e não vai tirar partido da funcionalidade de restauro 'instantâneo'. Nas versões futuras do CLI, será obrigatório fornecer o parâmetro do grupo de recursos de destino ou o parâmetro restaurar-como-unmanaged-disk.

Restaurar discos para a região secundária

Os dados de backup replicam-se para a região secundária quando ativas a restauração multi-região no vault onde protegeste as tuas VMs. Pode usar os dados de backup para realizar uma operação de restauro.

Para restaurar discos na região secundária, use a --use-secondary-region flag na utilização do comando az backup restore restore-disks. Certifique-se de especificar uma conta de armazenamento alvo localizada na região secundária.

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

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 em outra zona, especifique o parâmetro TargetZoneNumber no comando az backup restore restore-disks.

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

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.

Restauração de discos não geridos

Se a VM com backup tiver discos não geridos e se a intenção for restaurar discos do ponto de recuperação, o primeiro passo é fornecer uma conta de armazenamento Azure. Esta conta de armazenamento é usada para armazenar a configuração da VM e o modelo de implementação que pode ser posteriormente usado para implementar a VM a partir dos discos restaurados. Por padrão, os discos não geridos diretamente serão restaurados para as suas contas de armazenamento originais. Se quiser restaurar todos os discos não geridos num único local, então a conta de armazenamento pode também ser usada como local de preparação para esses discos.

Em passos adicionais, o disco restaurado é usado para criar uma VM.

  1. Para criar uma conta de armazenamento, use az storage account create. O nome da conta de armazenamento deve ser todo em minúsculas e ser globalmente único. Substitua mystorageaccount pelo seu próprio nome único:

    az storage account create \
        --resource-group myResourceGroup \
        --name mystorageaccount \
        --sku Standard_LRS
    
  2. Restaure o disco a partir do seu ponto de recuperação com az backup restore restore-disks. Substitua mystorageaccount pelo nome da conta de armazenamento que criou no comando anterior. Substitua myRecoveryPointName pelo nome do ponto de recuperação que obteve a partir da saída do comando az backup recoverypoint list anterior.

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

Como mencionado acima, os discos não geridos serão restaurados na sua conta de armazenamento original. Isto proporciona o melhor desempenho de restauração. Mas se todos os discos não geridos tiverem de ser restaurados na conta de armazenamento atribuída, então use a flag relevante mostrada abaixo.

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

## Monitor the restore job

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

```azurecli-interactive
az backup job list \
    --resource-group myResourceGroup \
    --vault-name myRecoveryServicesVault \
    --output table

A saída é semelhante ao seguinte exemplo, que mostra que o trabalho de restauro é InProgress:

Name      Operation        Status      Item Name    Start Time UTC       Duration
--------  ---------------  ----------  -----------  -------------------  --------------
7f2ad916  Restore          InProgress  myvm         2017-09-19T19:39:52  0:00:34.520850
a0a8e5e6  Backup           Completed   myvm         2017-09-19T03:09:21  0:15:26.155212
fe5d0414  ConfigureBackup  Completed   myvm         2017-09-19T03:03:57  0:00:31.191807

Quando o Estado do trabalho de restauro indica Concluído, a informação necessária (configuração da VM e o modelo de implementação) foi restaurada para a conta de armazenamento.

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 gerida atribuída ao sistema do cofre para restaurar discos, passe o parâmetro adicional --mi-system-assigned ao comando az backup restore restore-disks. Se desejar usar uma identidade gerida atribuída pelo utilizador, passe um parâmetro --mi-user-assigned com o ID do Azure Resource Manager da identidade gerida do cofre como valor do parâmetro. Consulte este artigo para saber como ativar a identidade gerenciada para seus cofres.

Criar uma VM a partir do disco restaurado

O passo final é criar uma VM a partir dos discos restaurados. Podes usar o modelo de implementação descarregado para a conta de armazenamento específica para criar a VM.

Buscar os detalhes da Tarefa

Os detalhes do trabalho resultante fornecem o URI do modelo que pode ser consultado e implantado. Usa o comando job show para obter mais detalhes sobre o trabalho restaurado acionado.

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

O resultado desta consulta fornecerá todos os detalhes, mas estamos interessados apenas no conteúdo da conta de armazenamento. Podemos usar a capacidade de consulta do Azure CLI para obter os detalhes relevantes

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

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

Obter o modelo de implementação

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, extrair o URI do blob de modelo a partir dos detalhes do trabalho

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

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

O URI do blob do modelo terá este formato e extrairá o nome do modelo

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

Assim, o nome do modelo do exemplo acima será azuredeploy1fc2d55d-f0dc-4ca6-ad48-aca0519c0232.json e o nome do contentor é myVM-daa1931199fd4a22ae601f46d8812276

Agora obtenha o token SAS para este contentor e modelo, conforme detalhado aqui

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

Implemente o template para criar a VM

Agora implementa o modelo para criar a VM conforme explicado aqui.

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

Para confirmar que a sua VM foi criada a partir do disco recuperado, liste as VMs no seu grupo de recursos com a lista de VMs az da seguinte forma:

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

Restaurar dados na máquina virtual usando CLI

Agora você pode restaurar dados diretamente para a VM original/alternativa sem executar várias etapas.

Restaurar dados para a VM original

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

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

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

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

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. Isto garante que os dados são restaurados na VM, rede virtual e sub-rede necessárias.

Próximos passos

Neste tutorial, restauraste um disco a partir de um ponto de recuperação e depois criaste uma VM a partir desse disco. Você aprendeu a:

  • Liste e selecione pontos de recuperação
  • Restaurar um disco a partir de um ponto de recuperação
  • Criar uma VM a partir do disco restaurado

Avance para o próximo tutorial para aprender sobre como restaurar ficheiros individuais a partir de um ponto de recuperação.