Introducción al Problema de Inodos Llenos en Linux
¿Te aparece un error de disco lleno en tu servidor Linux al intentar crear archivos, pero al ejecutar el comando df -h notas que aún tienes gigabytes de espacio libre? Es muy probable que hayas alcanzado el límite máximo de inodos. Los inodos son estructuras de datos en los sistemas de ficheros tipo Unix que almacenan la información metadatos de los archivos (como permisos, propietario y tamaño), pero no el contenido en sí.
Causas Principales del Agotamiento de Inodos
La causa más común de este problema es la acumulación masiva de archivos pequeños. Esto ocurre frecuentemente por:
- Acumulación excesiva de sesiones PHP o archivos temporales en directorios como
/tmp. - Registros (logs) antiguos que no han rotado correctamente en
/var/log. - Cachés de aplicaciones web o frameworks que generan miles de pequeños archivos en poco tiempo.
Método 1: Identificar qué directorio está consumiendo los inodos
Para solucionar el problema, primero debes localizar qué carpeta o ruta está acaparando todos los inodos disponibles en tu sistema de archivos. Sigue estos pasos:
- Abre tu terminal SSH con privilegios de administrador (root).
- Ejecuta el siguiente comando para listar el uso de inodos por cada directorio en la raíz:
sudo df -i - Identifica el sistema de archivos que muestra un uso del 100% en la columna
IUse%. - Usa el siguiente comando para analizar qué subdirectorios dentro de la ruta afectada tienen más archivos:
sudo find /ruta-afectada -xdev -printf '%h ' | sort | uniq -c | sort -k 1 -n
Método 2: Limpiar archivos temporales y caché
Una vez localizado el origen del problema, procede a eliminar los archivos innecesarios que están saturando la tabla de inodos.
- Si el problema está en las sesiones de PHP, navega hasta el directorio correspondiente y elimínalas con seguridad:
cd /var/lib/php/sessions && sudo rm -f * - Para limpiar logs antiguos que ya no necesitas, puedes vaciar archivos específicos usando el comando de truncado:
sudo truncate -s 0 /var/log/syslog - Si utilizas un gestor de paquetes como APT en distribuciones basadas en Debian o Ubuntu, limpia la caché de paquetes obsoletos ejecutando:
sudo apt-get clean
Método 3: Configurar la rotación automática para prevenir futuros errores
Para evitar que este molesto error vuelva a ocurrir en el futuro, es fundamental automatizar la limpieza de archivos temporales mediante el servicio tmpfiles.d o configurando correctamente logrotate.
- Crea un archivo de configuración personalizado en
/etc/tmpfiles.d/limpieza.conf. - Añade una regla para que el sistema borre automáticamente archivos temporales con más de 7 días de antigüedad.
- Verifica el funcionamiento del servicio ejecutando:
sudo systemd-tmpfiles --clean