Que son los inodes en Linux
Un inode (nodo de indice) es una estructura de datos del sistema de archivos Linux que almacena los metadatos de un archivo o directorio: propietario, permisos, fecha de creacion, fecha de modificacion, tamaño y punteros a los bloques de datos en el disco. Cada archivo y directorio, independientemente de su tamaño, ocupa exactamente un inode. El sistema de archivos tiene un numero maximo de inodes que puede manejar, determinado cuando el disco fue formateado.
En hosting compartido, los proveedores generalmente imponen un limite de inodes por cuenta (tipicamente entre 100,000 y 500,000) para evitar que una cuenta con millones de archivos pequenos degrade el rendimiento del sistema de archivos para todas las cuentas del servidor. Cuando se alcanza el limite de inodes, no se pueden crear nuevos archivos aunque haya espacio en disco disponible.
Como verificar el uso de inodes
# Ver el uso de inodes por particion df -i # Ejemplo de salida: # Filesystem Inodes IUsed IFree IUse% # /dev/sda1 6553600 450000 6103600 7% # Contar inodes de cada directorio (los 20 que mas tienen) find /home/usuario -maxdepth 3 -type d | while read dir; do echo $(find "$dir" | wc -l) "$dir"; done | sort -rn | head -20
Causas comunes del uso excesivo de inodes
| Causa | Tipica ubicacion | Inodes generados |
|---|---|---|
| Cache de Softaculous o instaladores | /home/usuario/softaculous_backups/ | Miles por cada backup |
| Sesiones de PHP almacenadas en disco | /tmp/sess_xxxx | Una por sesion activa o expirada |
| Libreria de medios de WordPress grande | /public_html/wp-content/uploads/ | 3-5 por imagen (original + miniaturas) |
| Cache de plugins en disco | /public_html/wp-content/cache/ | Cientos de miles en sitios activos |
| Node_modules de proyectos de desarrollo | /home/usuario/proyecto/node_modules/ | Decenas de miles por proyecto |
| Logs de acceso sin rotacion | /home/usuario/logs/ | Un archivo por dominio por dia |
Liberar inodes para resolver el limite
# Eliminar cache del plugin de cache de WordPress rm -rf /home/usuario/public_html/wp-content/cache/* # Eliminar sesiones PHP expiradas (mas de 1 dia) find /tmp -name "sess_*" -mtime +1 -delete # Eliminar logs de acceso antiguos find /home/usuario/logs/ -name "*.log" -mtime +30 -delete # Eliminar carpetas node_modules de proyectos inactivos rm -rf /home/usuario/proyecto/node_modules/
