notifications Notificaciones

Marcar todas como leídas

Ver más

1809 veces ha sido leído este artículo

Qué es un Inode en UNIX

Lo lees en 3 Min.

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.

Recomendaciones

Ejercicios ciclos y condicionales Java

Lo lees en 1 Min.

Mostrar en consola el mensaje de "Aprobado" en caso la calificación de un alumno sea mayor igual...

 

Strings como Cadenas Java

Lo lees en 1 Min.

Como mencionamos anteriormente un Strings no es más que una cadena de caracteres, caracteres que ...

 

Ejercicios Matriz Java

Lo lees en 1 Min.

Crear un matriz de 5 x 5 Llenar la matriz con números aleatorios. Para obtener un número alea...

 

Arreglos como parametros

Lo lees en 1 Min.

En Java nosotros podemos trabajar con métodos los cuales reciban como parámetros arreglos. publi...