Importar e Exportar Máquinas Virtuais do Hyper-V: Maneiras Infalíveis

Precisa exportar VMs do Hyper-V e transferi-las de um host para outro? E exportar uma VM da sua estação de trabalho de desenvolvimento para um host do Hyper-V em produção? Se sim, você veio ao lugar certo!

Neste artigo, você aprenderá como exportar e importar uma máquina virtual usando o Gerenciador do Hyper-V e o PowerShell. Pronto? Vamos lá!

Pré-requisitos

Este artigo será um tutorial. Se você planeja acompanhar passo a passo, precisará do seguinte:

  • PowerShell 7 ou Windows PowerShell 5.1 – Este tutorial se concentrará no PowerShell 7, mas os comandos funcionarão com o Windows PowerShell 5.1.
  • A Windows Server with Hyper-V enabled – This tutorial is based on the insider preview released March 2021, but any Windows Server from 2012R2 onward will suffice.
  • A virtual machine guest – This tutorial is using an Alpine Linux guest because it’s light on resources. You can use any guest Operating System you like.
  • A local Windows user account in the local administrators group on the Hyper-V host.

Passos para Exportar VMs do Hyper-V

Se você não é fã da linha de comando ou tem apenas uma VM para salvar no disco, o Gerenciador do Hyper-V é uma escolha sólida. Supondo que você esteja no seu host do Hyper-V e tenha uma máquina virtual em execução:

1. No menu de pesquisa do Windows, digite “hyper”. O console do Gerenciador do Hyper-V deve aparecer para você. Se sim, clique nele para abrir.

2. Encontre a VM a ser exportada, clique com o botão direito sobre ela e clique em Exportar.

Exporting VM using Hyper-V Manager The VM can be offline or running prior to exporting.

3. Em seguida, escolha uma pasta para salvar a VM e a configuração e clique em Exportar.

Export Virtual Machine Dialog.

O local que você escolher para salvar deve ter espaço de armazenamento suficiente para a VM exportada. Isso pode variar. Lembre-se de que você pode ter 60 GB alocados para o disco, mas isso não significa que o disco da VM tenha crescido para 60 GB.

Assim que o Hyper-V iniciar o processo de exportação, você verá o status da exportação na janela do Gerenciador do Hyper-V.

Export Status in Hyper-V Manager

Agora, confirme se todos os arquivos necessários estão presentes. Você deve ver três subpastas. Essas subpastas contêm todos os arquivos necessários para a VM exportada iniciar; Snapshots, Discos Rígidos Virtuais e Máquinas Virtuais.

Exported VM example
  • A pasta Snapshots contém informações de snapshot para a VM. A pasta pode estar vazia se não houver snapshots para a VM. Nesta pasta, você verá as extensões de arquivo VMCX, VMRS e VMGS. O arquivo binário VMCX contém informações de configuração específicas para sua VM exportada. O arquivo binário VMRS contém informações de estado de execução da VM. Sem este arquivo, a VM não pode inicializar. Por último, mas não menos importante, há o arquivo VMGS. Não tenho certeza para que serve este arquivo. Se você souber, deixe um comentário.

Se você tem experiência anterior com o Hyper-V, pode ter notado algo diferente sobre as extensões de arquivo. A partir do Windows Server 2016, o Hyper-V não utiliza mais arquivos XML para informações de configuração e, em vez disso, mudou para arquivos binários. Leia mais sobre estas novas extensões.

Se sua VM tiver mais de um checkpoint, você verá vários arquivos VMCX, VMRS e VMGS para cada checkpoint que a VM possui.

Snapshots folder example
  • A pasta Discos Rígidos Virtuais contém todos os arquivos de imagem de disco rígido ou *.vhdx para a VM. O arquivo AVHDX ou Disco rígido virtual automático é um disco de diferenciação usado para checkpoints de máquinas virtuais. Se sua máquina virtual tiver mais de um checkpoint, você verá vários arquivos AVHDX.
Virtual Hard Disks example
  • A pasta Máquinas Virtuais contém os arquivos de configuração da VM usados para iniciar a VM. Semelhante à pasta Snapshots, você verá arquivos binários VMCX, VMRS e VMGS aqui também.
Virtual Machines configuration files example

Se todas as três pastas estiverem presentes e contiverem arquivos, sua exportação foi bem-sucedida.

Usando o PowerShell para Exportar uma VM

Se você é um fã da linha de comando ou tem muitas VMs para exportar, usar o PowerShell para exportar uma VM também é uma ótima opção. Para exportar um Hyper-V com o PowerShell, use o cmdlet Export-VM. Para fazer isso, assumindo que você está no seu host Hyper-V e sua VM está offline:

1. Abra um console PowerShell.

2. Consulte o host Hyper-V para obter um inventário de suas VMs e o nome da VM a ser exportada. Este tutorial irá exportar uma VM chamada Alpine Linux 01.

Get-VM
Virtual machine name to be used in Export-VM command

3. Crie uma pasta para exportar a VM. Este tutorial irá exportar a VM para C:\Export_VM.

New-Item -ItemType Directory -Name 'Exported_VM\' -Path 'C:\'

4. Agora exporte a VM usando o cmdlet Export-VM, fornecendo o nome da máquina virtual para o parâmetro Name, o Caminho para a pasta onde deseja salvá-la e o parâmetro PassThru.

O parâmetro PassThru é opcional para retornar o objeto VM sendo exportado. Caso contrário, Export-VM não retornará nenhum resultado.

Export-VM -Name 'Alpine Linux 01' -Path 'C:\Exported_VM\' -Passthru
Successful export of an offline virtual machine.

Quando uma VM está em execução, o Export-VM não salvará automaticamente a memória. Se desejar salvar o conteúdo da memória em execução na VM, use o parâmetro -CaptureLiveState CaptureSavedState com o Export-VM. Saiba mais sobre a tecnologia usada para capturar memória.

5. Agora remova a VM do Hyper-V. Não se preocupe! Você a salvou!

Remove-VM -Name 'Alpine Linux 01'

Usando o Gerenciador do Hyper-V para Importar uma VM

Depois de exportar a VM, ocorreu um desastre e a VM desapareceu. Não se preocupe! Você já a exportou para o disco. Vamos recuperá-la. Para fazer isso, supondo que você esteja novamente no seu host Hyper-V:

1. Abra o Gerenciador do Hyper-V.

2. Clique no item de menu Importar Máquina Virtual localizado no lado direito da janela do Gerenciador do Hyper-V. Você será apresentado ao assistente Importar Máquina Virtual. Clique em Avançar.

Import Virtual Machine Wizard

3. Em seguida, insira o caminho para a máquina virtual exportada que deseja importar e clique em Avançar. Para este tutorial, a VM está salva em C:\Export_VM\Alpine Linux 01.

Ao contrário da importação com o PowerShell, o assistente localizará o arquivo VMCX da VM para você.

Import Virtual Machine Wizard

4. Quando o Hyper-V encontrar os arquivos de configuração da VM dentro da pasta (neste exemplo, C:\Exported_VM\Alpine Linux 01\Virtual Machines\), o Hyper-V solicitará que você selecione uma máquina virtual para importar. Escolha a VM desejada e clique em Avançar.

Import Virtual Machine Wizard

5. Em seguida, escolha o tipo de importação desejado. Primeiro, vamos explorar as opções com mais detalhes.

Ao escolher a opção ‘Registrar a máquina virtual no local (usar ID único existente)’, você assume que os arquivos da VM exportada estão em sua localização final, ou seja, você não está movendo a VM para uma nova pasta. Os arquivos da VM exportada se tornam o estado em execução da máquina virtual. O UID não muda.

O UID é o que o Hyper-V usa para identificar uma máquina virtual. Se o Hyper-V detectar que o mesmo UID está atualmente registrado, você receberá um erro.

Ao restaurar a máquina virtual, você pode escolher um local ou usar o local padrão do Hyper-V para copiar os arquivos da máquina virtual exportada.

Ao copiar a máquina virtual, é semelhante a restaurar uma VM exportada, mas com um novo ID único (UID). Um novo UID possibilita implantar a mesma máquina virtual várias vezes nos mesmos ou diferentes hosts do Hyper-V.

Para a demonstração, vamos selecionar o Tipo de Importação Copiar a máquina virtual. Copiar a VM gerará um novo ID único (UID). Cada VM do Hyper-V é identificada por um UID. Esta opção está bem por agora, então clique em Avançar.

Import Virtual Machine Wizard

6. Como você escolheu a opção Copiar, você pode alterar o local onde os arquivos da máquina virtual são armazenados. Clique em Avançar para aceitar as configurações padrão deste tutorial.

Import Virtual Machine Wizard

7. Por fim, escolha um local para a VM conhecido como uma Pasta de Armazenamento. A Pasta de Armazenamento é onde os arquivos VHDX e AVHDX residirão. Para este tutorial, aceite o local padrão e clique em Avançar.

Import Virtual Machine Wizard

8. Revise a página de resumo e quando estiver pronto, clique em Concluir para iniciar a importação.

Completing Import Virtual Machine Wizard

Quando o Hyper-V completar a importação, retornará para a janela do Gerenciador do Hyper-V e você verá a VM importada, como mostrado abaixo.

Imported VM

Usando o PowerShell para Importar uma VM

Se importar uma VM através do Gerenciador do Hyper-V não é sua praia, sem problemas. Use o PowerShell! Para importar uma VM com o PowerShell, você usará o cmdlet Import-VM. Considere o seguinte cenário:

Você exportou uma VM e ela está localizada em C:\Exported_VM\. Digamos que ela tenha sido excluída acidentalmente ou que seja necessária em um host Hyper-V diferente. Como ela já foi exportada, essencialmente está sendo backup e pode ser facilmente importada, portanto, restaurando a VM.

Se o cmdlet Export-VM salva uma VM no disco, o cmdlet Import-VM faz o oposto; ele lê uma VM do disco e a importa para o Hyper-V.

1. Supondo que você já tenha um console PowerShell aberto e esteja no diretório onde exportou a VM (C:\Exported_VM). Primeiro, execute o cmdlet Get-ChildItem com o switch Recurse para listar todos os arquivos e anote o nome do arquivo com a extensão *.vmcx usando o código abaixo:

Get-ChildItem -Recurse | Where-Object -Property Name -CLike *.vmcx

Você pode ver vários arquivos .vmcx dependendo se a VM exportada tinha snapshots. O único que você precisa para inicializar a VM é o arquivo VMCX localizado na pasta Virtual Machines.

Você pode ver uma saída semelhante ao exemplo abaixo:

Exported VM UID example – VM configuration file (vmcx)

2. Em seguida, use o cmdlet Import-VM com o parâmetro Path para especificar o arquivo de configuração das VMs (obtido na etapa anterior).

Import-VM -Path '.\Alpine Linux 01\Virtual Machines\.vmcx'

É isso! Você registrou a VM no local, usando o mesmo UID que a VM tinha quando foi exportada.

Importing a VM in place

3. Agora, verifique se o UID é o mesmo que o nome do arquivo .vmcx quando a VM foi exportada. Você pode fazer isso usando o código abaixo consultando o WMI:

(Get-CimInstance -Namespace Root\Virtualization\V2 -ClassName Msvm_VirtualSystemSettingData -Filter "ElementName = 'Alpine Linux 01'").InstanceID

Você deve ver uma saída semelhante ao exemplo abaixo:

UID Retained

O exemplo acima foi uma importação direta do arquivo de configuração da VM, e a VM manteve o UID original. Em um ambiente de produção, você pode querer gerar um novo UID para evitar que uma VM antiga seja confundida com uma nova VM. Aí é onde o parâmetro Copy entra em cena.

Importar uma máquina virtual usando o parâmetro Copy irá copiar os arquivos da localização original (C:\Exported_VM\) para os caminhos configurados do servidor Hyper-V. Quando usado com GenerateNewId, a VM pode ser importada várias vezes no mesmo servidor Hyper-V com um novo identificador exclusivo (UID).

Import-VM -Path '.\Alpine Linux 01\Virtual Machines\.vmcx' -Copy -GenerateNewId

Desta vez, a VM importada não contém o mesmo UID que quando exportada. Você vê os UIDs antigo e novo na captura de tela abaixo:

Showing previous UID prior to import vs. new UID created with Copy and GenerateNewID parameters.

O Hyper-V agora copia a VM para os caminhos padrão que você viu anteriormente ao importar uma VM usando o Gerenciador do Hyper-V, mas dá à VM um novo UID.

Próximos Passos

Neste guia, você aprendeu como exportar e importar uma VM do Hyper-V usando o PowerShell e o Gerenciador do Hyper-V integrado.

Agora que você sabe como exportar e importar máquinas virtuais do Hyper-V, tente configurar a Ativação Automática de Máquina Virtual (AVMA) para ativar máquinas virtuais do Windows Server hospedadas no Hyper-V.

Source:
https://adamtheautomator.com/export-hyper-v-vm/