¿Qué es un Superbloque, Inode, Dentry y un Archivo?


125

Del artículo Anatomía del sistema de archivos de Linux de M. Tim Jones, leí que Linux ve todos los sistemas de archivos desde la perspectiva de un conjunto común de objetos y estos objetos son superbloque , inodo , dentry y archivo . Aunque el resto del párrafo explica lo anterior, no me sentí tan cómodo con esa explicación.

¿Podría alguien explicarme estos términos?

Respuestas:


136

En primer lugar, y me doy cuenta de que no era uno de los términos de su pregunta, debe comprender los metadatos . De manera sucinta, y robado de Wikipedia, los metadatos son datos sobre datos. Es decir que los metadatos contienen información sobre un dato. Por ejemplo, si soy dueño de un automóvil, entonces tengo un conjunto de información sobre el automóvil pero que no es parte del automóvil en sí. Información como el número de registro, marca, modelo, año de fabricación, información del seguro, etc. Toda esa información se denomina colectivamente metadatos. En los sistemas de archivos Linux y UNIX, los metadatos existen en múltiples niveles de organización, como verá.

El superbloque es esencialmente metadatos del sistema de archivos y define el tipo, tamaño, estado e información del sistema de archivos sobre otras estructuras de metadatos (metadatos de metadatos). El superbloque es muy crítico para el sistema de archivos y, por lo tanto, se almacena en múltiples copias redundantes para cada sistema de archivos. El superbloque es una estructura de metadatos de "alto nivel" para el sistema de archivos. Por ejemplo, si el superbloque de una partición, / var, se corrompe, el sistema operativo no puede montar el sistema de archivos en cuestión (/ var). Comúnmente en este caso, debe ejecutarfsckque seleccionará automáticamente una copia de seguridad alternativa del superbloque e intentará recuperar el sistema de archivos. Las copias de respaldo en sí se almacenan en grupos de bloques distribuidos a través del sistema de archivos con el primero almacenado en un desplazamiento de 1 bloque desde el inicio de la partición. Esto es importante en el caso de que sea necesaria una recuperación manual. Puede ver información sobre las copias de seguridad de superbloque con el comando dumpe2fs /dev/foo | grep -i superblockque es útil en caso de un intento de recuperación manual. Supongamos que el comando dumpe2fs genera la línea Backup superblock at 163840, Group descriptors at 163841-163841. Podemos utilizar esta información y el conocimiento sobre la estructura del sistema de archivos, al intentar utilizar esta copia de seguridad superbloque: /sbin/fsck.ext3 -b 163840 -B 1024 /dev/foo. Tenga en cuenta que he asumido un tamaño de bloque de 1024 bytes para este ejemplo.

Existe un inodo en, o en, un sistema de archivos y representa metadatos sobre un archivo. Para mayor claridad, todos los objetos en un sistema Linux o UNIX son archivos; archivos reales, directorios, dispositivos, etc. Tenga en cuenta que, entre los metadatos contenidos en un inodo, no hay un nombre de archivo como los humanos piensan, esto será importante más adelante. Un inodo contiene esencialmente información sobre la propiedad (usuario, grupo), modo de acceso (permisos de lectura, escritura, ejecución) y tipo de archivo.

Una dentry es el pegamento que mantiene unidos los inodos y los archivos al relacionar los números de inodo con los nombres de los archivos. Las dentries también juegan un papel en el almacenamiento en caché de directorios que, idealmente, mantiene a la mano los archivos más utilizados para un acceso más rápido. El recorrido del sistema de archivos es otro aspecto de la negación, ya que mantiene una relación entre los directorios y sus archivos.

Un archivo , además de ser lo que los humanos suelen pensar cuando se les presenta la palabra, en realidad es solo un bloque de datos arbitrarios relacionados lógicamente. Comparativamente muy aburrido teniendo en cuenta todo el trabajo realizado (arriba) para realizar un seguimiento de ellos.

Me doy cuenta de que algunas oraciones no proporcionan una explicación completa de ninguno de estos conceptos, así que no dude en solicitar detalles adicionales cuando y donde sea necesario.


@Tok: ¿Volcará así (como se muestra en la respuesta): Superbloque de respaldo en 163840, Descriptores de grupo en 163841-163841 o es así: Superbloque de respaldo en 163840, Descriptores de grupo en 163841-163842? ¿Fue un error tipográfico? :-)
Sen

@TOK: Superbloque de respaldo en 163840, Descriptores de grupo en 163841-163842, ¿Qué información transmiten los Descriptores de grupo?
Sen

@Sen: en teoría, los descriptores de grupo podrían abarcar varios bloques, pero para la mayoría de los sistemas de escritorio, verá que solo toman un solo bloque y se los menciona como $ ((BackupBlock + 1)) - $ ((BackupBlock + 1))
Tok

@TOK: ok en mi sistema, lo veo como $ ((BackupBlock + 1)) - $ ((BackupBlock + 2))
Sen

@Sen: el descriptor de grupo describe un grupo de bloques. Qué significa eso? Más metadatos. Esencialmente, un descriptor de grupo contiene un mapa de bits de bloques (número de bloque del mapa de bits de asignación de bloques), un mapa de bits de inodo (igual pero para inodes), una tabla de inodo (número de bloque del bloque inicial para la tabla de inodo), bloques libres y recuentos de inodo, y un recuento de directorio usado. Todo esto se basa en un sistema de archivos ext2. Los descriptores de grupo son muy importantes para el correcto funcionamiento del sistema de archivos y se duplican junto con el superbloque.
Tok

49

Expediente

Un archivo solo significa un montón de bytes dispuestos en un cierto orden. Es lo que la gente normal llama el contenido de un archivo. Cuando Linux abre un archivo, también crea un objeto de archivo, que contiene datos sobre dónde está almacenado el archivo y qué procesos lo están utilizando. El objeto del archivo (pero no los datos del archivo en sí) se descarta cuando se cierra el archivo.

Inode

Un inodo (abreviatura de "nodo de índice") es un conjunto de atributos sobre un archivo que Linux almacena. Hay un inodo para cada archivo (aunque con algunos sistemas de archivos, Linux tiene que crear sus propios inodes porque la información se distribuye por todo el sistema de archivos). El inodo almacena información como quién posee el archivo, qué tan grande es el archivo y quién puede abrir el archivo. Cada inodo también contiene un número único para la partición del sistema de archivos; es como un número de serie para el archivo descrito por ese inodo.

Dentry

Una dentry (abreviatura de "entrada de directorio") es lo que usa el kernel de Linux para realizar un seguimiento de la jerarquía de archivos en los directorios. Cada dentry asigna un número de inodo a un nombre de archivo y un directorio padre.

Superbloque

El superbloque es una estructura de datos única en un sistema de archivos (aunque existen múltiples copias para protegerse contra la corrupción). El superbloque contiene metadatos sobre el sistema de archivos, como qué inodo es el directorio de nivel superior y el tipo de sistema de archivos utilizado.


11

el superbloque , el nodo de índice (o inodo ), la entrada de directorio (o dentry ) y, finalmente, el objeto de archivo son parte del sistema de archivos virtual (VFS) o del conmutador de sistema de archivos virtual . El propósito de un VFS es permitir que las aplicaciones del cliente accedan a diferentes tipos de sistemas de archivos concretos de manera uniforme.

Relaciones de objetos principales en el VFS

ingrese la descripción de la imagen aquí


Un Inode es una estructura de datos en un sistema de archivos Unix / Linux. Un inodo almacena metadatos sobre un archivo regular, directorio u otro objeto del sistema de archivos. Inode actúa como una interfaz entre archivos y datos. Un inodo puede referirse a un archivo o un directorio o un enlace simbólico a otro objeto. Contiene un número único (el número i), los atributos del archivo, incluidos el nombre, la fecha, el tamaño y los permisos de lectura / escritura, y un puntero a la ubicación del archivo. Es la contraparte de la tabla FAT en el mundo DOS / Windows.

Programas, servicios, textos, imágenes, etc., son todos archivos . Los dispositivos de entrada y salida, y en general todos los dispositivos, se consideran archivos , según el sistema.

El superbloque es el contenedor de metadatos de alto nivel sobre un sistema de archivos. El superbloque es una estructura que existe en el disco (en realidad, múltiples lugares en el disco para redundancia) y también en la memoria. Proporciona la base para tratar con el sistema de archivos en disco, ya que define los parámetros de gestión del sistema de archivos (por ejemplo, número total de bloques, bloques libres, nodo de índice raíz).

Dentry es una interfaz entre archivos e Inodes. Las dentries también juegan un papel en el almacenamiento en caché de directorios que, idealmente, mantiene a la mano los archivos más utilizados para un acceso más rápido.

Fuente


5

En simplicidad, dentry e inode son lo mismo, una abstracción de archivo o directorio. Las diferencias entre dentry e inode son que dentry se usa para facilitar operaciones específicas de directorio, inode es solo una colección de metadatos sobre un archivo o directorio. Superblock es la abstracción del sistema de archivos.

struct file, en linux kernel, tiene un nombre erróneo como muchos otros (p struct address_space. ej. ) y no es una abstracción de un "archivo" real (p. ej. / etc / passwd). Representa un "archivo" o directorio abierto. struct filees creado por sys_openen kernel, por lo que un proceso puede tener muchos struct files para el mismo archivo.

¿Por qué necesitamos la negación? Se utiliza para acelerar la traducción del nombre de la ruta (por ejemplo, / etc / passwd) al inodo. El kernel de Linux usa inode para manipular "archivo" o directorio, no su nombre.


4

Tenga en cuenta que estos términos no son específicos de Linux sino específicos del sistema de archivos. La mayoría de los sistemas de archivos utilizados por los actuales sistemas Unix y Unix se derivan o se inspiran en el sistema de archivos original de Unix que definió los modismos de superbloque e inodo. Linux también puede montar varios sistemas de archivos con los que no existe la noción de superbloque y / o inodo, siendo el más común FAT. Otro, ZFS, no usa superbloques sino superbloques.


Espero que puedas leer este comentario después de tanto tiempo. Leí que VFS tiene inodos y superbloques que no están relacionados con los inodos y superbloques de, por ejemplo, EXT2. Entonces, solo para no entender mal lo que dijiste, en virtud de que cada Linux tiene un VFS, todos deberían usar inodos y superbloques, ¿verdad?
CuriousKimchi

1
@CuriousKimchi A pesar de que tienen el mismo nombre aquí, no debe confundir la información almacenada en el disco (superbloque / inodes) y las estructuras utilizadas por el núcleo para acceder a un sistema de archivos y sus archivos. Cada sistema de archivos tiene algunos metadatos en el disco que describen las características del sistema de archivos, estos metadatos se utilizan para completar la estructura de superbloque de Linux VFS. Del mismo modo, los archivos tienen una estructura de inodo en el núcleo bajo VFS. Cuando los sistemas de archivos subyacentes carecen de la noción de inodo, esta estructura contiene un número de inodo falso creado sobre la marcha por el sistema operativo.
jlliagre
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.