Introducción al problema de inodos agotados en Linux
Uno de los errores más desconcertantes para los administradores de sistemas Linux es encontrarse con el mensaje No space left on device (No queda espacio en el dispositivo) al intentar crear un archivo, instalar un paquete o guardar cambios, a pesar de ejecutar el comando df -h y comprobar que aún hay gigabytes libres en el disco duro. Este fallo ocurre cuando el sistema se queda sin inodos, que son las estructuras de datos que almacenan los metadatos de cada archivo y directorio, no el contenido en sí.
Causas principales del agotamiento de inodos
Los inodos se asignan al formatear el sistema de archivos (como ext4) y su número es finito. Las causas más comunes por las que se agotan incluyen:
- Acumulación masiva de archivos pequeños, como cachés de npm, composer o composer.
- Millones de pequeños archivos de registro (logs) generados por servicios mal configurados.
- Sesiones de usuario huérfanas o archivos temporales en directorios como
/tmpo/var/spool.
Método 1: Identificar qué directorio está consumiendo todos los inodos
El primer paso para solucionar el problema es localizar exactamente dónde se concentran los archivos pequeños. Para ello, utilizaremos una combinación de comandos en la terminal que analizan el uso de inodos por directorio.
- Abre tu terminal SSH con permisos de superusuario.
- Ejecuta el siguiente comando para listar los directorios ordenados por consumo de inodos:
sudo du --inodes -s /* | sort -hr - Identifica la partición o directorio raíz que muestra una cifra muy alta (por ejemplo,
/varo/home). - Navega hasta el directorio problemático y repite el comando
sudo du --inodes -s ./* | sort -hrhasta aislar la carpeta exacta.
Método 2: Limpiar cachés y archivos temporales masivos
Una vez localizado el origen de la saturación de inodos, debemos proceder a eliminar los archivos innecesarios. Es fundamental no borrar directorios del sistema operativo a la ligera, sino vaciar cachés conocidas.
- Si el problema está en las sesiones de PHP o temporales, vacía el directorio correspondiente ejecutando:
sudo find /var/lib/php/sessions/ -type f -delete - Si utilizas gestores de paquetes como Node.js, limpia la caché global de npm de forma segura:
npm cache clean --force - Para eliminar logs antiguos que ya no se necesitan en
/var/log, puedes usar:sudo journalctl --vacuum-time=1d
Método 3: Verificar y solucionar el error de forma definitiva
Tras la limpieza masiva, es momento de comprobar que los inodos se han liberado correctamente y el sistema vuelve a operar con normalidad.
- Ejecuta el comando de verificación de inodos en el disco:
df -i - Revisa la columna
IUse%para asegurarte de que el porcentaje ha bajado a niveles seguros (por debajo del 80%). - Si el problema persiste de forma recurrente debido a la naturaleza de tu aplicación, considera programar tareas cron automáticas de limpieza o redimensionar el sistema de archivos con una mayor cantidad de inodos en el próximo formateo.