Imagenes y snapshots: Respaldo de servidores

Mi propósito era crear imágenes de todos los servidores del datacenter para que, en caso de cualquier contingencia, levantar un nuevo servidor identico simplemente traspasando la imágen de respaldo hacia ese servidor. Los sistemas estaban instalados usando volumenes lógicos (LVM) por lo que sería mucho más fácil crear imágenes y snapshots de respaldos. En un prinicpio pensé hacer directamente dd sobre los volumenes lógicos pero la imágen se corrompía y en muchos casos no podía volver a recuperarla. Existe la posibilidad de montar el volumen lógico en un directorio y respaldar, usando tar, bzip y esas cosas, sólo los archivos, pero no era mi propósito, ya que para restaurar solamente los archivos, debía tener una partición ya preparada, con el sistma de ficheros, sistema instalado, etc etc. En cambio, con la imágen simplemente hacia un dd para restaurarla, sin tener el sistema de archivos creado, etc.

Por twitter me recomendaron varias opciones. @Apostols me recomendó las herramientas "puppet" y "rlbackup", mientras que @ssugasti "mondorescue", pero yo seguia con mi idea de usar directamente "dd". Debía hacer el mismo procedimiento en mas de 40 servidores, por lo que usar una aplicación "cliente->servidor" no era mi solución. Usar aplicaciones que requieran modo grafico o que requieran mucha interacción con el usuario tampoco me servian, yo necesitaba algo automatizado que pueda dejar corriendo de noche y volver al otro día y encontrar el trabajo hecho.

··· Leer más ···

Leyendo el manual de LVM, especialmente el de lvcreate, encontré la opción "snapshot" que básicamente le toma una "foto" al volumen lógico de origen y crea un nuevo volumen con ese preciso instante en que se hizo el snapshot, de ésta forma la partición original podrá ser actualizara mientras que el snapshot se respalda sin problemas. Luego de eso, el snapshot se elimina y se guarda la imágen. La rutína sería mas o menos asi:

# lvcreate --snapshot /dev/Vol00/var --name var-snap -L100k
# dd if=/dev/Vol00/var-snap of=/backup/var.img
# lvremove -f /dev/Vol00/var-snap

De esta forma, creamos un snapshot llamado "var-snap" en base a la partición (o volumen) /dev/Vol00/var, luego, usando dd, creamos la imágen de dicha partición y la guardamos en /backup. Finalmente eliminamos el snapshot.
Para tener aún más certesa de que todo funcionaría, tambien decidí empaquetar, comprimir y guardar los ficheros, por lo que antes de eliminarla (lvremove) la debo montar y hacer un tar. La rutina quedaría así:

# lvcreate --snapshot /dev/Vol00/var --name var-snap -L100k
# dd if=/dev/Vol00/var-snap of=/backup/var.img
# mount /dev/Vol00/var-snap /mnt
# tar cfjv /bakcup/var.tbz2 /mnt
# umount /mnt
# lvremove -f /dev/Vol00/var-snap

En mi caso, /backup corresponde a un punto de montaje de red NFS.
Mi misión era realizar ésta misma rutina en más de 40 servidores, por lo que necesitaba hacer un script que se paseara por todos los servidores y ejecutara estos comandos.

PRE0

El script trabaja con la salida del comando lvdisplay que entrega una salida con los detalles de cada volumen lógico. Lee un fichero llamado servidores.list y hace un recorrido línea por línea, conectándose a cada servidor y ejecutando las instrucciones necesarias. Para hacer el proceso más eficiente y automatizado es necesario, previamente, copiar todas las claves públicas a cada servidor, para evitar la autentificación.

Comentarios (10)

Abraxxas
Interesante!

Saludos Zerial
d3m4s1@d0v1v0
Muy buena idea para hacer backups.
Lo que veo de malo es que esos backups no serían incrementales, así que necesitas mucho espacio.
R4C3 F4C3
Hola compadre tambien podrias hacer una imagen para tenerla de respaldo con

clonzilla que es como el ghost pero esta basado en Linux y es gratis

Saludos
Zerial
@R4C3 F4C3: Hola! Clonezilla necesita reiniciar el servidor, por lo que el servidor dejaria de estar en produccion al momento de crea la imagen
cris
Hola, muy buena pero podrias escribir la manera como se restablece la imagen...
gracias de antemano.
Zerial
@cris: Puedes probar restablecer la imagen usando "dd". Creas el nuevo volumen logico y cuanto este creado, haces dd desde el respaldo hacia el nuevo volumen.
Miki
usa el http://www.dirvish.org/.. creo snap y luego entras a copiar con dirvish que tiene copias diferenciales.. llevo años usandolo y es lo mejor que hay en copias de seguridad.

Suerte
Zerial
@Miki: Gracias por el aporte!
ksha
ocupa rsnapshot, es para realizar backups completos por medio de rsnapshot y rsync copia todo sin tener problemas, es incremental.
Gandolfi
Hola, esta super interesante el tema, por favor me puedes confirmar que herramienta utilizaste para codificar la shell que muestras en el post, yo utilizo notepad ++ pero no veo la opción para agregar numeración a las filas.

Gracias de antemano.

Deja un comentario