¿Cómo funcionan los inodos de Linux?

Bg1 Resize

Si has estado usando Linux el tiempo suficiente, habrás visto el término “inodos”. Es algo que aparecerá ocasionalmente, pero no afecta lo que estás haciendo. Aquí explicaremos qué son los inodos y cómo funcionan.

¿Qué son los inodos?

En una biblioteca, todos los libros están organizados por género, nombre del autor o grupo de edad del público. Si quieres localizar un thriller de “Bobby Daniels”, caminarías directamente a la sección de thrillers y comenzarías a buscar nombres de autores que empiecen con “B”. Al igual que en una biblioteca, todos los archivos en un sistema Linux están organizados para una recuperación y uso eficientes. Un inodo es una entidad que ayuda en la organización de archivos dentro de un sistema Linux.

¿Qué es la metadata de archivos?

Supongamos que tenemos un archivo llamado “sample.txt” que contiene los datos “hola”.

Este archivo tiene algunos datos e información relevante como el tamaño del archivo, permisos, propiedad de usuario y grupo, marcas de tiempo de creación/acceso/modificación, conteo de enlaces, etc. Toda esta información se conoce colectivamente como metadata de archivos.

qué es Inodo - metadata de archivo

¿Qué son los sistemas de archivos?

En un dispositivo de almacenamiento como un disco duro, una partición se formatea como un sistema de archivos antes de ser utilizada para el almacenamiento de archivos. Un sistema de archivos es el bibliotecario del disco duro. Formalmente, es un conjunto de estructuras de datos y algoritmos que trabajan en conjunto para almacenar metódicamente archivos en la partición.

Las particiones en sistemas Linux se formatean frecuentemente con EXT4. Otros sistemas de archivos como el Sistema de Archivos B-Tree (BTRFS), el Sistema de Archivos Reiser, ZFS, etc. también están disponibles para su uso.

Uniendo todo

El inodo es una estructura de datos en Ext4 que contiene toda la metadata de un archivo.

Inodo en detalle

Por supuesto, habría numerosos archivos en un sistema de archivos. Como lo adivinaste, cada archivo tendría su propio inodo. Para identificar de manera única los inodos, cada inodo está numerado.

¿Cómo sería la numeración de inodos?

Los números de inodo en un sistema de archivos comienzan desde 1. Los primeros diez inodos están reservados para uso del sistema. Los archivos de usuario tienen su metadata almacenada desde el inodo 11. Todos los inodos están ordenadamente apilados en una Tabla de Inodos.

Una entrada en la Tabla de Inodos tendría un tamaño de 256 bytes. Para un archivo, Linux organiza inteligentemente toda la metadata dentro de 256 bytes. Además, un inodo para un archivo también tendría información sobre dónde en el sistema de archivos se encuentra los datos del archivo. Recuerda: solo la metadata del archivo se almacena en el inodo.

El número total de inodos en un sistema de archivos depende del espacio disponible y del número de archivos que se pueden almacenar en la partición.

¿Cómo se asignan y desasignan los inodos?

A medida que el usuario agrega archivos a un sistema de archivos recién formateado, se asignan inodos comenzando desde el 11 para contener la metadata del archivo.

Hay otra estructura de datos llamada “Mapa de Inodos” para rastrear el estado de asignación de un inodo. Es una colección de bits que actúa como un mapa.

Consideremos ocho bits en el mapa de inodos para denotar el estado de asignación de los inodos 11 a 18 como se muestra en la tabla a continuación. Un valor de 1 en el mapa significa que el inodo está asignado, es decir, se utiliza para contener la metadata de un archivo. Un valor de 0 en el mapa significa que el inodo actualmente no está en uso. Aquí, podemos ver que el inodo 17 está en uso.

Mapa de inodos

En caso de que el archivo que tiene su metadata en el inodo 17 sea eliminado, entonces su estado correspondiente en el mapa se convertiría en 0, indicando que está libre para ser utilizado por otro archivo.

Tabla de mapa de inodos

¿Cómo ver el número de inodo de un archivo?

Hay dos formas de hacerlo.

La primera es usando el comando ls con el interruptor -i, seguido del nombre de un archivo. El primer campo en la salida es el número de inodo que tiene la metadata de “sample.txt”.

La misma información se puede obtener usando el comando stat seguido del nombre del archivo.

Inodo 8

Para ver el número total de inodos disponibles para una partición, se puede usar el comando df con el interruptor -i.

En la partición “/dev/sda4”, hay 404754480 inodos disponibles para su uso, de los cuales solo 359044 inodos están utilizados.

Conclusión

Por naturaleza, la Tabla de Inodos apila la metadata de todos los archivos meticulosamente en inodos, junto con información sobre la ubicación de los datos del archivo. Todo lo que hemos discutido sobre los inodos de Linux es simplemente la punta del iceberg. Para más información sobre su funcionamiento interno, puedes echar un vistazo a este enlace.