Creative Commons License
Excepto donde se indique otra cosa, todo el contenido de este lugar está bajo una licencia de Creative Commons.
Taquiones > sysadmin > Bacula: copias de seguridad en red

Bacula: copias de seguridad en red

El programa Bacula es una aplicación de software libre que permite efectuar copias de seguridad en una red de ordenadores heterogénea.

Su arquitectura está basada en los siguientes componentes:

  • Servidor de archivos: para instalar en los clientes y chupar de éstos la información.
  • Servidor de almacenamiento: encargado de transferir a dispositivos físicos la información producida por el servidor de archivos.
  • Base de datos: encargada de registrar lo sucedido con las copias de seguridad.
  • Servidor de copias: encargado de poner en marcha todo el sistema, comunicando unos con otros, anotar los resultados y generar informes de trabajo.
  • Consola de control: punto de entrada para los administradores del sistema de copias.

En palabras de uno de sus creadores, en la entrevista citada más abajo:

... Also, we made a commitment to upward compatibility of backup media. DLT tapes have a retention time of 30 years, and it's only reasonable to expect your software to be able to read them if the hardware can--the software problem is a lot easier to solve!

Lo atractivo de su diseño es que los citados componentes pueden estar en máquinas diferentes de la red, y ser al mismo tiempo víctimas de las copias y servidores de éstas.

Todo el trabajo lo lleva a cabo el director de copias. Los clientes sólo saben quién puede controlarlos y a dónde tienen que enviar los mensajes. Es por eso por lo que estos servidores de archivos deben funcionar contínuamente (como servicios) en las máquinas cliente; nunca saben cuándo van a ser llamados para operar. Es más, incluso ignoran a qué servidor de almacenamiento tienen que enviar los datos; esto se les comunica por parte del director en el momento de iniciar una copia (ó una restauración).

La configuración puede ser, en ocasiones, algo compleja y es que hay que considerar que no está pensado para efectuar copias a matacaballo, y es preciso efectuar un diseño inicial detallado y una planificación de recursos cuidadosa.

Otras características son:

  • La comunicación entre componentes puede cifrarse
  • Es capaz de manejar varios volúmenes físicos (encadenados) si los datos no caben en uno, y recordar e identificar cuál es el correcto. Por ejemplo cintas DAT y DVDs.

Secciones

Tipos de recursos en bacula

Operaciones

A continuación un recetario sobre el uso y la administración de bacula

Verificar la configuración

Para efectuar una verificación de la configuración de bacula podemos usar el programa demonio correspondiente, pasándole el parámetro -t para verificarlos y el -c más la ruta de acceso al archivo que queremos verificar:

# cd /etc/bacula
# bacula-dir -t -c bacula-dir.conf
10-nov 10:30 bacula-dir: ERROR TERMINATION at parse_conf.c:853
Config error: Keyword "passwd" not permitted in this resource.
Perhaps you left the trailing brace off of the previous resource.
            : line 8, col 8 of file /etc/bacula/sarajevo.conf
        passwd  =       ""

lo anterior es un mensaje de error típico (e involuntario) que sirve de muestra de lo que se puede esperar.

Para el resto de los archivos se usarán los programas indicados como en:

# cd /etc/bacula
# bacula-fd -t -c bacula-fd.conf
# bacula-sd -t -c bacula-sd.conf
# bconsole -t -c bconsole.conf

Depuración

Aunque un poco pesado existe un mecanismo para verificar el funcionamiento de bacula, y que consiste en ejecutar los programas correspondientes con la opción de depuración activa:

# bacula-dir -d100 -c /etc/bacula/bacula-dir.conf
# bacula-sd -d100 -c /etc/bacula/bacula-sd.conf

y así con todos aquellos que necesitemos, sobre todo la consola:

# bconsole -d100 -c /etc/bacula/bconsole.conf

para la que existe otra posibilidad, y es la de usar la orden setdebug para cambiar la locuacidad del programa sobre la marcha, no sólo de él, sino de todos los otros componentes del sistema como puede verse en el siguiente ejemplo de sesión:

* setdebug
Enter new debug level: 100
Available daemons are:
    1: Director
    2: Storage
    3: Client
    4: All
Select daemon type to set debug level (1-4): 4
Connecting to Storage daemon Disco at maginot.venexma.int:9103
3000 OK setdebug=100
Connecting to Client sarajevo-fd at sarajevo.venexma.int:9102
2000 OK setdebug=100
*

Mensajes

Lo anterior está muy bien y es muy fácil de usar. Ahora bien, ¿ dónde se envían los dichosos mensajes de depuración ?

Pues a donde le digamos, por lo menos según la documentación, en el recurso de mensajes de la configuración del demonio correspondiente.

En el siguiente caso vamos a disponer en el cliente una claúsula especial para que añada la información a un archivo en el sistema local, además de enviarlos al director. En este caso estamos excluyendo mensajes sobre archivos excluídos del trabajo y los de terminación.

    1 Messages {
    2     Name     = Standard
    3     director = sarajevo-dir = all, !skipped, !restored
    4     append   = "/var/log/bacula/log" = all, !skipped, !terminate
    5 }

Trazado

En un momento dado me he encontrado con que una simple conexión con el director de copias provocaba una caída completa del sistema. La pista a seguir me la ha dado (previa indicación de mi compañero Angel) que funcionase como root y no con el usuario propio bacula.

Para averigüar exactamente qué hace el programa puede utilizarse la siguiente receta:

# /etc/init.d/bacula-director stop
# strace -f -o /tmp/bacula.log /usr/sbin/bacula-dir -c \
  /etc/bacula/bacula-dir.conf -u bacula -g bacula

que viene a ser la misma que utiliza el programa correspondiente en /etc/init.d.

Tras la ejecución comprobamos el archivo de traza (*/tmp/bacula.log) que, en nuestro caso, lo que fallaba era que no tenía acceso al catálogo correspondiente al cliente Sarajevo. Dicho archivo era propiedad absoluta de root y bacula era incapaz de abrirlo.

Ah, el parámetro -f de strace es útil para cuando se efectúa un fork del proceso y necesitamos seguirle la pista a los hijos.

Configuración en red

Existen varios tipos de configuración en red que presentan varios niveles de dificultad. Estoy reuniendo aquí anotaciones y referencias sobre ellos:

Anecdotario

Relación de anécdotas y casos con los que me encuentro, su explicación y posible solución si la encuentro.

Max configured use duration exceeded.

Dentro del recurso pool es posible establecer un límite de tiempo para usar un volumen en trabajos de copia, antes de marcarlos como usados y pasar a estar bajo la política de reciclado.

Esto puede ser útil para no emplear durante mucho tiempo volúmenes en copias incrementales ó diferenciales, e ir rotándolas entre sí.

El único problema que plantea es que este valor Volume Use Duration se almacena junto al volumen en el momento de su creación en el catálogo, por lo que cualquier cambio en el archivo de configuración del director de copias sólo sirve para los nuevos volúmenes y no para los que ya existen. En caso de necesitar cambiar este parámetro en los volúmenes existentes (usados ó no aún en copias), es emplear una orden de la consola llamada update:

*update
Update choice:
    1: Volume parameters
    2: Pool from resource
    3: Slots from autochanger
Choose catalog item to update (1-3): 1
Parameters to modify:
    1: Volume Status
    2: Volume Retention Period
    3: Volume Use Duration
    4: Maximum Volume Jobs
    5: Maximum Volume Files
    6: Maximum Volume Bytes
    7: Recycle Flag
    8: Slot
    9: InChanger Flag
    10: Volume Files
    11: Pool
    12: Volume from Pool
    13: All Volumes from Pool
    14: Done
Select parameter to modify (1-14):

La opción número tres nos permite cambiar el valor de uso para un volumen concreto, aunque si son muchos se convierte en una tarea muy pesada y propensa a errores. Es mejor emplear la opción trece (All volumes from Pool) que toma los valores de la definición del pool y las aplica a todos los volúmenes registrados en el catálogo.

Enlaces