Gestor de Volúmenes Lógicos (LVM)

LVM (Logical Volume Manager) es gestor de volúmenes lógicos que nos permite introducir una separación en la estructura de discos de nuestro sistema.

Una de las principales ventajas del sistema LVM sobre el sistema tradicional, es que LVM nos abstrae de los discos físicos y de las limitaciones de un disco, permitiendo tener sistemas de ficheros sobre varios discos, redimensionarlos según las necesidades y por lo tanto, hacer un uso más eficiente del espacio del que disponemos, con independencia de su ubicación.

LVM funciona a tres niveles, a saber:

  • Volúmenes físicos
  • Grupos de volumen
  • Volúmenes lógicos

 

Volúmenes físicos (pv)

Un volumen físico es un disco o una parte del disco que habilitaremos para su inclusión en un grupo de volúmenes.

Los volúmenes físicos, pueden estar ubicados en una partición (si por ejemplo han de coexistir con sistemas tradicionales), o bien extenderse por toda una unidad de disco o incluso, sobre dispositivos md.

Grupos de volumen (vg)

Los grupos de volumen se definen agrupando uno o más volúmenes físicos y son por así decirlo como discos virtuales, que toman su capacidad de entre los volúmenes físicos asignados al grupo de volumen.

Volúmenes lógicos (lv)

Los volúmenes lógicos se crean dentro de un grupo de volumen y son el equivalente a las particiones en otros sistemas, es la parte de LVM que formateamos con un sistema de ficheros y que luego anexamos a nuestro sistema para poder utilizarlos como almacén de información.

Creación de volúmenes físicos (PV)

Los volúmenes físicos son las unidades donde se asienta la estructura de las grupos de volúmenes, su creación, es tan sencilla como ejecutar:

pvcreate /dev/sdb1


Si a continuación ejecutamos "pvscan", podremos consultar un listado de los volúmenes físicos definidos en el sistema, así como el tipo de metadatos (lvm o lvm2) y su capacidad y un resumen de la capacidad total, la utilizada y la disponible.

pvscan
  PV /dev/sdb1   VG data        lvm2 [100.00 GB / 0    free]
Total: 2 [439.96 GB] / in use: 2 [439.96 GB] / in no VG: 0 [0 ]


Para ver el estado detallado, ejecutamos "pvdisplay":

pvdisplay
  --- Physical volume ---
PV Name /dev/sdb1
VG Name data
PV Size 100.00 GB / not usable 4.00 MB
Allocatable yes (but full)
PE Size (KByte) 4096
Total PE 25599
Free PE 0
Allocated PE 25599
PV UUID n9gi3g-P2Tw-vyv9-6qBZ-dEUx-G54Q-VZrRdC


Creación de grupos de volúmenes (VG)

Los grupos de volúmenes son los cajones, que ubicados sobre los volúmenes físicos, definen la agrupación para los volúmenes lógicos, permitiendo clarificar así la estructura de los mismos.

Para crear un grupo de volumen ejecutamos:

vgcreate data /dev/sdb1

Este comando creará un grupo de volúmenes llamado "data" sobre el volumen físico en /dev/sdb1.

Para comprobar que la acción ha sido realizada correctamente, podremos ejecutar vgscan para ver un listado de los grupos de volumen definidos.

vgscan
  Reading all physical volumes.  This may take a while...
Found volume group "data" using metadata type lvm2


Para ver el estado detallado, ejecutamos "vgdisplay":

vgdisplay
  --- Volume group ---
VG Name data
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 3
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 1
Act PV 1
VG Size 100.00 GB
PE Size 4.00 MB
Total PE 25599
Alloc PE / Size 25599 / 100.00 GB
Free PE / Size 0 / 0
VG UUID 3uRE8P-BrDw-RoWj-JGDS-6NWX-BwPn-EYglqr


Creación de volúmenes lógicos (LV)

Los volúmenes lógicos son el equivalente a las particiones, es el lugar donde vamos a poner un sistema de ficheros y en consecuencia los datos.

Los volúmenes lógicos se definen dentro de un grupo de volúmenes de la siguiente forma:

lvcreate -L 2G -n /dev/data/data-01 data

Este comando creará el volumen "/dev/data/data-01" dentro del grupo "data".Si queremos utilizar todo el tamaño disponible en el grupo ejecutamos:

lvcreate --extents 100%FREE -n /dev/data/data-01 data


Si ejecutamos a continuación lvscan, tendremos un listado de todos los grupos de volumen definidos y su tamaño:

lvdisplay data
  --- Logical volume ---
LV Name /dev/data/data-01
VG Name data
LV UUID kdaqWl-S3xr-9oZk-Ba8k-FSDQ-w0QG-QEum27
LV Write Access read/write
LV Status available
# open 1
LV Size 2.00 GB
Current LE 25599
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:2


Renombrar volúmenes lógicos

Si queremos renombrar un volúmen lógico ejecutamos:

lvrename /dev/data/data-01 /dev/data/data-02


Montando un volúmen

Antes de montar un volúmen en nuestro sistema se recomienda formatearlo:

mkfs.xfs /dev/data/data-01
mount -t xfs /dev/data/data-01 /data


Añadir nuevo disco a un grupo

Si hemos añadido un nuevo disco y queremos añadirlo a un grupo para aumentar el espacio disponible ejecutamos:

vgextend data /dev/sde


Luego tendremos que aumentar el espacio del volúmen lógico para que utilice el nuevo disco:

lvextend --size 25G /dev/data/data-01 /dev/sde


Para que el sistema reconozca el nuevo tamaño del filesystem ejecutamos:

xfs_growfs /data