Lässt es sich mit cremefarbenem Papier, einer Tönung, mehr Kontrast oder größerer Schrift besser lesen? Wählen Sie Ihre Farben und Ihre Schrift, einmalig für alle Seiten.

Kostenlose Lektion

Wie ein Dateisystem Dateien findet (Inodes)

Nach dieser Lektion: Ich kann erklären, wie das Dateisystem einen Pfad Schritt für Schritt in eine Datei auflöst.

Lektion, 55 Min.6 BefehleLab „Linux im Alltag“: die dreißig Befehle, die Entwickelnde auswendig tippen

Wie aus einem Pfad eine Datei wird

Ein Dateisystem verwaltet die Dateien auf einem Datenträger, und ein Inode ist die Karteikarte, auf der alles über eine Datei steht außer ihrem Namen. Wer versteht, wie ein Pfad zu einem Inode führt, versteht auch, warum eine Datei zwei Namen haben kann.

In einer Bibliothek führt der Katalog von der Signatur zum Regal. Das Dateisystem tut dasselbe für Pfade wie /home/anna/bericht.txt.

Am Ende dieser Lektion

Notiz

Ich kann erklären, wie das Dateisystem einen Pfad Schritt für Schritt in eine Datei auflöst.

Schlüsselwörter

BegriffWas er bedeutetBeispiel
Inodedie Karteikarte einer Datei, ohne ihren Namen
Verzeichniseine Datei, die Namen auf Inode-Nummern abbildet
Blockein fester Abschnitt des Datenträgers4096 Bytes
Pfadder Weg von der Wurzel zu einer Datei/etc/passwd
Wurzelverzeichnisdas oberste Verzeichnis, geschrieben als /
Hardlinkein zweiter Name für denselben Inode

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Ein Inode beschreibt alles außer dem Namen

Unter Linux hat jede Datei einen Inode mit einer Nummer. Im Inode stehen die Größe, der Besitzer, die Rechte, die Zeitstempel und die Nummern der Blöcke, in denen der Inhalt liegt. Der Name steht nicht im Inode.

Der Datenträger ist in Blöcke zerlegt, meist 4096 Bytes groß. Eine Datei von 5000 Bytes belegt deshalb zwei Blöcke. Der Rest des zweiten Blocks bleibt ungenutzt.

Die Karteikarte von /etc/passwd ansehen

Befehl
stat /etc/passwd

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Ein Verzeichnis listet Namen und Nummern auf

Ein Verzeichnis ist selbst eine Datei mit eigenem Inode. Sein Inhalt ist eine Liste: Name und Inode-Nummer, Zeile für Zeile. So kommt ein Name zu seinem Inode. Zwei Einträge dürfen auf denselben Inode zeigen.

Jedes Verzeichnis enthält den Eintrag . für sich selbst und .. für das übergeordnete Verzeichnis. Im Wurzelverzeichnis zeigt .. wieder auf die Wurzel.

Beispiel: drei Verzeichnisse und eine Datei

InodeArtInhalt
2Verzeichnis (Wurzel). = 2, .. = 2, home = 5
5Verzeichnis (home). = 5, .. = 2, anna = 9
9Verzeichnis (anna). = 9, .. = 5, bericht.txt = 14
14Datei6200 Bytes in 2 Blöcken

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Ein Pfad wird Schritt für Schritt aufgelöst

Das System beginnt beim Wurzelverzeichnis, dessen Inode-Nummer fest bekannt ist. Für jeden Teil des Pfads liest es das aktuelle Verzeichnis und sucht den Namen. Der gefundene Inode ist das nächste Verzeichnis oder am Ende die Datei.

Für /home/anna/bericht.txt sind es drei Suchschritte: Wurzel, home, anna. Fehlt ein Name oder ist ein Teil in der Mitte eine Datei, schlägt die Auflösung fehl.

Beispiel: /home/anna/bericht.txt auflösen

SchrittVerzeichnis (Inode)Gesuchter NameGefunden
1Wurzel (2)home5
2home (5)anna9
3anna (9)bericht.txt14

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Den Pfad /etc/passwd Schritt für Schritt zeigen

Befehl
namei /etc/passwd

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Ein Hardlink ist ein zweiter Name

Mit ln legen Sie einen zweiten Verzeichniseintrag an, der auf denselben Inode zeigt. Beide Namen sind gleichwertig. Ändern Sie die Datei über einen Namen, sehen Sie es über den anderen.

Im Inode steht ein Zähler, wie viele Namen auf ihn zeigen. Erst wenn der Zähler 0 erreicht und niemand die Datei offen hat, gibt das System die Blöcke frei. rm löscht also einen Namen und nicht unbedingt die Daten.

Eine Datei mit einem Namen anlegen

Befehl
printf "Hallo\n" > ~/notiz.txt

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Einen zweiten Namen dafür anlegen

Befehl
ln ~/notiz.txt ~/zweitname.txt

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Die Inode-Nummern beider Namen vergleichen

Befehl
ls -i ~/notiz.txt ~/zweitname.txt

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Wie viele Namen zeigen auf den Inode?

Befehl
stat -c "%h" ~/notiz.txt

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Ein häufiger Fehler

Warnung

Viele glauben, der Name gehöre zur Datei und rm lösche die Daten sofort. Der Name steht aber im Verzeichnis, nicht im Inode. rm entfernt den Eintrag und zählt die Namen herunter. Die Daten verschwinden erst, wenn kein Name mehr auf den Inode zeigt.

Über dieses Lab und seinen Quellcode: Lab „Linux im Alltag“: die dreißig Befehle, die Entwickelnde auswendig tippen

Sie unterrichten eine Gruppe? Weisen Sie dieses Modul Ihren Studierenden zu, mit Handbuch für Lehrende, automatisch geprüften Aufgaben und einem Lab für jede Person.