Dateien und das Dateisystem
Was beim Speichern einer Datei wirklich passiert und warum ein Inode nicht der Dateiname ist.
Ein Dateisystem ordnet Blöcke auf einem Gerät zu benannten Dateien und Verzeichnissen. Ein Verzeichnis ist selbst eine Datei, die Namen auf Inode-Nummern abbildet. Der Name ist nicht die Datei; er ist ein Etikett, das auf sie zeigt.
Ein Inode speichert die Metadaten einer Datei und wo ihre Datenblöcke liegen: Größe, Rechte, Zeitstempel, Blockzeiger. Den Namen speichert er nicht. Deshalb kann eine Datei mehrere Namen haben (harte Links), und keiner davon ist der „echte“.
Plattenlesevorgänge sind tausendfach langsamer als Speicher, daher hält der Kernel zuletzt genutzte Dateidaten im Seiten-Cache. Ein wiederholtes Lesen berührt die Platte womöglich gar nicht.
# Путь — это просто имена каталогов, которые ядро проходит шаг за шагом.
# Конкретный ФАЙЛ живёт в inode, а не в имени.
$ ls -i /etc/hosts
42 /etc/hosts # 42 — номер inode
$ ln /etc/hosts /tmp/alias # жёсткая ссылка: +1 имя у ТОГО ЖЕ inode
$ ln -s /etc/hosts /tmp/soft # симлинк: отдельный файл со ссылкой
# Место на диске занимают ДАННЫЕ, а не имя файла.Praxis
Du schreibst in eine Datei und der Aufruf kehrt erfolgreich zurück. Liegen die Daten auf der Platte?
Hinweise
- Wohin legt der Kernel Schreibvorgänge, bevor sie die Platte erreichen?
- Wozu fsync, wenn Schreibvorgänge bereits auf der Platte wären?
12 XP
Bringe die Schritte des Lesens einer Datei in die richtige Reihenfolge.
Hinweise
- Ein Pfad ist eine Folge von Namen, die nacheinander aufgelöst werden.
- Prüfe den schnellen Weg vor dem langsamen.
13 XP
Erkläre, warum das Löschen einer Datei, die ein anderer Prozess geöffnet hat, nicht zwangsläufig ihren Plattenplatz freigibt.
Hinweise
- Was hält den Inode am Leben — der Name oder etwas anderes?
- Zähle die Verweise, nicht die Verzeichniseinträge.
13 XP