jueves, 9 de junio de 2011

Entendiendo los inodos


Los sistemas de archivos generalmente constan de dos partes: Los metadatos o los datos a cerca de los datos, y los datos en sí mismos. La primera parte, los metadatos, suena raro por ser datos a cerca de los datos, pero es un componente muy importante de los sistemas de archivos. Consiste de información a cerca de los datos. Más precisamente incluye información como nombre de archivo, fecha de modificación, propietario, permisos, etc. 


Este tipo de información es vital para los sistemas de archivos ya que de otra manera tendremos un montón de bits en nuestro disco que no significan nada. Los inodos almacenan estos metadatos y normalmente también almacenan información a cerca de dónde están localizados los datos en el medio de almacenamiento (disco).

En general en los sistemas de archivos para sistemas tipo Unix, con cada archivo o directorio hay un inodo asociado representado por un número entero. El origen del nombre inodo se desconoce, pero Dennis Ritchie, uno de los creadores de Unix dijo:
Realmente, tampoco lo sé. Era simplemente el nombre que comenzamos a utilizar. "Índice" es lo mejor que se me ocurre, debido a la estructura algo inusual de un sistema de ficheros que almacenaba la información del acceso a los archivos como una lista plana en disco, dejando al margen toda la información jerárquica de los directorios. Así el número "i'" es un índice sobre la lista, el nodo "i" es el elemento seleccionado de la lista. (En la primera edición del manual se empleó la notación "i-nodo"; el guión fue desapareciendo poco a poco).
La forma en que los inodos son creados e incluso si están creados, depende de cada sistema de archivos. Muchos sistemas de archivos los crean todos cuando el sistema es creado, resultando así en un número fijo de inodos. Ext3 es un ejemplo de esto. El resultado es que el sistema de archivos tiene un número fijo de archivos que pueden ser almacenados. Si necesitamos más inodos debemos re-hacer el sistema de archivos, perdiendo todos los datos.


Podemos ver los inodos en nuestro sistema con el comando ls.

fraterneo@rainbow:~$ ls -li
total 1688
2360154 -rw-r--r--  1 fraterneo fraterneo 1652813 2011-05-25 14:04 app.log
2359470 -rwxr-xr-x  1 fraterneo fraterneo     302 2011-01-28 08:12 auto-update.sh
2359515 drwxr-xr-x  2 fraterneo fraterneo    4096 2011-06-06 10:50 Desktop
2359532 drwxr-xr-x 10 fraterneo fraterneo    4096 2011-06-03 10:14 Documents
2359519 drwxr-xr-x  9 fraterneo fraterneo    4096 2011-06-09 14:24 Downloads
2359540 drwxr-xr-x  4 fraterneo fraterneo    4096 2011-05-30 11:11 Music
2359543 drwxr-xr-x  2 fraterneo fraterneo    4096 2011-05-24 17:37 Pictures
2359531 drwxr-xr-x  2 fraterneo fraterneo    4096 2011-03-09 06:55 Public
2624177 drwx------  8 fraterneo fraterneo    4096 2011-04-05 11:19 systems
2623032 drwxr-xr-x 10 fraterneo root         4096 2011-06-06 14:20 temp
2359520 drwxr-xr-x  2 fraterneo fraterneo    4096 2011-03-09 06:55 Templates
2625747 drwxrwxr-x  2 fraterneo fraterneo    4096 2011-03-28 17:50 Ubuntu One
2359544 drwxr-xr-x  2 fraterneo fraterneo    4096 2011-06-08 14:36 Videos
2494100 drwxr-xr-x  6 fraterneo fraterneo    4096 2011-06-01 08:22 VirtualBox VMs

El primer número desde la izquierda es el inodo asociado al directorio o archivo.

El estándar POSIX establece un modelo de sistema de archivos que se ajusta al empleado en los UNIX tradicionales. Un archivo ordinario tendrá las propiedades siguientes:
  • 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, esto es, el número de nombres (entradas de directorio) asociados con este inodo.


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.



Evidentemente esto es lo más básico acerca del inodo expuesto de una forma simple para su entendimiento. Podrá parecer un tema muy avanzado y probablemente nunca se nos presentará la oportunidad de tratar directamente con los inodos, pero es necesario entenderlo por ser parte fundamental del almacenamiento de nuestros archivos en el sistema.




Artículos relacionados



Widget by Hoctro | Jack Book

0 comments:

Publicar un comentario en la entrada