Inodos en Linux: límite, uso y comandos útiles

Inodos en Linux

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 en administración de sistemas? Te ayudamos con servicios gestionados.

Si te ha gustado, compártelo en redes sociales

Servicios gestionados

Servicio de administración de sistemas integral o parcial, con monitorización de sistemas 24/7, todos los días del año.

DESCUBRIR MÁS