Introducción al problema de Inodos Agotados en Linux
¿Te has encontrado con que tu servidor o PC con Linux rechaza nuevos archivos, correos o instalaciones indicando que no hay espacio libre, pero ejecutas el comando df -h y ves que hay gigabytes disponibles? El problema no es el espacio físico de almacenamiento, sino que has agotado los inodos. Los inodos son estructuras de datos que almacenan la metainformación de cada archivo (permisos, propietario, tamaño), y cada sistema de archivos tiene un número fijo de ellos asignados al crearse.
Causas principales de la falta de inodos
La causa más común de este error es la acumulación masiva de archivos muy pequeños, los cuales, aunque apenas ocupan espacio en bytes, consumen un inodo completo por cada archivo individual. Entre los culpables habituales se encuentran:
- Directorios de caché de aplicaciones web o gestores de paquetes que acumulan miles de archivos temporales.
- Sistemas de correo electrónico antiguo (como Maildir) con millones de mensajes pequeños.
- Registros (logs) desatendidos que generan fragmentos pequeños constantemente.
Cómo verificar si el problema son los inodos
Antes de aplicar cualquier solución, debes confirmar si el almacenamiento disponible ha llegado al límite de inodos utilizados. Abre tu terminal y ejecuta el siguiente comando:
df -inode
Revisa la columna de porcentaje de uso (IUse%). Si alguno de tus discos muestra un 100%, has encontrado la causa exacta del problema.
Método 1: Encontrar los directorios con mayor consumo de inodos
Para solucionar el problema eficientemente, debes localizar qué carpeta está acaparando todos los inodos. Utiliza este bucle en la terminal para escanear el directorio actual y ver qué subdirectorios contienen más archivos:
- Accede a la partición afectada, por ejemplo:
cd /var/www - Ejecuta el comando de conteo:
sudo find . -xdev -printf '%h ' | sort | uniq -c | sort -k 1 -n - Analiza los resultados en pantalla para identificar la ruta exacta que genera el desbordamiento.
Método 2: Limpiar archivos temporales o caché masivos
Una vez identificado el directorio conflictivo (por ejemplo, una carpeta de sesiones de PHP o logs antiguos), procede a eliminar el exceso de archivos obsoletos. Puedes usar el comando find para borrar archivos con más de cierto tiempo de antigüedad:
sudo find /ruta/al/directorio/ -type f -mtime +30 -delete
Este comando buscará y eliminará todos los archivos regulares (-type f) que tengan una modificación mayor a 30 días (-mtime +30), liberando instantáneamente miles de inodos en tu sistema Linux.