¿Cómo se almacenan las estructuras de directorios en el sistema de archivos UNIX?


8

He leído que cada directorio almacena su contenido (archivos y subdirectorios) mediante el uso de una lista de pares de nombre de archivo e inodo. Pero ninguna de las referencias que obtuve decía algo sobre cómo se almacenan.

¿Están almacenados en un inodo de su directorio principal, usando bloques de datos como un archivo normal, o tal vez usando otras formas que no conozco?

Gracias por la aclaración.


No hay una sola manera de cómo Unix almacena archivos. Similar a no hay una única forma de cómo Windows almacena archivos. En ambos casos, depende del sistema de archivos utilizado. (FAT, NTFS, ext2, UFS, ...)
Hennes

Para los sistemas de archivos, la estructura de directorios en el disco se define en dirent.h, y se supone que debe utilizar las llamadas de operador opendir / readdir / closedir, etc. para acceder al contenido.
ott--

Respuestas:


10

Vea las partes internas del sistema de archivos que describe de manera bastante simple las partes internas de un sistema de archivos Unix típico.

ingrese la descripción de la imagen aquí

La mayoría de los sistemas de archivos Unix contienen

  • Un bloque de arranque
  • Un superbloque (geometría del disco, diseño de partición, recuento de inodos, etc.)
  • Bloques de inodo
  • Bloques de datos

Los sistemas de archivos modernos contienen estructuras adicionales.

Una de las cosas en el superbloque es la ubicación de los inodes para el directorio raíz.

Un directorio es un archivo con formato especial. Como con todos los archivos ordinarios, tiene bloques de datos.

Puede ver esto en The Linux Documentation Project: sistema de archivos

ingrese la descripción de la imagen aquí

Puedes usar debugfspara explorar estas estructuras.


2
"Un directorio es un archivo con formato especial. Al igual que con todos los archivos normales, tiene bloques de datos". Entonces, ¿los directorios almacenan sus pares de nombre de archivo-inodo (tabla más a la izquierda en la primera imagen, o la fila en la segunda imagen) en sus bloques de datos?
Oka

1
@Oka: Eso es correcto.
RedGrittyBrick

Entonces, para ser claros, el directorio es un archivo, por lo que se almacena en un bloque de datos. Cada directorio en el ext4sistema de archivos, por ejemplo (lo que está representado por ext4_dir_entry_2263 bytes de longitud), ¿un solo bloque de 4KB podría almacenar aproximadamente 15 entradas de directorio?
campescassiano
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.