Tabla de Contenidos
204.3 Logical Volume Manager
Pertenece a LPI Topic 204: Advanced Storage Device Administration
- Weight: 3
- Description: Candidates should be able to create and remove logical volumes, volume groups, and physical volumes. This objective includes snapshots and resizing logical volumes.
- Key Knowledge Areas:
- Tools in the LVM suite
- Resizing, renaming, creating, and removing logical volumes, volume groups, and physical volumes
- Creating and maintaining snapshots
- Activating volume groups
- Terms and Utilities:
/sbin/pv*/sbin/lv*/sbin/vg*mount/dev/mapper/lvm.conf
LVM
LVM es el Logical Volume Manager de Linux. Es una herramienta que nos permite gestionar conjuntos de discos de diferentes tipos y tamaños para crear y modificar, de modo flexible, espacios de almacenamiento.
Para tener soporte de LVM, hay que instalar el paquete lvm2
Es compatible con discos IDE, SCSI y unidades RAID.
La estructura de LVM esta formada un número de discos físicos, inicializados como LVM, que se agrupan formando un grupo de volúmenes. Estos a su vez contienen los volúmenes lógicos. Si hiciésemos una analogía con un particionado normal de un disco, el disco sería un grupo de volúmenes y el volumen lógico sería cada partición del disco.
La mayor ventaja de LVM es la flexibilidad a la hora de trabajar con sistema de ficheros.
LVM tiene un identificador de sistema de ficheros propio: 8e (con fdisk)
Un sistema LVM se descompone en tres partes:
- Volúmenes físicos (PV): Son las particiones del disco duro o RAIDs con sistema de archivos LVM.
- Grupo de Volúmenes (VG): Es una unidad administrativa en la que se engloban nuestros recursos, está formada por el conjunto de PVs y a su vez contiene los LVs.
- Volumen Lógico (LV): Última capa del LVM, es el equivalente a una partición en un sistema tradicional.
Ejemplo de un sistema con LVM:
Volúmenes físicos (PV)
Las principales utilidades para administrar PV son:
pvcreate: crear volumen físicopvdisplay: detalle de los volúmenes físicos creados.pvs: listado breve de los volúmenes físicos creado.pvmovepvremovepvresize
Lo primero es crear particiones en todos los discos que vayamos a usar en LVM de tipo Linux LVM (8e)
Ejemplos:
Crear un Volumen Físico:
pvcreate /dev/sdb1 /dev/sdc1
Si quisiéramos eliminar algún volumen físico:
pvremove /dev/sdc1
Para ver/listar los volúmenes físicos:
pvs
Mover un Volumen Físico:
pvmove /dev/sdb1 /dev/sdb2
Grupo de volúmenes (VG)
Para crear un VG necesitas tener al menos un PV.
Las principales utilidades para administrar VG son:
vgcreate: crear grupo de volúmenes:vgdisplay: información detallada sobre los grupos de volúmenes.vgs: listado breve de los grupos de volúmenes.vgextend: ampliar grupo de volúmenes (añadiendo volúmenes físicos)vgreduce: reducir grupo de volúmenesvgremove: eliminar grupo de volúmenes
Crear un Grupo de volúmenes:
vgcreate vg01 /dev/sdb1 /dev/sdc1
Listar los grupos de volúmenes:
vgs
Extender un VG:
vgextend vg01 /dev/sdd1
Borrar un VG:
vgremove vg01
Volúmenes lógicos (LV)
Las principales utilidades para administrar LV son:
lvcreate: creación de volúmenes lógicos.lvdisplay: listado detallado de volúmenes lógicos.lvs: listado sencillo de volúmenes lógicos.lvextend: extender el volumen lógico.lvreducelvremove
Crear un LV de 2 GB llamado vol1 en el grupo de volúmenes vg01:
lvcreate -L 2G -n vg01/vol1
Crear un LV de 2 GB llamado vol2 en el grupo de volúmenes vg01:
lvcreate -L 2G -n vg01/vol2
Podemos listar los volúmenes lógicos:
lvs
Mostrar espacio libre en un LV:
lvdisplay /dev/vg01/vol1
Al crear volúmenes lógicos, el sistema los asociará al fichero /dev/grupovolumen/volumenlogico
Para poder utilizar estos volúmenes lógicos, necesitaremos formatearlos (igual que si fuesen particiones):
mkfs.ext4 /dev/vg01/vol1
mkfs.ext4 /dev/vg01/vol2
Creamos puntos de montaje:
mkdir /mnt/disco1 mkdir /mnt/disco2
Y montamos:
mount -t ext4 /dev/vg01... /mnt/disco1
Extender un LV:
lvextend -L +3G /dev/mapper/vg01-vol2
Si queremos extender el volumen a todo el espacio libre disponible de su grupo de volúmenes:
lvextend -l +100%FREE /dev/mapper/vg01-vol2
Siempre que se extiende un LV, posteriormente debemos extender el sistema de ficheros. Para extender el sistema de ficheros usamos la herramienta resize2fs:
resize2fs /dev/mapper/vg01-vol2 5G
5G será el nuevo tamaño que debe tener el sistema de ficheros.
Cuando reducimos el tamaño del LV hay que reducir previamente el del sistema de ficheros.
Snapshots
También podemos crear Snapshots de un LV.
Un Snapshot es una “copia virtual” de una unidad lógica, que conservará los datos del volumen en el momento en donde se ha realizado, de modo que podemos restaurar dicho volumen en un momento dado.
Crea un volumen lógico nuevo que es copia de otro volumen lógico en un momento concreto del tiempo.
Ejemplo:
lvcreate -L 10G -s -n snap-2021-12-10 /dev/mapper/vg01-vol1
Device Mapper
El Device Mapper es un módulo del kernel que proporciona un sistema de gestión de volúmenes. Nos permite mappear dispositivos en nuestro sistema de ficheros usándolos como volúmenes lógicos.
LVM utiliza Device Mapper para asignar rutas a nuestros volúmenes lógicos.
Los LV se crean como /dev/mapper/VG-LV y debemos darle formato, antes de realizar el montaje y trabajar con ellos.
Ejemplo:
# df -h S.ficheros Tamaño Usados Disp Uso% Montado en /dev/mapper/rhel-root 82G 47G 36G 58% / devtmpfs 3,9G 0 3,9G 0% /dev tmpfs 3,9G 0 3,9G 0% /dev/shm tmpfs 3,9G 393M 3,5G 11% /run tmpfs 3,9G 0 3,9G 0% /sys/fs/cgroup /dev/mapper/rhel-tmp 1,9G 33M 1,9G 2% /tmp /dev/mapper/rhel-home 1,9G 93M 1,8G 5% /home /dev/mapper/rhel-var 10G 1,9G 8,2G 19% /var /dev/sda1 497M 168M 330M 34% /boot tmpfs 782M 0 782M 0% /run/user/0
Test
Queremos reducir de tamaño un sistema de ficheros que está gestionado por LVM. ¿Cómo lo haríamos sin perder datos?
- Desmontar el sistema de ficheros
- Pasarle el
fscky realizar comprobaciones y corregir posibles errores en el sistema de ficheros. lvreducepara reducirlo especificando el nuevo tamaño.- Montamos de nuevo el volumen lógico
Decides utilizar LVM para gestionar 4 discos de 4GB. Después de crear el grupo de volúmenes, ¿cómo crearías un volumen lógico de 10 GB llamado “big-app”?
lvcreate -l 2560 vg01 -n big-app
-l especifica que se usarán los “lvm extends”, unidad mínima de información de LVM que, por defecto, son 4 MB. 4 * 2560 = 10240 (10 GB)
La secuencia correcta de comandos para crear volúmenes lógicos en un sistema Linux es:
pvcreate,vgcreate,lvcreate,mke2fs(mkfs.ext4,mkfs.ext3…),mount
