Saltar la navegación

Uso de snapshots para copias de seguridad

Un recurso muy interesante que nos ofrece LVM son los snapshots o instantáneas sobre los LVs. Podemos usar esto para congelar una partición en un momento preciso, y hacer una copia de seguridad de ese momento mientras el sistema sigue usando normalmente dicha partición, o también, para revertir el sistema al punto de partida antes de hacer una instalación que vemos que no funciona cómo esperábamos.

Un aspecto muy importante a tener en cuenta es el tamaño que le vamos a dar al snapshot, pues si llegara a quedarse pequeño, el snapshot ya no podría utilizarse, es necesario, por tanto, no quedarse cortos e ir vigilándolo mientras lo estemos utilizando, pues si vemos que se está llenando, podremos aumentarle el tamaño, pues el snapshot será otro LV más,

Supongamos que queremos hacer una copia de seguridad del LV web de los ejemplos, y para ello, vamos a usar un dispositivo de bloque (/dev/sdf) expresamente para el snapshot. No es necesario hacerlo así, simplemente para hacer un snapshot lo que se necesita es espacio sin particionar en el VG al que pertenece el LV del que se va a hacer el snapshot.

En primer lugar, habría que convertirlo en PV, posteriormente lo añadiríamos al VG al que pertenece el LV web, y por último crear el LV de tipo snapshot.

# pvcreate /dev/sdf
# vgextend disco_virtual /dev/sdf

Lo conseguido hasta aquí es disponer de espacio sin particionar en el VG. Toca ahora crear el snapshot siguiendo la siguiente sintaxis del comando lvcreate, pues como hemos dicho, un snapshot es un LV:

# lvcreate --snapshot -n nombre_snapshot -L tamaño_snapshot nombre_LV_origen [ volumen_físico ]

Sobre la sintaxis anterior decir que la opción --snapshot como opción corta es -s, debemos calcular bien el tamaño, al nombrar el LV de origen estamos indicando también el VG afectado y, de forma opcional, podemos especificar un PV para el snapshot, si no lo hacemos, será LVM quien lo acomode en el espacio sin particionar del VG.

# lvcreate -s -n web_snap -L 100m /dev/disco_virtual/web /dev/sdf

Ahora es cuando podemos hacer la copia de seguridad sin riesgo a que los datos se actualizar a la vez. Simplemente tenemos que montar el snapshot (momento congelado de LV) y realizar la copia.

# mount -t ext4 /dev/disco_virtual/web_snap /mnt
# tar ...
# umount /mnt

Si todo ha salido bien, con la copia de seguridad guardada en un sitio seguro, ya el snapshot no lo necesitamos, por lo tanto, podemos eliminarlo como cualquier otro LV.

# lvremove /dev/disco_virtual/web_snap

Ahora podemos sacar el PV del VG si así lo queremos.

En el caso de que hubiésemos hecho el snapshot para comprobar que una actualización o una instalación de algún software, funciona correctamente, y se diese el caso de que no funciona bien, nos va a interesar restaurar el sistema al punto de inicio, cuando hicimos el snapshot, esto se hace con el comando lvconvert. Haríamos lo siguiente:

# lvconvert --merge /dev/disco_virtual/web_snap

Seguramente nos saldrá un mensaje de error, pues lo mas probable es que el LV web esté montado y usándose, de modo que hasta que no reiniciemos la máquina, los cambios no los veremos.