La virtualización es una de las prácticas en mayor auge hoy en día y con más futuro ya que ofrece numerosas ventajas y una de las más importantes, sobre todo para los administradores de sistemas, es la simplificación de la recuperación ante desastres.
Si comparamos los procesos de restauración de un entorno físico frente a un entorno virtualizado, no sólo se reduce drásticamente el tiempo, sino que la complejidad del proceso y posibilidad de errores es mucho menor.
Todas estas ventajas, se basan fundamentalmente en la capacidad de los entornos virtualizados para encapsular las máquinas en ficheros y la facilidad para moverlas de una máquina física a otra que disponga de los recursos suficientes para ejecutarlas.
Frente a todas estas ventajas la virtualización nos ofrece un nuevo reto, que consiste en tener unas copias de seguridad e infraestructuras adecuadas que nos permitan realizar las restauraciones de forma correcta. En este artículo se explicarán de forma sencilla algunas consideraciones a tener en cuenta para realizar de forma correcta las copias de seguridad de las máquinas de un entorno virtual, para ello se tomará como base un entorno pequeño basado en VMware vSphere 4.
El primer aspecto a tener en cuenta a la hora de realizar las copias de seguridad es el tipo de almacenamiento que utilizaremos en nuestra infraestructura:
En el caso de que el tamaño de las máquinas a copiar sea grande puede ser imprescindible recurrir a un almacenamiento SAN, ya que de otra forma el tiempo para realizar las copias será muy elevado y nos dificultará tener una ventana de backup adecuada.
Podemos calcular de forma orientativa, ya que dependerá de muchos factores, como la velocidad y saturación de las red y los discos, que una copia cuyo volumen exceda los 200 Gb pude ser inviable de realizar diariamente por la noche, ya que la ventana de tiempo será demasiado grande y se solapará con el tiempo de uso de los servidores, lo cual es muy poco deseable.
Para calcular el tipo de almacenamiento más adecuado a nuestras necesidades debemos tener en cuenta el número de máquinas a incluir en las copias de seguridad, el espacio total que ocupan incluyendo todos sus discos o particiones y la frecuencia con la que deseamos realizar las copias. A la hora de valorar el tamaño de los discos y particiones sólo tendremos en cuenta el espacio en disco ocupado, ya que el espacio vacío no se incluye en la copia, pero debemos dejar un margen de crecimiento adecuado.
Para seguir con las explicaciones de este artículo consideraremos un entorno de ejemplo como en que se muestra en la figura 1. En este caso hemos escogido un almacenamiento SAN, pero la gran mayoría de los aspectos que se comentan son aplicables también para almacenamientos DAS y NAS.
Como vemos en el esquema el sistema está compuesto por dos host (máquinas físicas) con ESX/ESXi 4.0 que albergan tres máquinas virtualizadas y un servidor físico para la gestión y copias de seguridad, todas ellas están conectadas a un almacenamiento SAN por iSCSI.
En el SRVCOPIAS tendremos instalados el vCenter, el VCB (VMware Consolidated Backup) y el programa de backup (Backup Exec, NTBackup, etc). Además, deberemos disponer de espacio en disco suficiente para alojar las copias de las máquinas y de una unidad de cinta, que aunque no es imprescindible, si resulta recomendable para almacenar las copias en medios extraíbles y disponer de un histórico.
A la hora de realizar las copias de seguridad tenemos varias alternativas: directamente con el entorno proporcionado por VMware, llamado VCB (VMware Consolidated Backup) o utilizando herramientas de terceros, de las cuales las más populares son Veeam Backup (http://www.veeam.com/) y Vizioncore vRanger Pro (http://www.vizioncore.com/).
En este artículo nos centraremos en la utilización de VCB. Hay que clarificar que VCB no es un programa de copias, sino un entorno con el cual, mediante una serie de comandos, podemos hacer backups consistentes de las máquinas para luego con un programa de copias tradicional archivarlos en el medio que deseemos (cinta, disco, etc.)
Antes de seguir adelante y crear un script para las copias de las máquinas virtuales hay que preparar el SRVCOPIAS e instalar el VCB. Es recomendable que el sistema operativo sea Windows Server 2003, ya que el 2008 sólo está soportado en modo de pruebas. Seguiremos los siguientes pasos:
Junto con el Framework de VCB se incluyen unos kits de integración con distintos programas de backup y la correspondiente documentación sobre como utilizarlos. En este artículo no los utilizaremos y en su lugar veremos un script genérico de ejemplo para que pueda ser utilizado con cualquier programa de backup.
En el fichero “%Program Files%\VMware\ VMware Consolidated Backup Framework\config\config.js” disponemos de una serie de valores de configuración que podemos adaptar a nuestras necesidades, aunque para el ejemplo que se presentará los valores por defecto son válidos.
Para realizar las copias de seguridad utilizaremos el comando “vcbMounter” que realiza las siguientes acciones:
La sintaxis básica del comando vcbMounter es:
|
vcbMounter –h [hostname] -u [usuario] -p [contraseña] -a [máquina virtual] -r [directorio de destino] -t [tipo de backup] -m [modo]
|
En esta sintaxis se muestran solamente algunas de las opciones del comando vcbMonter. Podemos consultar información más detallada en el documento “Virtual Machine Backup Guide” disponible en la página web de VMware.
Un ejemplo para copiar la máquina VM1 alojada en el host ESX1 a través del SRVCOPIAS en el directorio C:\BACKUP\VM1 sería:
|
vcbMounter.exe -h SRVCOPIAS -u usuario -p contraseña -a name:"VM1" -r C:\BACKUP\VM1 -t fullvm -m san |
Este comando realizaría el snapshot de la máquina virtual VM1, copiaría los ficheros (partidos en trozos de 2 Gb y sin incluir el espacio vacio) en el directorio C:\BACKUP\VM1 y desharía el snapshot de la máquina. En este momento utilizaríamos nuestra aplicación de backup para almacenar la copia en el medio que deseemos y una vez terminado el proceso, para borrar el directorio C:\BACKUP\VM1 podemos volver a utilizar el comando vcbMonter, esta vez con el formato:
|
vcbMounter.exe -h SRVCOPIAS -u usuario -p contraseña -U C:\BACKUP\VM1 |
Al contrario de lo que se menciona en algunas documentaciones este último comando no deshace el snapshot de la máquina virtual, únicamente se limita a borrar el directorio donde se copió la máquina. El snapshot se borra automáticamente en el primer comando cuando se termina la copia de los ficheros de la máquina virtual.
Una vez explicados estos dos comandos podemos definir la sistemática de copias con un proceso similar al siguiente:
En la práctica puede ser más interesante alterar el orden del proceso y pasar al principio el último paso de tal forma que lo primero que se haga es borrar los ficheros de la última copia. De esta forma, además de disponer siempre de la última copia en disco, podemos ajustar los tiempos de copia de tal forma que el backup de las VM se haga por la noche y el almacenamiento en cinta de esos ficheros por el día. El proceso quedaría:
Para el caso del entorno de ejemplo que hemos descrito anteriormente (figura 1) tenemos tres máquinas virtuales a copiar que en total disponen de cinco discos duros que suman un total de 250 Gb. pero cuyo espacio ocupado es únicamente 140 Gb. por lo que la copia ocupará aproximadamente 140 Gb.
Dado que disponemos de almacenamiento SAN el proceso se podría llevar a cabo perfectamente por la noche incluyendo la copia en cinta u otro medio, pero en el caso de utilizar almacenamiento NAS o DAS seguramente no dispondríamos del tiempo necesario para incluir la copia en cinta, por lo que tendríamos que hacer las copias de las máquinas por la noche y el almacenamiento en cinta por el día.
Es importante tener en cuenta que el comando vcbMounter considera espacio vacío solamente aquel que está físicamente a cero en los discos, pero dado que cuando borramos un archivo el espacio ocupado por el mismo no se pone a cero, las copias progresivamente ocuparán más espacio aunque la utilización de los discos no aumente. Para evitar este problema y reducir el tamaño y la duración de las copias tenemos que poner a cero el espacio vacío, para ello podemos usar la utilidad SDelete de Mark Russinovich, disponible gratuitamente en la página http://www.sysinternals.com/.
Podemos programar una tarea de Windows que ejecute el comando periódicamente, por ejemplo una vez a la semana, fuera del intervalo de copias de seguridad. La sintaxis del comando sería: sdelete.exe -c unidad, por ejemplo, en la máquina virtual VM1 programaríamos una tarea que ejecutase el siguiente script todos los domingos:
| sdelete.exe -c C: sdelete.exe -c D: |
IMPORTANTE: nunca debemos ejecutar este comando en una máquina que tenga un snapshot, ya que el tamaño del mismo crecerá muy rápidamente.
Con todo lo comentado hasta ahora ya podemos escribir un script para realizar las copias del entorno virtual de ejemplo:
|
|
Este script copia las tres máquinas virtuales del entorno virtualizado de ejemplo en la carpeta “C:\BACKUP” del SRVCOPIAS y deja un log con el resultado de la tarea en el fichero “C:\LOG-VCB.TXT”. El script se podría incluir en el programa de backup como una pre-tarea, de tal forma que se ejecutase siempre antes de la copia en cinta o cualquier otro medio.
Por último nos queda comentar como recuperar las copias de seguridad de la máquinas virtuales, para ello simplemente utilizaremos la aplicación VMware Converter disponible de forma gratuita en la página web de VMware. Su utilización es muy sencilla e intuitiva y en caso de necesitar alguna explicación adicional se puede recurrir a la documentación de VMware.
Con esto hemos cubierto el proceso completo de copias de seguridad y restauración de máquinas virtuales. Este artículo no pretende ser una guía paso a paso, sino ofrecer una visión general del proceso y algunas de sus particularidades, por lo que muchos aspectos se han explicado de forma muy generalista.
Antes de implementar un procedimiento de copias en un entorno en producción es necesario leerse la correspondiente documentación de todas las utilidades que utilicemos.
Autor: David Alvarez Velicia