Recuperación de máquinas virtuales en Hyper-V 2008 R2

El tema de este artículo no puede considerarse de candente actualidad… excepto si te ha ocurrido algo parecido y necesitas recuperar tus sistemas. De hecho la razón fundamental para escribirlo ha sido el tiempo empleado en buscar una información que ya publicada tiempo atrás.

Hace unos días uno de los IBM Blade de nuestro entorno de desarrollo perdió el disco duro del sistema operativo. Como estos equipos solo incorporan uno de ellos, esto significa que todo, el sistema operativo, las herramientas y la configuración de Hyper-V volaron, se evaporaron.

Por suerte (en realidad es por planificación, así que medalla para mí) se dieron dos circunstancias que han evitado la pérdida de datos:

  • Había un backup reciente.
  • Las máquinas virtuales se ejecutaban en una cabina de discos independiente que seguía funcionando

La primera ventaja permitió que recuperáramos con bastante velocidad dos de las máquinas virtuales que se necesitaban con mayor urgencia, para lo cual fue necesario buscarles acomodo en otros dos host donde quedaba algo de espacio (esto es un bien escaso en la infraestructura).

Sin embargo, había otras tres para las que era imposible encontrar acomodo, por lo que se hacía necesario recuperarlas donde estaban. Además surgieron algunos condicionantes que aconsejaban utilizar las máquinas que estaban en el almacenamiento, en lugar de sacarlas del sistema de backup.

Por tanto, mi escenario consiste en que una vez instalado el nuevo disco duro,  desplegado de nuevo el sistema operativo en el disco de recambio, parcheado, con el antivirus, metido en dominio y en perfecto estado de revista, y configurado correctamente el rol de Hyper-V, tengo un servidor que funciona estupendamente, un sistema de almacenamiento lleno de máquinas virtuales y una consola de hypervisor con cero máquinas virtuales que el equipo de desarrollo necesita volver a usar.

El objetivo es volver a registrar dichas máquinas virtuales en mi entorno.

Dibujado el escenario procedamos a su resolución.

Como es de recibo me puse a investigar en Internet, especialmente entre la gente que conozco con verdadero dominio de los hypervisores de Microsoft y encontré la solución, como no podía ser menos, por tanto quede claro que no me arrogo la autoría de la solución, solo cuento el proceso seguido.

Por lo que tengo entendido, este proceso “no está soportado” por Microsoft. Esto significa que la compañía de Redmond no se responsabiliza de tus… pifias.

Cuando se crea una máquina virtual, se crea un fichero .xml con un nombre bastante largo, en el que se almacena la configuración de la susodicha máquina. El nombre es un GUID que queda asociado a la máquina virtual y es único. Si alguna vez habéis creado dos máquinas virtuales con el mismo nombre, la razón de que pueda hacerse es que su GUID es diferente.

Las máquinas virtuales, en Hyper-V Windows Server 2008 R2 suelen guardarse en un directorio con el nombre de cada máquina en el cual es frecuente encontrar una estructura de directorios tal como sigue:

F:\Hyper-V\MyVM\

F:\Hyper-V\MyVM\snapshots

F:\Hyper-V\MyVM\Virtual Hard Disk

F:\Hyper-V\MyVM\Virtual Machines

Generalmente es en este último donde se guarda del fichero .xml que contiene la definición de la máquina, que a la postre es la clave de todo el proceso.

FEC2A5B9-2DDF-4C42-9259-ED981B96EA39.xml

Además de esto cuando se crea la máquina virtual, se genera un “Simbolic Link” a dicho fichero en una carpeta oculta del sistema:

En muchas referencias veréis que dicha carpeta se nombra como:

Como sabéis, es lo mismo.

En dicha carpeta podría estar ya creado el enlace simbólico, que es la herramienta que utiliza Hyper-V para mostrar la máquina virtual en la consola. Si existe será necesario deshacernos de él, pero no a lo bestia, sino con un cierto orden.

Volviendo la carpeta “F:\Hyper-V\MyVM\Virtual Machines “, el primer paso es hacerme una copia de seguridad del fichero .xml, que curiosamente, si se observa las definiciones de seguridad, incluye entre los permisos uno que corresponde al GUID de la máquina.

A partir de este unto comienza la recuperación de mi Máquina Virtual, procedimiento que consta de tres pasos, y yo siguiendo los consejos de los que más saben los seguí mediante scripts:

1. – “Desregistrar” (perdón por el palabro) la máquina virtual

Para ello uso un script que llamo unregister.cmd, cuyo contenido es:

La forma de utilizarlo es:

Una vez ejecutado, en la dirección que indique más atrás desaparecerá si existía, el enlace simbólico antiguo con el nombre de GUID de mi máquina virtual “perdida”.

2.- El siguiente paso es “Registrar” la máquina virtual, para lo que yo me hice dos scripts adicionales (lo suyo es hacerlo con uno solo, pero al no haberlo hecho nunca antes, preferí ser cauto):

register.cmd

Cuyo contenido es:

Esto crea un Nuevo enlace simbólico con el GUID de mi máquina

Y un Segundo script register2.cmd

Cuyo contenido es:

Que asocia al enlace simbólico los permisos correspondientes a la máquina Virtual:

Una vez ejecutados estos scripts, si detenemos y reiniciamos el servicio de Virtual Machine Manager desde la consola aparecerá nuestra máquina virtual, aunque no obstante al intentar ponerla en marcha obtendremos un mensaje de error causado por el hecho de que los ficheros .VHD de la máquina, es decir sus discos duros, no tienen agregados los permisos correspondientes a la máquina.

3. – Por tanto, y como había dicho, se hace necesario un tercer paso que consiste en asociar dichos permisos.

Para ello me cree un cuarto script que llamo registerdisk.cmd cuyo contenido es:

Que asigna a los discos duros los permisos correspondientes a la máquina Virtual:

Una vez hecho todo esto, nuestra máquina virtual estará recuperada.

Adicionalmente es necesario, ya que de no hacerlo obtendremos errores al respecto, desde la consola, asociar los adaptadores de red de la máquina virtual a las redes virtuales que correspondan.

Este procedimiento lo he repetido con éxito en cada máquina que tenía que recuperar.

Referencias:

https://blogs.technet.microsoft.com/davidcervigon/2008/04/17/cmo-registrar-a-mano-mquinas-virtuales-en-hyper-v/

De David Cervigón, quien a través de un correo electrónico,  me llevo a este:

https://blogs.msdn.microsoft.com/robertvi/2008/12/19/howto-manually-add-a-vm-configuration-to-hyper-v/

Descubre cómo SOGETI puede ayudarte a dar el salto a la nube.

Borja CabellosBorja Cabellos

Infrastructure Optimization Practice Leader | Soluciones Microsoft | SOGETI ESPAÑA

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s