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 al intentar escribir datos en el disco, arrojando el mensaje No queda espacio en el dispositivo (No space left on device). Lo desconcertante de este error es que, al ejecutar el comando df -h, descubres que todavía tienes gigabytes libres. ¿Qué está pasando? El problema no es el espacio físico de almacenamiento, sino que se han agotado los inodos.
¿Qué son los inodos y cuáles son las causas del error?
En los sistemas de archivos basados en Unix/Linux como ext4, un inodo (index node) es una estructura de datos que almacena toda la información sobre un archivo o directorio, excepto su nombre y su contenido real. Cada archivo, directorio o enlace simbólico consume un inodo. Las causas principales de que se agoten son:
- Acumulación masiva de archivos muy pequeños (como cachés de aplicaciones, sesiones PHP o pequeños logs).
- Procesos automatizados que generan millones de ficheros temporales sin eliminarlos correctamente.
- Correos electrónicos antiguos acumulados en servidores de correo locales (Maildir).
Método 1: Identificar qué directorio está consumiendo los inodos
El primer paso para solucionar el problema es localizar exactamente dónde se están acumulando los archivos. Para ello, utilizaremos una combinación de comandos en la terminal que auditará el uso de inodos por directorio.
- Abre tu terminal de Linux con permisos de superusuario (root o sudo).
- Ejecuta el siguiente comando para listar el uso de inodos en el directorio actual:
sudo du --inodes -d 1 / | sort -hr - Analiza la salida para identificar la partición o carpeta con mayor número de inodos utilizados (por ejemplo,
/varo/home). - Navega dentro de la carpeta sospechosa y repite el comando
sudo du --inodes -d 1 | sort -hrhasta dar con la subcarpeta culpable.
Método 2: Limpiar cachés y archivos temporales masivos
Una vez localizado el directorio que satura los inodos (frecuentemente /var/log o directorios de caché web), debes proceder a eliminar los archivos innecesarios de forma segura.
- Si el problema está en los archivos de caché de APT (en sistemas Debian/Ubuntu), ejecuta:
sudo apt-get clean - Para eliminar archivos temporales antiguos en
/tmpde más de 7 días, utiliza el comando:sudo find /tmp -type f -mtime +7 -delete - Si se trata de logs del sistema acumulados, puedes vaciar archivos específicos de registro sin borrar el archivo en sí:
sudo truncate -s 0 /var/log/syslog
Método 3: Configurar la rotación de logs para prevenir futuros errores
Para evitar que este molesto error vuelva a aparecer en el futuro, es fundamental asegurarte de que el sistema gestione adecuadamente la vida útil de los archivos repetitivos mediante logrotate.
- Edita o crea un archivo de configuración en
/etc/logrotate.d/para tu aplicación específica. - Asegúrate de incluir directivas como
daily,rotate 7ycompresspara reducir el volumen de ficheros creados. - Prueba la configuración ejecutando manualmente:
sudo logrotate -f /etc/logrotate.conf