Si ha estado usando Linux el tiempo suficiente, habrá visto el término «inodos». Es algo que aparecerá de vez en cuando, pero no afecta lo que estás haciendo. Aquí te explicaremos qué son los inodos y cómo funcionan.
¿Qué es Inodos?
En una biblioteca, todos los libros están organizados por género, nombre del autor o grupo de edad de la audiencia. Si desea ubicar un thriller de «Bobby Daniels», debe caminar directamente a la sección de suspenso y comenzar a buscar nombres de autores que comiencen con «B». Al igual que una biblioteca, todos los archivos en un sistema Linux están organizados para una recuperación y uso eficientes. Inode es una entidad que ayuda en la organización de archivos dentro de un sistema Linux.
¿Qué son los metadatos de archivo?
Digamos 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, los permisos, la propiedad del usuario y del grupo, las marcas de tiempo de creación/acceso/modificación, el recuento de enlaces, etc. Toda esta información se conoce colectivamente como metadatos del 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 que se utilice 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 funcionan en conjunto para almacenar archivos metódicamente en la partición.
Las particiones en los sistemas Linux se formatean con frecuencia con EXT4. Otros sistemas de archivos como B-Tree File System (BTRFS), Reiser File System, ZFS, etc. también están disponibles para su uso.
Atarlos a todos juntos
Inode es una estructura de datos en Ext4 que contiene todos los metadatos de un archivo.
Por supuesto, habría numerosos archivos en un sistema de archivos. Como habrás adivinado, cada archivo tendría su propio inodo. Para identificar de forma ú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 sus metadatos almacenados desde el inodo 11. Todos los inodos están cuidadosamente 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 todos los metadatos dentro de 256 bytes! Además, un inodo para un archivo también tendría información sobre dónde se encuentran los datos del archivo en el sistema de archivos. Recuerde: solo los metadatos del archivo se almacenan en el inodo.
La cantidad total de inodos en un sistema de archivos depende del espacio disponible y la cantidad 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, los inodos a partir del 11 se asignan para contener los metadatos del archivo.
Hay otra estructura de datos llamada «Mapa de bits de inodo» 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 bits del inodo para indicar el estado de asignación de los inodos 11 a 18, como se muestra en la siguiente tabla. Un valor de 1 en el mapa de bits significa que se asigna un inodo, es decir, se utiliza para contener los metadatos de un archivo. Un valor de 0 en el mapa de bits significa que el inodo no está actualmente en uso. Aquí, podemos ver que el inodo 17 está en uso.
En caso de que se elimine el archivo que tiene sus metadatos en el inodo 17, entonces su estado de mapa de bits correspondiente se convertiría en 0, lo que indica que está libre para ser utilizado por otro archivo.
¿Cómo ver el número de inodo de un archivo?
Hay dos maneras de hacer esto.
El primero es usar ls
comando con –i
switch, seguido del nombre de un archivo. El primer campo en la salida es el número de inodo que tiene los metadatos de «sample.txt».
La misma información se puede obtener utilizando el stat
comando seguido del nombre del archivo.
Para ver el número total de inodos disponibles para una partición, df
El comando se puede usar con -i
cambiar.
En la partición «/dev/sda4», hay 404754480 inodos disponibles para usar, de los cuales solo se usan 359044 inodos.
Conclusión
Por naturaleza, la tabla de inodos apila meticulosamente los metadatos de todos los archivos 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 obtener más información sobre su funcionamiento interno, puede echar un vistazo a este Enlace.