Skip to main content

Usando el LVM

Usando el LVM (Logical Volume Manager)

Qué es el LVM?

En los tutoriales de esta página, y específicamente cuando instalamos Linux (Ubuntu), recomendamos instalarlo con el lvm ya instalado y funcionando (lo cual es lo que Ubuntu ofrece desde el vamos). Si lo hiciste de esta forma, quizás te encuentres con algo interesante: Sin importar el espacio con el que tu disco cuente, sólo vas a tener 100 GB disponibles si revisas el espacio libre:

df_lvm_default.png

Esto ocurre porque Ubuntu instaló el LVM, que es un gestor de "discos virtuales", e instaló el sistema operativo en un logical volume (dicho disco virtual, llamado un volumen lógico) con 100 GBs. En este disco vamos a instalar todos nuestros contenedores (programas) y demás, pero si nos manejamos de esta forma, podemos designar cuánto espacio vamos a querer dedicarle a la data de nuestros otros servicios, guardando la música de nuestro Spotify o las pelis y series de nuestro Netflix en otros logical volumes con espacio delimitado, por ejemplo 200 GBs para música y 500 para películas, etc.

El LVM nos permite incorporar varias unidades físicas (como podrían ser el disco rígido de la computadora y un disco rígido externo) en una sóla unidad lógica (llamada volume group), sin tener que preocuparnos nosotrxs por qué va a parar adónde en esos discos. Si querés más info sobre cómo funciona esto, la página de red hat tiene una buena descripción.

Usando el lvm

En principio, la instalación de linux ya va a tener el lvm instalado y configurado, con sus unidades fundamentales ya definidas: Un volume group (vg), que va a agrupar los volúmenes que creemos, y un logical volume (lv) dentro de ese vg, normalmente de 100 GBs. Por lo tanto, nos vamos a enfocar en tres procesos básicos:

  • Crear un lv
  • Modificar el tamaño de un lv
  • Eliminar un lv

Crear un Logical Volume

Lo primero que tenemos que hacer para esto es averiguar cuánto espacio sin asignar tenemos en nuestro vg, ya que este es el que vamos a tener disponible para asignar a nuestro lv. Para esto, vamos a escribir:

sudo vgdisplay

lvdisplay_espacio_libre.png

Podemos ver, por ejemplo, que tenemos alrededor de 196 GBs libres, sin utilizar. Armemos un lv con 150 GBs llamado "navidrome". Para hacer esto, vamos a utilizar el comando lvcreate, que se escribe de la siguiente forma:

lvcreate -L <tamaño> -n <nombre> <vg del que obtenemos el espacio>

Como en todo lo que es linux, es importante prestar atención a las mayúsculas y minúsculas en lo que escribimos. La opción "-L" es con L mayúscula, mientras que la opción "-n" es con n minúscula.

El nombre el vg lo podemos ver en lo que nos devolvió el vgdisplay más arriba: es "ubuntu-vg". Así que, con esto en mente, el comando que tendríamos que escribir es:

sudo lvcreate -L 150G -n navidrome-lv ubuntu-vg

Captura de pantalla 2026-01-21 a la(s) 5.10.03 p. m..png

Ya creado, podemos verlo usando el comando sudo lvs:

sudo_lvs.png

Sin embargo, todavía no lo podemos usar; tenemos que formatearlo con un sistema de archivos y tenemos que montarlo en algún directorio. Para esto, necesitamos ver dónde está ubicado el disco; en Linux, todo es un archivo. Esto significa que la mayoría de las cosas (dispositivos como el teclado, discos rígidos, los logic volumes, o los mismos programas que corremos) figuran en el navegador como archivos (o, más bien, abstracciones de lo que representan a archivos). Para ubicar nuestro nuevo lv, vamos a buscar en el mapper, que son como "accesos directos" a los discos:

ls /dev/mapper

Esto nos va a mostrar los dispositivos de almacenamiento que tenemos disponibles en el server:

ls_mapper.png

En este caso, podemos ver que tenemos esas dos opciones:

  • ubuntu--vg-navidrome--lv
  • ubuntu--vg-ubuntu--lv

Nos interesa formatear el lv de navidrome, así que vamos a utilizar su dirección: /dev/mapper/ubuntu--vg-navidrome--lv

El comando que vamos a utilizar es mkfs, específicamente vamos a usar su variante que formatea el archivo a ext4; mkfs.ext4:

sudo mkfs.ext4 /dev/mapper/ubuntu--vg-navidrome--lv

mkfs_ext4.png

Una vez formateado el volumen, estamos listos para montarlo (sería asignarle un lugar en la jerarquía de directorios en donde estén las cosas que contiene; en Windows este proceso se hace automáticamente y figura como D:\\o C:\\, etc.), para esto, primero vamos a crear el directorio al que lo vamos a montar:

sudo mkdir /mnt/musica

Luego, vamos a usar el comando mount:

sudo mount /dev/mapper/ubuntu--vg-navidrome--lv /mnt/musica

Y listo! Ya tenemos nuestro volumen montado y listo para usar. Podemos corroborarlo usando el comando lsblk:

lsblk_navidrome.png

Además de esto, podemos ver que figura entre los discos montados cuando usamos el comando para ver el espacio libre df (usamos el "flag" -h para ver el espacio que tienen disponible en unidades "de humanos", MBs y GBs):

df_navidrome.png

(Es el último elemento de la lista; a la izquierda vemos el dispositivo, el lv, y a la derecha vemos dónde está montado)

Nos queda únicamente un último paso: Encargarnos de que se monte automáticamente cada vez que encendemos la compu. Para esto, vamos a usar un archivo llamado fstab, que está ubicado en /etc/fstab. Vamos a necesitar obtener el UUID del volumen a montar, y para esto vamos a usar el comando lsblk -f (la opción -f es importante acá):

lsblk_f_navidrome.png

Podemos ver la UUID abajo (si la pantalla es grande, al lado) del volúmen que queremos agregar.

Ahora que tenemos el UUID, lo sumamos al fstab; vamos a tener que abrir el archivo /etc/fstab con un editor de texto (como nano), e instertar la siguiente línea:

UUID=<el UUID del disco> <punto de montado> <formato de sistema de archivos> defaults 0 2

Nótese que el defaults 0 2 va a ser siempre igual; lo que cambia es lo de la izquierda. Para el ejemplo con el que venimos trabajando, sería:

UUID=55c52d68-4199-41ae-99c1-d00102b3ecf1 /mnt/musica ext4 defaults 0 2

Con el comando sudo nano /etc/fstab se nos abre el editor:

fstab_navidrome.png

Como siempre, guardamos (en nano) con Ctrl+o y salimos con Ctrl+x.

Una vez hechos los cambios, probamos si nuestro fstab funciona con el comando sudo mount -a, que monta todos los volúmenes que figuran en el fstab:

chequeo_fstab_navidrome.png

Como suele pasar en Linux, la ausencia de mensaje se lee como ausencia de error: Todo funcionó bien.

Y ahora sí! Ya tenemos nuestro nuevo volúmen montado y listo para ser utilizado de forma permanente :)

Modificar el espacio de un Logical Volume

Modificar el espacio del que dispone el volumen es simple; utilizamos el comando lvextend para ampliar el espacio, y lvreduce para achivarlo.

Cuando reducimos el espacio de un volumen, hay que tener mucho cuidado; si lo reducimos a un tamaño menor al de los datos que tiene almacenados, es muy probable que perdamos esa información de forma irreversible.

Reducir el espacio de un lv

Para reducir el espacio, como mencionamos más arriba, vamos a usar el comando lvreduce. La sintaxis es muy similar a la de lvcreate que vimos más arriba:

sudo lvreduce --resizefs -L <nuevo tamaño> <volumen a reducir>

En -L, podemos poner un tamaño absoluto, como puede ser 100G para 100 Gbs, o podemos poner un tamaño relativo, como -20G para restarle 20 Gbs al total del volúmen:

lvreduce_navidrome.png

Podemos ver cómo se redujo el tamaño del volúmen de 150 Gb a 130 Gb.

Como podemos ver, para hacer esta operación el programa nos pide desmontar el volúmen. Esto significa que si queremos montarlo de nuevo, vamos a tener que volver a correr el comando mount como vimos más arriba (en la sección de crear un lv).

Expandir el espacio de un lv

Para expandir el espacio, el proceso va a ser similar al que vimos en cómo reducir el espacio; vamos a usar el comando lvextend:

sudo lvextend --resizefs -L <nuevo tamaño> <volumen a expandir>

Como antes, la opción --resizefs se encarga de que además de cambiar le tamaño del volúmen cambie el tamaño de su sistema de archivos, y la opción -L tamaños absolutos como 50G o relativos como +20G:

lvextend_navidrome.png

Eliminar un Logical Volume

En algunos casos, también, podríamos llegar a querer eliminar un lv. El proceso para hacerlo es simple, pero siempre hay que tener mucho cuidado, ya que podemos perder permanentemente la data almacenada en ese volúmen.

La única consideración es que, antes de eliminarlo, debemos desmontarlo con el comando umount (sí, no unmount, umount)

sudo umount /mnt/musica (nótese que usamos el lugar donde está montado, no la "dirección del volúmen")

umount_musica.png

Hecho esto, vamos a usar el comando lvremove para eliminar el volúmen:

lvremove_navidrome.png

Y listo, el volúmen ya no existe más.

Como tuvimos que agregarlo al fstab cuando lo creamos, ahora deberíamos eliminarlo de la lista modificando nuevamente el archivo /etc/fstab, eliminando la línea que lo monta al encender la computadora. (Revisá la sección de cómo crear un Logical Volume para ver más info al respecto)