fbpx
Wikipedia

Inodo

En informática, un inodo, nodo-i o nodo índice es una estructura de datos propia de los sistemas de archivos tradicionalmente empleados en los sistemas operativos tipo UNIX como es el caso de Linux. Un inodo contiene las características de un archivo regular, directorio, o cualquier otro objeto que pueda contener el sistema de ficheros.

El término "inodo" refiere generalmente a inodos en discos (dispositivos en modo bloque) que almacenan archivos regulares, directorios, y enlaces simbólicos. El concepto es particularmente importante para la recuperación de los sistemas de archivos dañados.

Cada inodo queda identificado por un número entero, único dentro del sistema de ficheros, y los directorios recogen una lista de parejas formadas por un número de inodo y nombre identificativo que permite acceder al archivo en cuestión: cada archivo tiene un único inodo, pero puede tener más de un nombre en distintos o incluso en el mismo directorio para facilitar su localización.

Denominación

El Dr. Dennis Ritchie fue el creador principal de la idea. No existe una explicación clara para la denominación "inodo". Dennis Ritchie, precursor de UNIX lo explicó así:

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 guion fue desapareciendo poco a poco).

Estructura del inodo

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.
  • La estructura de punteros, para direccionar hacia los bloques de datos (contenido) del archivo. Está compuesta por:
    • Doce punteros que apuntan directamente a bloques de datos del archivo (punteros directos)
    • Un puntero de indirección simple (apunta a un bloque de punteros, los cuales apuntan a bloques de datos del archivo)
    • Un puntero de indirección doble (apunta a un bloque de punteros, los cuales apuntan a otros bloques de punteros, estos últimos apuntan a bloques de datos del archivo)
    • Un puntero de indirección triple (apunta a un bloque de punteros que apuntan a otros bloques de punteros que apuntan a otros bloques de punteros que luego apuntan a bloques de datos del archivo)
 

Peculiaridades

El trabajar sobre un sistema de ficheros basado en inodos resulta al principio deslumbrante para usuarios que no están habituados a él:

  • 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 donde todos dependen del nombre original.
  • Un inodo puede incluso no tener ningún enlace. Tal archivo sería eliminado del disco y sus recursos liberados para ser reasignados (el proceso normal de suprimir un archivo); pero, si algún proceso estuviera accediendo al archivo, puede seguir haciéndolo, y el archivo sólo será finalmente suprimido cuando la última referencia a él quede completamente cerrada. Esto afecta también a los archivos ejecutables, que de forma implícita permanecen abiertos por los procesos que los ejecutan. Por esta razón, cuando se actualiza un programa, se recomienda suprimir primero el viejo ejecutable y crear a continuación un nuevo archivo y un nuevo inodo para la versión actualizada, de modo que si la versión anterior estaba en ejecución en ese instante, pueda mantenerse temporalmente el archivo y continuar funcionando sin problemas.
  • Tradicionalmente, no era posible identificar un archivo abierto con el nombre de archivo que fue utilizado para abrirlo. El sistema operativo convertiría inmediatamente el nombre a un número de inodo y prescindiría del nombre. Eso implica que funciones de librería como getcwd() y del getwd() tendrían que husmear en los archivos de tipo directorio hasta localizar el número de inodo. Los sistemas SVR4 y Linux conservan información adicional para evitar esta dificultad.
  • Tradicionalmente, era posible hacer enlaces (enlaces duros) a directorios. Esto hacía que la estructura de directorios fuera un grafo dirigido en vez de un árbol. Se podía dar la paradoja de que un directorio fuera su propio padre. Los sistemas modernos prohíben generalmente este estado confuso.

Ejemplos prácticos

 
Diferencias entre enlaces duros y enlaces simbólicos en ambiente GNU Linux utilizando los comandos echo, ln y ls.
 
La gráfica ilustra la creación de un fichero por medio del comando echo, luego la creación de un enlace permanente y a continuación un enlace simbólico. El modificar el nombre del archivo original no afecta al enlace permanente ni al valor de los inodos pero el enlace simbólico resulta roto.

Para ilustrar los conceptos de inodo y enlaces, tanto normales como simbólicos, en la figura se muestra la creación de un archivo de texto de 4 bytes (3 caracteres más el caracter de finalización de fichero) con el comando echo. Luego se crea un enlace "duro" con el comando ln y además un enlace simbólico por medio del parámetro -s. Nótese que en el primer enlace creado el valor del inode no varía mientras que para el segundo enlace sí. Además, al agregar datos al archivo de texto su tamaño varía más sin embargo en el enlace simbólico no, pues su tamaño es siempre el mismo y viene dado por la cantidad de caracteres en el nombre enlazado ("archivo1.txt" son doce caracteres, doce bytes). En el siguiente ejemplo gráfico se puede corroborar la anterior afirmación.

Programación

Sistemas de archivos actuales, como por ejemplo ReiserFS, pueden evitar tener una tabla de inodos en el sentido tradicional, pero deben implementar mecanismos que reproduzcan externamente toda la funcionalidad de los inodos.

Los datos sobre el archivo contenidos en el inodo se pueden consultar desde un programa por medio de la llamada al sistema stat. En sistemas Linux la información queda recogida en una estructura de C del tipo struct inode, definido en el archivo de cabecera linux/fs.h.

Los sistemas derivados de BSD utilizan la denominación vnode; con la "v" en referencia al sistema de ficheros "virtual" que el núcleo del sistema operativo mantiene en memoria.

Consideraciones Prácticas

En muchos programas empleados por los administradores de sistemas UNIX se trabaja con los números de inodo para identificar archivos; es el caso de fsck o pfiles. Se presenta así la necesidad de traducir números de inodo en rutas y nombres de archivo y viceversa. Esto se consigue con la utilidad find empleando la opción -inum o con el propio ls y la opción apropiada que en muchas plataformas es -i.

Enlaces externos

. Archivado desde el original el 19 de diciembre de 2008. Consultado el 1 de marzo de 2006. 

  •   Datos: Q306170
  •   Multimedia: Inode

inodo, informática, inodo, nodo, nodo, índice, estructura, datos, propia, sistemas, archivos, tradicionalmente, empleados, sistemas, operativos, tipo, unix, como, caso, linux, inodo, contiene, características, archivo, regular, directorio, cualquier, otro, obj. En informatica un inodo nodo i o nodo indice es una estructura de datos propia de los sistemas de archivos tradicionalmente empleados en los sistemas operativos tipo UNIX como es el caso de Linux Un inodo contiene las caracteristicas de un archivo regular directorio o cualquier otro objeto que pueda contener el sistema de ficheros El termino inodo refiere generalmente a inodos en discos dispositivos en modo bloque que almacenan archivos regulares directorios y enlaces simbolicos El concepto es particularmente importante para la recuperacion de los sistemas de archivos danados Cada inodo queda identificado por un numero entero unico dentro del sistema de ficheros y los directorios recogen una lista de parejas formadas por un numero de inodo y nombre identificativo que permite acceder al archivo en cuestion cada archivo tiene un unico inodo pero puede tener mas de un nombre en distintos o incluso en el mismo directorio para facilitar su localizacion Indice 1 Denominacion 2 Estructura del inodo 3 Peculiaridades 3 1 Ejemplos practicos 4 Programacion 5 Consideraciones Practicas 6 Enlaces externosDenominacion EditarEl Dr Dennis Ritchie fue el creador principal de la idea No existe una explicacion clara para la denominacion inodo Dennis Ritchie precursor de UNIX lo explico asi Realmente tampoco lo se Era simplemente el nombre que comenzamos a utilizar Indice es lo mejor que se me ocurre debido a la estructura algo inusual de un sistema de ficheros que almacenaba la informacion del acceso a los archivos como una lista plana en disco dejando al margen toda la informacion jerarquica de los directorios Asi el numero i es un indice sobre la lista el nodo i es el elemento seleccionado de la lista En la primera edicion del manual se empleo la notacion i nodo el guion fue desapareciendo poco a poco Estructura del inodo EditarEl estandar POSIX establece un modelo de sistema de archivos que se ajusta al empleado en los UNIX tradicionales Un archivo ordinario tendra las propiedades siguientes El identificador de dispositivo del dispositivo que alberga al sistema de archivos El numero 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 ultima modificacion mtime acceso atime y de alteracion del propio inodo ctime El numero de enlaces esto es el numero de nombres entradas de directorio asociados con este inodo El numero 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 La estructura de punteros para direccionar hacia los bloques de datos contenido del archivo Esta compuesta por Doce punteros que apuntan directamente a bloques de datos del archivo punteros directos Un puntero de indireccion simple apunta a un bloque de punteros los cuales apuntan a bloques de datos del archivo Un puntero de indireccion doble apunta a un bloque de punteros los cuales apuntan a otros bloques de punteros estos ultimos apuntan a bloques de datos del archivo Un puntero de indireccion triple apunta a un bloque de punteros que apuntan a otros bloques de punteros que apuntan a otros bloques de punteros que luego apuntan a bloques de datos del archivo Peculiaridades EditarEl trabajar sobre un sistema de ficheros basado en inodos resulta al principio deslumbrante para usuarios que no estan habituados a el Si multiples nombres estan enlazados o sea asociados a un mismo inodo lo que se denomina enlaces duros o simplemente enlaces entonces todos los nombres son equivalentes entre si El que fue creado en primer lugar no tiene ningun estatus especial al contrario de lo que ocurre con los enlaces simbolicos o con los denominados accesos directos donde todos dependen del nombre original Un inodo puede incluso no tener ningun enlace Tal archivo seria eliminado del disco y sus recursos liberados para ser reasignados el proceso normal de suprimir un archivo pero si algun proceso estuviera accediendo al archivo puede seguir haciendolo y el archivo solo sera finalmente suprimido cuando la ultima referencia a el quede completamente cerrada Esto afecta tambien a los archivos ejecutables que de forma implicita permanecen abiertos por los procesos que los ejecutan Por esta razon cuando se actualiza un programa se recomienda suprimir primero el viejo ejecutable y crear a continuacion un nuevo archivo y un nuevo inodo para la version actualizada de modo que si la version anterior estaba en ejecucion en ese instante pueda mantenerse temporalmente el archivo y continuar funcionando sin problemas Tradicionalmente no era posible identificar un archivo abierto con el nombre de archivo que fue utilizado para abrirlo El sistema operativo convertiria inmediatamente el nombre a un numero de inodo y prescindiria del nombre Eso implica que funciones de libreria como getcwd y del getwd tendrian que husmear en los archivos de tipo directorio hasta localizar el numero de inodo Los sistemas SVR4 y Linux conservan informacion adicional para evitar esta dificultad Tradicionalmente era posible hacer enlaces enlaces duros a directorios Esto hacia que la estructura de directorios fuera un grafo dirigido en vez de un arbol Se podia dar la paradoja de que un directorio fuera su propio padre Los sistemas modernos prohiben generalmente este estado confuso Ejemplos practicos Editar Diferencias entre enlaces duros y enlaces simbolicos en ambiente GNU Linux utilizando los comandos echo ln y ls La grafica ilustra la creacion de un fichero por medio del comando echo luego la creacion de un enlace permanente y a continuacion un enlace simbolico El modificar el nombre del archivo original no afecta al enlace permanente ni al valor de los inodos pero el enlace simbolico resulta roto Para ilustrar los conceptos de inodo y enlaces tanto normales como simbolicos en la figura se muestra la creacion de un archivo de texto de 4 bytes 3 caracteres mas el caracter de finalizacion de fichero con el comando echo Luego se crea un enlace duro con el comando ln y ademas un enlace simbolico por medio del parametro s Notese que en el primer enlace creado el valor del inode no varia mientras que para el segundo enlace si Ademas al agregar datos al archivo de texto su tamano varia mas sin embargo en el enlace simbolico no pues su tamano es siempre el mismo y viene dado por la cantidad de caracteres en el nombre enlazado archivo1 txt son doce caracteres doce bytes En el siguiente ejemplo grafico se puede corroborar la anterior afirmacion Programacion EditarSistemas de archivos actuales como por ejemplo ReiserFS pueden evitar tener una tabla de inodos en el sentido tradicional pero deben implementar mecanismos que reproduzcan externamente toda la funcionalidad de los inodos Los datos sobre el archivo contenidos en el inodo se pueden consultar desde un programa por medio de la llamada al sistema stat En sistemas Linux la informacion queda recogida en una estructura de C del tipo struct inode definido en el archivo de cabecera linux fs h Los sistemas derivados de BSD utilizan la denominacion vnode con la v en referencia al sistema de ficheros virtual que el nucleo del sistema operativo mantiene en memoria Consideraciones Practicas EditarEn muchos programas empleados por los administradores de sistemas UNIX se trabaja con los numeros de inodo para identificar archivos es el caso de fsck o pfiles Se presenta asi la necesidad de traducir numeros de inodo en rutas y nombres de archivo y viceversa Esto se consigue con la utilidad find empleando la opcion inum o con el propio ls y la opcion apropiada que en muchas plataformas es i Enlaces externos Editar The Linux Virtual File system Layer Inodes and Operations Inodos en Linux en ingles Archivado desde el original el 19 de diciembre de 2008 Consultado el 1 de marzo de 2006 Datos Q306170 Multimedia InodeObtenido de https es wikipedia org w index php title Inodo amp oldid 120646376, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos