materials

LVM (Logical Volume Manager)

LVM es una implementación de un administrador de volúmenes lógicos para el kernel Linux (el equivalente a los discos dinámicos de Windows) e incluye la mayoría de características que se esperan de un administrador de volúmenes, permitiendo:

En la imagen podemos observar como trabaja LVM:

En primer lugar escogemos los volúmenes físicos (PV, Phisical Volums) que utilizaremos para LVM. Podemos escoger particiones o discos enteros. A continuación los asignamos a grupos de volúmenes (VG) que serían el equivalente a discos virtuales en los que creamos volúmenes lógicos (LV) que son los que finalmente usaremos como si fueran una partición.

En la imagen hay 7 PV procedentes de 2 discos diferentes con los que se crean 2 VG: uno formado por los PV hda1, hda2, hdb1 y hdb2, y el otro formado por los PV hda3, hda4 y hdb3. En el primer VG se crea un único LV que posteriormente se monta en la carpeta /home y del segundo VG se crea también un LV que se montará en /usr.

En cualquier momento podemos añadir más volúmenes físicos a uno o más grupos de volúmenes lo que nos permitirá crear en ellos nuevos volúmenes lógicos o ampliar la medida de cualquiera de los ya existentes, todo de forma transparente para el usuario.

Algunas de las ventajas que proporciona LVM son:

Como hemos dicho antes un LVM se compone de tres partes:

Hay muchas herramientas gráficas para gestionar LVM como system-config-lvm pero nosotros utilizaremos la consola de comandos o el propio Webmin que ya tenemos instalado.

Ejemplo de uso

lvm

En primer lugar para utilizar lvm tenemos que instalar el paquete lvm2 si todavía no lo tenemos instalado (sólo en distribuciones antiguas).

A continuación crearemos y configuraremos nuestros volúmenes. Primeramente crearemos los volúmenes físicos de las particiones en que vamos a utilizar LVM. Por ejemplo para utilizar la partición sda3 haremos:

pvcreate /dev/sda3

Esto lo tenemos que repetir para cada partición a utilizar (por ejemplo sda4 y sda5). También podríamos usar un disco completo (por ejemplo sdb) con:

pvcreate /dev/sdb

Ahora creamos el grupo de volúmenes que contendrá nuestros volúmenes lógicos finales:

vgcreate volgroup_01 /dev/sda3 /dev/sda4 /dev/sda5

Con el comando vgscan podemos ver los grupos creados y con pvscan los volúmenes físicos.

Por último sólo queda crear los volúmenes lógicos que utilizaremos. Por ejemplo crearemos un llamado volumen_01 de 2 GB:

lvcreate -L2G -n volumen_01 volgroup_01

Con lvscan podemos ver los volúmenes lógicos creados.

Ahora ya podemos darle formato y montarlo como cualquier otra partición:

mkfs.ext4 /dev/volgroup_01/volumen_01
mount /dev/volgroup_01/volumen_01 /datos

Como añadir una nueva partición al volumen

En primer lugar creamos un nuevo volumen físico en la partición:

pvcreate /dev/sdb1

A continuación lo añadimos a nuestro grupo:

vgextend volgroup_01 /dev/sdb1

Como por ejemplo tenemos más espacio en el grupo podemos aumentar los volúmenes lógicos. Por ejemplo vamos a darle otros 3 GB al volumen_01:

lvextend -L +3G /dev/volgroup_01/volumen\_01

Por último tenemos que ampliar nuestro sistema de ficheros ext4 del volumen. Tenemos que ir con cuidado porque esta operación es peligrosa y podríamos perder los datos:

resize2fs /dev/volgroup_01/volumen_01 5G

Ya tendríamos 5 GB en nuestro volumen en lugar de las 2 iniciales.

Por ejemplo, queremos ampliar en 5 GB la partición del sistema operativo (llamada ubuntu-lv que está en el volumen ubuntu-vg). Supondremos que tennemos espacio suficiente sin usar en el volumen. Los comandos a ejecutar serían:

lvextend -L +5G /dev/ubuntu-vg/ubuntu-lv
resize2fs /dev/ubuntu-vg/ubuntu-lv