Introducción al problema de inodos llenos en Linux
Uno de los dolores de cabeza más comunes para los administradores de sistemas Linux ocurre cuando las aplicaciones fallan, los servicios se detienen y el sistema operativo reporta un error de 'No space left on device'. Sin embargo, al ejecutar el comando df -h, te das cuenta de que todavía hay gigabytes de espacio libre en el disco duro. El problema no es el almacenamiento físico, sino que te has quedado sin inodos.
Un inodo (index node) es una estructura de datos en un sistema de archivos estilo Unix que almacena información sobre un archivo o directorio, excluyendo su nombre y datos reales. Si tu sistema genera millones de archivos pequeños (como cachés, sesiones web o correos electrónicos temporales), puedes agotar todos los inodos disponibles antes de llenar el espacio en bytes.
¿Cómo saber si el problema es de inodos?
Para confirmar si la causa raíz de tu error es la saturación de inodos, debes abrir tu terminal y ejecutar el siguiente comando:
df -inodeRevisa la columna de uso (Use%). Si ves que alguna partición o punto de montaje (por ejemplo, / o /var) se encuentra al 100%, has encontrado la causa del problema. Ahora necesitas identificar qué directorio está acaparando todos los inodos.
Método 1: Encontrar directorios con mayor consumo de inodos
Para solucionar el problema, primero debes localizar dónde se acumulan los millones de archivos pequeños. Utiliza el siguiente comando para listar el consumo de inodos por directorio en la ruta actual:
sudo du --inodes -s /* | sort -nEste comando escaneará todas las carpetas principales y las ordenará de menor a mayor uso de inodos. Comúnmente, el problema se origina en rutas como:
/var/log: Acumulación de logs antiguos o rotados incorrectamente./var/spool/mqueue: Correos electrónicos en cola que no pudieron entregarse.- Directorios de caché de npm, composer o sesiones de PHP.
Método 2: Limpiar archivos temporales y cachés
Una vez identificado el directorio culpable, es momento de vaciarlo. Si el problema está en directorios de caché o sesiones, puedes eliminar los archivos que no se hayan modificado en los últimos días para evitar borrar datos críticos recientes.
- Accede al directorio problemático con
cd /ruta/del/problema. - Ejecuta el comando para eliminar archivos antiguos (por ejemplo, mayores a 7 días):
sudo find . -type f -mtime +7 -delete - Si se trata de miles de archivos vacíos o sesiones, un comando seguro para limpiar directorios específicos de caché es:
sudo rm -rf cache/*
Método 3: Purgar correos en cola (Postfix / Sendmail)
Si el comando df -inode te muestra que /var está lleno debido al sistema de correo local, es muy probable que tengas una cola masiva de emails rebotados. Puedes verificarlo y vaciarla con los siguientes pasos:
- Cuenta los mensajes en cola ejecutando:
mailq | tail -n 1 - Si usas Postfix, puedes vaciar toda la cola de correos congelados o en espera ejecutando:
sudo postsuper -d ALL - Vuelve a verificar el uso de inodos con
df -inodepara confirmar que el espacio lógico se ha liberado correctamente.
Conclusión
El agotar los inodos en Linux es un problema silencioso pero crítico que paraliza servidores web y bases de datos. Monitorear regularmente las particiones con df -inode y configurar políticas de rotación de logs evitará que vuelvas a sufrir este molesto error.