it-swarm-es.tech

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

Del artículo Anatomía del sistema de archivos de Linux por 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 superblock, inode, dentry and file. 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?

132
Sen

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 una pieza de datos. 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á.

superblock 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 ejecutar fsck, que seleccionará automáticamente una copia de seguridad alternativa del superbloque e intentará recuperar el sistema de archivos. Las copias de respaldo 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 ext2/ext3/ext4 con el comando dumpe2fs /dev/foo | grep -i superblock que 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 conocimientos adicionales sobre la estructura del sistema de archivos para intentar utilizar esta copia de seguridad de 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 sobre, 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.

A 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.

A 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 brindan una explicación completa de ninguno de estos conceptos, así que no dude en solicitar detalles adicionales cuando y donde sea necesario.

144
Tok

Archivo

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.

50
pingswept

superbloque , el nodo índice (o inodo ), la entrada del directorio ( o dentry ), y finalmente, el objeto de archivo es parte de sistema de archivos virtual (VFS) o 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

enter image description here


Un Inode es una estructura de datos en un sistema de archivos Unix/Linux. Un inodo almacena metadatos sobre un archivo normal, 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

14
Premraj

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 el núcleo de Linux, tiene un nombre incorrecto como muchos otros (por ejemplo, struct address_space) y no es una abstracción de un "archivo" real (por ejemplo,/etc/passwd). Representa un "archivo" o directorio abierto. struct file es creado por sys_open en el núcleo, por lo que un proceso puede tener mucho 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.

5
firo

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.

4
jlliagre