Logical Volume Manager (Linux)

Esquema básico de LVM.

LVM es una implementación de un gestor de volúmenes lógicos para el núcleo Linux. Se escribió originalmente en 1998 por Heinz Mauelshagen, que se basó en el administrador de volúmenes de Veritas usado en sistemas HP-UX.

LVM incluye muchas de las características que se esperan de un administrador de volúmenes, incluyendo:

En la imagen mostrada podemos observar cómo trabaja LVM. Los volúmenes lógicos agrupan particiones físicas de disco, y estos a su vez, aunque no está representado en la figura, se engloban en un grupo lógico. De esta forma, /home se compone de hda3, hda4 y hdb3, y a su vez, /usr engloba a hda1, hda2, hdb1 y hdb2.

Introducción

Ventajas de usar LVM en un sistema pequeño

Una de las decisiones que afronta un usuario instalando GNU/Linux es cómo particionar el disco duro. La necesidad de estimar cuanto espacio será necesario para el sistema, para los temporales o para los datos personales, puede convertirse en algo problemático, por lo que muchos usuarios optan por crear una partición que ocupe todo el disco y allí introducir los datos. Aun habiendo estimado correctamente cuánto espacio se necesita para /home, /usr, /tmp, o cualquier otro directorio importante, es bastante común que nos quedemos sin espacio en estas particiones, cuando tenemos espacio de sobra en alguna otra.

Ventajas de usar LVM en un sistema grande

Cuando un nuevo disco se añade al sistema, no es necesario mover los datos de los usuarios. Simplemente se añade el nuevo disco al grupo lógico correspondiente y se expanden los volúmenes lógicos todo lo que se considere adecuado. También se pueden migrar los datos de discos antiguos a otros nuevos, de forma totalmente transparente al usuario.

Anatomía de un LVM

Destino Origen
Primer chunk de la LE1 Primer chunk de la PV1
Segundo chunk de la LE1 Primer chunk de la PV2
Tercer chunk de la LE1 Segundo chunk de la PV1
... ...

Instantáneas (snapshots)

Las instantáneas (snapshots) permiten al administrador crear un nuevo dispositivo que será una copia exacta del LV, congelada en algún punto del tiempo. Normalmente esto se realiza de forma automática, para no alterar el funcionamiento normal del sistema. Cuando la instantánea ha terminado, el administrador puede quitar el dispositivo sin mayor complicación. Además, no es necesario que los datos en el LV se encuentren en un estado consistente, ya que muchos sistemas de ficheros en el núcleo 2.6 lo realizan de forma automática.
Una diferencia importante entre la versión 1 de LVM (LVM1 a partir de ahora) y la versión 2 (LVM2) es que en la primera, los snapshots eran de sólo lectura, mientras que en LVM2 son de lectura y escritura. ¿Cuál es la diferencia? En LVM1, se crea lo que se llama una tabla de excepciones, que se usa para mantener una lista de qué bloques en disco han cambiado. Si un bloque va a ser modificado en el origen, primero se copia en la instantánea, se marca como copiado en la tabla de excepciones y luego los nuevos datos se copian al volumen original. En LVM2, las instantáneas funcionan como en LVM1, pero con la característica de que si los datos se escriben en el snapshot (una vez montado), ese bloque se marca como usado en la tabla de excepciones y no se copia al volumen original. Esta característica es muy útil debido a que podemos crear nuestra instantánea, montarla y probar un programa o un nuevo navegador de ficheros. Si ocurre algo desastroso, la desmontamos, la borramos y volvemos a colocar el volumen original.

Ejemplos

Inicialización del dispositivo lógico

~# dd if=/dev/zero of=/dev/sda bs=1k count=1
~# dd if=/dev/zero of=/dev/sdb bs=1k count=1
~# pvcreate /dev/sda
Physical volume "/dev/sda" successfully created
~# pvcreate /dev/sdb
Physical volume "/dev/sdb" successfully created

En este paso, tenemos creados dos volúmenes físicos (PVs).

Creación de la VG

  • Creamos el grupo lógico (VG) de nombre vg_wikipedia que contendrá las dos particiones que hemos creado anteriormente:
~# vgcreate vg_wikipedia /dev/sda /dev/sdb
Volume group "vg_wikipedia" successfully created

Creación del LV

  • Ahora crearemos un volumen lógico que llamaremos lv1_wikipedia:
~# lvcreate -L1G -n lv1_wikipedia vg_wikipedia
lvcreate -- doing automatic backup of "vg_wikipedia"
lvcreate -- logical volume "/dev/vg_wikipedia/lv1_wikipedia" successfully created

Creación del sistema de ficheros

  • En este apartado, debemos crear el sistema de ficheros sobre el LV que acabamos de definir. En este ejemplo, crearemos un sistema de ficheros JFS:
~# mkfs.jfs /dev/vg_wikipedia/lv1_wikipedia
~# mount -t jfs  /dev/vg_wikipedia/lv1_wikipedia  /mnt/wikipedia
  • Recuerde agregar la entrada en /etc/fstab, de modo que al reiniciar, /mnt/wikipedia vuelva a estar disponible.

Véase también

Referencias

  1. ↑ «Tutorial Logical Volume Manager (LVM) en Linux». puerto53.com. Consultado el 22 de agosto de 2022.
  2. ↑ «Capítulo 10. Configuración de volúmenes lógicos RAID Red Hat Enterprise Linux 8 | Red Hat Customer Portal». access.redhat.com (en inglés). Consultado el 5 de abril de 2023.

Enlaces externos