Los inodos en Linux son identificadores únicos que describen los archivos y directorios dentro de un sistema de archivos. Es importante tenerlos bajo control para evitar problemas relacionados con la falta o uso excesivo de inodos.
¿Qué es un inodo?
Un inodo es una estructura de datos que mantiene un registro de todos los archivos y directorios dentro de un sistema de archivos Linux o basado en UNIX. De modo que cada archivo y directorio en un sistema de archivos tiene un inodo asignado, que se identifica con un número entero conocido como «número de inodo». Estos identificadores únicos almacenan metadatos sobre cada archivo y directorio.
«Inode» es la abreviatura de index node, «nodo de índice» en español.
Todos los inodos dentro de un mismo sistema de archivos son únicos. Sin embargo, el mismo número de inodo se puede usar en diferentes sistemas de archivos. Ya que el ID del sistema de archivos y el número de inodo se combinan para crear etiquetas de identificación únicas.
Metadatos almacenados en un inodo
Los inodos almacenan metadatos como:
- Tipo de archivo
- Tamaño de archivo
- ID del propietario
- ID del grupo
- Permisos de lectura, escritura y ejecución
- Último acceso
- Último cambio
- Última modificación
Número de inodo: crear, copiar y modificar archivos
Como explicamos más arriba, cada inodo se identifica con un número de inodo. Así que, al crear o copiar un archivo, Linux asigna un número de inodo diferente al archivo nuevo. Sin embargo, al mover un archivo, el número de inodo solo cambia si el archivo se mueve a otro sistema de archivos. Esto también se aplica a los directorios.
Número de inodos en un sistema de archivos
El número teórico total de inodos en un sistema es 4,3 mil millones aproximadamente. Pero la cifra a la que se debe prestar atención es el número de inodos de cada sistema concreto. El ratio general de inodos es 1:16 KB de la capacidad del sistema. Para comprobar el número de inodos de un sistema de archivos se puede usar el comando df
con la opción -i
.
Veamos por qué es importante conocer el número de inodos en un sistema de archivos.
Límite de inodos
El número total de inodos en un sistema de archivos se define al crearlo y no se puede modificar de forma dinámica. Así que es importante revisar el uso de inodos con regularidad para garantizar que se ajusta a los límites configurados.
Si en algún momento te has encontrado con el siguiente mensaje de error al intentar crear un nuevo archivo en un servidor —aún sabiendo que aún hay mucho espacio disponible—, es probable que el sistema haya alcanzado el límite de inodos:
No space left on device
Aunque no es habitual quedarse sin inodos antes de agotar el espacio de disco real, tampoco es imposible. Esto puede pasar al:
- Usar contenerización.
- Crear muchos directorios, enlaces simbólicos y archivos pequeños.
- Crear sistemas de archivos ext3 con tamaños de bloque más pequeños.
Problemas y buenas prácticas relativas al uso de inodos
Un uso excesivo de inodos puede provocar problemas a la hora de crear nuevos archivos y directorios. Algunos de los problemas a los que se enfrentan los usuarios cuando el servidor se queda sin inodos son:
- Pérdida de datos.
- Reinicio del servidor.
- Crash de aplicación.
- Fallos en tareas programadas.
Por lo tanto, se recomienda mantener bajo el uso de inodos borrando:
- Directorios y archivos innecesarios.
- Archivos de caché.
- Archivos de email antiguos.
- Archivos temporales.
Comandos útiles
Consultar el número de inodo de un archivo
Usando el comando stat
El comando stat
proporciona información sobre el archivo y el sistema de archivos. Así que se puede usar para consultar el número de inodo de un archivo.
[root@stackscale ~]$ stat /var/log/lastlog
Al ejecutar el comando, se muestra la siguiente información:
File: /var/log/lastlog Size: 292292 Blocks: 96 IO Block: 4096 regular file Device: fd00h/64768d Inode: 17381397 Links: 1 Access: (0664/rw-rw-r-) Uid: ( 0/ root) Gid: ( 22/ utmp) Context: system_u:object_r:lastlog_t:s0 Access: 2022-01-12 11:28:19.900058928 +0100 Modify: 2022-01-12 11:28:19.900058928 +0100 Change: 2022-01-12 11:28:19.900058928 +0100 Birth: 2021-06-25 17:40:57.254208200 +0200
Usando el comando ls
También se puede utilizar el comando ls
, junto con la opción -i
, para conseguir el número de inodo de un archivo. Este comando enumera los archivos y directorios dentro del sistema de archivos.
[root@stackscale ~]$ ls -i /var/log/lastlog 17381397 /var/log/lastlog
Consultar el número de inodo de un directorio con el comando ls
El comando ls
y la opción -i
también se pueden usar para obtener el número de inodo de un directorio. Para ello es necesario añadir algunas opciones adicionales.
[root@stackscale ~]$ ls -idl /var/log 16813380 drwxr-xr-x. 18 root root 4096 Jun 6 12:33 /var/log
Consultar el uso de inodos dentro de un sistema de archivos con el comando df
El comando df
se usa para mostrar la información relativa al espacio total y disponible de un sistema de archivos. Así que se puede utilizar, junto con la opción -i
, para llevar un control del uso de inodos en un sistema de archivos.
[root@stackscale~]$ df -i /dev/sda1 Filesystem Inodes IUsed IFree IUse% Mounted on /dev/sda1 524288 379 523909 1% /boot
Consultar el número de inodos en un directorio con el comando wc
El comando wc
se utiliza para contar el número de caracteres, palabras, líneas y bytes de archivos. Junto con la opción -l
, se puede usar para contar el número de inodos en un directorio.
[root@stackscale]# find /var/log | wc -l 120
¿Necesitas ayuda con la administración de sistemas? Podemos ayudarte.