Todo sobre Snapshots de VMware

Qué es un snapshot?

Un snapshot (o imagen instantánea) de un disco es una copia del archivo de disco de la máquina virtual (VMDK) en un momento concreto. Conserva el sistema de archivos del disco y la memoria del sistema de nuestra VM, permitiéndonos volver a esa imagen guardada o snapshot en el caso de que algo vaya mal. Los snapshots pueden ser auténticos salvavidas cuando actualizamos o parcheamos aplicaciones y servidores. Este artículo repasa todo lo que hay que saber sobre el uso de los snapshots con VMware, incluyendo su descripción, funcionamiento y técnicas avanzadas.
Un snapshot es una captura, como si fuera una foto, de una maquina virtual con sus datos y dispositivos en un momento dado.
Luego de crear el snapshot y continuar trabajando con la Maquina Virtual es posible regresar a un estado anterior de la misma recuperando cualquiera de los snapshots.

Kpht9tP

Distintos tipos de ficheros snapshot

  • –delta.vmdk file: Este es el fichero diferencial que se crea cuando hacemos una instantánea de una VM. Se conoce también como fichero redo-log (fichero de recuperación de datos). El fichero delta es un mapa de bits de los cambios efectuados en el VMDK base, y por ello no puede ser nunca mayor que el VMDK base (con excepción del espacio extra reservado para el overhead del snapshot). Se crea un fichero delta por cada snapshot que tomemos en una VM. También se crea un fichero delta extra de ayuda, donde se guardan todos los cambios del disco al eliminar o revertir un snapshot. Estos archivos son eliminados automáticamente al borrar o revertir el snapshot con Snapshot Manager.
  • .vmsd file: Este fichero se utiliza para almacenar metadatos e información sobre los snapshots. Es un fichero en formato texto que contiene información como el nombre que muestra el snapshot, identificador único (UID), nombre del archivo del disco, etc. Inicialmente, se trata de un fichero de 0 bytes hasta que se crea el primer snapshot de una VM. A partir de ese momento va  poblando el fichero y actualizándose cada vez que se toman nuevos snapshots.
    Este fichero no se limpia completamente después de efectuar las instantáneas. Si borramos un snapshot, el fichero sigue incrementando el último identificador único del snapshot para el  snapshot siguiente.
  • .vmsn file: Este es el archivo de estado del snapshot, donde se guarda el estado de ejecución exacto de una máquina virtual en el momento de hacer dicho snapshot. Este fichero puede ser pequeño o grande, dependiendo de si decidimos conservar la memoria de la VM como parte del snapshot. Si optamos por conservar la memoria de la VM, entonces este fichero tendrá unos pocos megabytes más que la memoria RAM máxima asignada a la VM.
    Este archivo es similar al fichero de estado suspendido de VMware (.vmss). Por cada snapshot tomado en la VM se crea un fichero .vmsn; estos ficheros se borran automáticamente al eliminar el snapshot.

VMware vSphere permite crear hasta 32 snapshots por Maquina Virtual aunque no se recomienda utilizar más de 2 o 3 de forma simultánea. Incluso tampoco se recomienda utilizar maquinas virtuales en producción con snapshots activos por motivos que detallaremos más adelante en este Post.

Ante todo hay que dejar bien claro que los snapshots no pueden considerarse como una opción de backup.
Una Maquina Virtual con snapshots ve degradado su rendimiento al tener fragmentados sus datos en diferentes discos y forzar al Host a tener que dedicar más recursos para su gestión.
Y como si fuera poco, al generar cada Snapshot, estamos creando una dependencia entre los diferentes ficheros de discos Parent y Child.

Opciones al crear un snapshot

Como se puede ver en la imagen, cuando creamos un snapshot de una VM encendida tenemos dos opciones.

Snapshot VMware

Snapshot the virtual machine’s memory: captura el estado de la memoria de la Maquina Virtual. Si no marcamos esta opción cuando creamos el snapshot, en el momento de recuperarlo se nos apagará la VM.

Quiesce guest file System: esta opción nos permite generar el snapshot con el estado del disco en modo consistente. Es decir que cuando termina de crear el snapshot, por más que hubiera cambios en el disco durante la creación del snapshot, al finalizar el mismo incluye tanto estos cambios como las operaciones que estén en caché.
Esta opción requiere que la Maquina Virtual tenga las VMware tools instaladas.

Operaciones con snapshots

Go to: si seleccionamos un snapshot y hacemos clic en Go to iremos al estado de la VM en el momento y configuración en que se tomó el snapshot.
Snapshot VMware Go to  Delete: seleccionando un snapshot y haciendo clic en Delete eliminaremos el snapshot. No es posible recuperar un snapshot eliminado, salvo con un backup de la VM.

Delete All: haciendo clic en el botón Delete All eliminaremos todos los snapshots dejando un único disco virtual con el estado del último snapshot.

Consolidate (solo versión 5): La opción Consolidate es nueva apartir de la versión 5 de vSphere. Esta opción nos unifica el disco Parent y los Childs (o Redo Logs) en un único disco. La nueva opción consolidate resuelve problemas de snapshots eliminados que mantienen los ficheros de discos Child en el Datastore ocupando valioso espacio en disco.
VMware Snapshot consolidate

Qué ficheros componen un Snapshot en VMware?
VMware Snapshots ficheros documentos

*Cuando visualizamos los ficheros de la Maquina Virtual desde el entorno GUI de vSphere, solo veremos los punteros a los discos pero con el tamaño de los ficheros delta.
Si los copiamos o movemos se traspasarán todos los ficheros.

.VMSD : Es el fichero que describe el o los snapshots de la Maquina Virtual. Se crea en la misma carpeta de la Maquina Virtual y únicamente existe si existe al menos un snapshot.
Este fichero es la fuente de información del Snapshot Manager y define la relación entre los discos Parent y el o los Child.

VMware Snapshot ficheros vmsd
Imagen de un fichero .VMSD de una VM con 3 snapshots
.VMSN : Cuando se crea un snapshot de una Maquina Virtual encendida, de forma opcional, es posible (y altamente recomendable) capturar el estado de la memoria. Por cada snapshot que se crea capturando el estado de la memoria se crea un fichero .VMSN. Cada fichero .VMSN está relacionado con un snapshot que se creó capturando el estado de la memoria.

 <nombre-vm>-<número>.VMDK y <nombre-vm>-<número>-delta.VMDK : Por cada snapshot que creamos en una Maquina Virtual se generarán estos dos ficheros de disco. Uno es un puntero al fichero del disco delta y el otro es el propio disco delta. Los discos delta son discos diferenciales del disco principal de la Maquina Virtual (disco Parent). A estos discos también se les suele llamar Child disks.

VMware fichero vmdkCID=062F182a: Código hexadecimal de 8 dígitos que identifica al disco
parentCID=8d5e3a8e: Código hexadecimal del disco Parent
parentFileNameHint=”W7 Demo.vmdk”: Ruta de acceso y nombre del disco Parent
RW 67108864 VMFSSPARSE “W7 Demo-000001-delta.vmdk”: Tamaño lógico del snapshot y nombre del disco delta

¿Cómo eliminar o revertir snapshots?

Cuando eliminamos todos los snapshots de una VM, todos los ficheros delta creados se fusionan con el archivo de disco VMDK original de la VM y luego son borrados. Si decidimos borrar solo un snapshot concreto, entonces únicamente se fusionará o unirá dicho snapshot con su “snapshot padre”. Si optamos por revertir a un snapshot específico, los actuales estados de disco y de memoria son descartados y la VM vuelve al estado revertido. El snapshot al que revertimos se convierte en el nuevo snapshot padre. No obstante, el snapshot padre no es siempre el tomado más recientemente. Si revertimos a un snapshot más antiguo, éste se convierte entonces en el padre del estado actual de la máquina virtual. El snapshot padre se denota siempre mediante la etiqueta inferior “You are here“ (Usted está aquí)en el Snapshot Manager.

Podemos borrar o revertir a snapshots anteriores mediante el vSphere Client o la utilidad de línea de comandos vmware-cmd. Snapshot Manager en el vSphere Client ofrece más flexibilidad y es más sencillo de usar que el vSphere CLI. Una distinción importante entre la opción “Revert to Snapshot” en el vSphere Client y el Snapshot Manager es que la opción “revertir” nos devuelve al último snapshot tomado, mientras que Snapshot Manager nos da la posibilidad de revertir a un snapshot específico que podemos elegir. Esta opción se denomina “Go to” (Ir a)  en Snapshot Manager.

Si utilizamos vmware-cmd, la sintaxis es la siguiente:  vmware-cmd removesnapshots, para eliminar todos los snapshots, o bien vmware-cmd revertsnapshot, para revertir la VM al padre del estado “You are here”. Este padre puede no ser necesariamente el último snapshot tomado. Sin embargo, si debemos borrar o revertir a un snapshot específico, será necesario utilizar vSphere Client.

Si revertimos a un snapshot que no incluye estado de memoria, el servidor se desconectará, y cuando lo volvamos a conectar utilizará el snapshot anterior. Si nuestro snapshot sí incluye estado de memoria, la VM pausará brevemente y volverá a los estados de disco y memoria del snapshot anterior.

Leave a Comment