Descripción del Escenario
Partimos de un escenario formado por un Host de Hyper-V sobre Windows Server 2008 (sin R2), ejecutando 12 Máquinas Virtuales, ninguna de las cuales tiene Snapshots creados. Para ello, el Host está dotado de tres discos duros físicos (Seagate SATA2 de 7200rpm, para quién le interese el dato), uno más pequeño para el Sistema Operativo, y otros dos más hermosos para hospedar las Máquinas Virtuales, Discos Duros Virtuales (VHD), etc.
El problema, es que un buen día (justo el día de Navidad... putos Renos), el servidor amanece sin dos discos: han cascao el disco del sistema y uno de los discos de datos que almacenan las Máquinas Virtuales. Es decir, que el bicho no arranca. Montando los discos sobre otra Máquina Física, es posible recuperar el disco de datos y todas sus Máquinas Virtuales (dios salve al CHKDSK /F /R). Sin embargo, el disco de sistema contenía varias particiones, y justo la del sistema, no era reconocida por Windows (identificaba la partición como RAW, en vez de cómo NTFS). En esta ocasión, CHKDSK no llegó a ser suficiente (suerte, que los datos están salvados, y no es necesario recuperar la última copia de hace un mes). No he probado con otras herramientas de recuperación de discos (ej: OnTrack), pues al comprobar que las Máquinas Virtuales estaban todas salvadas, el susto se reduce a un mal menor: jode, pero duele poco.
Como conclusión, sacrificamos el disco de sistema: Reinstalamos Windows. Como consecuencia, eliminamos y volvemos a crear la partición para el Sistema Operativo, formateamos, y comprobamos con CHKDSK /F /R, que se encuentra en buen estado de salud. Tras ello, realizamos una instalación nueva de Windows Server 2008 R2 (efectivamente, antes lo teníamos sin R2, y ahora instalamos con R2), procedemos a habilitar o añadir el Role de Hyper-V, configurar las Redes Virtuales de Hyper-V, y procedemos a registrar manualmente una Máquina Virtual, por el método NO SOPORTADO que ya teníamos probado (con éxito) sobre Windows Server 2008 (sin R2). Sin embargo, nuestro esfuerzo no se ve recompensado, y o bien estamos con la caraja, o tras múltiples y varios intentos no conseguimos registrar o recuperar la Máquina Virtual. ¿Qué hacemos? ¿Ponemos una vela a San Pancracio? ¿Tiramos de haraquiri? Vaya chasco. Pero no pasa nada, encontraremos alguna solución (bueno, esto lo digo ahora, a toro pasao, que en su momento por casi tiro la toalla ;-).
Actualización 18/02/2010: En un nuevo escenario de restauración, he vuelto a probar el anterior método de Recuperación de una Máquina Virtual de Hyper-V en Windows Server 2008 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 !!
Registro o Recuperación Manual de una Máquina Virtual Hyper-V en Windows Server 2008 R2
Tras un par de horas de angustia y pruebas por doquier, encontramos una forma de conseguir recuperar las Máquinas Virtuales, a través de la creación de nuevas Máquinas Virtuales, sobre las que modificar sus ficheros de configuración XML, copiando y pegando el contenido de los ficheros de configuración originales, y sobrescribiendo (Buscar y Reemplazar) el GUID original por el nuevo. Es lo que se dice, dar gato por liebre.
Tomamos como ejemplo una Máquina Virtual de nombre VDC01 y GUID D9715BD7-A551-41B3-A442-6DD094DADEFF, la cual tiene un único Disco Duro Virtual (VHD), y no tiene ningún Snapshot.
Los pasos que hemos seguido para su recuperación son los siguientes:
Paso 1) Crear una nueva Máquina Virtual, sin ningún Disco Duro Virtual - VHD (opción Attach a virtual hard disk later del asistente de creación de nueva Máquina Virtual), ni red, ni nada. En nuestro caso, la nueva Máquina Virtual se ha generado con el GUID 8E786480-8D6A-4E63-91DE-B718EE3BD6C1.
Paso 2) Detener Hyper-V. Es necesario para poder modificar los ficheros XML de configuración. Se puede realizar desde la herramienta administrativa Hyper-V Manager, como se muestra en la siguiente pantalla capturada.
Paso 3) Modificar el fichero de configuración XML de la nueva Máquina Virtual. Editar su contenido, y sobrescribir con el contenido del fichero de configuración original de la Máquina Virtual. Es decir, en nuestro caso, modificamos el contenido del fichero D9715BD7-A551-41B3-A442-6DD094DADEFF xml con el contenido del fichero 8E786480-8D6A-4E63-91DE-B718EE3BD6C1.xml. Seguidamente, utilizar la funcionalidad de Buscar y Reemplazar, para modificar el contenido del fichero de configuración de la Máquina Virtual, sustituyendo el antiguo GUID (D9715BD7-A551-41B3-A442-6DD094DADEFF) por el Nuevo GUID (8E786480-8D6A-4E63-91DE-B718EE3BD6C1).
Paso 4) Iniciar Hyper-V. Más de lo mismo. Se puede realizar desde la herramienta administrativa Hyper-V Manager, como se muestra en la siguiente pantalla capturada.
Paso 5) Comprobar las propiedades de la Máquina Virtual. Quizás nos encontremos algún error en las tarjetas de red (el mensaje Configuration Error).
Paso 6) Arrancar la Máquina Virtual. Es posible que nos encontremos algún error de permisos de acceso (General access denied error), como se muestra en la siguiente pantalla capturada:
Existen varias formas de solucionar este error. Una forma, es mediante comandos, utilizando un comando similar al siguiente (ojo, especificar la ruta correcta, y el GUID de la correspondiente Máquina Virtual).
icacls "E:\VMHV\VDC01\Boot.VHD" /grant "NT VIRTUAL MACHINE\8E786480-8D6A-4E63-91DE-B718EE3BD6C1":F /L
La otra forma, es seleccionar el disco virtual desde las propiedades de la Máquina Virtual. Al volver a seleccionarlo, la propia herramienta Hyper-V Manager concederá los permisos necesarios. En nuestro caso, aprovechamos para renombrar y reubicar los Discos Duros Virtuales (VHD), por lo que finalmente utilizamos este método, que al ser gráfico, es más cómodo.
Paso 7) Comprobar la Máquina Virtual. Principalmente, comprobar la configuración de las tarjetas de red, los discos duros, y los servicios que ejecute dicha Máquina Virtual (ej: SQL Server, Exchange Server, Directorio Activo, etc.).
Realizado todo esto, habremos conseguido recuperar las Máquinas Virtuales en el nuevo Host de Hyper-V sobre Windows Server 2008 R2.
Espero que os resulte de utilidad.