jueves, 3 de octubre de 2013

Instalación, configuración y administración de Bacula 5.0 en CentOS

Introducción

Bacula es un software libre para la creación, ejecución y mantenimiento de salvas automáticas de archivos a través de la red en diversos medios de almacenamiento (disco duro, DVDs, memorias flash, cintas, etc.).

Instalación

Director

# Máquina donde va el servidor centralizado de bacula, 
# desde el cual se manejan los jobs.
yum install bacula-console bacula-director-sqlite

Paquetes alternativos del director:

  • bacula-director-sqlite
  • bacula-director-mysql
  • bacula-director-postgresql

Clientes

# Máquinas con el origen de los datos que se quieren salvar.
yum install bacula-client 

Almacenes

# Máquinas con el destino de los datos que se quieren salvar.
yum install bacula-storage-sqlite

Paquetes alternativos del storage:

  • bacula-storage-sqlite
  • bacula-storage-mysql
  • bacula-storage-postgresql

Configuración

El home de Bacula por defecto es /var/spool/bacula. Aquí se escriben los registros de operaciones, el catálogo de Bacula y los mensajes para el administrador.

El directorio base de la configuración es /etc/bacula/. Dentro, están los siguientes archivos:

  • bacula-dir.conf: Director (servidor de bacula)
  • bacula-fd.conf: File daemon (cliente, origen del backup)
  • bacula-sd.conf: Storage daemon (almacenamiento, destino del backup)
  • bconsole.conf: Consola de administración
  • query.sql: Querys del catálogo

Definiendo los recursos

Debemos tener en cuenta, primero que todo, las siguientes relaciones de dependencia entre recursos:

Job --> Client -> Catalog
    |-> FileSet
    |-> Pool 
    |-> Storage -> Device 
    |-> Schedule

Es aconsejable ir de lo más simple a lo más complejo, para armar las relaciones a medida que definimos los recursos.

1. Recurso FileSet: Define el conjunto de archivos de la máquina cliente que se incluyen y se excluyen a la hora de salvarse. Cuando es una carpeta, por defecto se incluyen todos los archivos y carpetas contenidos recursivamente. Ejemplo:

FileSet {
  Name = "face-blocks"
  Include {
    Options {
      signature = MD5
    }
    File = /var/lib/disklocal
  }

  Exclude {
    File = /var/lib/disklocal/lost+found
  }
}

2. Recurso Device: Por lo general, sirven para definir el camino en el sistema de archivos de la partición en el que se monta el dispositivo en la máquina almacén. En este dispositivo serán guardados los volúmenes (la salva) de manera binaria. No tiene que definirse en el director, pero sí debe estarlo en el almacén.

Device {
  Name = FileStorage
  Media Type = File
  Archive Device = /var/lib/backup
  LabelMedia = yes;                   # lets Bacula label unlabeled media
  Random Access = Yes;
  AutomaticMount = yes;               # when device opened, read it
  RemovableMedia = no;
  AlwaysOpen = no;
}

3. Recurso Catalog: Da conectividad con la base de datos que contiene los metadatos de nuestras salvas.

Catalog {
  Name = "MyCatalog"
  # Uncomment the following line if you want the dbi driver
  #dbdriver = "dbi:sqlite3"; dbaddress = 127.0.0.1; dbport =
  dbname = "bacula"; dbuser = "bacula"; dbpassword = ""
}

4. Recurso Pool: Permite utilizar uno o varios volúmenes (archivos o cintas) de almacenamiento, además de recilar y definir tamaño y cantidad de los volúmenes.

Pool {
  Name = File
  Pool Type = Backup
  Recycle = yes                # Bacula can automatically recycle Volumes
  AutoPrune = yes              # Prune expired volumes
  Volume Retention = 365 days  # one year
  Maximum Volume Bytes = 50G   # Limit Volume size to something reasonable
  Maximum Volumes = 100        # Limit number of Volumes in Pool
  Label Format = "vol-"        # Volume names: vol-0001, vol-0002, etc.
}

5. Recurso Schedule: Define los rangos de tiempo en los que se ejecutará una tarea.

# When to do the backups, full backup on first sunday of the month,
#  differential (i.e. incremental since full) every other sunday,
#  and incremental backups other days
Schedule {
  Name = "WeeklyCycle"
  Run = Full 1st sun at 23:05
  Run = Differential 2nd-5th sun at 23:05
  Run = Incremental mon-sat at 23:05
}

6. Recurso Client: Define los datos de la(s) máquina(s) fuente de los archivos en un FileSet a salvar.

Client {
  Name = bacula-fd
  Address = workers-arg2
  FDPort = 9102
  Catalog = MyCatalog
  Password = "datys1"        # password for FileDaemon
  File Retention = 30 days   
  Job Retention = 6 months   # six months
  AutoPrune = yes            # Prune expired Jobs/Files
}

7. Recurso Storage: Define los datos de la(s) máquina(s) destino de las salvas (donde están los dispositivos y se crean los volúmenes).

Storage {
  Name = face-storage
  Address = workers-arg2  # N.B. Use a fully qualified name here
  SDPort = 9103
  Password = "datys1"
  Device = face-device
  Media Type = File
}

8. Recurso Job: Define la tarea a realizar, teniendo en cuenta los recursos disponibles.

Job {
  Name = "backup-face-blocks"
  Type = Backup
  Level = Incremental # Do "Full" the first time, save changed after
  Client = bacula-fd
  FileSet = "face-blocks"
  Schedule = "DailyAt2315"
  Storage = face-storage
  Messages = Standard
  Pool = File
  Priority = 10   # Default, 1-99999... 1 (highest priority)
  Write Bootstrap = "/var/spool/bacula/%c.bsr"
}

Job {
  Name = "restore-face-blocks"
  Type = Restore
  Client = bacula-fd
  FileSet = "face-blocks"
  Storage = face-storage
  Pool = Default
  Messages = Standard
  Where = /tmp/face-restores  # Restore files at this location
}

Configuración del director (bacula-dir.conf)

  1. Generar un password aleatorio, para que dondequiera que aparezca password, actualizarlo.
  2. Si se desea mantener los recursos Client y los Storage por defecto, debe actualizarse Address al nombre de las máquinas clientes y almacenes, respectivamente.
  3. Se puede comentar los jobs de salvas del catálogo y los servicios de /usr/sbin.
  4. Para poder incluir otros archivos de configuración en el principal, creamos el directorio /etc/bacula/conf.d y adicionamos la siguiente línea al final de bacula-dir.conf:
    @|"sh -c 'for f in /etc/bacula/conf.d/*.conf; do echo @${f} ; done'"
  5. Correr los scripts de creación de las bases de datos ubicados en /usr/libexec/bacula/
    ./create_bacula_database 
    ./make_bacula_tables
  6. Definir nuestros archivos de configuración (terminados en .conf) en /etc/bacula/conf.d/. Los recursos que debemos definir, en caso de no existir son:
    • Job
    • Schedule
    • FileSet
    • Client
    • Catalog
    • Storage
    • Pool

Configuración del cliente (bacula-fd.conf)

  1. Usar el mismo password para el cliente definido en el director.

Configuración del almacén (bacula-sd.conf)

  1. Usar el mismo password para el storage definido en el director.
  2. Definir los dispositivos que se usarán para el almacén.
  3. Device {
      Name = face-device
      Media Type = File
      Archive Device = /var/lib/face-backup
      LabelMedia = yes;          # lets Bacula label unlabeled media
      Random Access = Yes;
      AutomaticMount = yes;      # when device opened, read it
      RemovableMedia = no;
      AlwaysOpen = no;
    }

Administración usando bconsole

Cuando instalamos el paquete bacula-console, podemos acceder a la administración de bacula a través de la aplicación bconsole, la cual debe estar configurada con los datos del director:

# /etc/bacula/bconsole.conf
Director {
  Name = bacula-dir
  DIRport = 9101
  address = localhost
  Password = "datys1"
}

Cuando ejecutamos esta consola podemos:

  1. Obtener ayuda de uso de la consola:
    help
  2. Ver el estado del director, clientes y almacenes:
    status all
    #status clients
    #status dir
    #status storage
    #status jobs
  3. Ejecutar jobs:
    run
  4. Cancelar jobs:
    cancel
  5. Restaurar archivos con jobs de restauración:
    restore
  6. Recargar la configuración del director:
    reload
  7. Nombrar un volumen a ser usado por el pool (necesario para iniciar un job si no se especifica Label Format en el recurso Pool):
    label

Referencias

  1. Kern Sibbald, Bacula Main Reference, Febrero 1, 2013.

No hay comentarios:

Publicar un comentario