Dateisysteme
Ein Dateisystem ist die Betriebssystemkomponente, die persistente Daten in benannten Dateien und Verzeichnissen auf Speichermedien organisiert und verwaltet, wie Daten angelegt, lokalisiert, geschützt und konsistent gehalten werden.
Definition
Ein Dateisystem ist die Methode und die Datenstrukturen, die ein Betriebssystem verwendet, um persistente Daten auf einem Speichermedium zu speichern, zu organisieren, zu benennen, abzurufen und zu schützen, indem es Anwendungen Dateien und Verzeichnisse präsentiert und gleichzeitig das Layout und die Konsistenz auf dem Gerät verwaltet.
Scope
Dieses Thema behandelt die Dateiabstraktion und -schnittstelle, Verzeichnisstrukturen, Allokationsmethoden (zusammenhängend, verkettet, indiziert) und die Verwaltung des freien Speicherplatzes, Metadatenstrukturen wie Inodes, Journaling und Absturzkonsistenz sowie den Puffercache. Es wird erläutert, wie das Betriebssystem Rohspeicher in einen zuverlässigen, benannten Namensraum umwandelt. Ausgenommen sind die physischen Speichermedien selbst (sekundäre Speichermedien) und die Hauptspeicherverwaltung des Betriebssystems (Speicherverwaltung).
Core questions
- Wie werden Dateien benannt, in Verzeichnisse organisiert und darauf zugegriffen?
- Wie werden die Daten einer Datei auf dem Speichermedium zugewiesen und lokalisiert?
- Welche Metadaten speichert das Dateisystem und wie wird der freie Speicherplatz verwaltet?
- Wie bleibt das Dateisystem bei Abstürzen konsistent?
Key concepts
- Dateiabstraktion und -schnittstelle
- Verzeichnisse und Namensräume
- Inodes und Metadaten
- Allokationsmethoden (zusammenhängend, verkettet, indiziert)
- Verwaltung des freien Speicherplatzes
- Journaling und Absturzkonsistenz
- Puffercache
- Zugriffskontrolle und Berechtigungen
Key theories
- Absturzkonsistenz
- Da ein Absturz mehrstufige Aktualisierungen unterbrechen kann, verwenden Dateisysteme Techniken wie Journaling (Protokollierung beabsichtigter Änderungen vor deren Anwendung) oder Copy-on-Write, um sicherzustellen, dass das Dateisystem nach einem Fehler in einen konsistenten Zustand wiederhergestellt werden kann.
Mechanisms
Ein Dateisystem bildet den logischen Byte-Stream jeder Datei auf Blöcke auf dem Gerät ab und zeichnet die Abbildung und Attribute in Metadatenstrukturen wie Inodes und Verzeichnissen auf. Allokationsmethoden bestimmen, wie Blöcke zugewiesen und verfolgt werden, und Freispeicherstrukturen erfassen verfügbare Blöcke. Ein Puffercache hält kürzlich verwendete Blöcke im Speicher, und Journaling oder Copy-on-Write stellen sicher, dass unterbrochene Aktualisierungen das Dateisystem in einem wiederherstellbaren, konsistenten Zustand hinterlassen.
Clinical relevance
Dateisysteme sind die Art und Weise, wie nahezu alle persistenten Daten gespeichert und abgerufen werden, daher sind ihre Leistung und Zuverlässigkeit für Datenbanken, Anwendungen und Benutzer gleichermaßen entscheidend. Designentscheidungen bezüglich Metadaten, Caching und Absturzkonsistenz bestimmen die Dauerhaftigkeit und Wiederherstellung nach Fehlern, und weit verbreitete Dateisysteme wie ext4, NTFS und ZFS verkörpern Jahrzehnte dieser Kompromisse.
History
Hierarchische Dateisysteme mit Verzeichnissen und dem Inode-Modell wurden um 1970 von UNIX etabliert. Das Berkeley Fast File System verbesserte Layout und Leistung, und Journaling- sowie Log-strukturierte Designs in den 1990er Jahren befassten sich mit Absturzkonsistenz und Schreibleistung. Copy-on-Write-Dateisysteme wie ZFS und Btrfs integrierten später Prüfsummen und Snapshots für eine stärkere Integrität.
Debates
- Journaling versus Copy-on-Write für Konsistenz
- Journaling protokolliert beabsichtigte Änderungen, bevor sie angewendet werden, während Copy-on-Write neue Daten an frische Speicherorte schreibt und Zeiger atomar umschaltet; beide bieten Absturzkonsistenz mit unterschiedlichen Kompromissen bei Leistung, Speicherplatz und Integrität, und beide werden in modernen Systemen verwendet.
Key figures
- Ken Thompson
- Dennis Ritchie
- Marshall Kirk McKusick
- Abraham Silberschatz
Related topics
Seminal works
- silberschatz2018
- tanenbaum2014os
Frequently asked questions
- Was ist ein Inode?
- Ein Inode ist eine Metadatenstruktur, die eine Datei beschreibt: ihre Größe, Eigentümerschaft und Berechtigungen, Zeitstempel und Zeiger auf die Speicherblöcke, die ihre Daten enthalten. Verzeichnisse ordnen menschenlesbare Namen Inodes zu und trennen so den Namen einer Datei von ihrer Darstellung auf dem Gerät.
- Wie schützt Journaling vor Abstürzen?
- Bevor ein Journaling-Dateisystem Dateisystemstrukturen modifiziert, zeichnet es die beabsichtigten Änderungen in einem Protokoll auf. Wenn ein Absturz die Aktualisierung unterbricht, spielt das System beim Neustart die protokollierten Änderungen ab oder verwirft sie, wodurch ein konsistenter Zustand wiederhergestellt wird, anstatt das Dateisystem beschädigt zu hinterlassen.