Tabla de inodos de un sistema de ficheros. Cómo aumentarla.

Buenas, aquí estamos con un tema crucial para el Administrador de Sistemas: los sistemas de ficheros.

No vamos a explicar aquí qué son, de qué están formados ni los diferentes formatos de sistema de ficheros. Eso es pura teoría.

Pero sí diremos que, en linux,  no existen unidades físicas sino ficheros que hacen referencia a ellas, integrados en la estructura de ficheros como cualquier otro. Las estructuras de ficheros se organizan en bloques de 512 bytes o múltiplos.

Ahora, en cada bloque, además de la información de control (superbloque y bloque de carga) destacan la tabla de inodos y el área de datos.

La tabla de inodos es el equivalente a las entradas de la FAT. Por cada fichero, Linux tiene asociado un elemento en esta tabla que contiene un número. Este número identifica la ubicación del archivo dentro del área de datos.

El área de datos es el área en la que residen realmente los datos de los ficheros.

Cada fichero se identifica por tato por un número de inodo. Este número es único dentro de todo el sistema de ficheros.

Hasta aquí, podría entenderse que es un puntero al fichero, pero el inodo tiene mucha más información (al final del artículo).

Ahora bien, cuando creamos un sistema de ficheros (mkfs – make filesystem), el sistema nos dimensiona automáticamente la tabla de inodos:

¿Cómo podemos saber el número de inodo de un fichero?   ls -i

¿Cómo está la tabla de inodos de un sistema de ficheros?   df -ih

Con lo cual, podría ocurrir que esta tabla de inodos se llenase. ¿Cuándo sucede? Cuando en un filesystem tenemos más ficheros que inodos soporta la tabla, es decir, muchos muchos ficheros de pequeño tamaño (para que lo que se llene antes no sea el área de datos).

¿Cómo se soluciona esto?

Creando un nuevo sistema de ficheros con mayor tamaño de tabla de inodos (mkfs -i XXXX). Pero esto es crear un nuevo filesystem, no podemos redimensionar el existente. Es decir, una vez hecho hemos creado un nuevo sistema de ficheros hemos de sincronizar con el anterior (rsync).

Cada inodo contiene información de un fichero o directorio. En concreto, en un inodo se guarda la siguiente información:

  • El identificador de dispositivo del dispositivo que alberga al sistema de archivos.
  • El número de inodo que identifica al archivo dentro del sistema de archivos.
  • La longitud del archivo en bytes.
  • El identificador de usuario del creador o un propietario del archivo con derechos diferenciados.
  • El identificador de grupo de un grupo de usuarios con derechos diferenciados.
  • El modo de acceso: capacidad de leer, escribir, y ejecutar el archivo por parte del propietario, del grupo y de otros usuarios.
  • Las marcas de tiempo con las fechas de última modificación (mtime), acceso (atime) y de alteración del propio inodo (ctime).
  • El número de enlaces (hard links), esto es, el número de nombres (entradas de directorio) asociados con este inodo. Si múltiples nombres están enlazados, o sea, asociados a un mismo inodo (lo que se denomina enlaces duros o simplemente enlaces) entonces todos los nombres son equivalentes entre sí. El que fue creado en primer lugar no tiene ningún estatus especial, al contrario de lo que ocurre con los enlaces simbólicos o con los denominados accesos directos  de Windows, donde todos dependen del nombre original. El número de enlaces se emplea por el sistema operativo para eliminar el archivo del sistema de ficheros, tanto el inodo como el contenido, cuando se han borrado todos los enlaces y el contador queda a cero

One thought on “Tabla de inodos de un sistema de ficheros. Cómo aumentarla.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *