Usando LVM para administrar discos en Ubuntu

LVM (Logical Volume Manager) es un mecanismo de administración de discos de Linux que agrega una capa lógica entre los discos físicos y los sistemas de archivos para una administración flexible de la capacidad.

¿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:

1
resize2fs /dev/vg1/lv1
记录并分享
Creado con Hugo
Tema Stack diseñado por Jimmy