Wie werden Verzeichnisstrukturen im UNIX-Dateisystem gespeichert?

8

Ich habe gelesen, dass jedes Verzeichnis seinen Inhalt (Dateien und Unterverzeichnisse) unter Verwendung einer Liste von Dateinamen- und Inode-Paaren speichert. Aber keine der Referenzen, die ich erhalten habe, sagt etwas darüber aus, wie sie gespeichert sind.

Werden sie im Inode ihres übergeordneten Verzeichnisses gespeichert, verwenden Datenblöcke wie eine normale Datei oder verwenden sie andere Methoden, die mir nicht bekannt sind?

Danke für die Klarstellung.

Oka
quelle
Es gibt keine einzige Möglichkeit, wie Unix Dateien speichert. Ähnlich wie es keine einzige Möglichkeit gibt, wie Windows Dateien speichert. In beiden Fällen hängt es vom verwendeten Dateisystem ab. (FAT, NTFS, ext2, UFS, ...)
Hennes
Für Dateisysteme ist die Verzeichnisstruktur auf der Festplatte in dirent.h definiert, und Sie sollten die libcalls opendir / readdir / closedir usw. verwenden, um auf den Inhalt zuzugreifen.
ott--

Antworten:

10

Siehe Interna des Dateisystems, in denen die Interna eines typischen Unix-Dateisystems auf relativ einfache Weise beschrieben werden.

Geben Sie hier die Bildbeschreibung ein

Die meisten Unix-Dateisysteme enthalten

  • Ein Bootblock
  • Ein Superblock (Festplattengeometrie, Partitionslayout, Inode-Anzahl usw.)
  • Inode-Blöcke
  • Datenblöcke

Moderne Dateisysteme enthalten zusätzliche Strukturen.

Eines der Dinge im Superblock ist der Speicherort der Inodes für das Stammverzeichnis.

Ein Verzeichnis ist eine speziell formatierte Datei. Wie bei allen normalen Dateien gibt es Datenblöcke.

Sie können dies in The Linux Documentation Project: Filesystem sehen

Geben Sie hier die Bildbeschreibung ein

Sie können debugfsdiese Strukturen untersuchen.

RedGrittyBrick
quelle
2
"Ein Verzeichnis ist eine speziell formatierte Datei. Wie bei allen normalen Dateien enthält es Datenblöcke." Sind Verzeichnisse also in ihren Datenblöcken mit ihren Dateinamen-Inode-Paaren (Tabelle ganz links im 1. Bild oder Zeile im 2. Bild) gespeichert?
Oka
1
@Oka: Das ist richtig.
RedGrittyBrick
Um klar zu sein, ist das Verzeichnis eine Datei, also wird es in einem Datenblock gespeichert. In jedem Verzeichnis im ext4Dateisystem (was durch ext4_dir_entry_2263 Bytes dargestellt wird) kann beispielsweise ein einzelner 4-KB-Block etwa 15 Verzeichniseinträge speichern.
Campescassiano