arrow_back Volver
Inicio keyboard_arrow_right Artículos keyboard_arrow_right Artículo

Qué es un Inode en UNIX

Uriel Hernández

CTO de Código Facilito

av_timer 3 Min. de lectura

remove_red_eye 40791 visitas

calendar_today 27 Abril 2018

Cuando administramos un servidor, es importante ir paso a paso conociendo detalles del sistema operativo en el que nos encontramos, que eventualmente nos ayudarán a encontrar problemas de manera más rápida.

En este artículo, te explicaré el concepto de Inodes, presente en sistemas operativos basados en UNIX como MacOS o las distribuciones de Linux.

Título del artículo en imagen Inodes en UNIX

Inodes - Estructura de datos para archivos

En términos generales, un Inode contiene los metadatos de un archivo, estos metadatos incluyen información como el tamaño, los permisos, la fecha de creación, el propietario y más.

Imagen original de: http://web.cs.ucla.edu/classes/winter16/cs111/scribe/12d/index.html describiendo cómo se vería un Inode y un Inode Table

Existe una llamada al sistema (system call) de Unix a través de la cual podemos obtener los atributos de la estructura de datos de los Inodes, de manera que es a través de dicha llamada que obtenemos los atributos de un archivo en programación.

Cada lenguaje es responsable de cómo expondrá las llamadas al sistema para sus usuarios, en Ruby lo hacemos así:

File::stat(‘demo.txt’)

Esta llamada retorna los atributos del archivo almacenados en el Inode, de nuevo, los metadatos del archivo. Por ejemplo

inode = File::stat(‘demo.txt’)

puts inode.ino # Imprime el número inode del archivo
puts inode.size # Imprime el tamaño del archivo en bytes

Cada sistema operativo retornará distintos atributos del archivo al hacer esta llamada.

Inode number

Resulta ser que la forma en que el sistema operativo sabe dónde está un archivo y qué archivo es, no es a través de su nombre, es a través de Inode Number. Para eso, el sistema operativo almacena tablas a las que llama las Inode Tables, en las que se almacenan los Inode Numbers y el archivo al que corresponde ese número. De esta manera, cuando tu como usuario haces referencia a un archivo por su nombre, el sistema lo buscará en las Inode Tables para encontrar su Inode Number, y ahora sí, con este último dato identificará al archivo que necesitas.

Cada que creas un nuevo archivo a este se le asigna un nombre, y además, un InodeNumber, para que como mencionamos, el sistema operativo pueda identificar tu archivo.

Si quisieras saber el Inode Number de tus archivos, puedes ejecutar el siguiente comando en tu terminal:

ls --inode

La ejecución de este comando enlistará los archivos contenidos dentro de el directorio, junto con el Inode Number de cada uno de ellos.

Un aspecto muy importante de conocer acerca de este concepto, es que sepas que un sistema operativo tiene un número limitado de identificadores (Inode numbers), mismos que fueron asignados al momento de la instalación del sistema operativo.

Esto significa que nuestra computadora tiene un límite de archivos que puede crear, además, que este límite no depende sólo del espacio en disco duro, también depende de si aún hay identificadores disponibles.

Para que puedas conocer la cantidad de números disponibles, cuántos has usado y el porcentaje que se ha ocupado, puedes usar el siguiente comando:

df -i

El comando df entrega información acerca del espacio en disco usado por el sistema de archivos, o en palabras más mortales, el espacio en el disco duro. La opción -i le indica que en lugar de mostrar la información del espacio usado, muestre información relacionada con los inodes.

Esto quiere decir que nuestra computadora se puede quedar sin espacio de dos formas:

  • Ocupamos toda la capacidad del disco duro
  • Nos acabamos los inodes disponibles para nuestro sistema operativo.

Si en algún punto llegarás a acabar la cantidad de Inodes disponibles para tu computadora, tu solución sería eliminar archivos. Recuerda que como cada archivo ocupa un Inode Number distinto, liberar tu capacidad en este caso significa borrar muchos archivos no borrar archivos grandes, de hecho el peso de cada archivo no importa cuando quieres liberar los inodes disponibles para tu computadora.

En el caso de Linux, se crean por defecto, un inode por cada 2k bytes que contenga el sistema de archivos, esta regla puede ser configurada por el usuario, para reducir la cantidad de inodes disponibles o eventualmente incrementarla.

Despedida

¿Interesante, no? Si quieres iniciar con Linux, recuerda que en CódigoFacilito tenemos un curso gratuito que puedes tomar aquí: https://codigofacilito.com/cursos/linux

Deja tus comentarios para saber qué te pareció el artículo, aportes adicionales al tema o algún tema del que quieras que escribamos.