Comment les structures de répertoires sont-elles stockées dans le système de fichiers UNIX?

8

J'ai lu que chaque répertoire stocke son contenu (fichiers et sous-répertoires) en utilisant une liste de paires de noms de fichiers et d'inodes. Mais aucune des références que j'ai reçues n'a dit quelque chose sur la façon dont ils sont stockés.

Sont-ils stockés sur l'inode de leur répertoire parent, en utilisant des blocs de données comme un fichier normal, ou peut-être en utilisant d'autres moyens que je ne connais pas?

Merci pour la clarification.

Oka
la source
Il n'y a pas de moyen unique pour stocker des fichiers sous Unix. Semblable à il n'y a pas de moyen unique pour la façon dont Windows stocke les fichiers. Dans les deux cas, cela dépend du système de fichiers utilisé. (FAT, NTFS, ext2, UFS, ...)
Hennes
Pour les systèmes de fichiers, la structure du répertoire sur le disque est définie dans dirent.h, et vous êtes censé utiliser les libcalls opendir / readdir / closedir, etc. pour accéder au contenu.
ott--

Réponses:

10

Voir les internes du système de fichiers qui décrivent de manière assez simple les internes d'un système de fichiers Unix typique.

entrez la description de l'image ici

La plupart des systèmes de fichiers Unix contiennent

  • Un bloc de démarrage
  • Un superbloc (géométrie du disque, disposition des partitions, nombre d'inodes, etc.)
  • Blocs d'inode
  • Blocs de données

Les systèmes de fichiers modernes contiennent des structures supplémentaires.

L'une des choses dans le superbloc est l'emplacement des inodes pour le répertoire racine.

Un répertoire est un fichier spécialement formaté. Comme pour tous les fichiers ordinaires, il contient des blocs de données.

Vous pouvez le voir dans The Linux Documentation Project: Filesystem

entrez la description de l'image ici

Vous pouvez utiliser debugfspour explorer ces structures.

RedGrittyBrick
la source
2
"Un répertoire est un fichier spécialement formaté. Comme tous les fichiers ordinaires, il contient des blocs de données." Les répertoires stockent-ils donc leurs paires nom-fichier-inode (tableau le plus à gauche sur la 1ère image, ou la ligne dans la 2ème image) dans leurs blocs de données?
Oka
1
@Oka: C'est exact.
RedGrittyBrick
Donc, pour être clair, le répertoire est un fichier, il est donc stocké dans un bloc de données. Chaque répertoire du ext4système de fichiers par exemple (ce qui est représenté par ext4_dir_entry_2263 octets de long) un seul bloc de 4 Ko pourrait stocker environ 15 entrées de répertoire?
campescassiano