LVM (Logical Volume Manager) es, como indican sus siglas, un administrador de volúmenes lógicos para el kernel de Linux.
Mediante LVM podemos agrupar varios discos duros (o dispositivos de bloques en general) en un grupo de volúmenes. Dentro de un grupo de volúmenes se crean volúmenes lógicos, que pueden ser reducidos o extendidos. En estos volúmenes se podrán crear y montar sistemas de ficheros.
La principal ventaja de LVM frente al particionado clásico es la flexibilidad que ofrece. Permite cambiar de forma sencilla el tamaño de los volúmenes lógicos, lo cual resulta muy útil cuando nos quedamos sin espacio.
También proporciona funcionalidades muy útiles como la posibilidad de realizar snapshots, implementar distintos niveles de RAID, o thin provisioning (aprovisionamiento fino).
En esta entrada nos centraremos en su uso más básico.
LVM trabaja fundamentalmente con los siguientes componentes:
Volumen físico (PV): es básicamente un dispositivo de bloques, generalmente un disco o partición de cualquier tamaño (puede ser un RAID, una memoria USB, un dispositivo iSCSI e incluso un loop device, entre otros tipos). Los PVs son las unidades de las cuales se compone un grupo de volúmenes tal y como veremos a continuación. Generalmente se le da el nombre del fichero de bloques al que hace referencia, aunque se le puede dar uno específico.
Grupo de volúmenes (VG): es un objeto compuesto por uno o más PVs. Cuando creamos un VG, le damos un nombre identificativo, y le añadimos uno o más PVs. El VG se divide en physical extents (PE), que son porciones de un tamaño fijo (por defecto 4MB). Para extender un VG, lo que hacemos es añadirle uno o varios PVs. Todos los extents de un VG tendrán el mismo tamaño (el tamaño asignado inicialmente al VG no se podrá modificar al añadir PVs).
Volumen lógico (LV): es un dispositivo de almacenamiento gestionado por LVM. En él podremos crear sistemas de ficheros para poder darles uso.
Se pueden crear varios LVs dentro de un VG mientras éste tenga espacio. Cuando creamos un volumen lógico le damos un nombre que lo identifique y le asignamos un tamaño. Los LVs están compuestos por logical extents (LE), que a su vez apuntarán a un extent físico dentro del VG. LVM (por medio del device mapper) mapea los LEs hacia los PEs al acceder al volumen.
En la figura anterior se ilustra de forma superficial la estructura de LVM con un ejemplo de configuración.