¿Qué es LVM?
LVM (Logical Volume Manager) es un mecanismo de Linux para administrar particiones de disco. Inserta una capa lógica entre los discos físicos y los sistemas de archivos, de modo que el espacio en disco se puede asignar y ajustar de manera más flexible.
Flujo de trabajo típico de LVM:
- Inicializar discos como volúmenes físicos (PV)
- Combinar PV en un grupo de volumen (VG)
- Crear volúmenes lógicos (LV) dentro del VG.
- Crear sistemas de archivos en LV
- Montaje y uso
Con LVM, un sistema de archivos puede abarcar varios discos y cambiar su tamaño dinámicamente.
Conceptos básicos de LVM
- Medios físicos: dispositivos de almacenamiento subyacentes como
/dev/sda, /dev/nvme0n1.
- Volumen físico (PV): un disco/partición inicializado para LVM.
- Grupo de volumen (VG): un conjunto de almacenamiento formado por uno o más PV.
- Volumen lógico (LV): partición virtual asignable creada a partir de un VG.
- Extensión Física (PE): unidad de asignación de tamaño fijo en un VG.
- Extensión Lógica (LE): unidad de asignación utilizada por un LV (mapeada desde PE).
Instalar
1
2
|
sudo apt update
sudo apt install lvm2
|
Administrar PV
Crear PV
1
2
3
4
|
pvcreate [option] devname ...
# Example: initialize /dev/sdb and /dev/sdc as PV
pvcreate /dev/sdb /dev/sdc
|
Ver PV
1
2
3
4
|
pvdisplay [option] devname
# Example
pvdisplay /dev/sdb
|
Eliminar PV
1
2
3
4
|
pvremove [option] pvname ...
# Example
pvremove /dev/sdb
|
Administrar VG
Crear VG
1
2
3
4
|
vgcreate [option] vgname pvname ...
# Example: create vg1 with /dev/sdb and /dev/sdc
vgcreate vg1 /dev/sdb /dev/sdc
|
Ver vídeo gráfico
1
2
3
4
|
vgdisplay [option] [vgname]
# Example
vgdisplay vg1
|
Extender VG
1
2
3
4
|
vgextend [option] vgname pvname ...
# Example
vgextend vg1 /dev/sdb
|
Reducir VG
1
2
3
4
|
vgreduce [option] vgname pvname ...
# Example
vgreduce vg1 /dev/sdb2
|
Eliminar VG
1
2
3
4
|
vgremove [option] vgname
# Example
vgremove vg1
|
Administrar VI
Crear LV
1
2
3
4
5
6
7
|
lvcreate [option] vgname
# Example 1: create a 10G LV in vg1
lvcreate -L 10G vg1
# Example 2: create a 200M LV named lv1 in vg1
lvcreate -L 200M -n lv1 vg1
|
Ver LV
1
2
3
4
|
lvdisplay [option] [lvname]
# Example
lvdisplay /dev/vg1/lv1
|
Cambiar tamaño LV
1
2
3
4
5
6
7
8
9
10
|
lvresize [option] lvname
# Add 200M
lvresize -L +200M /dev/vg1/lv1
# Reduce 200M
lvresize -L -200M /dev/vg1/lv1
# Use all free space in VG
lvresize -l +100%FREE /dev/vg1/lv1
|
Extender LV
1
2
3
4
5
6
7
|
lvextend [option] lvname
# Add 100M
lvextend -L +100M /dev/vg1/lv1
# Use all free space
lvextend -l +100%FREE /dev/vg1/lv1
|
Reducir el VI
1
2
3
4
|
lvreduce [option] lvname
# Reduce 100M
lvreduce -L -100M /dev/vg1/lv1
|
Eliminar VI
1
2
3
4
|
lvremove [option] lvname
# Example
lvremove /dev/vg1/lv1
|
Crear y montar sistema de archivos
Crear sistema de archivos
1
2
3
4
|
mkfs [option] lvname
# Example: create ext4 on LV
mkfs -t ext4 /dev/vg1/lv1
|
Montar manualmente
1
2
3
4
|
mount lvname mntpath
# Example
mount /dev/vg1/lv1 /mnt/data
|
Cambiar el tamaño del sistema de archivos después del cambio de tamaño de LV
Después de ampliar un LV, el tamaño del sistema de archivos no aumenta automáticamente en muchos casos. Para ext4:
1
2
3
4
5
6
7
8
|
# Unmount first (recommended for safety)
umount /dev/vg1/lv1
# Check and repair file system
e2fsck -f /dev/vg1/lv1
# Resize file system to fill LV
resize2fs /dev/vg1/lv1
|
En algunos escenarios, también es posible cambiar el tamaño en línea: