¿Necesitas exportar máquinas virtuales de Hyper-V y transferirlas de un host a otro? ¿Qué tal exportar una MV desde tu estación de trabajo de desarrollo a un host de Hyper-V en producción? Si es así, ¡has venido al lugar correcto!
En este artículo, aprenderás cómo exportar e importar una máquina virtual utilizando el Administrador de Hyper-V y PowerShell. ¿Listo? ¡Vamos!
Prerrequisitos
Este artículo será un tutorial. Si planeas seguir paso a paso, necesitarás lo siguiente:
- PowerShell 7 o Windows PowerShell 5.1: Este tutorial se centrará en PowerShell 7, pero los comandos funcionarán con 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.
Pasos para Exportar Máquinas Virtuales de Hyper-V
Si no eres fanático de la línea de comandos o simplemente tienes una sola MV para guardar en disco, el administrador de Hyper-V es una opción sólida. Suponiendo que estás en tu host de Hyper-V y tienes una máquina virtual en ejecución:
1. En el menú de búsqueda de Windows, escribe “hyper”. Debería aparecer la consola del Administrador de Hyper-V para ti. Si es así, haz clic en ella para abrir.
2. Encuentra la MV a exportar, haz clic derecho sobre ella y selecciona Exportar.

3. A continuación, elige una carpeta para guardar la MV y la configuración, y haz clic en Exportar.

La ubicación que elijas para guardar debe tener suficiente espacio de almacenamiento para la máquina virtual exportada. Esto variará. Recuerda que puedes tener asignados 60 GB para el disco, pero eso no significa que el disco de la máquina virtual haya crecido a 60 GB.
Una vez que Hyper-V inicia el proceso de exportación, verás el estado de la exportación en la ventana del Administrador de Hyper-V.

4. Ahora, confirma que todos los archivos necesarios estén presentes. Deberías ver tres subcarpetas. Estas subcarpetas contienen todos los archivos necesarios para que la máquina virtual exportada se inicie; Instantáneas, Discos duros virtuales y Máquinas virtuales.

- La carpeta Instantáneas contiene información de instantáneas para la máquina virtual. La carpeta puede estar vacía si no hay instantáneas para la máquina virtual. En esta carpeta, verás las extensiones de archivo VMCX, VMRS y VMGS. El archivo binario VMCX contiene información de configuración específica de tu máquina virtual exportada. El archivo binario VMRS contiene información del estado de ejecución de la máquina virtual. Sin este archivo, la máquina virtual no puede arrancar. Por último, pero no menos importante, está el archivo VMGS. No estoy seguro para qué sirve este archivo. Si lo sabes, deja un comentario.
Si tienes experiencia previa con Hyper-V, es posible que hayas notado algo diferente acerca de las extensiones de archivo. A partir de Windows Server 2016, Hyper-V ya no utiliza archivos XML para la información de configuración y en su lugar cambió a archivos binarios. Lee más sobre estas nuevas extensiones.
Si su máquina virtual tiene más de un punto de control, verá varios archivos VMCX, VMRS y VMGS para cada punto de control que tenga la VM.

- La carpeta Discos Duros Virtuales contiene todos los archivos de imagen de disco duro o *.vhdx para la VM. El archivo AVHDX o Disco duro virtual automático es un disco de diferenciación utilizado para los puntos de control de la máquina virtual. Si su máquina virtual tiene más de un punto de control, verá varios archivos AVHDX.

- La carpeta Máquinas Virtuales contiene los archivos de configuración de la VM utilizados para arrancar la VM. Similar a la carpeta Instantáneas, aquí también verá archivos binarios VMCX, VMRS y VMGS.

Si las tres carpetas están presentes y contienen archivos, la exportación fue exitosa.
Uso de PowerShell para exportar una VM
Si le gusta la línea de comandos o tiene muchas VM para exportar, usar PowerShell para exportar una VM también es una excelente opción. Para exportar un Hyper-V con PowerShell, use el Export-VM
cmdlet. Para hacerlo, asumiendo que está en su host Hyper-V y su VM está desconectada:
1. Abra una consola de PowerShell.
2. Consulte al host Hyper-V para obtener un inventario de sus VM y el nombre de la VM a exportar. Este tutorial exportará una VM llamada Alpine Linux 01
.

Export-VM
command3. Cree una carpeta para exportar la VM. Este tutorial exportará la VM a C:\Export_VM.
4. Ahora exporta la VM utilizando el cmdlet Export-VM
proporcionando el nombre de la máquina virtual para el parámetro Name
, la Ruta
a la carpeta donde se guardará, y el parámetro PassThru
.
El parámetro
PassThru
es opcional para devolver el objeto VM que se está exportando. De lo contrario,Export-VM
no devuelve ningún resultado.

Cuando una VM está en funcionamiento,
Export-VM
no guarda automáticamente la memoria. Si deseas guardar el contenido de la memoria en ejecución en la VM, utiliza el parámetro-CaptureLiveState CaptureSavedState
conExport-VM
. Aprende más sobre la tecnología utilizada para capturar la memoria.
5. Ahora elimina la VM de Hyper-V. ¡No te preocupes! ¡La tienes guardada!
Usando el Administrador de Hyper-V para Importar una VM
Una vez que has exportado la VM, ha ocurrido un desastre y la VM ha desaparecido. ¡No te preocupes! Ya la has exportado al disco. Vamos a recuperarla. Para hacerlo, asumiendo que estás de nuevo en tu host de Hyper-V:
1. Abre el Administrador de Hyper-V.
2. Haz clic en el elemento de menú Importar Máquina Virtual ubicado en el lado derecho de la ventana del Administrador de Hyper-V. Se te presenta el asistente Importar Máquina Virtual. Haz clic en Siguiente.

3. A continuación, ingrese la ruta de la máquina virtual exportada que desea importar y haga clic en Siguiente. Para este tutorial, la VM se guarda en C:\Export_VM\Alpine Linux 01.
A diferencia de cuando se importa con PowerShell, el asistente localizará el archivo VMCX de la VM por usted.

4. Una vez que Hyper-V descubre los archivos de configuración de la VM dentro de la carpeta (en este ejemplo, C:\Exported_VM\Alpine Linux 01\Virtual Machines\), Hyper-V le pedirá que seleccione una máquina virtual para importar. Elija la VM que desea importar y haga clic en Siguiente.

5. A continuación, elija el tipo de importación que desea realizar. Primero, exploremos las opciones con más detalle.
Cuando elige la opción ‘Registrar la máquina virtual en su lugar (usar ID único existente)’, está asumiendo que los archivos de VM exportados están en su ubicación final, lo que significa que no está moviendo la VM a una nueva carpeta. Los archivos de VM exportados se convierten en el estado de ejecución de la máquina virtual. El UID no cambia.
El UID es lo que Hyper-V usa para identificar una máquina virtual. Si Hyper-V detecta que el mismo UID está actualmente registrado, recibirá un error.
Cuando restaure la máquina virtual, puede elegir una ubicación o utilizar la ubicación predeterminada de Hyper-V para que se copien los archivos de la máquina virtual exportada.
Cuando copia la máquina virtual, es similar a restaurar una VM exportada, pero con un nuevo ID único (UID). Un nuevo UID hace posible implementar la misma máquina virtual varias veces en los mismos o diferentes hosts de Hyper-V.
Para la demostración, seleccionemos el Tipo de Importación Copiar la máquina virtual. Copiar la MV generará un nuevo ID único (UID). Cada MV de Hyper-V está identificada por un UID. Esta opción está bien por ahora, así que haz clic en Siguiente.

6. Dado que elegiste la opción Copiar, puedes cambiar la ubicación donde se almacenarán los archivos de la máquina virtual. Haz clic en Siguiente para aceptar los valores predeterminados en este tutorial.

7. Finalmente, elige una ubicación para la MV conocida como Carpeta de Almacenamiento. La Carpeta de Almacenamiento es donde residirán los archivos VHDX y AVHDX. Para este tutorial, acepta la ubicación predeterminada y haz clic en Siguiente.

8. Revisa la página de resumen y cuando estés listo, haz clic en Finalizar para comenzar la importación.

Cuando Hyper-V completa la importación, vuelve a la ventana del Administrador de Hyper-V y ahora verás la MV importada, como se muestra a continuación.

Usando PowerShell para Importar una MV
Si importar una MV a través del Administrador de Hyper-V no es lo tuyo, ¡no hay problema! ¡Usa PowerShell! Para importar una MV con PowerShell, utilizarás el cmdlet Import-VM. Considera el siguiente escenario:
Has exportado una máquina virtual, y está ubicada en C:\Exported_VM\, y digamos que se elimina accidentalmente, o tal vez se necesita en un host Hyper-V diferente. Dado que ya está exportada, esencialmente está respaldada y puede importarse fácilmente, por lo tanto, restaurando la VM.
Si el comando Export-VM
guarda una VM en disco, el cmdlet Import-VM
hace lo contrario; lee una VM desde el disco y la importa en Hyper-V.
1. Suponiendo que ya tienes abierta una consola de PowerShell y estás en el directorio donde exportaste una VM (C:\Exported_VM). Primero, ejecuta el cmdlet Get-ChildItem
con el interruptor Recurse
para enumerar todos los archivos y toma nota del nombre de archivo con la extensión *.vmcx utilizando el código a continuación:
Puedes ver varios archivos .vmcx dependiendo de si la VM exportada tenía instantáneas. El único que necesitas para arrancar la VM es el archivo VMCX ubicado en la carpeta Virtual Machines.
Puedes ver una salida similar al ejemplo a continuación:

2. A continuación, usa el cmdlet Import-VM
con el parámetro Path
para especificar el archivo de configuración de las VMs (obtenido en el paso anterior).
¡Eso es todo! Has registrado la VM en su lugar, utilizando el mismo UID que la VM tenía cuando se exportó.

3. Ahora verifica que el UID sea el mismo que el nombre de archivo .vmcx cuando se exportó la VM. Puedes hacerlo utilizando el siguiente código consultando WMI:
Deberías ver una salida similar al ejemplo a continuación:

El ejemplo anterior fue importado directamente desde el archivo de configuración de la VM, y la VM conservó el UID original. En un entorno de producción, es posible que desees generar un nuevo UID para evitar que una VM antigua sea confundida con una nueva. Ahí es donde entra en juego el parámetro Copy
.
Importar una máquina virtual usando el parámetro
Copy
copiará los archivos desde la ubicación original (C:\Exported_VM\) hacia las rutas configuradas del servidor Hyper-V. Cuando se usa conGenerateNewId
, la VM puede ser importada múltiples veces en el mismo servidor Hyper-V con un identificador único nuevo (UID).
Esta vez, la VM importada no contiene el mismo UID que cuando fue exportada. Puedes ver los UID antiguos y nuevos en la captura de pantalla a continuación:

Ahora, Hyper-V copia la VM a las rutas predeterminadas que viste anteriormente al importar una VM usando Hyper-V Manager, pero le asigna un nuevo UID a la VM.
Próximos Pasos
En esta guía, has aprendido cómo exportar e importar una VM de Hyper-V usando PowerShell y el administrador integrado de Hyper-V.
Ahora que sabes cómo exportar e importar máquinas virtuales de Hyper-V, intenta configurar la Activación Automática de Máquinas Virtuales (AVMA) para activar máquinas virtuales de Windows Server alojadas en Hyper-V.