Las instantáneas (snapshots) de LVM

Las instantáneas de LVM o snapshots son un dolor de cabeza para una gran mayoría de usuarios de los Volúmenes Lógicos, no todos tienen totalmente claro como funcionan y cual es el beneficio de estos.

Primero que todo vamos a entender para que sirven, los más importante es que permiten crear un nuevo dispositivo que será una copia exacta del LV original, es decir es una fotografía (es un momento en el tiempo, y es estática).

¿Esto para qué me sirve?

Piensa que cuando estás realizando un backup de información muy importante, en busca de tener una copia estable y funcional, los datos no deben cambiar mientras se termina el proceso, No se si te ha pasado, pero realizando algun archivo tar.gz éste termina con un error parecido a esto: “file changed as we read it”, ésto sucede porque los datos cambiaron mientras se leía un archivo para incluir en tu copia de seguridad.

Solución, que la data no se este usando, ¿Sacamos los usuarios?, ¿detenemos los servicios?…. No, no es necesario.

  1. Creamos un snapshot de los datos (deben estar en un Logical Volume).
  2. Creamos una copia de la información leyendo el snapshot que se creo, mientras el Logical Volume original esta en funcionamiento y los usuarios siguen trabajando.
  3. Borramos el snapshot una vez terminamos la copia de seguridad.

Haciendo esto evitamos detener el funcionamiento del servidor ya que el snapshot se encarga de tener la información disponible para la copia.

Debes tener en cuenta que con los cambios de versiones del LVM ya los snapshot no son de sólo lectura, como ocurría en la versión 1, con la versión 2 ya puedes tener permisos de lectura y escritura, con los cuales puedes utilizar éstos snapshots para realizar pruebas con aplicaciones que no podríamos realizar utilizando los datos del sistema de archivos original.

Puedes escribir sobre los snapshots sin que la data original sea modificada, una vez terminas las pruebas, eliminas el snapshot.

¿Cómo funciona un snapshot?

Primero que nada, en el LVM 1, el snapshot usa COW (copy-on-write). En el momento que se crea el snapshot este tiene hard-links a los inodos de la data real. Así que mientras los datos no cambien el snapshot solo tiene apuntadores pero no los datos en su interior, pero si los datos se modifican en el Logical Volume original,  el snapshot automáticamente clona la información, ésta antes de ser modificada queda en el snapshot y los datos nuevos en el sistema de archivos activo.

LVM 2 los snapshot funcionan como en LVM 1, pero con la característica de poder escribir datos, si los datos se escriben en el snapshot que se encuentre en un punto de montaje del sistema, ese bloque se marca como usado en el snapshot y no se copia nada al volumen original.

Consideraciones antes de crearlos.

Es importante tener en cuenta que siempre que vamos a crear un snapshot debemos pensar en dos variables de tiempo y espacio (Nada tiene que ver con la teoría de la relatividad).

  • Tiempo: ¿por cuánto tiempo necesito que el snapshoot este vivo?, ejemplo el tiempo que toma una herramienta de backup realizar la tarea sobre los datos.
  • Espacio: durante ese tiempo de “vida”, ¿qué cantidad de data se creará en el sistema original? (Nuevos archivos y/o actualizaciones), debes tener en cuenta que el snapshoot una vez llena este espacio que se define, queda inservible.

Ejemplo, tienes un LVM de 50GB, sabes que tu herramienta de backup se demora entre 40 y 50 minutos en realizar un backup de la data actual, y sabes que en promedio se crean/modifican archivos por un total de 800MB en una hora, tu snapshot debe cubrir el total de esos 800MB más un % por contingencias (se crearon más datos en ese momento que el promedio) es decir ese snapshot debería tener un tamaño mínimo de 1GB.

Ahora bien, te estarás preguntando ¿por que debo crear un snapshot de tan solo 1GB y apuntar la herramienta de backups a ese snapshot?, ¿sólo se va a hacer backup de los datos que cambiaron?, ¿qué pasa con el resto?.

Recuerda…. el snapshot tiene los apuntadores al sistema original, si haces el snapshot de 1GB, lo montas y lo revisas… el sistema te mostrará que tiene 50GB (el tamaño del LV original) pero en su interior solo almacenará los datos antes de ser modificados en el sistema original, es decir haces un backup del total de la data y el snapshot te ayuda a contener los datos que se modifiquen en ese tiempo de tal manera que siempre tengas un copia estable de la información al momento de generar el snapshoot. Una vez termines de realizar tu backup, elimina el snapshoot.

Leave a Comment

Your email address will not be published.

Start typing and press Enter to search