Hyper-V ha representado un antes y un después en el rendimiento de la plataforma de virtualización de Microsoft. Una vez comienzas a utilizar máquinas virtuales Hyper-V (especialmente aquellas que son Windows Server 2008 64 bits) ya no quieres volver a Virtual PC y Virtual Server por nada del mundo. Personalmente he encontrado extremadamente útil la combinación de SQL Server 2008 + Hyper-V. El rendimiento de SQL Server 2008 sobre Hyper-V es muy aceptable, con una muy pequeña degradación únicamente apreciable cuando apuramos al máximo la CPU con una prueba de rendimiento.
Desgraciadamente no es todo es aún lo estable que debería (al menos en mi portátil J). A lo largo de meses de utilización me he encontrado varias veces con un problema de “desaparición” de máquinas virtuales del Hyper-V Manager. La primera vez que me ocurrió fue grande mi sorpresa, el resto de veces (unas pocas) he ido directamente a solucionar “a mano” el problema. Este problema se me reprodujo recientemente sobre la RC de Hyper-V R2. En ocasiones, después de un reinicio de la máquina, al entrar en el Hyper-V Manager constatas que alguna de tus máquinas no aparece. Tras comprobar que físicamente todos los ficheros están donde deben estar, parece que no hay razón para justificar la desaparición. Hyper-V almacena los ficheros de configuración XML (o enlaces simbólicos a éstos) en una carpeta oculta en “C:ProgramDataMicrosoftWindowsHyper-VVirtual Machines”:
Como podemos ver, tenemos 5 XML, 4 de ellos externos a la unidad C: (enlaces simbólicos). Cuando una de nuestras máquinas desaparece, recomiendo que lo primero que hagáis sea venir a esta carpeta y revisar que todos los XML son válidos. Cuando he tenido este problema siempre ha sido causado por corrupción en alguno de los XML. Para que os hagáis una idea del tipo de corrupción os muestro la parte final de algunos XML que han sufrido este tipo de corrupción:
Como podéis apreciar, el problema reside en la existencia de “basura” al final del fichero XML. Después del tag </configuración> que debería aparecer al final del fichero aparecen restos antiguos del propio fichero (de mayor o menor longitud). Sospecho que el problema viene por cambios que afecten a dicho fichero, como los producidos cuando creamos o borramos snapshots, salvamos el estado de la máquina, etc. En esos casos cuando se reduce el tamaño del XML parece que durante la reescritura del fichero no se limpian correctamente los restos del fichero anterior en algunas circunstancias.
Por ahora no he podido determinar un escenario repetible que genere esta situación anómala pero quería dejarlo aquí escrito como referencia por si a alguien más le ocurre que conozca que la solución pasa simplemente por editar dichos XML y quitarles la “basura” del final. Desgraciadamente el Hyper-V Manager no arroja ningún error cuando se encuentra con estos XML no válidos (simplemente los ignora) ni se muestra nada en el log de eventos de la máquina por lo que es bastante complicado encontrar que es ésta la causa de la “desaparición” de la máquina virtual en nuestro Hyper-V. Como recomendación creo que no está de más realizar copias frecuentes de dichos ficheros, más frecuentes cuanto más se “trastee” con la máquina virtual.