Los Inodes son una es­tru­c­tu­ra de gestión para los sistemas de archivos que tienen los sistemas ope­ra­ti­vos unixoides. Los Inodes re­pre­se­n­tan cabeceras de datos o es­tru­c­tu­ras de datos similares que contienen los metadatos de los archivos al­ma­ce­na­dos. Los metadatos incluyen in­fo­r­ma­ción como los derechos de acceso, la ubicación del archivo, el grupo, el número del usuario y la hora de mo­di­fi­ca­ción y acceso.

¿Qué es un Inode?

Inode significa “index node” y se trata de una forma de gestión de archivos que ha de­sem­pe­ña­do un papel im­po­r­ta­n­te desde que se introdujo el sistema operativo Unix y otros sistemas basados en él, como Linux o macOS. La misión principal de Inode en los sistemas de archivos es re­fe­re­n­ciar, gestionar y localizar de­te­r­mi­na­dos archivos mediante números Inode únicos e in­co­n­fu­n­di­bles. Los Inodes son es­tru­c­tu­ras de datos definidas, que describen y gestionan de­te­r­mi­na­dos archivos por medio de metadatos. En función del sistema de archivos en el que se en­cue­n­tren, utilizan unos metadatos u otros.

Los Inodes no contienen in­fo­r­ma­ción sobre el nombre de un archivo, pero sí suelen incluir la siguiente in­fo­r­ma­ción de archivos o bloques de archivos:

  • Tipo y permisos de acceso
  • Número de enlaces duros (en inglés, hard link)
  • Número de usuario (UID)
  • Número de grupo (GID) o GUI (GroupID)
  • Tamaño del archivo en bytes
  • Fecha de la última mo­di­fi­ca­ción (mtime)
  • Fecha del último cambio de estado (ctime)
  • Fecha del último acceso (atime)
  • Dirección de los bloques de datos
  • Dirección de la entrada indirecta del bloque
  • Número de enlaces
  • Número de versión

¿Cómo funcionan los Inodes?

Los sistemas Unix no gestionan las pa­r­ti­cio­nes de un disco duro mediante clu­s­te­ri­ng sino en forma de bloques de datos. A di­fe­re­n­cia de los sistemas DOS y sus tablas FAT, aquí se crean Inodes para gestionar y hacer re­fe­re­n­cia a los datos del di­re­c­to­rio. Si los datos se almacenan en bloques de datos fijos del disco duro, es posible que un archivo sobrepase la capacidad de al­ma­ce­na­mie­n­to del bloque. En este caso, el sistema busca otro bloque di­s­po­ni­ble para guardar el resto del archivo. Es pre­ci­sa­me­n­te aquí donde los Inodes entran en acción.

Los Inodes permiten encontrar archivos que hay al­ma­ce­na­dos en el sistema mediante sus datos de re­fe­re­n­cia, sus di­re­c­to­rios y sus números de Inode únicos. La mayor ventaja de los números Inode es que no dependen del nombre del archivo. Si copias un archivo y le cambias el nombre, puedes volver a en­co­n­trar­lo fá­ci­l­me­n­te, ya que tiene el mismo número Inode que el archivo original. Esto también se aplica en el caso de los hard links que los usuarios crean con el comando ln de Linux. Los hard links son un sistema de gestión interna que ofrecen la ventaja de que los Inodes hacen re­fe­re­n­cia tanto a los archivos ori­gi­na­les como a sus copias de seguridad asociadas sin consumir memoria adicional.

En función del sistema, puede que los Inodes sean inal­te­ra­bles, por lo que puede suceder que un archivo exceda el tamaño de los Inodes que hay di­s­po­ni­bles. En este caso, el Inode original hace re­fe­re­n­cia a otro Inode, también llamado bloque de re­di­re­c­ción, que contiene el resto de los metadatos.

Nota

En función del sistema, puede que los Inodes que hay di­s­po­ni­bles no sean su­fi­cie­n­tes para un elevado número de archivos, ya que tienen su tamaño pre­de­fi­ni­do. En este caso, el sistema de archivos debe re­es­tru­c­tu­rar­se con un mayor número de Inodes.

¿Dónde se utilizan los Inodes?

Los Inodes sirven para gestionar y es­tru­c­tu­rar sistemas de archivos y se utilizan tanto en sistemas Linux de pa­r­ti­cu­la­res, como en las so­lu­cio­nes de servicios ad­mi­ni­s­tra­dos. Es por ello por lo que los usuarios y las empresas que buscan so­lu­cio­nes en la nube para se­r­vi­do­res con sistemas ope­ra­ti­vos unixoides pueden hacer uso de las es­tru­c­tu­ras de datos de Inodes. Al igual que ocurre con la mayoría de los servicios en la nube, se puede tratar tanto de una nube pública, como de una nube privada, según las ne­ce­si­da­des que tenga cada uno.

¿Qué sistemas de archivos admiten Inodes?

Todos los sistemas ope­ra­ti­vos de Unix, como Linux o macOS, utilizan Inodes. Sin embargo, la es­tru­c­tu­ra y co­m­po­si­ción de los Inodes puede variar en función del sistema de archivos que se utilice. Por ejemplo, los sistemas ext2/ext3/ext4 utilizan una es­tru­c­tu­ra en forma de listas o tablas de Inodes como cabeceras de datos. La lista de Inodes se crea au­to­má­ti­ca­me­n­te al instalar el sistema y no puede mo­di­fi­car­se a po­s­te­rio­ri. Además, los Inodes de los sistemas ext4 de 256 bytes ocupan un espacio de al­ma­ce­na­mie­n­to fijo que no se puede utilizar para ningún otro fin. Un Inode describe un archivo o un di­re­c­to­rio del sistema de datos conforme a sus metadatos.

xfs o btrfs son sistemas de archivos más complejos, co­n­tra­s­tan con ext2/ext3/ext4, ya que los Inodes solo se crean cuando se necesitan para encontrar de­te­r­mi­na­dos archivos. En el caso de xfs o btrfs, no se utilizan listas o tablas de Inodes. También se pueden encontrar di­fe­re­n­cias en la forma de funcionar de los Inodes de los discos duros (llamados Disk Inodes) y los Inodes que se utilizan para procesar la memoria en Linux (llamados In Core Inodes).

Un vistazo a los comandos Inode más im­po­r­ta­n­tes

En función del sistema de archivos que se utilice, existe un de­te­r­mi­na­do límite de Inodes di­s­po­ni­bles, por lo que conviene saber qué Inodes están en uso y qué espacio ocupan en el sistema. Sobre todo, si, por ejemplo, no hay su­fi­cie­n­tes Inodes para todos los archivos.

Comando para mostrar el espacio ocupado en el sistema de archivos

Utiliza el siguiente comando para ver qué espacio está ocupado por Inodes en el sistema de archivos:

~ find /home /tmp -xdev -printf ´%h \n´ | sort | uniq -c | sort -k 1 -nr | head -n 20
shell

Comando para obtener una visión general de la asi­g­na­ción actual de Inodes

Utiliza el siguiente comando para mostrar todos los Inodes que están en uso ac­tua­l­me­n­te en el sistema:

df -ih
shell

El comando anterior pro­po­r­cio­na una visión general sobre el uso de Inodes, in­clu­ye­n­do el sistema de archivos asociado, el número total de Inodes, la cantidad de Inodes en uso ac­tua­l­me­n­te y los Inodes que se en­cue­n­tran libres:

df -i
shell

Comando para mostrar un número Inode

Utiliza el siguiente comando para mostrar el número Inode de un de­te­r­mi­na­do archivo:

ls -i
shell

Comando para mostrar todos los archivos asociados a un Inode

Utiliza el siguiente comando para ver todos los archivos (in­clu­ye­n­do los archivos ori­gi­na­les, copias de archivos y copias de seguridad) que tienen como re­fe­re­n­cia un de­te­r­mi­na­do Inode:

-inum
shell

Consejos para apro­ve­char los Inodes al máximo

Un uso elevado de Inodes no siempre significa que tu capacidad de al­ma­ce­na­mie­n­to se esté agotando. A menudo, un mayor uso de Inodes también puede deberse a pequeños datos su­pe­r­fluos, como archivos TMP te­m­po­ra­les, cachés o sesiones. El problema se suele so­lu­cio­nar borrando au­to­má­ti­ca­me­n­te todos los archivos con una an­ti­güe­dad superior a 14 días. Para ello, ejecuta un cronjob con el siguiente comando:

03 *** /usr/bin/find /path/to/files/* -type f – mtime +14 -delete > /dev/null 2>&1
shell

¿Qué ocurre si hay muy pocos Inodes?

Si no hay su­fi­cie­n­tes Inodes di­s­po­ni­bles para todos los archivos, es posible que:

  • Las apli­ca­cio­nes se bloqueen
  • Se pierdan datos
  • Se produzca un reinicio no pro­gra­ma­do
  • Los procesos se bloqueen y no se reinicien
  • Los procesos pro­gra­ma­dos no se inicien au­to­má­ti­ca­me­n­te

Si la capacidad de los Inodes se encuentra al 100 %, es aco­n­se­ja­ble liberar la memoria ocupada. Otra po­si­bi­li­dad es re­es­tru­c­tu­rar el sistema de archivos y ampliar así el número máximo de Inodes, aunque es un proceso re­la­ti­va­me­n­te complejo.

Ir al menú principal