Respaldo de Volúmenes CEPH con el Plugin Bacula bpipe y Exportación RBD

Hemos visto en el pasado cómo bpipe hace posible la copia de seguridad de numerosas aplicaciones utilizando comandos para la salida estándar de Linux <https://www.bacula.lat/usando-o-bpipe-para-stream-de-dumps-clones-de -máquinas-virtuales-y-otros-datos-para-su-respaldo/>.

rbd es una utilidad para manipular imágenes de dispositivos de bloque (RBD), utilizada por el controlador rbd de Linux y el controlador de almacenamiento rbd para QEMU / KVM. Las imágenes RBD son dispositivos de bloque único que se distribuyen en objetos y se almacenan en un almacén de objetos RADOS. El tamaño de los objetos sobre los que se ve la imagen debe ser una potencia de dos.

El script de shell a continuación se puede instalar en el cliente Bacula con acceso al cliente RBD, para enumerar los volúmenes de un Pool del CEPH, snapshot y exportación. Se admiten copias de seguridad diferenciales e incrementales.

#!/bin/bash
#
# Autoría: Heitor Faria (Copyleft: all rights reversed).
# Probado por: xxxx
#
# Debe ser llamado en el sub-recurso INCLUDE del FileSet de bacula-dir.conf, refiriéndose a la copia de seguridad del cliente instalado en la máquina CEHP (por ejemplo), por CEPH Pool:
#
# Plugin = "\\|/opt/bacula/scripts/bpipe_rbd %l <pool_ceph>"
# 					     $1     $2
#

time=$(date +%F_%H-%M-%S)

if [[ $1 == 'Incremental|Differential' ]]
  then
    exp="export-diff"
    imp="import-diff"
fi
if [[ $1 == Full ]]
   then
     exp="export"
     imp="import"
fi

for vol in $(rbd -p $2 ls); do
  rbd snap create --pool $2 --image $vol --snap $vol-$time
  echo "bpipe:/var/$vol:rbd $exp --pool $2 --image $vol --snap $vol-$time --path -:rbd $imp --dest-pool $2 --dest $vol --path -"
done

Para restaurar, es necesario cambiar el nombre del volumen CEPH original o eliminarlo.

El comando de restauración definido (rdb import) se puede reemplazar más tarde en el momento de la restauración de Bacula para escribir el volumen en el disco. Ejemplo: dd of=/tmp/volume_name

 

Disponível em: pt-brPortuguês (Portugués, Brasil)enEnglish (Inglés)esEspañol

Deja una respuesta