11 mayo, 2025

1. Introducción

Quedarse sin espacio en / es uno de esos sustos que tarde o temprano vivimos en servidores o portátiles Linux. Fedora, con su esquema por defecto “LVM sobre LUKS”, tiene varias capas que entender:

  1. Disco y particiones físicas (/dev/sda1, /dev/sda2…)
  2. LVM
    • PV (Physical Volume)
    • VG (Volume Group)
    • LV (Logical Volume)
  3. Sistema de archivos — normalmente XFS en /

Esta arquitectura es muy flexible: podemos crecer sin desmontar ni reiniciar. Pero antes de tocar LVM, necesitamos respirar y obtener algo de espacio libre: LVM guarda una copia de sus metadatos antes de cada cambio, y si no hay ni 10 KB disponibles obtenemos errores como «Couldn’t create temporary archive name».


2. Diagnóstico rápido

df -hT /
lsblk -f
pvs
vgs

Con estas órdenes sabemos:

  • Tipo y versión del FS (xfs en nuestro caso)
  • Tamaño y % de uso de /
  • Cuánto espacio libre tiene el VG (PFree, VFree)

Ejemplo de salida relevante:

/dev/mapper/fedora_fedora-root  xfs  15G  100%  /
PV /dev/sda2      VG fedora_fedora  PSize 99G  PFree 84G

Conclusión: el Grupo de Volúmenes tiene 84 GB libres; el problema es que el LV raíz ocupa solo 15 GB y ya está lleno.


3. Liberar espacio de forma segura

3.1 Vaciar caché de DNF

dnf guarda paquetes descargados en /var/cache/dnf/; después de una actualización grande, esto puede sumar cientos de MB.

sudo dnf clean packages   # borra paquetes descargados
# sudo dnf clean all      # más agresivo: metadatos + paquetes

3.2 Quitar journals antiguos

Systemd‑journal escribe en /var/log/journal/. Podemos limitar su tamaño sin perder la bitácora actual:

# Mantener máximo 500 MB en total
sudo journalctl --vacuum-size=500M

# o mantener solo las últimas 2 semanas
sudo journalctl --vacuum-time=2weeks

Ambos comandos eliminan únicamente archivos cerrados; el journal activo permanece intacto, de modo que los servicios siguen registrando eventos sin pausa.

Comprueba cuánto liberaste:

sudo journalctl --disk-usage

3.3 Truncar logs gigantes

Ciertos demonios (p.ej. Apache, aplicaciones propias) pueden generar bitácoras que crecen sin rotación. Encuéntralas y recórtalas:

sudo du -sh /var/log/* | sort -h | tail
sudo truncate -s 0 /var/log/TU_LOG.log

3.4 Verifica que ya hay espacio

df -h /

Con apenas 5‑10 MB libres hemos despejado el obstáculo que impedía a LVM crear su copia de seguridad.


4. (Opcional) Configura una política de journal permanente

Para que no vuelva a desbordarse /var/log/journal:

sudo mkdir -p /etc/systemd/journald.conf.d
sudo tee /etc/systemd/journald.conf.d/99-storage.conf <<'EOF'
[Journal]
SystemMaxUse=1G          # tope global
SystemMaxFileSize=200M   # tope por archivo
EOF

sudo systemctl restart systemd-journald

5. Próximos pasos

Con espacio temporal recuperado, estamos listos para agrandar el volumen lógico raíz y su sistema de archivos XFS usando el área libre del VG.
Ahí veremos:

  • lvextend -r -l +100%FREE …
  • Alternativas si deseas reservar espacio para /home o snapshots
  • Cómo verificar el cambio y buenas prácticas para evitar futuros sustos

En la primera entrega liberamos algunos megabytes cruciales sin interrumpir la llegada de nuevas bitácoras.
Ahora sí: aprovecharemos los ≈ 84 GB libres del grupo de volúmenes para que / deje de vivir al límite.


6. Repaso del punto de partida

ComandoSalida clave
pvsPFree ≈ 84 G
vgsVFree ≈ 84 G
lvsfedora_fedora-root 15 G
df -h /100 % usado

Tenemos margen de sobra dentro del mismo disco; no hace falta tocar particiones ni agregar discos.


7. Cuánto espacio añadir

Antes de ejecutar nada, decide:

EscenarioComando ejemploResultado
Quiero TODO el espacio disponiblesudo lvextend -r -l +100%FREE /dev/mapper/fedora_fedora--rootEl LV pasa de 15 G → ≈ 99 G
Quiero añadir solo 30 GBsudo lvextend -r -L +30G /dev/mapper/fedora_fedora--rootEl LV pasa de 15 G → 45 G; deja 54 G libres en el VG

-r ejecuta automáticamente xfs_growfs, así que no tendrás que hacer un segundo comando.


8. Ejecución paso a paso

8.1 Comprobación de seguridad (opcional pero aconsejable)

sudo vgcfgbackup

Copia los metadatos LVM en /etc/lvm/backup/….
Ahora bien, como ya liberamos espacio, LVM puede guardar su propia copia cuando hagamos el lvextend.

8.2 Extensión del LV + sistema de archivos

Ejemplo: usar todo lo libre.

sudo lvextend -r -l +100%FREE /dev/mapper/fedora_fedora--root

Salida típica:

Size of logical volume fedora_fedora/root changed from 15.00 GiB (3840 extents) to <99.00 GiB (25343 extents).
Logical volume fedora_fedora/root successfully resized.
meta-data=/dev/mapper/fedora_fedora--root isize=512 agcount=4, agsize=983040 blks
data     =                         ...  (antes)
xfs_growfs: data size changed from 6291456 to 25952256 blocks

¿XFS en línea? Sí. xfs_growfs no requiere desmontar ni reiniciar.

8.3 Verificación

df -h /
lvs -a -o lv_name,lv_size,lv_path

Debes ver la nueva capacidad y un % de uso saludable.


9. Qué hacer si el VG estuviera lleno (referencia rápida)

No lo necesitas ahora, pero guárdalo para el futuro.

  1. Ampliar la partición sda2 (usar growpart o parted resizepart)
  2. pvresize /dev/sda2
  3. Retomar desde 7.

O bien, añadir otro disco:

sudo pvcreate /dev/sdb
sudo vgextend fedora_fedora /dev/sdb

10. Buenas prácticas post‑expansión

10.1 Impedir que el journal vuelva a desbordarse

Ya configuramos SystemMaxUse=1G, pero conviene revisar:

grep -A2 '^\[Journal\]' /etc/systemd/journald.conf /etc/systemd/journald.conf.d/* || true

10.2 Limpieza automática de DNF

sudo systemctl enable --now dnf-makecache.timer
sudo systemctl enable --now dnf-automatic-install.timer

Y añade al cron del super‑usuario algo como:

@monthly dnf autoremove -y && dnf clean packages

10.3 Separar /home (opcional)

  1. Reserva espacio libre:
    sudo lvcreate -L 40G -n home fedora_fedora
  2. Formatea:
    sudo mkfs.xfs /dev/fedora_fedora/home
  3. Copia datos y ajusta /etc/fstab.

Con /home aislado, los archivos personales ya no pondrán en riesgo a la raíz.

10.4 Snapshots LVM

Antes de actualizaciones mayores:

sudo lvcreate -s -n pre_upgrade_root -L 5G /dev/fedora_fedora/root

Si algo falla, arrancas desde un LiveUSB y lvconvert --merge.


11. Checklist final

Tarea
Respaldos vigentes
Liberar espacio (dnf clean, journalctl --vacuum-*)
lvextend -r … con el tamaño deseado
Verificar con df -h /
Configurar límites permanentes en journal
Programar limpieza mensual de cachés
Documentar el procedimiento para el siguiente administrador

12. Conclusión

Pasar de un sistema saturado a uno holgado requería solo unos minutos:

  1. Quitar & liberar MB críticos.
  2. Ampliar el LV raíz en caliente gracias a la flexibilidad de LVM + XFS.
  3. Prevenir con límites de journal y tareas de limpieza.

Esta combinación de buenas prácticas debería evitar que tu Fedora vuelva a quedarse sin espacio… al menos hasta la próxima migración de versión o acumulación de contenedores olvidados 😉


Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *