LVM
Logical Volume Manager
Introducción
De forma simplificada, LVM (Logical Volume Manager) es una capa de abstracción entre un dispositivo de almacenamiento físico (por ejemplo, un disco) y el sistema de ficheros.
La principal ventaja frente al particionado tradicional es la flexibilidad, ya que permite redimensionar, mover y reorganizar el almacenamiento de forma dinámica, incluso en caliente y sin afectar a las aplicaciones.
Para entender LVM basta con tener claros tres conceptos fundamentales:
- Physical Volume (PV)
- Volume Group (VG)
- Logical Volume (LV)
Conceptos básicos de LVM
Physical Volume
Un PV es una fuente de almacenamiento, es decir, un dispositivo que proporciona espacio (disco completo o partición).
- No se formatea.
- Se entrega al LVM “en crudo”.
- Una vez asignado a LVM, el dispositivo pasa a ser gestionado exclusivamente por este y no se manipula directamente.
Volume Group
Para poder utilizar el espacio de uno o varios PVs, estos deben pertenecer a un VG.
- Un VG puede verse como un “disco lógico” formado por uno o más PVs.
- Puede crecer en cualquier momento añadiendo nuevos PVs.
- El crecimiento es transparente y no requiere reinstalaciones.
Logical Volume
Los LVs son el resultado final de LVM.
- Sobre ellos se crean sistemas de ficheros, swap, etc.
- Pueden crecer o reducirse siempre que exista espacio libre en el VG.
- El sistema de ficheros ve el espacio como continuo, aunque esté distribuido físicamente en varios discos.
LVM permite incluso mover datos entre distintos PVs dentro de un mismo VG (en caliente y sin interrupciones).
Gestión de Physical Volume (PV)
Visualizar PV:
[root@JBoss0 bonzo]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <19,00g 0
[root@JBoss0 bonzo]# pvdisplay
--- Physical volume ---
PV Name /dev/sda2
VG Name centos
PV Size <19,00 GiB / not usable 3,00 MiB
Allocatable yes (but full)
PE Size 4,00 MiB
Total PE 4863
Free PE 0
Allocated PE 4863
PV UUID e2dQlV-R0uN-Z3Wd-sL5D-8bjR-KI0Q-BYEZCH
Crear un Volumen Físico (PV)
[root@JBoss0 bonzo]# pvcreate /dev/sda2
Physical volume "/dev/sda2" successfully created
Eliminar un Volumen Físico (PV)
[root@JBoss0 bonzo]# pvremove /dev/sda2
Labels on physical volume "/dev/sda2" successfully wiped.
Gestión de Volume Groups (VG)
Crear un Volume Group:
vgcreate Nombre_Grupo_Vol /dev/sdX /dev/sdY
Eliminar un Grupo de Volúmenes:
vgremove myvg1
Visualizar Grupos de Volúmenes:
[root@JBoss0 bonzo]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <19,00g 0
[root@JBoss0 bonzo]# vgdisplay
--- Volume group ---
VG Name centos
System ID
Format lvm2
Metadata Areas 1
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 1
Act PV 1
VG Size <19,00 GiB
PE Size 4,00 MiB
Total PE 4863
Alloc PE / Size 4863 / <19,00 GiB
Free PE / Size 0 / 0
VG UUID vIUogQ-9YZs-shm0-DlJs-fpKK-wS6o-7UtsB4
Añadir un PV a un VG existente:
vgextend grupoVol /dev/vdb1
Gestión de Logical Volume (LV)
Visualizar Logical Volume:
[root@serveripa bonzo]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
home myvg1 -wi-ao---- 2.98g
var rhel -wi-ao---- 2.49g
root rhel00 -wi-ao---- 12.99g
swap vgswap -wi-ao---- 2.00g
[root@serveripa bonzo]# lvdisplay
--- Logical volume ---
LV Path /dev/rhel00/root
LV Name root
VG Name rhel00
LV UUID LrjVhq-qX56-AAUw-xCYR-tUoz-Olpc-8NlQr9
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2019-08-08 12:18:13 -0700
LV Status available
# open 1
LV Size 12.99 GiB
Current LE 3325
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0
Visualizar si un LV está en mirror:
[root@serveripa ~]# lvs -a -o+devices vg_data|grep -i lv_datasource
lv_usrbmpp9b vg_data rwi-aor--- 205.00g 100.00 lv_datasource_rimage_0(0),lv_datasource_rimage_1(0)
[lv_datasource_rimage_0] vg_data iwi-aor--- 205.00g /dev/mapper/mp-A-005(1)
[lv_datasource_rimage_1] vg_data iwi-aor--- 205.00g /dev/mapper/mp-B-014(1)
[lv_datasource_rmeta_0] vg_data ewi-aor--- 4.00m /dev/mapper/mp-A-005(0)
[lv_datasource_rmeta_1] vg_data ewi-aor--- 4.00m /dev/mapper/mp-B-014(0)
Crear un Volumen Lógico:
lvcreate NombreVG -n lv01 -L 300M
:
lvcreate myvg1 -n home -L 3G
Extender un Volumen Lógico:
lvextend -L +500M /dev/mapper/myvg1-home
Usando un PV concreto:
lvextend -L +120M /dev/rhel/var /dev/sdc
Redimensionar el Sistema de Ficheros
Dependiendo del sistema de ficheros:
ext2 / ext3 / ext4:
resize2fs /dev/myvg1/home
xfs:
xfs_growfs /dev/rhel/var
Extender LV y FS en un solo comando:
lvextend -L +10G /dev/mapper/myvg1-home -r
Notas finales
- Mantener espacio libre en el VG maximiza la flexibilidad de LVM. - LVM permite crecimiento dinámico, migración de datos y alta disponibilidad. - Es una tecnología clave para entornos empresariales y certificaciones RHCSA/RHCE.