Los snapshots son una potente herramienta para implantar estrategias CDP (Continuous Data Protection), y aunque, de facto, llevan con nosotros un número respetable de años, aún parece existir un cierto grado de confusión acerca de su utilización y su naturaleza.
Además de lo anterior, VMWare VCB proporciona herramientas de snapshot. Pero... ¡ cuidado !, no funcionan exactamente igual ni su función es exactamente la misma. Item más, si se emplean incorrectamente, pueden ocasionar que las máquinas virtuales dejen de responder a las peticiones de los usuarios y se produzcan interrupciones de los servicios.
Como paso previo, detallaremos cómo opera un snapshot en el ámbito del almacenamiento, para posteriormente comentar cómo funciona VMWare y cómo combinarlos en una estrategia CDP.
POINT-IN-TIME (PIT)
Un snapshot es lo que en almacenamiento llamamos una copia Point-in-time (o PIT). Con esta denominación se indica que el snapshot tiene como utilidad, mantener el estado de una LUN o Volumen en un momento concreto del tiempo. Es decir, si a una hora determinada el administrador inicia el snapshot, el sistema mantendrá la información necesaria para que podamos hacer que ese conjunto de datos, retorne bajo petición al momento en que se inició el snapshot.
En este punto es importante hacer una precisión. Si no se han tomado las precauciones adecuadas a cada entorno de ejecución, la copia que obtendremos no será coherente, o tendrá una elevada probabilidad de no serlo. En el caso de máquinas virtuales, un snapshot tomado sin "congelar" la máquina virtual se denomina "crash consistent". Una copia "crash consistent" tiene el mismo resultado a la hora de volver a arrancar la máquina virtual (o la base de datos) que si hubiésemos apagado la máquina por el procedimiento de pulsar el botón de power-off. El efecto contrario permite tener copias "Application Consistent", estas copias nos garantizan que la base de datos (o la VM) arrancará correctamente y será íntegra.
El objeto del snapshot es proveer de una copia íntegra de la información de los archivos o de la base de datos, o de la máquina virtual, que corresponda al estado de dicha información en un momento concreto del tiempo (fecha/hora).
Para ello, los sistemas de almacenamiento crean, en el momento del snapshot, una tabla de punteros que componen un mapa de bloques del archivo (block mapping). Cada puntero indica al sistema en donde puede encontrar el contenido del bloque de datos al que referencia. Si el bloque de datos referenciado no ha sido aun actualizado desde el momento del snapshot, el puntero indicará que los datos del bloque se encuentran en la ubicación original del archivo. Es decir, donde estaban, porque no han cambiado.
Sin embargo, si el bloque de datos va a ser actualizado, el sistema lo copia previamente en un área prevista para ello, que es el archivo de snapshot. A continuación actualiza el puntero correspondiente para que indique la nueva ubicación de los datos que contenía el bloque en el momento del snapshot y procederá finalmente a actualizar la información del archivo. Esta operación supone, obviamente, un overhead (sobrecarga) de proceso para los sistemas que impactará más o menos en el rendimiento en función de la eficiencia del código del snapshot de cada fabricante.
Cuando se realiza una copia del snapshot, el programa que copia lee del mapa de bloques y va colocando sucesivamente en el medio de copia (cinta de backup, unidad NDMP, etcétera) los bloques de datos según le indican los punteros, como muestran los diagramas. Los snapshots son herramientas, generalmente, de sólo lectura. El tamaño del archivo de snapshot y su ubicación también varía de fabricante a fabricante. EMC emplea un pool de LUNs reservadas para estas funciones mientras que Netapp, en los sistemas FAS, aloja los snapshots en un area del volumen de datos que denomina snapshot reserve, cuyo tamaño es configurable en cada volumen.
VMWare Snapshots
Los snapshots de VMWare operan bajo el principio inverso al que operan los snapshots de los sistemas de almacenamiento, buscando el mismo efecto pero con otros fines.
Cuando el administrador lanza un snapshot desde la ventana del Snapshot Manager de vCenter Server, el servidor envía una orden al ESX que aloja la VM. El ESX crea en la carpeta de la máquina virtual un archivo de snapshot, dejando "congelada" la actualización del archivo .vmdk. Las actualizaciones son diferidas al archivo de snapshot, que actúa como un log de transacciones. Si se solicita otro snapshot sobre uno ya activo, el sistema dejará congelada la adición de bloques de datos al primer archivo de snapshot, abriendo uno nuevo y depositando allí la información.
Esta operación presenta varios riesgos, pues los archivos de snapshot correspondientes a VMs con alta carga transaccional, crecen rápidamente (mientras los servicios siguen "vivos") y las operaciones de lectura y escritura se degradan rápidamente si el snapshot persiste durante el tiempo suficiente como para crecer hasta obtener el tamaño de la VM original. Si el DataStore no está adecuadamente dimensionado, podemos tener serios problemas. El efecto será un paulatino deterioro de los tiempos de respuesta de los servidores afectados, que llegarán a bloquearse.
Si queremos eliminar varios snapshots, el sistema intentará consolidar todos ellos en uno solo, con lo que consumirá en la operación un importante espacio de almacenamiento del DataStore. Adicionalmente, al aplicar los cambios consolidados sobre la VM, el proceso puede también llegar a bloquear los servicios. En cualquier caso es una perspectiva a evitar.
La utilidad principal de snapshot de VMWare es proveer de una copia Point-in-Time de la máquina virtual para permitir al sistema de almacenamiento hacerse cargo de la gestión de los snapshots con sus propias herramientas, tras lo cual (una operación de escasos segundos), el snapshot de VMWare deberá ser eliminado.
Existen múltiples consideraciones sobre los snapshots de VMWare, pero desde mi perspectiva, la gran utilidad estriba en combinarlos con las herramientas de almacenamiento para proveer de soluciones CDP (Continuous Data Protection o Backup). Intentar emplear estos snapshots como la herramienta primaria de backup, tiene una serie de condicionantes lo suficientemente amplios como para dedicarle un artículo, y no resultan operaciones triviales de administrar.
Comments