Introducción al Problema de Inodos Saturados en Linux
Uno de los problemas más desconcertantes para los administradores de sistemas y usuarios avanzados de Linux es recibir mensajes de error indicando que no hay espacio en el disco (No space left on device), a pesar de ejecutar el comando df -h y comprobar que las particiones tienen gigabytes libres. Este fallo ocurre cuando el sistema de archivos se queda sin inodos.
¿Qué son los Inodos y cuáles son las Causas del Error?
Un inodo (índice nodo) es una estructura de datos en los sistemas de archivos de Linux (como ext4, ext3, etc.) que almacena toda la información relativa a un archivo o directorio, excepto su nombre y su contenido real. Cada archivo, directorio o enlace simbólico consume exactamente un inodo. Las causas más comunes de su agotamiento son:
- Acumulación masiva de archivos pequeños (como cachés web, sesiones de PHP, registros de correo o archivos temporales).
- Aplicaciones que generan miles de ficheros de logs sin rotación adecuada.
- Directorios de nodos de Node.js (
node_modules) anidados profundamente.
Método 1: Diagnosticar el Uso de Inodos en el Sistema
El primer paso indispensable es identificar qué directorio o partición ha agotado sus inodos. Para ello, utilizaremos el comando df con el modificador -i.
- Abre tu terminal de Linux con privilegios o como usuario estándar.
- Ejecuta el siguiente comando para ver el porcentaje de inodos usados:
df -inode - Analiza la salida. La columna
IUse%te mostrará qué partición está al 100% de su capacidad de inodos.
Método 2: Encontrar Directorios con Mayor Cantidad de Archivos
Una vez identificada la partición afectada, debemos localizar exactamente dónde se acumulan los millones de archivos pequeños que causan el bloqueo. Utilizaremos una combinación de comandos find, sort y wc.
- Navega a la raíz de la partición afectada, por ejemplo:
cd /var/log - Ejecuta este comando para listar los subdirectorios con más archivos:
for i in *; do echo $(find $i | wc -l) $i; done | sort -nr - Identifica el directorio con el número más alto y accede a él para limpiar los archivos obsoletos o innecesarios.
Método 3: Limpieza Masiva y Prevención
Dependiendo del origen del problema, aplica la solución de limpieza correspondiente:
- Si son sesiones PHP acumuladas:
find /var/lib/php/sessions/ -type f -delete - Si son logs antiguos:
find /var/log/ -name '*.gz' -delete - Para prevenir futuros incidentes, configura correctamente herramientas como
logrotatey evita la acumulación innecesaria de archivos temporales.