Saltar la navegación

Configuación del servidor en Debian

La parte servidora de AMANDA utiliza varios ficheros de configuración para cada configuración de backup, los cuales deberán estar dentro del directorio /etc/amanda.

A cada configuración de backup se le asignará un nombre, y se creará un directorio con ese nombre dentro de /etc/amanda con todos sus ficheros de configuración.

Como ejemplo podríamos crear una configuración de backup denominada BackupUsuarios, con el objetivo de salvaguardar el directorio casa de los usuarios de los distintos equipos de la red. Esto implicaría la creación del directorio:

# mkdir /etc/amanda/BackupUsuarios

El proceso de copias de seguridad con AMANDA hace uso del usuario especial backup que pertenece al grupo backup y cuyo directorio casa es /var/backups. Es necesario por tanto que dicho usuario tenga todos los permisos sobre el directorio que acabamos de crear y cuyo dueño habrá que cambiar también:

# grep backup /etc/passwd
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
# ls -ld /etc/amanda
drwxrwx--- 3 backup backup 4096 nov 25 21:44 /etc/amanda
# ls -ld /etc/amanda/BackupUsuarios
drwxr-xr-x 2 root root 4096 nov 25 21:44 /etc/amanda/BackupUsuarios
# chown backup:backup /etc/amanda/BackupUsuarios
# chmod 750 /etc/amanda/BackupUsuarios
# ls -ld /etc/amanda/BackupUsuarios
drwxr-x--- 2 backup backup 4096 nov 25 21:44 /etc/amanda/BackupUsuarios

Este trabajo puede dejarse para el final, después de haber hecho toda la configuración.

Dentro del directorio anterior tienen que estar los ficheros de configuración, de los cuales destacamos en este momento los siguientes:

  • amanda.conf: Es el fichero principal de configuración. Todos los parámetros de configuración tienen valores por defecto, por lo que no es necesario especificarlos todos si sus valores por defecto son adecuados. No se distingue entre mayúsculas y minúsculas.
  • disklist: En este fichero se especifican todos aquellos recursos de la red de los que se hará copia de seguridad.
  • changer.conf: Se utilizará para indicar los directorios donde se guardarán las copias de seguridad y cómo se cambia de uno a otro.

Comenzaremos preparando el fichero principal de la configuración, amanda.conf, para lo cual, iremos explicando cada una de sus líneas:

org "BackupUsuarios"

El parámetro org especifica un nombre descriptivo para la configuración de backup que estamos construyendo y que se incluirá en la línea Subject de los emails que AMANDA envía para informar sobre el proceso de backup de dicha configuración. El valor que hemos puesto, es el nombre que le hemos dado a la configuración de backup, y por lo tanto será fácil distinguir los informes recibidos por correo electrónico.

mailto "usuario@dominio.com"

Con mailto se indica la dirección de correo electrónico a donde se enviarán los informes del backup. Puede ponerse más de una dirección separadas por espacios. Si no se especifica, no se enviará ningún informe.

dumpuser "backup"

El valor dado a dumpuser especifica el usuario que ejecutará los backups. El valor por defecto es "amanda" y en Debian el usuario debe ser "backup".

inparallel 1

El parámetro inparallel indica el número máximo de copias de seguridad que AMANDA intentará ejecutar en paralelo. Por defecto, su valor es 10, pero esta forma de trabajo siempre estará dentro de las limitaciones dadas por el ancho de banda de la red que puede utilizar AMANDA (netusage) y el espacio libre que haya en el disco caché (holding disk). Para nuestro ejemplo, como las copias de seguridad se harán de madrugada, no es acuciante la velocidad, por lo que las haremos de una en una.

netusage 100

Con netusage especificamos el máximo ancho de banda de la red que AMANDA podrá usar; se expresa en kilobytes por segundo y en nuestro caso son 100 kBps, siendo el valor por defecto de 80 kBps. Este valor es importante tenerlo en cuenta para subirlo o bajarlo en función de nuestra experiencia.

Los valores de velocidad de transferencias pueden llevar asociadas las siguientes unidades: bps (bytes por segundo), kps, kbps, mps, mbps. Para nuestro ejemplo, hubiera sido lo mismo cualquier cosa de lo siguiente: 100 kps ó 100 kbps.

Vamos ahora a definir la estrategia de las copias de seguridad. AMANDA realiza dos tipos de copias de seguridad, totales e incrementales. Tomamos la decisión de hacer cada semana una copia total y seis incrementales, y en cada backup diario utilizaremos una sola cinta magnética, es decir, un sólo fichero del disco, pues las cintas magnéticas las simularemos con cintas virtuales que representan ficheros en el disco duro.

Por otro lado, pensamos también en conservar dos semanas de copias de seguridad, y luego ya pasaremos a sobreescribir las copias.

Todo esto implica que necesitaremos 14 cintas virtuales.

dumpcycle 7

Con el parámetro dumpcycle indicamos el número de días de un ciclo de backup, por lo que un backup completo se hará al menos una vez en el periodo indicado, el resto de copias serán incrementales. Si se da el valor 0, cada día se hará una copia completa.

AMANDA permite el uso de unidades junto a muchos valores, para el caso de expresar días, estos pueden escribirse con cualquiera de las siguientes unidades: day, days, week o weeks; de esta manera podríamos haber escrito también: 7 day, 7 days, 1 week, 1 weeks.

runspercycle 7

Para una configuración de backup concreta, lo habitual es ejecutarla una vez al día con el programa amdump, que es el encargado de ejecutar las copias de seguridad, por lo que le hemos puesto el valor 7 al parámetro runspercycle, que indica el número de ejecuciones de amdump durante el ciclo de backup, en consecuencia, 7 ejecuciones en 7 días equivalen a una ejecución diaria.

El valor por defecto de runspercycle coincide con el valor de dumpcycle, por lo que en nuestro ejemplo podríamos evitar esta línea.

runtapes 1

El valor de runtapes indica el número máximo de cintas (reales o virtuales) que se usarán en cada ejecución de amdump (en cada backup). El valor por defecto es 1, de modo que la línea anterior no tenemos por qué ponerla.

tapecycle 14

Con el parámetro tapecycle especificamos el número de cintas que se utilizarán como máximo en cada ciclo de backup. AMANDA hace uso de las cintas ordenadamente, siempre hace la misma rotación, por lo que con tapecycle lo que definimos es el tamaño de la rotación. Para nuestro ejemplo, como el ciclo de backup es de 7 días, donde se ejecuta una copia por día que necesita una sola cinta y queremos retener las copias de dos semanas, necesitamos por tanto 14 cintas, virtuales en nuestro caso, pues usaremos el disco como dispositivo de almacenamiento.

Indicamos ahora una serie de ficheros y directorios auxiliares que necesita AMANDA. Cuidado, pues por el nombre de algunos parámetros parece que debería ser un fichero pero es un directorio.

infofile "/etc/amanda/BackupUsuarios/curinfo"
logdir "/etc/amanda/BackupUsuarios/log"
indexdir "/etc/amanda/BackupUsuarios/index"
tapelist "/etc/amanda/BackupUsuarios/tapelist"

El significado de estos parámetros es el siguiente:

  • infofile: Indica el directorio donde se localizará la base de datos que contiene el histórico de operaciones de AMANDA. Versiones antiguas de AMANDA usan esto como el nombre de un fichero de base de datos. Las nuevas versiones lo usan como nombre de directorio.
  • logdir: Directorio para los ficheros log.
  • indexdir: Directorio para la base de datos que contiene el catálogo de la copia de seguridad, es decir, el índice de su contenido.
  • tapelist: Fichero que contiene el nombre, el estado y la fecha del último uso para todas las cintas de la configuración.

Empezamos ahora a describir todo lo relacionado con el tipo de cintas que vamos a usar, en nuestro caso, cintas virtuales, que son ficheros de disco.

tpchanger "chg-multi"

El parámetro tpchanger se utiliza para indicar el tipo de cambiador automático de cinta magnética. Para nuestro caso, especificamos el valor chg-multi, que nos permitirá definir un cambiador automático virtual específico para cambiar entre ficheros de disco (cintas virtuales).

changerfile "/etc/amanda/BackupUsuarios/changer.conf"

El parámetro changerfile es obligatorio ponerlo al usar tpchanger con el valor chg-multi, pues en él especificamos el fichero que configura el cambiador automático de cinta virtual y también se definirán qué ficheros constituirán dichas cintas.

tapetype "DISCO"

En tapetype ponemos el nombre de un tipo de unidad de cinta cuyos parámetros se definirán con define tapetype, por ejemplo, la HP-ULTRIUM-LTO1, pero para nuestro caso nos inventamos un nombre, pues usamos ficheros de disco.

labelstr "^EtiquetaDisco[0-9][0-9]*$"

Con labelstr especificamos la expresión regular que seguirán los nombres de las etiquetas de las cintas virtuales, que serán usados por AMANDA para identificar las cintas, saber dónde se encuentra cada fichero del backup y cuál es el orden de rotación.

define tapetype "DISCO" {
    comment "Copias de seguridad sobre disco duro"
    length 8 gbytes  # 8 GB de espacio
}

Usamos define tapetype para indicar el tamaño de los ficheros donde se guardarán las copias de seguridad. Deben ser lo suficientemente grandes como para que quepa una copia completa. Para nuestro ejemplo, sólo hemos puesto un comentario y la longitud de las cintas virtuales, pero en el caso de usar una unidad de cinta magnética real, los parámetros que se especificarán serán los que nos dé el fabricante, aunque está el comando amtapetype que puede testear la unidad y deducirlos.

Las unidades que pueden ir junto a las cantidades que expresan espacio de almacenamiento puede ser muy variadas:

  • Para bytes: b, byte, bytes
  • Para kilobytes: k, kb, kbyte, kbytes, kilobyte, kilobytes
  • Para megabytes: m, mb, meg, mbyte, mbytes, megabyte, megabytes
  • Para gigabytes: g, gb, gbyte, gbytes, gigabyte, gigabytes
  • Para terabytes: t, tb, tbyte, tbytes, terabyte, terabytes

Necesitamos ahora definir los tipos de volcados, que para nuestro caso, definiremos dos, un tipo de volcado con parámetros genéricos, que se incluirá en el resto de volcados y el volcado con el comando tar, que será el que utilicemos.

Los tipos de volcados se definen con define dumptype y el formato genérico es:

define dumptype "nombre-dumptype" { 
parámetro-dumptype valor-dumptye
......
}

El nombre-dumptype se utilizará en el fichero disklist para indicar el tipo de volcado que le haremos a cada cliente de backup.

Dentro de esta sección se pueden poner algunos de los parámetros anteriores y solaparían a los valores globales.

Algunos de los parámetros que podemos utilizar son las siguientes:

  • comment "comentario": Comentario que describe la sección dumptype.
  • compress [ none | client | server ] [ best | fast | custom ]: Especifica si la información de backup se comprimirá en el cliente (client), en el servidor (server) o no se comprimirá (none). En el caso de comprimir, se puede elegir entre una compresión de alto ratio (best) pero un poco lenta, o con menos ratio de compresión pero más rápida (fast). También nos permite que la compresión pueda hacerse con el programa que nosotros queramos (custom) y para ello hay que usar uno de los dos parámetros siguiente, donde se especifica el programa de compresión (gzip, bzip2, etc.). En este último caso hay que tener en cuenta que el programa de compresión que elijamos, debe aceptar la opción -d para descomprimir. (valor por defecto: client fast)
  • client-custom-compress "/directorio/programa-de-compresión": Si se ha elegido "compress client custom", en este parámetro debemos poner el programa que hayamos elegido para comprimir, con su ruta absoluta.
  • server-custom-compress "/directorio/programa-de-compresión": Si se ha elegido "compress server custom", en este parámetro debemos poner el programa que hayamos elegido para comprimir, con su ruta absoluta.
  • encrypt [ none | client | server ]: Indica si los datos del backup se cifrarán en el cliente (client), o en el servidor (server) o no se cifrarán (none, valor por defecto). Si se cifra, hay que utilizar dos de los cuatro parámetros siguientes. Hay que recordar que no es soportada la configuración simultánea de cifrado en el cliente y compresión en el servidor.
  • client-encrypt "/directorio/programa-de-cifrado": Se especifica el programa de cifrado, con su ruta absoluta, que se utilizará en el cliente. AMANDA instala dos programas de cifrado: amcrypt y amgpgcrypt.
  • client-decrypt-option "-opción-descifrar": Se indica la opción que utiliza el programa de cifrado del cliente para descifrar. En el caso de los dos programas anteriores es -d.
  • server-encrypt "/directorio/programa-de-cifrado": Se especifica el programa de cifrado, con su ruta absoluta, que se utilizará en el servidor. AMANDA instala dos programas de cifrado: amcrypt y amgpgcrypt.
  • server-decrypt-option "-opción-descifrar": Se indica la opción que utiliza el programa de cifrado del servidor para descifrar. En el caso de los dos programas anteriores es -d.
  • exclude list "/directorio/fichero-patrones": Este parámetro especifica un fichero (con ruta absoluta) localizado en el cliente con una lista de patrones de ficheros que serán excluidos del backup. El usuario backup debe tener permiso de lectura.
  • include list "/directorio/fichero-patrones": Es lo contrario al parámetro anterior.
  • holdingdisk [ never | auto | required ]: Se utiliza para especificar si se usará un fichero caché en el disco del servidor antes de enviar los datos a la cinta magnética. Por defecto, el valor es auto, pero como usaremos cintas virtuales, pondremos su valor a never.
  • index [ yes | no ]: Indica si se generará un fichero índice (catálogo) del backup, el cual será guardado en el directorio especificado en indexdir. (valor por defecto: no)
  • program [ "DUMP" | "GNUTAR" ]: Indica el programa que se utilizará para el backup. El valor por defecto es "DUMP", lo que indica que se utilizará el programa dump del sistema operativo. El valor "GNUTAR" debe especificarse cuando queramos que se use el comando tar o para cuando se vaya a hacer un backup utilizando SAMBA.

Para nuestro ejemplo usaremos las dos secciones siguientes:

# definición de los parámetros globales para todos los volcados
define dumptype disco-global {
    comment "Definición de parámetros globales"
    holdingdisk never
    index yes
    compress client fast
}

# definicion del volcado de datos con el comando "tar"
define dumptype disco-tar {
    comment "Copia de seguridad en disco, haciendo uso de tar"
    disco-global
    program "GNUTAR"
}

Podría ser interesante que a algunos clientes les hiciéramos siempre un backup total cada día y sin compresión, para ellos crearíamos el siguiente tipo de volcado:

define dumptype disco-siempre-total {
    comment "Volcado total"
disco-tar
    dumpcycle 0
compress none
}

La clave del volcado anterior está en haber puesto el valor cero como ciclo de backup (dumpcycle), lo que obligará a hacer un backup completo cada vez que ejecutemos amdump.

Finalizada la configuración del fichero amanda.conf, podemos crear los ficheros y directorios que se definen en él (infofile, logdir, indexdir, tapelist y changerfile), asignarlos al usuario backup y a su grupo principal y poner los permisos adecuados:

# mkdir /etc/amanda/BackupUsuarios/{curinfo,log,index}
# touch /etc/amanda/BackupUsuarios/{tapelist,changer.conf}

Configuramos ahora el fichero changer.conf para indicar los directorios donde se guardarán las copias de seguridad y cómo se cambia de uno a otro. Su contenido será el siguiente:

multieject 0
gravity 0
needeject 0
ejectdelay 0

statefile /etc/amanda/BackupUsuarios/changer-status

firstslot 1
lastslot 14

slot  1 file:/var/backups/amanda/BackupUsuarios/vtapes/disco01
slot  2 file:/var/backups/amanda/BackupUsuarios/vtapes/disco02
slot  3 file:/var/backups/amanda/BackupUsuarios/vtapes/disco03
slot  4 file:/var/backups/amanda/BackupUsuarios/vtapes/disco04
slot  5 file:/var/backups/amanda/BackupUsuarios/vtapes/disco05
slot  6 file:/var/backups/amanda/BackupUsuarios/vtapes/disco06
slot  7 file:/var/backups/amanda/BackupUsuarios/vtapes/disco07
slot  8 file:/var/backups/amanda/BackupUsuarios/vtapes/disco08
slot  9 file:/var/backups/amanda/BackupUsuarios/vtapes/disco09
slot 10 file:/var/backups/amanda/BackupUsuarios/vtapes/disco10
slot 11 file:/var/backups/amanda/BackupUsuarios/vtapes/disco11
slot 12 file:/var/backups/amanda/BackupUsuarios/vtapes/disco12
slot 13 file:/var/backups/amanda/BackupUsuarios/vtapes/disco13
slot 14 file:/var/backups/amanda/BackupUsuarios/vtapes/disco14

Los parámetros de la primera parte del fichero, siempre serán los mismos para el caso de cintas virtuales, para unidades de cintas verdaderas, el fabricante nos indicará los valores.

El fichero de estado podrá tener el nombre que queramos.

Los parámetros de la tercera parte del fichero indicarán el número de la primera y última cinta virtual.

Por último, se definen los directorios que simularán a las cintas y donde se guardarán los datos de las copias de seguridad. Estos nombres pueden ser los que nosotros queramos y pueden estar en cualquier lugar del disco, pero deben pertenecer al usuario backup y al grupo backup y tener los permisos adecuados. Nuestra decisión ha sido que las copias de las distintas configuraciones de backup de AMANDA, harán sus volcados sobre el directorio amanda dentro del directorio casa del usuario backup (/var/backups), y dentro de este, cada configuración de backup, sobre un directorio que llevará el mismo nombre que la configuración.

Preparamos entonces el directorio amanda:

# mkdir /var/backups/amanda
# chown backup:backup /var/backups/amanda
# chmod 750 /var/backups/amanda

Creamos ahora la estructura de directorios del fichero change.conf  y se la asignamos al usuario backup y a su grupo principal y ponemos los permisos adecuados:

# mkdir -p /var/backups/amanda/BackupUsuarios/vtapes/disco{01..14}/data
# chown -R backup:backup /var/backups/amanda/BackupUsuarios
# chmod -R 750 /var/backups/amanda/BackupUsuarios

Como vemos, dentro de cada cinta virtual debe existir el directorio data, que también creamos.

La estructura de directorios queda así:

# tree -pug /var/backups/amanda/
/var/backups/amanda/
└── [drwxr-x--- backup   backup  ]  BackupUsuarios
    └── [drwxr-x--- backup   backup  ]  vtapes
        ├── [drwxr-x--- backup   backup  ]  disco01
        │   └── [drwxr-x--- backup   backup  ]  data
        ├── [drwxr-x--- backup   backup  ]  disco02
        │   └── [drwxr-x--- backup   backup  ]  data
        ├── [drwxr-x--- backup   backup  ]  disco03
        │   └── [drwxr-x--- backup   backup  ]  data
        ├── [drwxr-x--- backup   backup  ]  disco04
        │   └── [drwxr-x--- backup   backup  ]  data
        ├── [drwxr-x--- backup   backup  ]  disco05
        │   └── [drwxr-x--- backup   backup  ]  data
        ├── [drwxr-x--- backup   backup  ]  disco06
        │   └── [drwxr-x--- backup   backup  ]  data
        ├── [drwxr-x--- backup   backup  ]  disco07
        │   └── [drwxr-x--- backup   backup  ]  data
        ├── [drwxr-x--- backup   backup  ]  disco08
        │   └── [drwxr-x--- backup   backup  ]  data
        ├── [drwxr-x--- backup   backup  ]  disco09
        │   └── [drwxr-x--- backup   backup  ]  data
        ├── [drwxr-x--- backup   backup  ]  disco10
        │   └── [drwxr-x--- backup   backup  ]  data
        ├── [drwxr-x--- backup   backup  ]  disco11
        │   └── [drwxr-x--- backup   backup  ]  data
        ├── [drwxr-x--- backup   backup  ]  disco12
        │   └── [drwxr-x--- backup   backup  ]  data
        ├── [drwxr-x--- backup   backup  ]  disco13
        │   └── [drwxr-x--- backup   backup  ]  data
        └── [drwxr-x--- backup   backup  ]  disco14
            └── [drwxr-x--- backup   backup  ]  data

30 directories, 0 files

Pasamos ahora a modificar el fichero disklist, donde especificaremos todos aquellos recursos de la red de los que se hará copia de seguridad. La sintaxis de cada una de sus líneas es:

Máquina  Directorio  TipoVolcado

  • Máquina: IP o nombre, en este último caso, el nombre debe estar cualificado en el servidor DNS o en el fichero /etc/hosts del servidor.
  • Directorio: La carpeta de la que se hará copia de seguridad.
  • TipoVolcado: Uno de los volcados definidos con dumptype.

Por ejemplo:

# Máquina        Directorio      TipoVolcado
pc01.asir.com    /home/usuario   disco-tar
pc02.asir.com    /home/usuario   disco-tar

Pasamos ahora a asignar toda la estructura de /etc/amanda/BackupUsuarios al usuario backup y su grupo principal, además de poner los permisos necesarios:

# chown -R backup:backup /etc/amanda/BackupUsuarios
# chmod -R 750 /etc/amanda/BackupUsuarios

Y nos quedaría lo siguiente:

# tree -pug /etc/amanda
/etc/amanda
└── [drwxr-x--- backup   backup  ]  BackupUsuarios
    ├── [-rwxr-x--- backup   backup  ]  amanda.conf
    ├── [-rwxr-x--- backup   backup  ]  changer.conf
    ├── [drwxr-x--- backup   backup  ]  curinfo
    ├── [-rwxr-x--- backup   backup  ]  disklist
    ├── [drwxr-x--- backup   backup  ]  index
    ├── [drwxr-x--- backup   backup  ]  log
    └── [-rwxr-x--- backup   backup  ]  tapelist

4 directories, 4 files

Un paso importante que no debemos olvidar, es que tras crear un conjunto o pool de cintas (virtuales en nuestro caso) es necesario etiquetarlas para que todos los programas de AMANDA puedan referenciarlas de forma unívoca. Las cintas se etiquetan con el comando amlabel y la etiqueta deberá seguir la expresión regular definida en el parámetro labelstr de amanda.conf. Todas las cintas deben ser etiquetadas con objeto de estar disponibles en la fase de testeo. 

El comando amlabel debe ser utilizado por el usuario backup y no por root. Ejecutamos por lo tanto el comando su con la opción -s (asigna un shell para la ejecución concreta del comando su), pues al usuario backup no se le ha asignado un shell ya que no es un usuario para trabajar interactivamente con él, sino a través de procesos.

La sintaxis del comando amlabel para poner una etiqueta es:

amlabel  ConfiguraciónBackup  Etiqueta  slot  NumeroSlot

# su -s /bin/bash backup
$ for i in {01..14}
> do
> /usr/sbin/amlabel BackupUsuarios EtiquetaDisco$i slot $i
> done
Reading label...
Found an empty tape.
Writing label 'EtiquetaDisco01'...
Checking label...
Success!
Reading label...
Found an empty tape.
Writing label 'EtiquetaDisco02'...
Checking label...
Success!
.........
.........
Reading label...
Found an empty tape.
Writing label 'EtiquetaDisco14'...
Checking label...
Success!
$ exit
#

El último paso que queda de la configuración del servidor, consiste en permitir a los usuarios root, de las distintas máquinas cliente, que puedan realizar la recuperación de ficheros a través del comando amrecover, lo cual implica que debemos modificar el fichero /etc/amandahost del servidor. Este fichero está compuesto por líneas, cada una de las cuales indican qué usuario de qué máquina puede ejecutar qué servicio de AMANDA en el servidor; la sintaxis general de estas líneas es:

Máquina    Usuario    Servicio

Por ejemplo:

# Máquina        Usuario      Servicio
pc01.asir.com    root amindexd amidxtaped
pc02.asir.com root amindexd amidxtaped

Los servicios amindexd y aminxtaped del servidor son los necesarios para poder ejecutar el comando amrecover desde el cliente.