GuilleSQL :: Microsoft SQL Server, SSIS, y más !!

Hyper-V Snapshots


Los Snapshots son una funcionalidad aparentemente muy agradecida y sencilla para la administración y mantenimiento de Máquinas Virtuales Hyper-V. Sin embargo, al igual que ocurre en otros entornos de virtualización (ej: VMWare, Xen, etc) es muy recomendable conocer su funcionamiento para decidir si utilizar los Snapshots y como hacerlo. Este artículo describe los Snapshots en Hyper-V, ciertos detalles de su funcionamiento, casos de uso, y recomendaciones.

¿Qué es un Snapshot de Hyper-V?

Conceptualmente la creación de un Snapshot de una Máquina Virtual, consiste en crear una foto de la Máquina Virtual en un momento en el tiempo, incluyendo los datos de los correspondientes Discos Virtuales (VHD), la configuración de la Máquina Virtual, y el estado de la misma. De este modo, una vez realizado un Snapshot, es posible tanto arrancar la Máquina Virtual y realizar cambios en su contenido (es decir, en el contenido de sus Discos Virtuales), como alterar la configuración de la Máquina Virtual.

Un Snapshot puede realizarse con la Máquina Virtual en estado encendido (Running), Guardado (Saved), o apagada (Stopped). Personalmente (y no soy el único), me encuentro mucho más cómodo al realizar el Snapshot con la Máquina Virtual apagada, especialmente en entornos productivos.

Una vez que se ha realizado un Snapshot, pasado un tiempo, es posible eliminar el Snapshot o bien volver la Máquina Virtual al estado de dicho Snapshot (es decir, volver la Máquina Virtual a un estado anterior en el tiempo).

Con esta información, se puede observar, que si tenemos alguna LUN presentada directamente por iSCSI a una Máquina Virtual, al realizar un Snapshot de la Máquina Virtual se estará realizando un Snapshot estrictamente de la Máquina Virtual, y no de las LUN iSCSI que esté utilizando dicha Máquina Virtual. En este escenario, es recomendable (al menos, bajo mi opinión) realizar lo siguiente:

  • Detener la Máquina Virtual, y realizar un Snapshot de la Máquina Virtual.
  • En caso de ser necesario, realizar un Snapshot de las LUN iSCSI, desde el propio sistema de Almacenamiento SAN, no desde Hyper-V Manager.

No es posible realizar un Snapshot de una Máquina Virtual que utilice Discos Virtuales de tipo Pass-through (es decir, que no utilice ficheros VHD como Discos Virtuales).

Los Snapshots de Hyper-V se basan en la utilización de Discos Virtuales (VHD) de tipo Diferencial, que son el núcleo de la tecnología de Snapshot en Hyper-V.

Recordemos que los Discos Diferenciales se comportan como un fichero de transacciones, que posteriormente se pueden aplicar (Merge) sobre el Disco Virtual VHD original o padre (el Merge ocurre al eliminar un Snapshot, como veremos más adelante). La utilización de este tipo de Discos Virtuales, evidentemente merma el rendimiento y produce fragmentación en el sistema de ficheros. Es importante tener en cuenta, que los Discos Diferenciales se comportan como discos de expansión dinámica, y en consecuencia, con el paso del tiempo el tamaño del Snapshot aumentará, quedando cada vez menos espacio libre en disco. Por todo esto, es una buena práctica, utilizar un disco o LUN independiente en el Host para el almacenamiento de los Snapshots de las Máquinas Virtuales, liberando así de actividad de I/O y consumo de espacio en disco (ej: evitar el error de Paused-Critical), a los discos o LUNs en que se almacenan las Máquinas Virtuales (quiero decir, los Discos Virtuales VHD de las Máquinas Virtuales). Sin embargo, esto debe tenerse en cuenta a priori, ya que no puede cambiarse la ruta de Snapshots de una Máquina Virtual que ya tiene Snapshots creados.

La utilización de los Discos de Diferenciación como parte de los Snapshot resulta transparente. Aunque la Máquina Virtual esté utilizando un Disco de Diferenciación al tener un Snapshot creado, si editamos las propiedades de la Máquina Virtual, esta la veremos como siempre, con su Disco Virtual VHD original, etc.

En principio, si tenemos una Máquina Virtual con un único Snapshot y eliminamos el Snapshot, la Máquina Virtual continuará en funcionamiento sin ninguna interrupción. Sin embargo, aunque aparentemente parece que este cambio ha tomado efecto de forma instantánea, los Discos Diferenciales del Snapshot seguirán existiendo en la correspondiente carpeta de Snapshot, y seguirán creciendo con el uso continuado de la Máquina Virtual y el continuo acceso a disco. Para restablecer completamente la configuración de nuestra Máquina Virtual, será necesario realizar un Shutdown, un apagado (Turn Off), o guardar el estado de la Máquina Virtual (Guest), de tal modo que este evento producirá que los Discos Diferenciales del Snapshot se mezclen o fusionen (Merge) con los Discos Virtuales (VHD) originales de la Máquina Virtual, y de este modo, los Discos Diferenciales del Snapshot puedan ser eliminados y liberado el espacio en disco (esto puede tardar un poquito).

Es posible mover una Máquina Virtual con Snapshots a un Host diferente, utilizando las utilidades Export e Import de Hyper-V.

Otro detalle importante, es que no se debe expandir un Disco Virtual asociado a una Máquina Virtual con Snapshots.

Es posible crear múltiples Snapshots de una misma Máquina Virtual. Por ejemplo, su tuviésemos que realizar varios cambios consecutivos sobre una Máquina Virtual (ej: parcheos, cambios de configuración, etc.), sería posible crear un nuevo Snapshot previo a cada una de estas operaciones de mantenimiento.

No deben utilizarse los Snapshots como una alternativa a las Copias de Seguridad, ya que no es su función, y además, al basarse en Discos Virtuales (VHD) Diferenciales, una pérdida del disco padre produciría una pérdida de la Máquina Virtual.

Los principales casos de uso de los Snapshots, son previos a la realización de parcheos (ej: instalación de un Service Pack o de un HotFix) o previos a otras operaciones de mantenimiento (ej: cambios de configuración), con el objetivo de poder garantizar una marcha atrás rápida en caso de necesidad.

Existe una dicotomía de opiniones en relación a la utilización de los Snapshot sobre Máquinas Virtuales de Producción.

  • Por un lado, están los puristas que se agarran a la idea de que no se trata de una solución de copia de seguridad, que merma el rendimiento y genera fragmentación en el sistema de ficheros, que implica ciertas limitaciones adicionales (ej: no se debe expandir un Disco Virtual VHD asociado a una Máquina Virtual con Snapshots), y que además para eliminar completamente un Snapshot es necesario realizar un Shutdown, un Apagado (Turn Off) o guardar el estado de la Máquina Virtual, para que se apliquen (Merge) los cambios en los Discos Virtuales VHD originales que actúan como padres (pérdida del servicio de mayor o menor tiempo en función del tamaño del Snapshot, otra cosa es en que franja horaria realizarlo).

  • Por otro lado, están quienes apremian la flexibilidad y rapidez de creación de un Snapshot, que ven improbable que deba revertirse, y no ven mayor inconveniente en la creación de un Snapshot que se mantenga escasos días u horas como medida alternativa de marcha atrás (especialmente sobre Máquinas Virtuales que experimentan poca actividad de acceso a disco), aplicando el correspondiente reinicio tras la eliminación del Snapshot en una franja horaria sin impacto en el servicio.

Al final, la verdad está en el medio, y cada caso deberá evaluarse para ver las ventajas e inconvenientes de utilizar los Snapshots, utilizar otras alternativas a los Snapshots (ej: VSS Snapshots), etc. En relación con esto, es recomendable la lectura del Post Should virtual machine snapshots be used in production? del Blog Ben Armstrong.

¿Cómo crear un Snapshot en Hyper-V? ¿Qué ocurre cuando se crea un Snapshot de una Máquina Virtual Hyper-V?

Principalmente, es posible crear un Snapshot de dos formas diferentes, con la única diferencia, de que en función de cómo se cree el Snapshot se podrá asignar un nombre al mismo o se utilizará un nombre generado automáticamente (que luego podríamos renombrar, si así lo deseamos):

  • Directamente desde Hyper-V Manager, seleccionando la Máquina Virtual deseada, y utilizando la opción Snapshot del menú Action. En este caso, el Snapshot tomará un nombre generado automáticamente, formado por el nombre de la Máquina Virtual seguido de la fecha y hora de creación del Snapshot. A continuación se muestra una pantalla capturada a modo de ejemplo (nota: la opción de menú Rever sólo aparece si se tiene un Snapshot creado previamente).
  • Desde Virtual Machine Connection, utilizando el botón Snapshot de la barra de botones, o bien, utilizando la opción Snapshot del menú Action. Se mostrará el diálogo Snapshot Name, que permitirá asignar un nombre al Snapshot o confirmar que se utilice un nombre generado automáticamente. Realmente, al crear así un Snapshot, se crea el Snapshot con un nombre generado automáticamente y seguidamente se solicita un nombre para renombrarlo (puede parecer que se solicita un nombre para el Snapshot y luego se crea el mismo, pero no es el caso).

Al crear un Snapshot de una Máquina Virtual, se produce lo siguiente:

  • La Máquina Virtual es pausada, en caso de que se solicite la creación de la Máquina Virtual en ejecución (Running).
  • Se crea un nuevo Disco Virtual (VHD) de tipo Diferencial para cada uno de los Discos Virtuales de la Máquina Virtual (estos serán fichero AVHD almacenados en la carpeta de Snapshot configurada para la Máquina Virtual).
  • Se realiza una copia del fichero de configuración de la Máquina Virtual.
  • Si la Máquina Virtual estaba en ejecución y fue pausada, se vuelve a poner en ejecución.
  • El contenido de la memoria de la Máquina Virtual es guardado en disco.

¿Qué operaciones se pueden realizar sobre un Snapshot de una Máquina Virtual?

Una vez que hemos creado un Snapshot (o varios) sobre una Máquina Virtual, es posible realizar diferentes tareas sobre dicho Snapshot, y visualizarlos en la sección Snapshots (de forma jerárquica, de acuerdo a en que momento del tiempo fueron creados), al seleccionar la correspondiente Máquina Virtual en Hyper-V Manager. De este modo, al seleccionar el Snapshot desde la herramienta administrativa Hyper-V Manager, tendremos disponibles diferentes opciones:

  • Settings. Muestra la configuración de la Máquina Virtual en el momento de creación del Snapshot. Esta información tiene carácter de sólo lectura, pudiendo cambiarse sólo y únicamente el nombre y observaciones del Snapshot.
  • Apply. Prácticamente se limita a copiar el estado del Snapshot en la Máquina Virtual, solicitándose previamente confirmación sobre si se desea crear un nuevo Snapshot (téngase en cuenta que al aplicar un Snapshot anterior, se perderá el estado actual, por lo que puede interesar crear un nuevo Snapshot como medida de contingencia).

    Así, si por ejemplo tenemos una Máquina Virtual con un único Snapshot, y decidimos aplicarlo, internamente, además de copiar el estado del Snapshot en la Máquina Virtual, se volverá a configurar la misma con sus Discos Virtuales VHD, eliminándose los Discos de Diferenciación AVHD creados con el Snapshot.

    Téngase en cuenta, que al crear un Snapshot, los Discos Virtuales VHD de la Máquina Virtual se empiezan a comportar como de sólo lectura, almacenándose todos los cambios en los Discos de Diferenciación AVHD creados por el Snapshot, por lo que al aplicar el Snapshot tan sólo queremos volver a utilizar los Discos Virtuales VHD iniciales y recuperar el estado de la Máquina Virtual.

    Otro detalle a tener en cuenta, es que si tenemos un Snapshot y lo aplicamos, volveremos a dicho momento en el tiempo, pero el Snapshot seguirá existiendo (no es eliminado), pudiendo volver a aplicarlo en un futuro si fuera necesario, o borrar el Snapshot cuando deje de ser útil.

  • Rename. Permite cambiar el nombre asignado a un Snapshot, por ejemplo, con el objetivo de asignarle un nombre más descriptivo.

  • Delete Snapshot. Conceptualmente corresponde al hecho de eliminar el Snapshot, de tal modo, que ya no se podrá volver a dicho momento en el tiempo. En la práctica, en la mayoría de los casos, implica alguna fusión (Merge) de Discos Virtuales y/o Discos de Diferenciación del Snapshot, que suele realizarse de forma diferida (es decir, en un momento posterior en el tiempo, en el cual no esté la Máquina Virtual en ejecución).

    Por ejemplo, si tenemos una Máquina Virtual con un único Snapshot, y lo eliminamos, aparentemente (visto desde Hyper-V Manager) ya estará realizada dicha acción, pero en la práctica sólo estarán eliminados los ficheros de configuración y estado del Snapshot, y será cuando la Máquina Virtual deje de estar en ejecución (Shutdown, Turn Off, o Save, da igual uno que otro) cuando se aplicarán (Merge) las modificaciones existentes en los Discos Diferenciales del Snapshot (ficheros AVHD) sobre los Discos Virtuales originales (ficheros VHD), para a continuación poder eliminar los ficheros AVHD (Discos Diferenciales del Snapshot) físicamente y liberar el correspondiente espacio en disco. Esto puede tardar un ratito.

    Si por el contrario, tenemos tres Snapshots creados de forma consecutiva en el tiempo, y eliminamos el segundo Snapshot, de forma parecida los ficheros AVHD del segundo Snapshot deberán fusionarse (Merge) con los ficheros AVHD del tercer Snapshot. Este proceso de Mezcla, no puede realizarse con la Máquina Virtual en ejecución, por lo que aunque eliminemos dicho Snapshot (lo cual eliminará inmediatamente los ficheros de configuración y estado del Snapshot), en la práctica será cuando la Máquina Virtual no esté en ejecución (Shutdown, Turn Off, o Save) cuando se realizará dicha mezcla o fusión (Merge) de fichero AVHD, y en consecuencia, se libere el correspondiente espacio en disco.

    Así, el único caso en que la eliminación de un Snapshot toma efecto inmediatamente (liberando el espacio en disco sin requerir que la Máquina Virtual deje de estar en ejecución), es cuando no es necesario que se produzca ninguna Mezcla de Datos. Esto ocurre cuando del Snapshot que se desea eliminar, no dependen otros Snapshots, ni el estado actual del sistema (Now).

  • Delete Snapshot Subtree. Elimina el Snapshot seleccionado, y todos los Snapshots existentes jerárquicamente por debajo del mismo. Pueden tomarse en consideración, los posibles efectos de mezcla o fusión (Merge) de Discos Virtuales comentados en el caso anterior.

Además de las opciones comentadas, en el momento en que una Máquina Virtual tiene creado al menos un Snapshot, aparece una nueva opción en el menú contextual de la Máquina Virtual en Hyper-V. Se trata de la opción Revert, la cual permite aplicar el último Snapshot asociado a la Máquina Virtual.

Eliminar una Máquina Virtual de Hyper-V con Snapshots

Otro tema a tener en cuenta al trabajar con Snapshots en Máquinas Virtuales de Hyper-V, es el comportamiento que se produce al eliminar una Máquina Virtual que tiene creado uno o varios Snapshots.

A priori, podemos pensar que la eliminación de la Máquina Virtual será instantánea, sin embargo, ocurre que antes de eliminar la Máquina Virtual es necesario realizar una limpieza de Snapshots, lo que produce la correspondiente ejecución de mezclas (Merge) de Discos Virtuales (VHD) y/o Discos Diferenciales, lo cual, nos puede llevar un ratito (molesto, si no contábamos con ello). Este comportamiento está muy bien descrito en el Post Why does it take so long to delete a virtual machine with snapshots? del Blog de Ben Armstrong.



Comentarios

jose.flores - 22/10/2012 (UTC)
Una consulta,
se puede direccionar al Snapshot file location a un disco duro de Red (NAS).
Requiero hacer eso pero me sale un error.

Saludos,


José



Miembros de
Miembros de GITCA (Global IT Community Association)

Menu de Usuario
  Iniciar Sesión
  Registrarse
  Restablecer Contraseña
  Ventajas de Registrarse

Acerca de
  Contigo desde Oct 2007
  771 usuarios registrados
  86146 pageloads/mes
  Ranking Alexa 498160

Social Networks
Sigue a Portal GuilleSQL en Linkedin !!
Sigue a Portal GuilleSQL en Twitter !!



Archivo

Marzo de 2019 (1)
Octubre de 2018 (1)
Julio de 2018 (1)
Junio de 2018 (4)
Mayo de 2018 (5)
Abril de 2018 (3)
Marzo de 2018 (2)
Febrero de 2018 (7)
Enero de 2018 (1)
Diciembre de 2017 (15)
Noviembre de 2017 (7)
Junio de 2017 (3)
Mayo de 2017 (1)
Marzo de 2017 (3)
Enero de 2017 (4)
Junio de 2016 (1)
Mayo de 2016 (2)
Abril de 2016 (2)
Septiembre de 2015 (2)
Agosto de 2015 (2)
Junio de 2015 (10)
Mayo de 2015 (4)
Abril de 2015 (8)
Marzo de 2015 (11)
Octubre de 2014 (3)
Septiembre de 2014 (7)
Agosto de 2014 (5)
Julio de 2014 (2)
Mayo de 2014 (4)
Abril de 2014 (4)
Marzo de 2014 (4)
Febrero de 2014 (1)
Enero de 2014 (5)
Diciembre de 2013 (8)
Noviembre de 2013 (2)
Octubre de 2013 (7)
Septiembre de 2013 (6)
Agosto de 2013 (1)
Julio de 2013 (6)
Junio de 2013 (11)
Mayo de 2013 (7)
Abril de 2013 (6)
Febrero de 2013 (5)
Enero de 2013 (7)
Diciembre de 2012 (12)
Noviembre de 2012 (13)
Octubre de 2012 (5)
Septiembre de 2012 (3)
Agosto de 2012 (6)
Julio de 2012 (4)
Junio de 2012 (1)
Mayo de 2012 (2)
Abril de 2012 (7)
Marzo de 2012 (16)
Febrero de 2012 (9)
Enero de 2012 (5)
Diciembre de 2011 (10)
Noviembre de 2011 (10)
Octubre de 2011 (4)
Septiembre de 2011 (5)
Agosto de 2011 (2)
Julio de 2011 (2)
Junio de 2011 (4)
Mayo de 2011 (2)
Abril de 2011 (6)
Marzo de 2011 (4)
Febrero de 2011 (10)
Enero de 2011 (5)
Diciembre de 2010 (6)
Noviembre de 2010 (4)
Octubre de 2010 (8)
Septiembre de 2010 (4)
Agosto de 2010 (1)
Julio de 2010 (3)
Mayo de 2010 (5)
Abril de 2010 (6)
Marzo de 2010 (8)
Febrero de 2010 (3)
Enero de 2010 (1)
Diciembre de 2009 (9)
Noviembre de 2009 (14)
Octubre de 2009 (2)
Septiembre de 2009 (8)
Agosto de 2009 (2)
Julio de 2009 (10)
Junio de 2009 (9)
Mayo de 2009 (10)
Abril de 2009 (9)
Marzo de 2009 (3)
Febrero de 2009 (2)
Enero de 2009 (3)
Noviembre de 2008 (2)
Octubre de 2008 (2)
Septiembre de 2008 (2)
Agosto de 2008 (5)
Julio de 2008 (5)
Junio de 2008 (1)
Mayo de 2008 (3)
Abril de 2008 (2)
Marzo de 2008 (2)
Febrero de 2008 (2)
Enero de 2008 (5)
Noviembre de 2007 (2)
Octubre de 2007 (2)






Copyright © 2007 GuilleSQL, todos los derechos reservados.