Otra forma de configurar unidades de almacenamiento y que trabajen de manera conjunta, flexible y dinámica es a través de volúmenes lógicos. El Administrador de Volúmenes Lógicos (LVM) crea un nivel de abstracción sobre las unidades de disco; que en realidad son particiones concentradas en un pool que posteriormente se presentan en volumen lógico o partición.

Como se puede ver en la imagen anterior los discos son agregados a un grupo para posteriormente presentarse en uno o más volúmenes lógicos, esto es más flexible que presentar una partición por disco. A un servidor se le han presentado 3 discos duros de 10 GB para crear un grupo y gestionar el almacenamiento.

[tusysadmin@lvm ~]$ sudo lsblk
 NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
 sr0              11:0    1 1024M  0 rom  
 vda             252:0    0    7G  0 disk 
 ├─vda1          252:1    0    1G  0 part /boot
 └─vda2          252:2    0    6G  0 part 
   ├─centos-root 253:0    0  5.3G  0 lvm  /
   └─centos-swap 253:1    0  716M  0 lvm  [SWAP]
 vdb             252:16   0   10G  0 disk 
 vdc             252:32   0   10G  0 disk 
 vdd             252:48   0   10G  0 disk 

A estos discos se les crea una tabla de particiones, la partición y la etiqueta de lvm.

sudo parted /dev/vdb mklabel msdos
sudo parted /dev/vdb mkpart primary 0% 100%
sudo parted /dev/vdb set 1 lvm on
sudo parted /dev/vdc mklabel msdos
sudo parted /dev/vdc mkpart primary 0% 100%
sudo parted /dev/vdc set 1 lvm on
sudo parted /dev/vdd mklabel msdos
sudo parted /dev/vdd mkpart primary 0% 100%
sudo parted /dev/vdd set 1 lvm on

Las particiones /dev/vdb1, /dev/vdc1 y /dev/vdd1 son agregadas como pvs, para ser agregadas al VG vg1.

sudo pvcreate /dev/vdb1 /dev/vdc1 /dev/vdd1
sudo vgcreate vg1 /dev/vdb1 /dev/vdc1 /dev/vdd1
[tusysadmin@lvm ~]$ sudo vgs
  VG     #PV #LV #SN Attr   VSize   VFree  
  centos   1   2   0 wz--n-  <6.00g   4.00m
  vg1      3   0   0 wz--n- <29.99g <29.99g

Este VG dispone de la suma de las tres particiones, se creara un LVM de 12GB que sera montado en la ruta /lv1.

sudo lvcreate -n lv1 -L 12G vg1
sudo mkdir /lv1
sudo mkfs.ext4 /dev/vg1/lv1
sudo mount /dev/vg1/lv1 /lv1

Para montar esta partición al iniciar el servidor se modifica el archivo /etc/fstab, como root escribimos.

echo "/dev/vg1/lv1   /lv1   ext4   defaults 1 2" >> /etc/fstab

LVM Con XFS

Hasta este momento se cuenta con una partición que no utiliza todo el espacio de los discos montados, por lo que el volumen VG1 contará con espacio suficiente, para revisar el espacio con disponible usamos vgs.

[tusysadmin@lvm ~]$ sudo vgs
  VG     #PV #LV #SN Attr   VSize   VFree  
  centos   1   2   0 wz--n-  <6.00g   4.00m
  vg1      3   1   0 wz--n- <29.99g <17.99g

Con los 17.99GB disponibles se creara un nuevo LVM, pero esta vez con un sistema de archivos xfs.

sudo lvcreate -n lv2 -L 12G vg1
sudo mkdir /lv2
sudo mkfs.xfs /dev/vg1/lv2
sudo mount /dev/vg1/lv2

Al igual que en la otra partición, se modifica el archivo /etc/fstab para que sea montada al momento de arrancar el servidor. Como root escribimos.

echo "/dev/vg1/lv2   /lv2   xfs   defaults 1 2" >> /etc/fstab

Y con esto, tenemos dos particiones con diferentes sistemas de archivos, el VG cuenta con espacio libre para incrementar alguno de los volúmenes en caso de requerirse.

tusysadmin@lvm ~]$ sudo vgdisplay vg1
  --- Volume group ---
  VG Name               vg1
  System ID             
  Format                lvm2
  Metadata Areas        3
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                3
  Act PV                3
  VG Size               <29.99 GiB
  PE Size               4.00 MiB
  Total PE              7677
  Alloc PE / Size       6144 / 24.00 GiB
  Free  PE / Size       1533 / <5.99 GiB
  VG UUID               eyvICn-sJmi-x5aQ-J20q-szo2-1ynY-FjSaL5

En entradas posteriores se mostrara como incrementar estas particiones así como la adición de un nuevo disco.