Haciendo un Backup usando Snapshot de LVM (instantaneas LVM)

Posted on enero 10, 2008. Filed under: Gestion de Almacenamiento y Copias de Seguridad. |

Luego que nosotros hemos creado nuestros volumenes logicos y ya tenemos nuestro sistema bien entonado, somos felices porque ya podemos manipular nuestro espacio a conveniencia, en un anterior articulo en la seccion (Gestion de Almacenamiento y Copias de Seguridad) hicimos RAID software con LVM para mantener tolerancia a fallos, no sea que de fallas un disco en cualquier momento, pero aunque esto nos pueda dar cierta tranquilidad igual queremos mantener respaldo de nuestra data, todo sea para proteger esa informacion tan valiosa que administramos.

Podriamos tener informacion de base de datos, y necesitamos que esa informacion sea consistente, por eso en este momento paso a explicar como hacer respaldos usando Snapshot de LVM, la cual haremos semanalmente.

Un volumen snapshot (instantanea) es un tipo de volumen especial que presenta toda la data que se encontraba en el volumen al momento que la snapshot fue creada. Para mas detalle, ver la seccion 3.8 del manual de LVM de TLDP.

Esto significa que podemos realizar copias de seguridad del volumen sin tener que preocuparnos si han cambiado los datos mientras la copia de seguridad se está realizando, y no tenemos que tener la base de datos fuera de línea mientras el backup esta tomando lugar.
Soporte del nucleo de sistema a instantaneas

Las instantaneas de los volumenes logicos se crean y mantienen con la ayuda del controlador de sistema de ficheros dm_snapshot. Este se encuentra como un modulo del nucleo de sistema disponible en la mayoria de las distribuciones Linux. Si no puede encontrar este modulo, o las instantaneas simplemente no funcionan en su sistema, haga cd al directorio fuente del nucleo del sistema (normalmente /usr/src/linux) y revise su fichero de configuracion para asegurarse de que este modulo esta bien integrado o disponible como modulo del nucleo, como en el siguiente ejemplo:

$ cd /usr/src/linux

$ grep -i DM-SNAPSHOT .config

CONFIG_SM_SNAPSHOT=m

En este caso, el controlador dm_snapshot esta disponible como un modulo adicional. Si el valor de la variable CONFIG_DM_SNAPSHOT es “n”, esta opcion no esta disponible en su nucleo. Tendra que volver a compilarlo con este controlador integrado (valor “y”) o como un modulo adicional (valor “m”) para poder usar las ventajas de las instantaneas de volumenes discutidas aqui.

Tomar una instantanea

Cuando tomamos una instantanea dicho sistema de ficheros debe residir en un volumen logico, como se muestra por la presencia del directorio de dispositivos mapper en el siguiente ejemplo:

# df -Ph /test

Filesystem Size Used Avail Use% Mounted on
/dev/mapper/testvg-testvol 485M 18M 442M 4% /test

A continuacion usaremos el comando dd para crear unos cuantos ficheros de muestra en el volumen de prueba que utilizaremos para analisis mas tarde en este truco:

# dd if=/dev/zero of=/test/5M bs=1048576 count=5
5+0 records in
5+0 records out

# dd if=/dev/zero of=/test/10M bs=1048576 count=10
10+0 records in
10+0 records out

Para tomar una instantanea del volumen testvol ejecute un comando como el siguiente:

# lvcreate -s -L 100M -n testsnap /dev/testvg/testvol
Logical volume “testsnap” created

En este ejemplo, hemos asignado 100MB a la instantanea. Esto significa que podemos hacer 100MB de cambios al volumen original antes de que esta se llene. Las instantaneas finalmente se llenan porque estan conservando datos antiguos, y no hay manera de purgar los ficheros que esta preservando porque es una instantanea de otro volumen, no un volumen logico original en si mismo. Una vez que una instantanea esta utilizada al 100 por 100, se vuelve inutil, debemos entonces eliminarla y tomar una nueva.

Para confirmar que la instantanea se ha tomado correctamente, usamos el comando lvs para mostrar la informacion de estado del volumen logico:

# lvs
LV VG Attr LSize Origin Snap% Move Copy%
testsnap testvg swi-a- 100.00M testvol 0.02
testvol testvg owi-ao 500.00M

Montar una instantanea

Al tener una instantanea, podriamos permitir a los usuarios que accesen a ella pues de esta forma nos ahorramos el problema que alguien quiera recuperar algun dato perdido, y asi la pueden tomar directamente ellos, claro que el respaldo que haremos nosotros lo tendremos en un equipo que configuraremos como servidor de backup con su tape backup y todo aquello para que este equipo nos proteja nuestro negocio, lo cual explicare en un articulo posterior a este, alli nosotros haremos respaldos semanales. En si, la idea es crear un snapshot semanal de los volumenes que consideremos respaldar e indicarle a los servidores que sinronicen un dia determinado a una hora determinada para que respalden el snapshot viejo, luego eliminarlo y crear uno nuevo, de esta forma mantendriamos un historial, no sea que un usuario al pasar el tiempo se acuerde de una informacion que borro, pero le gustaria recuperarla, entonces, es alli donde entra nuestro historial de backup.

En fin, para montar la instantanea de nuestro testmap, usamos el comando mount estandar como el siguiente:

# mount /dev/testvg/testsnap /testsnap
# df -Ph /test*
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/testvg-testvol 485M 18M 442M 4% /test
/dev/mapper/testvg-testsnap 485M 18M 442M 4% /testsnap

Nota: Observe que el volumen instantanea siempre habita en el mismo grupo de volumenes que el volumen logico del cual es copia.

Solo para asegurarnos, podemos usar el comando ls para verificar que tanto la instantanea como el volumen original estan disponibles:

# ls -l /test
total 15436
-rw-r–r– 1 root root 10485760 Apr 21 23:48 10M
-rw-r–r– 1 root root 5242880 Apr 21 23:48 5M
drwx—— 1 root root 12288 Apr 21 23:15 lost+found

# ls -l /testsnap/
total 15436
-rw-r–r– 1 root root 10485760 Apr 21 23:48 10M
-rw-r–r– 1 root root 5242880 Apr 21 23:48 5M
drwx—— 1 root root 12288 Apr 21 23:15 lost+found

Ahora, creamos un fichero de 50MB en el sistema de ficheros /test y examinamos que ocurre en el sistema de ficheros /testsnap y el uso de la instantanea (usando nuestro comando lvs favorito):

# dd if=/dev/zero of=/test/50M bs=1048576 count=50
50+0 records in
50+0 records out

# df -Ph /test*
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/testvg-testvol 485M 68M 392M 15% /test
/dev/mapper/testvg-testsnap 485M 18M 442M 4% /testsnap

# ls -l /test

total 66838
-rw-r–r– 1 root root 10485760 Apr 21 23:48 10M
-rw-r–r– 1 root root 52428800 Apr 22 00:09 50M
-rw-r–r– 1 root root 5242880 Apr 21 23:48 5M
drwx—— 1 root root 12288 Apr 21 23:15 lost+found

# ls -l /testsnap/
total 15436
-rw-r–r– 1 root root 10485760 Apr 21 23:48 10M
-rw-r–r– 1 root root 5242880 Apr 21 23:48 5M
drwx—— 1 root root 12288 Apr 21 23:15 lost+found

# lvs
LV VG Attr LSize Origin Snap% Move Copy%
testsnap testvg swi-ao 100.00M testvol 50.43
testvol testvg owi-ao 500.00M

Observemos que el fichero de 50 MB no aparece automaticamente en /testsnap, pero se ha usado parte del espacio de la instantanea (50,43 por 100).

A continuacion, simulamos el borrado accidental de un fichero eliminando /test/10M y examinamos los resultados:

# rm /test/10M

rm: remove regular file ‘/test/10M’? y

# df -Ph /test/*
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/testvg-testvol 485M 58M 402M 13% /test
/dev/mapper/testvg-testsnap 485M 18M 442M 4% /testsnap

Fijemosnos que la utilizacion del espacio de disco en nuestra imagen ha aumentado ligeramente:

# lvs
LV VG Attr LSize Origin Snap% Move Copy%
testsnap testvg swi-ao 100.00M testvol 50.44
testvol testvg owi-ao 500.00M

Si ahora queremos recuperar el fichero 10M, podemos hacerlo simplemente copiandolo de la instantanea (para algun lugar seguro).

No debemos olvidar que una vez que la instantanea esta llena al 100%, sus contenidos ya no son fiables, porque no se pueden escribir nuevos ficheros en ella, y por tanto ya no resulta util para seguir la pista a los cambios mas recientes de su volumen padre. Deberiamos entonces monitorizar el tamano de nuestras instantaneas y tomarlas de nuevo cada vez que sea necesario, con hacerlo una vez a la semana podria ser mas que suficiente, pues asi prevenimos el desbordamiento de instantaneas.

Este articulo, lo debemos concatenar con un proximo post en el cual hablare de un servidor de Backup con rsync y ssh.

Mas informacion visitar el HOWTO LVM.

Make a Comment

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

4 comentarios to “Haciendo un Backup usando Snapshot de LVM (instantaneas LVM)”

RSS Feed for Unix – Linux Tips & Tricks Comments RSS Feed

consulta rápida:
las instantáneas de LVM se pueden hacer en forma gráfica? hay alguna herramienta para ello?

Hay una herramienta opensource que saco IBM, que es un sistema de archivos similar a LVM, que se llama EVMS, lo interesante es que tras instalar los paquetes trae un TUI (Terminal User Interface) que te permite administrar los volumenes LVM y EVMS, hay unos trucos, yo creo que escribi un articulo al respecto. Date una vuelta en mi blog, si no lo consigues me dices y lo escribo para que aprendan.

Saludos.

Encontré el artículo, y estoy analizando la herramienta. Me sorprende que haya sido discontinuada hace tanto tiempo (2006)…

No sabia que la habian descontinuado. Es muy buena.


Where's The Comment Form?

Liked it here?
Why not try sites on the blogroll...

A %d blogueros les gusta esto: