Introducción al problema de inodos llenos en Linux
Uno de los errores más frustrantes para los administradores de sistemas Linux ocurre cuando las aplicaciones y comandos reportan que no hay espacio libre en disco (No space left on device), a pesar de que el comando df -h muestra que aún hay gigabytes disponibles. Este fallo suele deberse al agotamiento de los inodos.
¿Qué son los inodos y cuáles son las causas del error?
Un inodo (nodo índice) es una estructura de datos en los sistemas de archivos de Linux (como ext4 o XFS) que almacena información sobre los archivos, excluyendo su contenido real y su nombre. Cada archivo, directorio o enlace simbólico consume un inodo. Las causas principales de este error son:
- Acumulación masiva de archivos pequeños, como sesiones PHP, cachés de aplicaciones o correos electrónicos no leídos en directorios como
/var/mail. - Logs del sistema descontrolados que generan miles de pequeños archivos de registro.
- Procesos automatizados que crean archivos temporales sin purgarlos adecuadamente.
Método 1: Diagnosticar el uso de inodos con el comando df
El primer paso para solucionar el problema es verificar qué partición ha agotado sus inodos utilizando las herramientas nativas de la terminal.
- Abre tu terminal SSH y conéctate a tu servidor Linux.
- Ejecuta el siguiente comando para ver el estado de los inodos en todas las particiones montadas:
df -i - Revisa la columna de porcentaje de uso (
IUse%). Si alguna partición muestra un 100%, has identificado el origen del problema.
Método 2: Identificar qué directorios consumen más inodos
Una vez detectada la partición afectada, debes localizar exactamente dónde se concentran los millones de archivos pequeños que están saturando el sistema.
- Utiliza el comando
ncdusi está instalado, o ejecuta el siguiente comando optimizado confindyawkpara listar los directorios con mayor cantidad de archivos en la ruta raíz:sudo du --inodes -s /* | sort -hr - Navega hacia el directorio más pesado identificado en el paso anterior, por ejemplo
cd /var/log. - Vuelve a ejecutar la comprobación de inodos dentro de subdirectorios específicos hasta aislar la carpeta problemática.
Método 3: Limpiar archivos temporales o cachés para liberar inodos
Con la fuente del problema localizada, procede a eliminar los archivos innecesarios de forma segura para restaurar el funcionamiento del sistema operativo.
- Si el problema proviene de sesiones de PHP obsoletas, limpia el directorio correspondiente ejecutando:
sudo find /var/lib/php/sessions/ -type f -delete - Si se trata de logs antiguos o comprimidos, elimínalos con precaución:
sudo rm -rf /var/log/*.gz - Verifica nuevamente que los inodos se hayan liberado correctamente ejecutando:
df -i