Das Dateisystem ( oder ) ist eine Ablageorganisation auf einem wie etwa einem Datenträger eines Computers. Dateien können angelegt, gelesen, verändert oder gelöscht werden (CRUD). Für den Nutzer müssen Dateiname und computerinterne Dateiadressen miteinander verknüpft werden. Das (sichere) Abspeichern und das (leichte) Wiederfinden sind wesentliche Aufgaben eines Dateisystems. Das Ordnungs- und Zugriffssystem berücksichtigt die Geräteeigenschaften und ist elementarer Bestandteil eines Computersystems oder eines Betriebssystems.
Der Zugriff auf Dateien und Verzeichnisse eines Dateisystems erfolgt über die Verzeichnisstruktur.
Begriff Der Begriff „Dateisystem“ kann sich einerseits auf den gesamten übergeordneten Verzeichnisbaum, die Verzeichnisstruktur, beziehen, andererseits auf individuell einbindbare Dateisysteme, etwa auf Partitionen. Da ein Dateisystem oft je Partition oder eingesetzt wird, findet sich der Begriff „Dateisystem“ auch oft als Synonym für „Partition“ wieder – tatsächlich ist das Dateisystem jedoch der Inhalt und die Partition nur ein möglicher Rahmen, in dem der Speicherplatz als dafür zur Verfügung gestellt wird.
Auf den meisten Betriebssystemen wird mehr als ein Dateisystem unterstützt. Jedes Dateisystem muss auf einem getrennt ansprechbaren logischen untergebracht sein, etwa einer Partition oder einem zusätzlichen Datenträger wie einer Festplatte. Die Initialisierung dieses logischen getrennten Datenspeichers wird Formatierung genannt. Der Inhalt des Dateisystems wird durch Einhängen, Einbinden bzw. Mounten (von ) im laufenden System zugänglich gemacht.
Geschichte Historisch gesehen sind schon die ersten Lochstreifen- (auf Film- später auf Papierstreifen) und Lochkarten-Dateien Dateisysteme. Sie bilden ebenso wie Magnetbandspeicher lineare Dateisysteme. Die später für die Massenspeicherung und schnellen Zugriff entwickelten Trommel- und Festplattenspeicher ermöglichten dann erstmals durch wahlfreien Zugriff auf beliebige Positionen im Dateisystem komplexere Dateisysteme. Diese Dateisysteme bieten die Möglichkeit, per Namen auf eine Datei zuzugreifen. Das Konzept der Dateisysteme wurde schließlich so weit abstrahiert, dass auch Zugriffe auf Dateien im Netz und auf Geräte, die virtuell als Datei verwaltet werden, über Dateisysteme durchgeführt werden können. Somit sind Anwendungsprogramme in der Lage, auf diese unterschiedlichen Datenquellen über eine einheitliche Schnittstelle zuzugreifen.
Eigenschaften Dateien haben in einem Dateisystem fast immer mindestens einen Dateinamen sowie Attribute, die nähere Informationen über die Datei geben. Die Dateinamen sind in Verzeichnissen abgelegt; Verzeichnisse sind üblicherweise spezielle Dateien. Über derartige Verzeichnisse kann ein Dateiname (und damit eine Datei) sowie die zur Datei gehörenden Daten vom System gefunden werden. Ein Dateisystem bildet somit einen Namensraum. Alle Dateien (oder dateiähnlichen Objekte) sind so über eine eindeutige Adresse (Dateiname inkl. Pfad oder URI) – innerhalb des Dateisystems – aufrufbar. Der Name einer Datei und weitere Informationen, die den gespeicherten Dateien zugeordnet sind, werden als Metadaten bezeichnet.
Für unterschiedliche Datenträger (wie Magnetband, Festplattenlaufwerk, optische Datenträger (CD, DVD, …), Flash-Speicher, …) gibt es darauf spezialisierte Dateisysteme.
Das Dateisystem stellt eine bestimmte Schicht des Betriebssystems dar: Alle Schichten darüber (Rest des Betriebssystems, Anwendungen) können auf Dateien abstrakt über deren Klartext-Namen zugreifen. Erst mit dem Dateisystem werden diese abstrakten Angaben in physische Adressen (Blocknummer, Spur, Sektor usw.) auf dem Speichermedium umgesetzt. In der Schicht darunter kommuniziert der Dateisystemtreiber dazu mit dem jeweiligen Gerätetreiber und mittelbar auch mit der Firmware des Speichersystems (Laufwerks). Letztere nimmt weitere Organisationsaufgaben wahr, beispielsweise den transparenten Ersatz fehlerhafter Blöcke durch Reserveblöcke.
Organisation von Massenspeichern Massenspeichergeräte wie Festplatten-, CD-ROM- und Diskettenlaufwerke haben normalerweise eine Blockstruktur, d. h. aus Betriebssystemsicht lassen sich Daten nur als Folge ganzer Datenblöcke lesen oder schreiben. Ein Speichergerät präsentiert das Speichermedium gegenüber dem Betriebssystem lediglich als große lineare Anordnung vieler nummerierter (und darüber adressierbarer) Blöcke.
Ein Block umfasst heute meistens 512 (= 29) oder 4096 (= 212) Bytes, auf optischen Medien (CD-ROM, DVD-ROM) 2048 (= 211) Bytes. Moderne Betriebssysteme fassen aus Performance- und Verwaltungsgründen mehrere Blöcke zu einem Cluster fester Größe zusammen. Heute sind Cluster mit acht oder noch mehr Blöcken üblich, also 4096 Bytes pro Cluster. Die Clustergröße ist im Allgemeinen eine Zweierpotenz (1024, 2048, 4096, 8192, …).
Eine Datei ist ein definierter Abschnitt eines Datenspeichers, der auf dem Gerät aus einem oder mehreren Clustern besteht. Jede Datei erhält außerdem eine Beschreibungsstruktur, die die tatsächliche Größe, Referenzen auf die verwendeten Cluster und evtl. weitere Informationen wie Dateityp, Eigentümer, Zugriffsrechte enthalten kann (Metadaten).
Für die Zuordnung von Clustern zu Dateien gibt es dabei mehrere Möglichkeiten. Die Referenz einer Datei besteht aus der Clusternummer des Anfangsclusters und der Anzahl der darauf (physisch sequenziell) folgenden Cluster. Nachteile: bei Vergrößerung muss ggf. die ganze Datei verschoben werden. Dies verkompliziert das Dateihandling und führt zu unzureichender Performance bei vielen großen Dateien. So kann es vorkommen, dass eine Datei nicht gespeichert werden kann, obwohl noch genügend freier Speicher auf dem Datenträger vorhanden ist. Die Referenz einer Datei besteht aus der ersten Clusternummer. In jedem Cluster der Datei wird die Clusternummer des Folgeclusters gespeichert. Es ergibt sich eine verkettete Liste. Nachteile: Will man die Datei nicht sequenziell lesen, sondern zum Beispiel nur das Ende, muss das Betriebssystem dennoch die ganze Datei einlesen, um das Ende zu finden. Freie Zuordnung von Dateiclustern zu Folgeclustern durch eine Tabelle auf dem Massenspeicher (Beispiel: FAT). Nachteile: sehr große Beschreibungsstruktur, sequenzielles Lesen oder Schreiben etwas langsamer als ideal, da Zuordnungsinformationen weder gebündelt noch bei den Daten vorliegen. Speicherung eines Feldes von Tupeln (Extent-Anfangscluster, Extentlänge) in der Beschreibungsstruktur der Datei. Ein Extent ist dabei eine Folge von sequentiellen Clustern. Dies wird heute in vielen Dateisystemen so umgesetzt.
Verzeichnisse enthalten Dateinamen und Referenzen zu den jeweiligen Beschreibungsstrukturen. Da Verzeichnisse auch Speicherflächen sind, werden meist speziell gekennzeichnete Dateien als Verzeichnisse verwendet. Die erste Beschreibungsstruktur kann dabei das Ausgangsverzeichnis enthalten.
Ein weiterer eigener Bereich auf dem Speichermedium dient der Buchführung, welche Blöcke oder Cluster schon belegt und welche noch frei sind. Ein oft dafür genutztes Mittel ist die (BAM), in der für jeden Block ein Speicherbit angelegt ist, das anzeigt, ob der Block belegt oder frei ist. Die BAM enthält im Prinzip redundante Informationen und dient der Effizienz der Verwaltung; sollten die dort gespeicherten Informationen verlorengehen, so kann die BAM neu erstellt werden.
Im Allgemeinen ist der erste Block für einen sogenannten Bootsektor (z. B. Master Boot Record) reserviert, der für das Hochfahren des Systems verwendet werden kann. Auf einem Speichermedium mit mehreren Partitionen steht unmittelbar im Anschluss typischerweise die Partitionstabelle, die Organisationsdaten zu den Partitionen enthält. Weder Bootblock noch Partitionstabelle sind Teil des eigentlichen Dateisystems.
Meist enthält jede Partition ein eigenes, von den Daten auf anderen Partitionen unabhängiges Dateisystem; die Ausführungen oben beziehen sich auf die einzelnen Partitionen, die sich eine nach der anderen an die Partitionstabelle anschließen.
Boot Beschreibungsstrukturen Liste freier Cluster Cluster mit Dateien und VerzeichnissenBeispiel für die Aufteilung eines Massenspeichers für ein simples Dateisystem
Aus Effizienzgründen, also vor allem zur Erhöhung der Leistung/Zugriffsgeschwindigkeit, wurden diverse Strategien entwickelt, wie diese Organisationsstrukturen innerhalb des zur Verfügung stehenden Speicherbereichs angeordnet werden. Da es beispielsweise in vielen Dateisystemen beliebig viele Unterverzeichnisse geben kann, verbietet es sich von vornherein, feste Plätze für diese Verzeichnisstrukturen zu reservieren, es muss alles dynamisch organisiert werden. Es gibt auch Dateisysteme wie einige von Commodore, die die grundlegenden Organisationsstrukturen wie Wurzelverzeichnis und BAM in der Mitte des Speicherbereichs (statt wie meist bei anderen an dessen Anfang) anordnen, damit der Weg, den der Schreib-Lese-Kopf von dort zu den eigentlichen Daten und zurück zurückzulegen hat, im Mittel verringert wird. Allgemein kann es ein Strategieansatz sein, eigentliche Daten und ihre Organisationsdaten physisch möglichst nah beieinander anzuordnen.
Arten von Dateisystemen Lineare Dateisysteme Die historisch ersten Dateisysteme waren lineare Dateisysteme auf Lochband oder Lochkarte sowie die noch heute für die Sicherung von Daten eingesetzten Magnetbandsysteme.
Flache Dateisysteme
Frühe Dateisysteme (CP/M, Apple DOS, Commodore DOS, 86-DOS) haben nur ein einzelnes Verzeichnis, das dann Verweise auf alle Dateien des Massenspeichers enthält. Dies war bei Datenspeichern mit limitierter Kapazität, wie Disketten oder Magnetbändern, meist kein großes Problem, denn das Thema, auf das sich der Inhalt bezieht, kann dabei einfach auf dem Datenträger selbst vermerkt werden.
Hierarchische Dateisysteme Mit wachsender Kapazität der Datenträger wurde es immer schwieriger, den Überblick über hunderte und tausende Dateien zu bewahren, deshalb wurde das Konzept der Unterverzeichnisse eingeführt. Ein hierarchisches Dateisystem wurde für das Betriebssystem Multics entwickelt und, nachdem dessen gemeinsame Entwicklung eingestellt wurde, von AT&T Unix Version 1 von 1971 übernommen. Damit war die Grundlage für die meisten modernen Dateisysteme gelegt, die im Wurzelverzeichnis neben regulären Dateien auch Verweise auf weitere Verzeichnisse, die Unterverzeichnisse, enthalten können, mit möglicherweise wiederum weiteren Unterverzeichnissen.
Dadurch entsteht eine Verzeichnisstruktur, die oft als Verzeichnisbaum dargestellt wird. Das Festplattenlaufwerk C: unter Windows beinhaltet beispielsweise neben Dateien wie boot.ini und ntldr auch Verzeichnisse wie Programme, Dokumente und Einstellungen usw. Ein Verzeichnis wie zum Beispiel Eigene Dateien kann dann wieder Unterverzeichnisse wie Eigene Bilder oder Texte enthalten. In Texte können dann beispielsweise die normalen Dateien Brief1.txt und Brief2.txt stehen.
rahmenlos|800px|zentriert
Die Verzeichnisse werden auch Ordner genannt und sind, je nach Betriebssystem, durch ein Größer-als-Zeichen > (Multics), einen Schrägstrich (englisch ) / (Unix, Linux, macOS, AmigaOS), einen Punkt . (OpenVMS), einen umgekehrten Schrägstrich (englisch ) \ (DOS, Windows, TOS) oder einen Doppelpunkt : (ältere Mac-OS-Versionen) getrennt. Da sich eine Hierarchie von Verzeichnissen und Dateien ergibt, spricht man hier von hierarchischen Dateisystemen. Den Weg durch das Dateisystem, angegeben durch Verzeichnisnamen, die mit den Trennzeichen voneinander getrennt werden, nennt man Pfad. Auf die Datei (als Textdatei üblicherweise mit der Erweiterung .txt) im Unterverzeichnis kann mit >udd>Project_id>Person_id>Texte>Brief 1.txt (Multics) /home/benutzername/Texte/Brief 1.txt (Unix und die meisten Unix-artigen Systeme, etwa Linux) DISK$Laufwerksname:[USERS.benutzername.TEXTE]BRIEF1.TXT;1 (VMS bzw. OpenVMS, Dateisystem Files-11 mit ODS-2) C:\TEXTE\BRIEF1.TXT (MS-DOS/PC DOS ab Version 2.0)