sábado, 26 de septiembre de 2015

Creación y restauración de backups en Proxmox

Hola de nuevo,esta entrada voy a dedicarla a una cuestión básica pero importante relacionada con creación y restauración de backups en Proxmox. ¿Qué es Proxmox? Dediqué una entrada a hablar de esta tecnología en http://uninformaticoenisbilya.blogspot.com.es/2015/05/virtualizacion-low-cost-con-proxmox-ve.html, venga anda te dejo que te la leas y seguimos.
El proceso de creación y restauración de máquinas virtuales en Proxmox es trivial pero nunca me acuerdo de como hacerlo...Ni de manera gráfica, ni de los parámetros para hacerlo desde la consola.Vamos un desastre...¿Nunca te ha sucedido? A mí continuamente de ahí que le quiera dedicar una entrada en este blog.
La versión de Proxmox que usaré para ilustrar el proceso será la 3.3-1.

Creación de backups de nuestras máquinas virtuales

Al grano que empiezo a divagar, sí, tenemos dos formas de crear y restaurar un backup de nuestras máquinas virtuales en Proxmox. Una a través de su interfaz web o a través de la consola mediante línea de comandos. Las dos funcionan bien, quizá como casi siempre, a través de la línea de comandos tienes más versatilidad. Yo suelo hacer uso de la línea de comandos, ya que me gusta saber cómo funcionan las cosas "por dentro".
Antes que nada me gustaría hacer referencia al concepto de "storage" como lugar de almacenamiento, el cual puede ser un disco local, un sistema de almacenamiento compartido por red con NFS o con una SAN por iSCSI. Si queremos profundizar en este concepto podemos visitar https://pve.proxmox.com/wiki/Storage_Model
Vamos a suponer que tenemos un pendrive, u otro disco adicional de donde está instalado Proxmox que queremos convertir en un staorage para , por ejemplo guardar nuestros backups seguiremos los siguientes pasos:
  1. Vemos que dispositivos tenemos conectados con #fdisk -l
  2. Supongamos que tenemos un pendrive por ejemplo etiquetado como sdb con una partición sdb1 en /dev/sdb1 que queremos montar por ejemplo en /tmp.
    #mount /dev/sdb1 /tmp
    En este momento tenemos montado el pendrive en /tmp en el árbol de directorios de la máquina donde tenemos instalado Proxmox pero aún no es un storage.
  3. Entramos en la interface web de Proxmox, y hacemos clic en el padre (Datacenter) del árbol jerárquico que está a la izquierda, en el panel que aparecerá a la derecha hacemos clic en la pestaña Storage, a continuación haremos clic en Add y aparecerá una pantalla con diferentes opciones a la hora de crear un storage, por ejemplo por NFS, en un directorio, etc. En nuestro caso, vamos a seleccionar Directory y estableceremos /tmp que es el directorio donde teníamos montado el pendrive así como un storage de backup. Una cuestión importante como en todo sistema Gnu/Linux si queremos que el pendrive se monte siempre que se inicie el sistema tendremos que añadirlo en /etc/fstab o si en vez de un pendrive fuera otro disco. ¿Por qué digo ésto? Porque el storage se quedará creado independientemente de si los dispositivos están montados en el directorio o no. De hecho a mí me pasó, monte un disco, olvidé meterlo en /etc/fstab creeé el storage,trabajé con él, reincié y cuando quise ver el contenido del storage no había nada. No había nada porque en el directorio donde apunta el storage estaba vacío, en el momento que monté ahí el disco ya pude ver su contenido (y respiré...)
Una vez que ya sabemos montar un dispositivo y crear un storage por si queremos usarlo, llega el momento de crear un backup.


Creación de backups en Proxmox de forma gráfica

  1. Desde la vista Server View, seleccionamos del árbol jeráquico la máquina de la cual queramos hacer el backup
  2. De la ventana de la derecha seleccionaremos la pestaña Backup.
  3. Aparecerán backups anteriores si los hubiera, a continuación sólo tenemos que hacer click en Backup now.
  4. A continuación aparecerá una pantalla donde seleccionaremos algunas opciones para hacer el backup como el modo y tipo de compresión. Un poco más adelante en este artículo hago referencia a los diferentes modos y tipos de compresión de los backups.
La imagen que se muestra a continuación muestra la pantalla con las opciones de creación del backup.




Creación de backups a través de líneas de comandos

Por consola a través de líneas de comandos no es mucho más difícil, aunque aquí nos centraremos sólo en los parámetros más comunes y prácticos bajo mi humilde punto de vista.
Para ello usaremos un "programita" que se llama vzdump, si quieres conocer todos los detalles puedes usar su manual con #man vzdump.
En /etc/vzdump.conf podemos configurar los parámetros por defecto. Los parámetros principales
son:
--storage Especifica el storage donde se guardará el backup
--mode (stop|suspend|snapshot) donde a grandes rasgos:
  • stop Con stop la máquina se para durante el proceso de backup
  • suspend  
    • Con máquinas virtuales openvz se hace uso de rsync para copiar la máquina virtual a un directorio temporal, a continuación la máquina es suspendida,un segundo rsync copia los ficheros y se reanuda el funcionamiento de la máquina.
    • Con máquinas qemu y kvm el funcionamiento es similar a stop pero suspendiendo/reanudando las máquinas en vez de pararla e iniciarla.
  • snapshot Hace uso de LVM para llevarlo a cabo. No se necesita parar la máquina pero se necesita espacio adicional para la creación del LVM.
--compress (0|1|gzip|lzo) Comprime el backup, por defecto es lzo y 1 es igual que lzo
--dumpdir directorio Establece el directorio donde se guardará el backup creado
--maxfiles 1-N Establece el número máximo de backups que puede almacenar de la misma máquina, por defecto es 1.De manera que si por ejemplo hubieramos puesto --maxfiles 2 y ya hubiera dos backups en el directorio, borraría el más antiguo haciendo que quearan dos backups.

Ejemplos:

#vzdump 102 --storage backups --mode snapshot --maxfiles 2 ->Por defecto la compresión es 1=lzo
#vzdump 110 --mode stop --compress gzip --dumpdir /tmp ->Si especificamos un directorio no debemos usar el argumento --storage de lo contrario lo guardará en el storage y no en el directorio especificado.


Tablas comparativa relacionada con el modo de backups y tipos de compresión

Cómo quería comparar cuanto tiempo tardan en hacerse los backups en función de sus diferentes modos considerando las particularidades de funcionamiento de cada uno de ellos me pareció interesante llevar a cabo unas tablas comparativas.
Los resultados se obtuvieron ejecutando vzdump sobre una máquina virtual de  646 Mb de peso, sobre un storage denominado backups que estaba montado en /tmp y era un pendrive.

Modo suspend

Se ejecutó #vzdump 102 --storage backups --mode suspend --compress [0|1|lzo|gzip] cambiando los correspondientes parámetros de compress y se obtuvieron los siguientes resultados:


Modo stop

Se ejecutó #vzdump 102 --storage backups --mode stop --compress [0|1|lzo|gzip] cambiando los correspondientes parámetros de compress y se obtuvieron los siguientes resultados:





Modo snapshot

Se ejecutó #vzdump 102 --storage backups --mode snapshot --compress [0|1|lzo|gzip] cambiando los correspondientes parámetros de compress y se obtuvieron los siguientes resultados:



Como podemos ver en los resultados de las ejecucuiones no hay apenas diferencias entre los tiempos entre los diferentes modos, aunque como se describió con anterioridad sí en su forma de funcionar. Entre los tipos de compresión el más rápido es lzo aunque el que mayor grado de compresión proporciona es gzip. Por lo tanto a igualdad de condiciones si se dispone de espacio suficiente para poder ejecutar el backup en modo snapshot dado que no es necesario parar la máquina para llevarla acabo se postula como la mejor opción. Entre gzip y lzo tendremos que escoger entre la velocidad de ejecución y el grado de compresión. El grado de compresión influye directamente en el tamaño del backup y la diferencia de tiempo tampoco es importante, por lo que para aprovechar mejor los recursos de almacenamiento yo me decantaría por la opción gzip.

Programación de copias

Por otra parte gráficamente también tenemos la posibilidad de crear una plantilla/horario de backups donde podemos configurar los días, las horas, el tipo de backups etc para ello:
  1. Nos vamos a la raiz del arbol de directorios que tenemos a la izquierda
  2. Hacemos clic en Backup
  3. Add
  4. Seleccionamos los parámetros
  5. Create
La siguiente imagen ilustra un poquito las opciones de creación del backup.


Por la línea de comandos también lo podríamos hacer con una tarea en crontab etc.


Restauración de un backup de una máquina virtual

Si la creación de backups es importante también lo es por ende la restauración del mismo. En este caso también podremos llevar a cabo la restauración a través de la interfaz web que nos proporciona Proxmox o vía línea de comandos.
En cualquier caso recordar que si los backups están en discos o unidades extraíbles es necesario montarlas con anterioridad en el sistema de ficheros de Proxmox, crear el storage tipo backups para que a partir de ellas restaurar los backups, tal y como describimos al comienzo del artículo.

Restauración a través de la GUI de Proxmox
  1. Seleccionamos del arbol jerárquico que tenemos a la izquierda la vista Storage View, ahí seleccionaremos el storage donde se encuentran los backups.
  2. Seleccionamos la pestaña Content
  3. Aparecerán listados los ficheros de backups disponibles de entre los que escogeremos el backup que queramos restaurar
  4. Seleccionamos Restore
  5. Ahora seleccionaremos el storage de destino y el vm id, ojo con esto del storage que si seleccionamos un storage con espacio limitado nos arrojará un error y no se restaurará el backup y hacemos clic en Restore.
  6. Comenzará el proceso de restauración que tardará en función del tamaño de la máquina a restaurar.
A continuación se muestra una imagen de ejemplo con la situación de los principales objetos mencionados. Tened en cuenta que para mí, el storage donde se alojan los backups se llama backups (en un alarde de imaginación), en vuestro caso se llamará como se llame el storage donde tengáis alojado el backup. Además para mí el storage destino se llama local, el vuestro se llamará como se llame vuestro storage destino.




Restauración a través de la línea de comandos


A través de la línea de comandos tenemos dos aplicaciones, vzrestore para vm openVz y qmrestore para vm KVM.
La estructura es similar en ambas aplicaciones.
Nos situamos en el directorio donde se encuentren los ficheros de backups

#vzrestore [--storage storage_name] archivo vmid
#qmrestore [--storage storage_name] archivo vmid


Ejemplos

#vzrestore --storage local vzdump-openvz-110-2015_09_08-18_43_39.tar.gz 110
#qmrestore --storage local vzdump-qemu-111-2015_09_08-18_43_39.tar.gz 111

Sin más y esperando que esta entrada sea de utilidad, ¡nos leemos en la próxima!
Un saludo.

   



Radar COVID

Tras largo tiempo sin publicar una entrada en el Blog, me he animado a escribir acerca de una App que podría llegar a ser muy útil en el con...