El otro día, leyendo el Blog de David Cervigón, en particular el Post de Cómo registrar a mano Máquinas Virtuales en Hyper-V (mil gracias por el mismo), me hizo caer en un error que tenía desde hace tiempo, relacionado con los ficheros de configuración XML de Hyper-V.
Por defecto, Hyper-V almacenada sus ficheros de configuración en la ubicación C:\ProgramData\Microsoft\Windows\Hyper-V\Virtual Machines. Sin embargo, al crear una nueva Máquina Virtual, en el asistente de Hyper-V Manager, podemos establecer una ubicación alternativa. Además, en la configuración de Hyper-V, es posible establecer cual es la ruta que deseamos utilizar para almacenar los ficheros de configuración XML de Máquinas Virtuales Hyper-V.
Sin embargo, da igual (en cierto modo), ya que si deseamos utilizar una ruta diferente de la ruta por defecto para el almacenamiento de los ficheros de configuración de las Máquinas Virtuales, la ruta por defecto se seguirá utilizando, sólo que en este caso, la ruta por defecto almacenará un acceso directo al fichero de configuración de la Máquina Virtual. Esto se puede apreciar en la siguiente pantalla capturada, donde pueden observarse los accesos directos a seis Máquinas Virtuales de Hyper-V, ¿verdad?
Pues no. Triste efecto óptico, cual oasis en el desierto. Aunque a priori pueden parecer Accesos Directos se tratan de Symbolic Links. Esto ve claramente al lanzar un DIR desde una ventana de símbolo del sistema (la prueba del algodón), como se muestra en la siguiente pantalla capturada:
Bien. Con esto, si tenemos una copia en frío completa de una Máquina Virtual, podemos plantearnos dos formas alternativas de recuperación de la misma:
- Crear el correspondiente Symbolic Link al fichero de configuración XML de la Máquina Virtual, en la ruta por defecto de los ficheros de configuración de Máquinas Virtuales de Hyper-V.
- Copiar el fichero de configuración XML de la Máquina Virtual, a la ruta por defecto de los ficheros de configuración de Máquinas Virtuales de Hyper-V.
Aparentemente funcionan ambos casos, ya que desde luego, creando un acceso directo, no conseguimos na-de-na. Sin embargo, realizado este paso, lo siguiente es intentar arrancar la Máquina Virtual. Mensaje acojonativo: An error ocurred while attempting to change th estate of virtual machine test.
Sin embargo, se trata de un simple problema de permisos. El Workaround (en castellano, ñapa) que utilicé para solucionarlo fue dar permisos de control total a Users sobre el fichero de configuración de la Máquina Virtual (en mi caso de prueba, probé a copiar el fichero de configuración de la Máquina Virtual, en vez de crear el Symbolic Link), que para un PC de pruebas, pues vale, y además funciona.
David lo explica mucho mejor en su Post sobre Cómo registrar a mano Máquinas Virtuales en Hyper-V, y ofrece una solución mucho más elegante (con script incluido), de gran utilidad para trabajar con Máquinas Virtuales sobre discos externos (el pan de cada día para muchos). El script utiliza el comando mklink para crear el Symbolic Link (disponible desde Windows Server 2008 y Windows Vista) y la utilidad icacls (disponible de Windows Server 2003 SP2 y Windows Vista) para conceder permisos NTFS.
En consecuencia, una alternativa para copiar o mover Máquinas Virtual con Export e Import, podría ser la utilización de dicho Script (o realizar las tareas del mismo de forma manual).
Actualizado 28/12/2009: He probado este procedimiento sobre Windows Server 2008 R2, sin éxito. Sin embargo, he encontrado una manera alternativa (NO SOPORTADA) de Registrar manualmente una Máquina Virtual de Hyper-V en Windows Server 2008 R2, que me ha funcionado OK.
Actualización 18/02/2010: En un nuevo escenario de restauración, he vuelto a intentarlo sobre Windows Server 2008 R2 y ha funcionado, pero con truco. Tras recuperar las Máquinas Virtuales con los comandos mklink e icacls, me ha sido necesario reiniciar el servidor, para que Hyper-V reconociese las Máquinas Virtuales. Tras esto, reconfigurar las Redes Virtuales, y andando. Está claro: no hay nada como la necesidad !!