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.

   



17 comentarios:

  1. Buenos Días Jose Maria tengo un error que no logro comprender me gustaría que pudieras ayudarme en cuando ejecuto el comando para respaldar me sale unable to find command 'rsync' y no hace el respaldo como logro solvertar este error ??? Gracias

    ResponderEliminar
  2. Buenas Anónimo,ante todo gracias por tu comentario.Necesitaría algún detalle más para darte una solución más acertada.A primera vista parece que no tienes instalado rsync en el que se apoya vzdump.¿Has ejecutado la sentencia desde una distribución Proxmox o has instalado vzdump de manera independiente.Ya nos cuentas.Un saludo.

    ResponderEliminar
  3. Gracias por tu pronta respuesta, te comento que lo he hecho desde una instalación de distribución de Proxmox y lo he intentado desde comando directo de la consola de linux como del entorno web de proxmox y me da el mismo error, me desconcierta porque el rsync al realizarse un apt-get install me dice que esta la ultima versión ya instalada. Espero puedas ayudarme mas agradecido de ante mano

    ResponderEliminar
    Respuestas
    1. Buenas Tomás, la verdad es que he estado mirando info relacionada con el problema que presentas ya que a mí no se me ha dado hasta el momento este problema.¿Podrías postear la salida del log de vzdump cuando intentas lanzar el backup de la máquina?A ver si nos da alguna pista más para buscar más info.
      Gracias!!

      Eliminar
  4. Este es el log del ultimo intento que hizo de respaldo cat vzdump-openvz-100-2016_05_02-10_10_52.log
    May 02 10:10:52 INFO: Starting Backup of VM 100 (openvz)
    May 02 10:10:52 INFO: CTID 100 exist mounted running
    May 02 10:10:52 INFO: status = running
    May 02 10:10:52 INFO: mode failure - unable to dump into snapshot (use option --dumpdir)
    May 02 10:10:52 INFO: trying 'suspend' mode instead
    May 02 10:10:52 INFO: backup mode: suspend
    May 02 10:10:52 INFO: ionice priority: 7
    May 02 10:10:52 INFO: starting first sync /var/lib/vz/private/100/ to /var/lib/vz/dump/vzdump-openvz-100-2016_05_02-10_10_52.tmp
    May 02 10:10:53 INFO: /bin/bash: line 1: 853458 Killed rsync --stats -x --numeric-ids -aH --delete --no-whole-file --inplace '/var/lib/vz/private/100/' '/var/lib/vz/dump/vzdump-openvz-100-2016_05_02-10_10_52.tmp'
    May 02 10:10:53 ERROR: Backup of VM 100 failed - command 'rsync --stats -x --numeric-ids -aH --delete --no-whole-file --inplace '/var/lib/vz/private/100/' '/var/lib/vz/dump/vzdump-openvz-100-2016_05_02-10_10_52.tmp'' failed: exit code 137

    Este intento no lo completo y de alli en adelante no lo hace con ningun servidor Espero tus comentarios Gracias

    ResponderEliminar
    Respuestas
    1. Buenas Tomas,¿qué tal?¿Solucionaste el tema?No he tenido tiempo de de mirar nada de lo tuyo con las vacaciones y eso...La verdad desconozco por qué no te funciona rsync...Si lo solucionas me encantaría que lo compartieras con nosotros.Si descubro algo te cuento.Gracias!

      Eliminar
  5. Hola que tal, me han pasado un backup de una maquina virtual en terminacion .vma.lzo al memento de querer restaurarlo me sale el siguinete error:command 'vma extract -v -r /var/tmp/vzdumptmp488897.fifo /var/lib/vz/dump/vm107/vm107.vma /var/tmp/vzdumptmp488897' failed: archive does not contain data for drive 'ide0'

    ResponderEliminar
  6. Buenas Cristina,¿qué tal?Esa "terminación" .vma.lzo hace referencia a un backup de una máquina virtualizada con KVM. El ide0 hace referencia al "disco duro" de la máquina virtualizada.No estoy seguro,pero me da la sensación de que el fichero de backup que te han pasado por lo que sea no cumple con el formato que espera qmrestore.Si intentas editar el fichero vma.lzo una de las primeras líneas debe comenzar con ide0 nombre del storage:el vmid etc.¿El fichero contiene esa línea?Si intentas restaurarla en tu Proxmox prueba a cambiar el nombre del storage original por el del storage de tu Proxmox.No lo he probado, y no sé si funcionará.Pruebalo y nos cuentas, yo intentaré hacer alguna prueba.
    Gracias!!

    ResponderEliminar
    Respuestas
    1. Lo de cambiar el nombre del storage no funciona, lo he probado.Me inclino porque el fichero no tenga la estructura que espera qmrestore...Habrá que seguir leyendo, si solucionas el problema por favor comentanoslo para que ganemos todos.Si averiguo algo te cuento.
      Gracias!!

      Eliminar
  7. Hola. Quise usar un backup para restaurar creando un container nuevo a partir del mismo, pero me arroja para cada archivo el error "Cannot change ownership to uid 1001, gid 1001: Operation not permitted" (el uid y el gid varian de acuerdo al archivo). Agradezco ayuda. Saludos

    ResponderEliminar
  8. Buenas Toto.¿Qué tal?Gracias por tu comentario.Perdona por el retraso en la respuesta, ando algo liado.¿Lo solucionaste?Si es así me gustaría que compartieras la solución si no vamos a ver si entre todos la alcanzamos.¿vzrestore los has lanzado como root?¿En el storage donde quieres restaurar la vm tienes permisos de escritura para el usuario con el lanzas vzrestore?Ya nos cuentas.Un saludo.

    ResponderEliminar
  9. Hola José ante todo buena la noticia para hacer backups, voy a probar por línea de comando. Te quería hacer una pregunta y que me des tu opinión al respecto. En nuestra empresa usamos proxmox y nos funciona de maravilla, hacemos backup sin problemas pero a la hora de restaurar los backup (por interface grafica, Snapshot, LZO) se demora mucho (el bakcup nos esta pesando unos 90GB) facil 1 hora se demora. Ahora te pregunto ¿conviene hacer copia de los disco (me refiero a los RAW o qcow) y restablecer cambiando la ruta en la configuración de VM.conf (esto en teoría creemos que sera instantaneo) o seguir con los bakcup vzdump con su tiempo de demora?

    ResponderEliminar
  10. Hola José ante todo buena la noticia para hacer backups, voy a probar por línea de comando. Te quería hacer una pregunta y que me des tu opinión al respecto. En nuestra empresa usamos proxmox y nos funciona fantástico, hacemos backup sin problemas pero a la hora de restaurar los backup (por interface gráfica, Snapshot, LZO) se demora mucho (el bakcup nos esta pesando unos 90GB) facil 1 hora se demora. Ahora te pregunto ¿conviene hacer copia de los disco (me refiero a los RAW o qcow) y restablecer cambiando la ruta en la configuración de VM.conf (esto en teoría creemos que sera instantaneo) ó seguir con los bakcup vzdump con su tiempo de demora?

    ResponderEliminar
    Respuestas
    1. Buenas Manuel,¿qué tal?Ante todo gracias por tu comentario.Si es normal que el tiempo se incremente linealmente en función del tamaño de la VM a la que queramos hacer el backup.Respecto a lo de copiar directamente el fichero del disco raw o qcow debes tener en cuenta que tienes que tener parada la máquina sí o sí,por lo que la Disponibilidad de la máquina debes valorarla ya que con snapshot y LZO no es necesario pararla por lo que a lo mejor te compensa esperar el tiempo que se lleve.Por otro lado, el tiempo que lleve copiar el fichero será directamente proporcional al tamaño del mismo.
      Espero haberte ayudado.Y disculpa la tardanza en la respuesta.
      Nos leemos!
      Un saludo.

      Eliminar
  11. Saludos Jose Maria ante todo gracias por el trabajo realizado. Quería consultarte si tengo un proxmox 4.4 con un disco externo como disco de backups y quisiera levantar ese backup en otro proxmox 4.4 con diferente hardware que el primero, debería restaurar sin problemas o haz tenido problemas? Saludos.... Y gracias de antemano.

    ResponderEliminar
    Respuestas
    1. Buenas Julio perdona la tardanza en la respuesta la paternidad me tiene absorvido.Pero supongo que a alguien le yudará la respuesta.No debes tener problemas.Montas el HD externo como un storage y restauras lás máquinas.
      Un saludo!
      Nos leemos!

      Eliminar
  12. hola buenas tardes, teng ouna duda un tanto tonta, soy nuevo en proxmox, lo monte sin problemas en una laptop para pruebas, instale una maquina virtual, pero no consigo el archivo que genera proxomox para la maquina virtual, lei q se encuentra en /dev/pvv/nombremimaquinavirtual, pero al llegar ahi no hay sino un archivo con ese nombre, es normal eso? si quiero sustituilr ese archivo por otro que es un pc migrado de vmawware y convertido, podria hacerlo?

    ResponderEliminar

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...