Gestión de volúmenes lógicos en GNU/Linux
El uso de volúmenes lógicos ofrece ciertas ventajas, la más básica la económica, en cuanto a la gestión del espacio en nuestros discos duros. Gracias a su empleo puedes disponer de un espacio de almacenamiento variable y flexible, no limitado al tamaño físico de los discos. Además, puedes hacer uso de ciertas características que aumentan el rendimiento del sistema.
Conceptos sobre las unidades físicas
- Unidad de disco: Unidad de almacenamiento hardware. Cada uno de los discos físicos del equipo.
- Partición de disco: Espacio de almacenamiento de una unidad de disco. El esquema de particiones de referencia es MBR (Master Boot Record) que admite hasta tres particiones físicas y varias lógicas. Una partición siempre va a ser más pequeña que el disco que la contiene.
- Sistema de archivos: Es el conjunto de reglas que se aplican a una partición para gestionar los archivos contenidos en ella.
Conceptos sobre las unidades lógicas
- Volumen físico (Phisical Volume —PV—): Es cada uno de los componentes físicos que forman parte de un grupo de volúmenes.
- Grupo de volúmenes o Grupo volumen (Volume Group —VG—): Es el grupo de volúmenes físicos que trabajan como una única unidad.
- Volumen lógico (Logical Volume —LV—): Es cada una de los trozos lógicos en las que se puede dividir un Volume Group. Algo semejante a una partición de un volumen lógico. Éste puede ser más grande que cualquiera de los volúmenes físicos que componen el grupo volumen, pero siempre más pequeña que el grupo volumen.
Resumiendo:
Vamos a formar un grupo de volúmenes físicos que para el sistema serán una única unidad (Grupo volumen). A continuación, esa unidad la podemos dividir en volúmenes lógicos. Esto tiene la ventaja de que, el espacio de almacenamiento no depende de particiones o discos físicos. Pueden añadirse más discos físicos a un volumen si hiciese falta más espacio.
Situación inicial
Tenemos cinco discos: el de sistema, que no voy a tocar, dos de 1GB y dos de 2GB.
Lo primero es instalar el software necesario. En Debian y derivadas será con
sudo apt install lvm2 -y
Lenguaje del código: Shell Session (shell)
Una vez instalado, comprobamos las unidades con lsblk
.
Vamos a convertir las unidades que nos interesan en volúmenes físicos.
sudo pvcreate /dev/sd{b,c,d,e}
Lenguaje del código: Shell Session (shell)
Las unidades sdb y sdc no se pueden crear como volúmenes físicos porque contienen particiones. Vamos a eliminarlas.
sudo fdisk /dev/sdb
Lenguaje del código: Shell Session (shell)
- Con p, vemos las particiones del disco.
- Con m, obtenemos la lista de opciones.
- Con d, eliminamos una partición.
De modo que:
d
1 # Borrada particion 1
d
2 # Borrada partición 2
d # Borrada partición 3. Era la última. No pregunta.
w # para escribir los cambios
Lenguaje del código: Shell Session (shell)
Y lo mismo con el disco /dev/sdc.
Con lsblk
vuelvo a comprobar las unidades y veo que ya no hay particiones.
Ahora, los puedo convertir a volúmenes físicos.
Lo compruebo con sudo pvscan
. Este comando me devuelve la lista de volúmenes físicos disponibles, cuáles están en uso y en qué grupo de volúmenes —en este caso, en ninguno— y la capacidad total disponible.
Crear un grupo de volúmenes
Para crear un grupo de volúmenes basta con usar el comando sudo vgcreate nombre_de_grupo unidades
. Vamos allá:
sudo vgcreate asirvg_1 /dev/sd{b,c,d,e}
Lenguaje del código: Shell Session (shell)
Comprobamos que todo ha ido bien con sudo vgscan
y sudo pvscan
.
Podemos obtener información extra con sudo vgdisplay
.
Entonces, podemos ver como los cuatro discos pasan a funcionar como uno solo, sumando sus capacidades.
Crear volúmenes lógicos
Como si de un disco nuevo se tratase, necesitamos prepararlo para que se pueda usar. Para ello definimos los volúmenes lógicos, al menos uno.
La creación de un volumen lógico admite varias opciones, incluyendo VDO y algunas formas de RAID. Estas opciones quedan fuera de mi intención actual, mucho más básica. Crearé un volumen lógico lineal.
lvcreate --size 1.5G asirvg_1
Lenguaje del código: Shell Session (shell)
Ahora tenemos un volumen lógico llamado lvol0, perteneciente al volume group asirvg_1. Podemos ver toda la información relativa a este volumen ejecutando sudo lvdisplay
Para poderlo usar, debemos darle formato. En este caso, usaremos ext4.
sudo mkfs.ext4 /dev/asirvg_1/lvol0
Lenguaje del código: Shell Session (shell)
A continuación, para poder usar el nuevo volumen, nos queda montarlo. En este caso, en /mnt, por no llevarme demasiado trabajo. Pero, si vas a usarlo de forma regular, lo ideal es que configures el montaje en /etc/fstab.
sudo mount /dev/asirvg_1/lvol0 /mnt
Lenguaje del código: Shell Session (shell)
Más adelante, veremos cómo se pueden extender los volúmenes lógicos para añadir más espacio o cómo hacer un RAID empleando LVM.