Inodos
100%

El Sistema de Archivos · Lección 11

Inodos

Aprende cómo los números de inodo conectan los nombres de directorio con los metadatos y los datos de los objetos del sistema de archivos.

En los sistemas de archivos Unix basados en inodos, un directorio asocia el nombre de cada entrada con un número de inodo. El inodo representa el objeto del sistema de archivos y registra los metadatos necesarios para localizar e interpretar sus datos. Por tanto, la ruta no se almacena como identidad principal propia del objeto.

Metadatos almacenados con un inodo

Entre los metadatos habituales asociados a un inodo se encuentran:

  • tipo de objeto y modo de permisos
  • propiedad de usuario y grupo
  • tamaño lógico y contabilidad de bloques asignados
  • número de enlaces duros
  • marcas de tiempo de acceso, modificación y cambio de estado
  • referencias a los datos del archivo o a estructuras de extensiones específicas del sistema de archivos

El inodo no suele almacenar el nombre de la entrada del directorio. Un sistema de archivos también puede almacenar atributos ampliados, listas de control de acceso, hora de creación, datos en línea u otra información mediante estructuras específicas del formato.

ctime es la hora de cambio de estado del inodo, no necesariamente la hora de creación del archivo. Una marca independiente de nacimiento o creación es opcional y puede no estar disponible.

¿Dónde se asocia normalmente el componente de ruta de un archivo normal con su número de inodo?

Números de inodo y alcance del sistema de archivos

Muestra los números de inodo con:

$ ls -li

El primer campo es el número de inodo. Examina un objeto con más detalle mediante:

$ stat path

Un número de inodo solo es único dentro de un sistema de archivos en un momento determinado. El mismo número puede existir en otro sistema y puede reutilizarse después de liberar un inodo. Para identificar un objeto de forma sólida, utiliza tanto la identidad del sistema de archivos como el número de inodo, no solo este último.

¿En qué ámbito identifica un objeto un número de inodo?

Enlaces duros y referencias abiertas

Varias entradas de directorio pueden referirse al mismo inodo; son enlaces duros. Crear otro enlace duro incrementa el número de enlaces del objeto. Eliminar un nombre reduce ese número sin borrar los datos mientras quede otro enlace.

Incluso después de eliminar la última entrada de directorio, un archivo abierto permanece asignado hasta que se cierre la última referencia del proceso. Su número de enlaces puede ser cero mientras un descriptor siga accediendo a él. Esto explica por qué eliminar un registro grande abierto quizá no reduzca inmediatamente el uso que muestra df.

¿Cuándo se liberan normalmente los recursos de un archivo desenlazado?

Capacidad de inodos

En sistemas de archivos con un conjunto de inodos finito o comunicado, millones de archivos pequeños pueden agotar la capacidad de metadatos antes de llenar los bloques de datos. Examina la contabilidad de inodos de los sistemas montados con:

$ df -i

Si no quedan inodos libres, crear otro archivo puede fallar aunque df -h comunique bloques disponibles. Las estrategias de asignación difieren: algunos sistemas preasignan estructuras de inodos al crearse, mientras que otros gestionan metadatos dinámicamente y pueden comunicar la capacidad de otra forma.

¿Qué comunica df -i cuando el sistema de archivos ofrece contabilidad de inodos?

Correspondencia de datos específica del sistema de archivos

No supongas que cada inodo tiene exactamente 12 punteros directos y tres indirectos. Es una descripción útil de algunos diseños clásicos, pero ext4 moderno puede utilizar extensiones, y XFS, Btrfs y otros sistemas emplean estructuras diferentes. Los datos en línea y las extensiones comprimidas o de copia al escribir modifican aún más la relación.

Utiliza herramientas de diagnóstico específicas del sistema de archivos únicamente en modos de solo lectura o documentados cuando importe la correspondencia interna. Para la administración habitual, stat, find -inum, df -i y las herramientas que comprenden enlaces ofrecen abstracciones más seguras.

¿Por qué no debes suponer un único diseño fijo de punteros para todos los inodos?

Lección completada

Has completado Inodos

Ahora puedes relacionar rutas, inodos, enlaces y capacidad del sistema de archivos.

  • Trata las entradas de directorio como asociaciones de nombres con números de inodo.

  • Lee metadatos y marcas de tiempo sin confundir ctime con la creación.

  • Limita los números de inodo a un sistema de archivos y un momento.

  • Ten en cuenta los enlaces duros y los descriptores de archivo abiertos.

  • Utiliza modelos específicos de cada sistema en vez de un diseño universal de punteros.

Guarda tu progreso

Crea una cuenta gratuita para guardar esta lección y continuar en cualquier dispositivo.

Crear una cuenta gratuita
Siguiente Lección
Volver a El Sistema de Archivos