Introducción
Uno de los problemas más frustrantes para los administradores de sistemas Linux ocurre cuando las aplicaciones fallan al intentar guardar archivos, arrojando errores de disco lleno, pero al ejecutar el comando df -h notamos que todavía hay gigabytes de espacio disponible. Este comportamiento inusual se debe al agotamiento de los inodos (inodes), las estructuras de datos que almacenan la metainformación de cada archivo en el sistema de ficheros.
Causas del Agotamiento de Inodos
Cada archivo, directorio o enlace simbólico en Linux consume exactamente un inodo. Las causas más comunes de este problema incluyen:
- Acumulación masiva de archivos temporales pequeños (como sesiones de PHP o cachés web).
- Sistemas de correo electrónico locales (como Postfix o Sendmail) que almacenan millones de correos en la bandeja de entrada.
- Procesos automatizados o scripts que generan logs de forma desmedida sin rotación adecuada.
Método 1: Identificar qué directorio está consumiendo los inodos
Para solucionar el problema, primero debemos localizar qué carpeta o partición específica se ha quedado sin inodos. Sigue estos pasos:
- Abre tu terminal con privilegios de superusuario.
- Ejecuta el siguiente comando para ver el uso de inodos en todas las particiones montadas:
df -i - Analiza la columna
IUse%para identificar el sistema de archivos al 100%. - Una vez identificado el punto de montaje (por ejemplo,
/var), utiliza este comando encadenado para listar los subdirectorios y contar sus inodos:sudo du --inodes -s /* | sort -hr
Método 2: Limpiar archivos temporales y cachés masivas
Una vez encontrado el directorio culpable, por lo general carpetas como /var/spool o /tmp, debemos proceder a eliminar el exceso de archivos pequeños. Realiza lo siguiente:
- Navega hasta el directorio problemático:
cd /var/spool/clientmqueue - Si necesitas eliminar miles de archivos pequeños de golpe, el comando
rmtradicional fallará por exceso de argumentos. Utiliza find en su lugar:sudo find . -type f -delete - Verifica nuevamente el uso de inodos ejecutando:
df -i
Método 3: Configurar la rotación de logs para evitar futuros incidentes
Para garantizar que el problema no vuelva a ocurrir, es vital configurar correctamente el servicio logrotate:
- Edita el archivo de configuración principal de logrotate:
sudo nano /etc/logrotate.conf - Asegúrate de definir políticas agresivas de borrado por tiempo o tamaño, como
dailyyrotate 7. - Prueba la configuración simulando una ejecución con:
sudo logrotate -f /etc/logrotate.conf