Introducción al problema de Inodos llenos en Linux
Uno de los dolores de cabeza más comunes para los administradores de sistemas Linux es encontrarse con un error que indica que no hay espacio disponible en el disco, a pesar de que comandos como df -h muestran que hay gigabytes libres. Este frustrante problema ocurre cuando se agotan los inodos (inodes), que son las estructuras de datos que almacenan la información sobre los archivos y directorios, no el contenido en sí.
Causas principales del agotamiento de Inodos
El agotamiento de inodos suele ser provocado por aplicaciones que generan una cantidad masiva de archivos pequeños. Entre las causas más frecuentes encontramos:
- Acumulación masiva de archivos de caché en aplicaciones web o del sistema.
- Directorios de sesiones de PHP desatendidos que acumulan millones de archivos temporales.
- Correos electrónicos no leídos o colas de correo (Postfix, Sendmail) estancadas en
/var/spool/mail. - Logs del sistema o rotación de registros mal configurada.
Método 1: Diagnosticar qué directorio está consumiendo los inodos
Antes de borrar nada, debes identificar exactamente qué ruta está acaparando todos los inodos del sistema de archivos afectado. Sigue estos pasos:
- Abre tu terminal de Linux con privilegios de superusuario.
- Ejecuta el siguiente comando para listar el uso de inodos por partición:
df -i - Identifica la partición que se encuentra al 100% de uso de inodos.
- Ejecuta el siguiente comando optimizado para escanear y ordenar los directorios que más inodos consumen:
sudo find /ruta-a-escanear -xdev -printf '%h ' | sort | uniq -c | sort -k 1 -n - Analiza la salida para localizar la carpeta culpable (por ejemplo, un directorio de caché o de sesiones).
Método 2: Limpiar archivos temporales y sesiones de PHP
Una vez localizado el directorio problemático, es hora de vaciarlo de forma segura. Si el problema proviene de sesiones de PHP u otros archivos temporales antiguos, puedes eliminarlos con los siguientes comandos:
- Navega hasta el directorio afectado:
cd /var/lib/php/sessions - Utiliza el comando
findpara borrar archivos con una antigüedad mayor a un número específico de días, evitando sobrecargar la terminal:sudo find . -type f -mtime +7 -delete - Si necesitas eliminar todos los archivos de un directorio de forma masiva sin fallar por argumento demasiado largo, ejecuta:
sudo find . -type f -delete - Vuelve a verificar el estado de los inodos ejecutando nuevamente
df -ipara confirmar que el espacio lógico se ha liberado.