Tabla de Contenidos

¿Qué es un inode?

En informática, un inode, i-node, inodo, i-nodo, nodo-i o nodo índice es una estructura de datos propia de los sistemas de archivos tradicionales de Unix, como UFS. Un inodo almacena toda la información sobre un archivo regular, directorio u otro objeto del sistema de archivos, excepto su nombre y su contenido.

Detalles

Un sistema de archivos depende de estructuras de datos que contienen información acerca de los archivos, además del contenido de dichos archivos. A esto se le denomina metadata (metadatos), es decir, datos que describen datos. En los sistemas de archivos, esta información se almacena en una ubicación conocida de los discos (es decir, de los dispositivos en modo bloque) como un arreglo de datos, donde el número i es un entero que representa un índice en dicho arreglo, por lo cual el inodo es el elemento seleccionado de dicho arreglo asociado a un objeto de dicho sistema de archivos, como puede ser un archivo, un directorio o un enlace simbólico.

En otras palabras, un inodo representa un índice en una tabla de metadatos almacenada en una ubicación conocida de un dispositivo. A partir del número de inodo, la porción del kernel (núcleo) que contiene el controlador para los sistemas de archivos puede acceder al contenido del inodo, que incluye la ubicación del archivo en el dispositivo y por tanto permite el acceso a dicho archivo.

Los inodos almacenan información acerca de archivos y directorios, tales como quiénes son sus propietarios, cuáles son sus modos de acceso (permisos de lectura, escritura y ejecución), y cuál es el tipo del archivo. En muchos tipos de implementaciones de sistemas de archivos, el número máximo de inodos se fija durante la creación del sistema de archivos, limitando la cantidad máxima de archivos que el sistema puede contener. Un método heurístico típico para reservar inodos en un sistema de archivos consiste en utilizar el uno porciento de la capacidad total del dispositivo.

El número de inodo de un archivo puede obtenerse mediante el comando ls -i. El comando ls -l muestra parte de la información que contiene el inodo de cada archivo.

Para un sistema de archivos, el uso de inodos tiene implicaciones para los nombres de archivos y directorios:

La representación en memoria del kernel del sistema operativo sobre estos datos se llama en Linux struct inode. Los sistemas derivados de BSD utilizan el término vnode, donde la v de vnode se refiere a la capa del sistema virtual de archivos del kernel.

Estructura

El estándar POSIX impone un comportamiento de los sistemas de archivos que tiene fuertes influencias de los sistemas de archivos tradicionales de UNIX. Los archivos regulares deben contener los siguientes atributos:

La llamada de sistema stat permite obtener el número de inodo de un archivo y alguna de la información en el inodo.

Implicaciones

Consideraciones prácticas

Los administradores de sistemas utilizan muchos programas que a menudo designan archivos con números de inodos. Algunos ejemplos incluyen utilidades populares de verificación de integridad de los discos, como fsck o pfiles. Así, surge naturalmente la necesidad de traducir números de inodo a nombres de archivo y viceversa. Esto puede lograrse con el comando find con la opción -inum, o el comando ls con la opción correspondiente (-i en las plataformas compatibles con el estándar POSIX).

Es posible agotar el grupo de inodos de un dispositivo. Cuanod esto ocurre, no pueden crearse nuevos archivos en el dispositivo aunque haya espacio disponible. Por ejemplo, un servidor de correo puede tener muchos archivos pequeños que no llenan el disco, pero utilizan muchos inodos para apuntar a muchos archivos.

Algunos sistemas de archivos (como JFS, XFS o ext4) escapan a esta limitante con extents 3) y/o una asignación dinámica de inodos, que pueden hacer crecer el sistema de archivos y/o incrementar el número de inodos.

Enlaces externos

1)
Si el archivo no está en uso, cuando se borran todos los enlaces y el contador queda en cero, el sistema operativo elimina tanto el inodo como el contenido del archivo
2)
Ver estructura de punteros de inodos
3)
Áreas contíguas de almacenamiento reservadas para los archivos