GNU/Linux >> Tutoriales Linux >  >> Linux

Todo lo que necesita saber sobre los inodos en Linux

Tengo una pregunta extraña para ti.

¿Se ha quejado alguna vez su sistema Linux de que no le queda espacio cuando claramente todavía tiene más que suficiente?

Me pasó, que me quedaban muchos GB, pero mi sistema Linux se quejaba de que no quedaba espacio. Fue entonces cuando aprendí sobre inodos .

inodos en breve

Inodes almacena metadatos para cada archivo en su sistema en una estructura similar a una tabla que generalmente se encuentra cerca del comienzo de una partición. Almacenan toda la información excepto el nombre del archivo y los datos.

Cada archivo en un directorio dado es una entrada con el nombre del archivo y el número de inodo. Toda la demás información sobre el archivo se recupera de la tabla de inodos haciendo referencia al número de inodo.

Los números de inodos son únicos en el nivel de partición. Cada partición tiene su propia tabla de inodos.

Si se queda sin inodos, no puede crear nuevos archivos incluso si le queda espacio en la partición dada.

¿Qué es inodo en Linux?

Inode significa nodo de índice. Aunque la historia no está muy segura de eso, es la suposición más lógica y mejor que se les ocurrió. Solía ​​escribirse I-node , pero el guión se perdió con el tiempo.

Como se describe en linfo.org:

Un inodo es una estructura de datos … … que almacena toda la información sobre un archivo excepto su nombre y sus datos reales.

Inodes almacena metadatos sobre el archivo al que se refiere. Estos metadatos contienen toda la información sobre dicho archivo.

  • Tamaño
  • Permiso
  • Propietario/Grupo
  • Ubicación del disco duro
  • Fecha/hora
  • Otra información

Cada inodo usado se refiere a 1 archivo. Cada archivo tiene 1 inodo. Los directorios, los archivos de caracteres y los dispositivos de bloque son todos archivos. Cada uno tiene 1 inodo.

Para cada archivo en un directorio, hay una entrada que contiene el nombre del archivo y el número de inodo asociado con él.

Los inodos son únicos en el nivel de partición. Puede tener dos archivos con el mismo número de inodo dado que están en particiones diferentes. La información de los inodos se almacena en una estructura similar a una tabla en las partes estratégicas de cada partición, que a menudo se encuentran cerca del principio.

¿Cómo verificar el inodo en Linux?

Puede enumerar fácilmente el número de inodos con el siguiente comando:

ls -i

Las siguientes imágenes muestran mi directorio raíz con los números de inodo correspondientes.

La cantidad de inodos que tiene cada sistema de archivos se decide cuando crea el sistema de archivos. Para la mayoría de los usuarios, el número predeterminado de inodos es más que suficiente.

La configuración predeterminada al crear un sistema de archivos creará 1 inodo por 2K bytes de espacio. Esto proporciona muchos inodos para la mayoría de los sistemas. Lo más probable es que se quede sin espacio antes de quedarse sin inodos. Si es necesario, puede especificar cuántos inodos crear al crear un sistema de archivos.

Si se queda sin inodos, no podrá crear nuevos archivos. Su sistema tampoco podrá hacerlo. Esta no es una situación que la mayoría de los usuarios encontrarán, pero es posible.

Por ejemplo, un servidor de correo almacenará una gran cantidad de archivos muy pequeños. Muchos de esos archivos tendrán menos de 2K bytes. También se espera que crezca constantemente. Por lo tanto, un servidor de correo corre el riesgo de quedarse sin inodos mucho antes de quedarse sin espacio.

Algunos sistemas de archivos como Btrfs, JFS, XFS han implementado inodos dinámicos. Pueden aumentar la cantidad de inodos disponibles si es necesario.

¿Cómo funciona inode?

Cuando se crea un archivo nuevo, se le asigna un número de inodo y un nombre de archivo. Un número de inodo es un número único dentro de ese sistema de archivos. Tanto el nombre como el número de inodo se almacenan como entradas en un directorio.

Cuando ejecuté el comando ls “ls -li ” el nombre del archivo y el número de inodos son lo que se almacenó en el directorio / . La información restante de usuario, grupo, permisos de archivos, tamaño, etc. se recuperó de la tabla de inodos usando el número de inodos.

Puede enumerar la información de inodo para cada sistema de archivos con el comando df en Linux:

df -hi

Un enlace suave o enlace simbólico es una característica bien conocida de Linux. Pero, ¿qué sucede con los Inodes cuando creas un enlace simbólico en Linux? En la siguiente imagen tengo un directorio llamado “dir1 “, un archivo llamado “archivo1 ” y dentro de “dir1 ” Tengo un enlace suave llamado “slink1 ” que apunta a “../file1

Ahora puedo enumerar recursivamente y mostrar la información del inodo.

Como era de esperar, dir1 y file1 tienen números de inodo diferentes. Pero también lo hace el enlace suave. Cuando crea un enlace suave, crea un nuevo archivo. En sus metadatos, apunta al destino. Por cada enlace suave que crea, usa un inodo.

Después de crear un vínculo físico en dir1 con el comando ln:

ln ../file1 hlink1

La lista de números de inodos me da la siguiente información:

Puede ver que “archivo1″ y “hlink1 ” tienen el mismo número de inodo. A decir verdad, los enlaces duros son posibles gracias a los inodos. Un enlace duro no crea un nuevo archivo. Solo proporciona un nuevo nombre para los mismos datos.

En versiones anteriores de Linux, era posible vincular un directorio. Incluso era posible que un directorio determinado fuera su propio padre. Esto fue posible gracias a la implementación de inode. Esto ahora está restringido para evitar que los usuarios creen una estructura de directorios muy confusa.

Otras implicaciones de inodos

La forma en que funcionan los inodos también es la razón por la que es imposible crear un enlace duro entre los diferentes sistemas de archivos. Permitir tal tarea abriría la posibilidad de tener números de inodo en conflicto. Por otro lado, se puede crear un enlace suave a través de los diferentes sistemas de archivos.

Debido a que un vínculo físico tiene el mismo número de inodo que el archivo original, puede eliminar el archivo original y los datos aún están disponibles a través del vínculo físico. Todo lo que hizo, en este caso, fue eliminar uno de los nombres que apuntan a este número de inodo. Los datos vinculados a este número de inodo permanecerán disponibles hasta que se eliminen todos los nombres asociados con él.

Los inodos también son una gran razón por la cual un sistema Linux puede actualizarse sin necesidad de reiniciar. Esto se debe a que un proceso puede usar un archivo de biblioteca mientras que otro proceso reemplaza ese archivo con una nueva versión. Por lo tanto, creando un nuevo inodo para el nuevo archivo. El proceso que ya se está ejecutando seguirá usando el archivo anterior, mientras que cada nueva llamada dará como resultado el uso de la nueva versión.

Otra característica interesante que viene con los inodos es la capacidad de almacenar los datos en el propio inodo. Esto se llama Insertar . Este método de almacenamiento tiene la ventaja de ahorrar espacio porque no se necesitará ningún bloque de datos. También aumenta el tiempo de búsqueda al evitar más acceso al disco para obtener los datos.

Algunos sistemas de archivos como ext4 tienen una opción llamada inline_data. Cuando está habilitado, permite que el sistema operativo almacene datos de esta manera. Debido a las limitaciones de tamaño, la inserción solo funciona con archivos muy pequeños. Ext2 y versiones posteriores a menudo almacenarán información de enlaces suaves de esta manera. Eso es si el tamaño no supera los 60 Bytes.

Conclusión

Los inodos no son algo con lo que interactúas directamente, pero juegan un papel importante. Si una partición va a contener muchos archivos muy pequeños, como un servidor de correo, saber qué son y cómo funcionan puede ahorrarle muchos problemas en el futuro.

Espero que les haya gustado este artículo y hayan aprendido algo nuevo e importante sobre inode en Linux. Suscríbase a nuestro sitio web para obtener más información relacionada con Linux.


Linux
  1. Todo lo que necesita saber sobre Ubuntu 13.04

  2. Directorio tmp de Linux:todo lo que necesita saber

  3. Compresión de archivos de Linux:todo lo que necesita saber

  4. Permisos de archivos de Linux:todo lo que necesita saber

  5. Swappiness en Linux:Todo lo que necesitas saber

Todo lo que necesita saber sobre el sistema operativo Peppermint Linux

Todo lo que necesita saber sobre Black Lab Linux

Todo lo que necesita saber sobre la distribución Linux Mint

Todo lo importante que necesita saber sobre Hard Link en Linux

Todo lo importante que necesita saber sobre UID en Linux

Todo lo que necesita saber sobre el directorio /tmp de Linux