VMware ESXi and vSphere Cluster Management

Was ist ein Dateisystem? Grundlagen zu Linux- und Windows-Dateisystemen

Erklärt Dateisysteme, Partitionen, Mounten, Linux-Verzeichnisbaum, Windows-Laufwerksbuchstaben, ext-Dateisysteme, Journaling und /proc/filesystems.

Ein Dateisystem legt fest, wie Dateien und Verzeichnisse auf einem Speicherbereich organisiert, benannt und verwaltet werden. Es bildet die Verbindung zwischen dem Betriebssystem, einem Datenträger oder einer Partition und den darauf gespeicherten Daten. Ohne ein Dateisystem wüsste das Betriebssystem nicht zuverlässig, wo eine Datei beginnt, welche Blöcke zu ihr gehören oder welche Zugriffsrechte gelten.

Dieser Überblick erklärt die wichtigsten Grundlagen für Linux und Windows. Besonders wichtig sind dabei die Begriffe Dateisystem, Datenträger, Partition, Mountpunkt und Verzeichnisbaum.

Was ist ein Dateisystem?

Ein Dateisystem ist eine Struktur mit Regeln zur Ablage und zum Zugriff auf Dateien und Verzeichnisse. Es verwaltet unter anderem:

  • Namen und Pfade von Dateien und Verzeichnissen
  • die Zuordnung von Dateien zu Speicherblöcken
  • Dateigrößen und Zeitstempel
  • Besitz, Zugriffsrechte und weitere Metadaten
  • freien und belegten Speicherplatz
  • das Anlegen, Ändern, Verschieben und Löschen von Dateien

Metadaten sind Informationen über eine Datei, die nicht zu ihrem eigentlichen Inhalt gehören. Dazu zählen beispielsweise Dateigröße, Eigentümer, Zugriffsrechte und Änderungszeitpunkt.

Das Betriebssystem greift normalerweise nicht bei jedem Lesevorgang direkt auf einzelne Speicherzellen eines Datenträgers zu. Stattdessen stellt das Dateisystem eine verständliche Abstraktion bereit: Ein Programm öffnet etwa den Pfad /home/anna/notizen.txt, und das Betriebssystem ermittelt mithilfe des Dateisystems, an welcher Stelle die zugehörigen Daten liegen.

Datenträger, Partition und Dateisystem

Diese drei Begriffe beschreiben verschiedene Ebenen:

  • Ein Datenträger ist ein physisches oder virtuelles Speichermedium, etwa eine Festplatte, SSD oder ein USB-Stick.
  • Eine Partition ist ein logisch abgegrenzter Bereich auf einem Datenträger. Ein Datenträger kann eine oder mehrere Partitionen enthalten.
  • Ein Dateisystem ist die Verwaltungsstruktur, die auf einer Partition oder einem anderen geeigneten Speicherbereich eingerichtet wird.

Eine typische Kette sieht daher so aus:

SSD oder USB-Laufwerk → Partition → Dateisystem → Verzeichnisse und Dateien

Eine Partition besitzt nicht automatisch ein nutzbares Dateisystem. Üblicherweise wird sie zunächst mit einem Dateisystem eingerichtet. Dieser Vorgang wird oft als Formatierung bezeichnet. Formatieren bedeutet dabei nicht lediglich, vorhandene Dateien zu löschen. Es werden Verwaltungsstrukturen wie Verzeichnisse, Belegungsinformationen und Metadatenbereiche angelegt.

Nicht jedes Dateisystem ist an einen physischen Datenträger gebunden. Linux kennt auch virtuelle oder sogenannte Pseudo-Dateisysteme, die der Kernel zur Laufzeit bereitstellt. Sie dienen beispielsweise dazu, Informationen über Prozesse und den Kernel bereitzustellen.

Der Linux-Verzeichnisbaum

Linux verwendet grundsätzlich einen einzigen hierarchischen Verzeichnisbaum. Sein oberster Punkt ist das Wurzelverzeichnis, das mit einem einzelnen Schrägstrich dargestellt wird:

/

Alle Dateien und Verzeichnisse sind Teil dieses Baums. Zusätzliche Partitionen, interne Datenträger, USB-Laufwerke und virtuelle Dateisysteme werden an Verzeichnissen innerhalb dieses Baums verfügbar gemacht. Dieser Vorgang heißt Mounten oder Einhängen.

Eine separate Partition für persönliche Daten kann beispielsweise unter /home eingehängt werden. Für Anwendungen sieht der Pfad weiterhin wie ein gewöhnlicher Linux-Pfad aus:

/home/anna/dokument.txt

Physisch kann dokument.txt dabei auf einer anderen Partition liegen als die Dateien unter /etc oder /usr. Im Verzeichnisbaum ist dieser Unterschied am Pfad nicht unmittelbar sichtbar.

Linux und Windows im Vergleich

Linux und Windows organisieren den Zugriff auf zusätzliche Speicherbereiche unterschiedlich. Windows verwendet im Alltag häufig Laufwerksbuchstaben, während Linux alle Dateisysteme in einen gemeinsamen Baum einhängt.

Ausgangspunkt der Verzeichnisstruktur — Linux: ein Wurzelverzeichnis /. Windows: getrennte Laufwerkskennungen wie C: oder D:.

Darstellung zusätzlicher Partitionen — Linux: Ein Dateisystem wird an einem Mountpunkt wie /home oder /mnt/daten verfügbar. Windows: Ein Volume wird häufig einem Laufwerksbuchstaben wie D: zugeordnet.

Beispiel für den Zugriffspfad — Linux: /home/anna/datei.txt. Windows: D:\Dokumente\datei.txt.

Rolle der Kennung — Linux: Der Mountpunkt ist Bestandteil des normalen Pfads. Windows: Der Laufwerksbuchstabe steht am Anfang des Pfads und trennt die Laufwerke sichtbar voneinander.

Der Windows-Ansatz mit Laufwerksbuchstaben ist die typische Darstellung für Anwender, aber nicht die einzige technische Möglichkeit. Windows unterstützt ebenfalls Einhängepunkte. Der praktische Unterschied besteht darin, dass Linux den gemeinsamen Verzeichnisbaum und Mountpunkte zum grundlegenden Zugriffsmodell macht.

Mounten in Linux

Mounten bedeutet, ein Dateisystem an einem Verzeichnis, dem Mountpunkt, in den Linux-Verzeichnisbaum einzuhängen. Nach dem Mounten ist der Inhalt des Dateisystems unter diesem Pfad erreichbar.

Der Mountpunkt muss als Verzeichnis vorhanden sein. Ein einfaches Beispiel für ein temporäres Einhängen lautet:

sudo mkdir -p /mnt/daten
sudo mount /dev/sdb1 /mnt/daten

In diesem Beispiel ist /dev/sdb1 beispielhaft eine Partition. Das konkrete Gerät muss auf dem jeweiligen System geprüft werden. Nach dem erfolgreichen Mounten kann der Inhalt beispielsweise mit ls /mnt/daten betrachtet werden.

Ein vorhandenes Verzeichnis kann als Mountpunkt verwendet werden. Sein bisheriger Inhalt wird während des Einhängens jedoch überdeckt. Die Dateien werden dadurch nicht gelöscht, sind aber solange nicht sichtbar, wie das andere Dateisystem dort eingehängt ist. Nach dem Aushängen erscheinen sie wieder.

Geeignete Mountpunkte hängen vom Zweck ab:

  • /home für persönliche Benutzerverzeichnisse
  • /boot für Dateien, die beim Systemstart benötigt werden
  • /mnt als häufig verwendeter Bereich für manuell eingehängte Dateisysteme
  • /media für automatisch oder interaktiv eingebundene Wechseldatenträger, abhängig von der Linux-Umgebung
  • /var für veränderliche Daten wie Protokolle und Warteschlangen, wenn dafür ein eigenes Dateisystem vorgesehen ist
  • /tmp für temporäre Dateien, wenn dieser Bereich getrennt verwaltet wird

Temporäres und dauerhaftes Mounten

Ein Aufruf von mount in der Kommandozeile gilt normalerweise nur für die aktuelle Systemlaufzeit. Nach einem Neustart muss das Dateisystem erneut eingehängt werden, sofern keine dauerhafte Konfiguration existiert.

Dauerhafte Mounts werden typischerweise in /etc/fstab beschrieben. Ein vereinfachtes Beispiel ist:

UUID=beispiel-uuid /home ext4 defaults 0 2

Die UUID ist eine eindeutige Kennung des Dateisystems. Sie ist meist robuster als ein Gerätename wie /dev/sdb1, weil sich Gerätenamen beispielsweise durch die Reihenfolge angeschlossener Laufwerke ändern können.

Änderungen an /etc/fstab sollten vor einem Neustart geprüft werden:

sudo mount -a

Dieser Befehl versucht, die in /etc/fstab beschriebenen Dateisysteme einzuhängen. Fehler wie eine falsche UUID, ein nicht vorhandener Mountpunkt oder ein falscher Dateisystemtyp werden dadurch häufig früh sichtbar.

Wichtige Linux-Verzeichnisse

/home

/home enthält normalerweise die persönlichen Verzeichnisse der Benutzer, zum Beispiel /home/anna. Wird eine eigene Partition an /home eingehängt, liegen persönliche Dateien physisch getrennt vom restlichen System. Im Linux-Verzeichnisbaum bleiben sie trotzdem unter /home erreichbar.

/boot

/boot enthält Dateien, die für den Start des Systems benötigt werden können, beispielsweise Kernel- und Bootloader-Dateien. Eine getrennte Boot-Partition ist möglich, aber nicht bei jeder Installation erforderlich.

Das Root-Dateisystem und weitere Mountpunkte

Das Dateisystem, das am Wurzelverzeichnis / eingehängt ist, wird häufig als Root-Dateisystem bezeichnet. Es stellt den grundlegenden Verzeichnisbaum bereit. Weitere Bereiche wie /var, /tmp oder /mnt können entweder normale Verzeichnisse innerhalb dieses Dateisystems sein oder eigene Dateisysteme darstellen.

Gängige Linux-Dateisysteme

Linux unterstützt zahlreiche Dateisystemtypen. Die Wahl hängt unter anderem von Kompatibilität, Zuverlässigkeit, maximalen Dateigrößen, Leistung und besonderen Funktionen ab.

ext2 — Journaling: nein. Ein älteres Linux-Dateisystem, das historisch weit verbreitet war. Nach einem unsauberen Abschalten kann eine ausführliche Dateisystemprüfung erforderlich sein.

ext3 — Journaling: ja. Eine journalingfähige Weiterentwicklung von ext2 mit enger historischer Verwandtschaft.

ext4 — Journaling: ja. Ein modernes und weit verbreitetes Standard-Dateisystem vieler Linux-Installationen.

ReiserFS — Journaling: ja. Ein Linux-Dateisystem mit historischer Bedeutung; für neue Installationen ist es in der Regel nicht die Standardwahl.

XFS — Journaling: ja. Ein leistungsfähiges Dateisystem, das besonders bei großen Dateien und großen Dateisystemen relevant ist.

JFS — Journaling: ja. Das Journaled File System ist ein weiteres journalendes Dateisystem für Linux.

Die Bezeichnung „Standard“ bedeutet nicht, dass ext4 für jeden Zweck optimal ist. Für gemeinsam mit anderen Betriebssystemen genutzte Datenträger können andere Dateisysteme wegen ihrer Kompatibilität sinnvoller sein. Für große Datenmengen oder spezielle Leistungsanforderungen können XFS oder andere Lösungen in Betracht kommen.

Journaling und Zuverlässigkeit

Journaling bedeutet, dass ein Dateisystem bestimmte Änderungen zunächst in einem Journal, also einem Änderungsprotokoll, festhält. Erst danach werden die eigentlichen Verwaltungsstrukturen vollständig aktualisiert.

Kommt es während eines Schreibvorgangs zu einem Stromausfall, Systemabsturz oder Reset, kann das Dateisystem das Journal beim nächsten Start auswerten. Dadurch lässt sich die interne Struktur oft schneller und konsistenter wiederherstellen, als wenn sämtliche Strukturen vollständig geprüft werden müssten.

Journaling schützt nicht automatisch vor jedem Datenverlust. Bereits geschriebene Dateiinhalte können je nach Schreibvorgang und Konfiguration trotzdem unvollständig sein. Das Journal verbessert vor allem die Wiederherstellung der Dateisystemstruktur.

ext2 besitzt kein Journal. ext3 und ext4 verwenden Journaling und können deshalb nach einem unerwarteten Abbruch typischerweise schneller zu einem konsistenten Verwaltungszustand zurückkehren.

Vom Linux-Kernel unterstützte Dateisysteme ermitteln

Die virtuelle Datei /proc/filesystems enthält eine vom aktuell laufenden Linux-Kernel bereitgestellte Liste bekannter Dateisystemtypen. Sie zeigt, welche Dateisystemunterstützung der Kernel kennt, nicht welche Dateisysteme aktuell eingehängt sind.

cat /proc/filesystems

Eine Ausgabe kann beispielsweise Einträge wie ext4 und proc enthalten. Manche Zeilen beginnen mit nodev:

nodev   proc
        ext4
nodev   tmpfs

nodev bedeutet in diesem Zusammenhang, dass der Dateisystemtyp nicht direkt als gewöhnliches Dateisystem auf einem blockorientierten Gerätegerät wie einer Partition formatiert und eingehängt wird. Solche Einträge sind häufig virtuelle oder netzwerkbezogene Dateisysteme. Die Markierung sagt nicht, dass der Dateisystemtyp nutzlos ist, sondern beschreibt die Art seiner Gerätebindung.

Ein Eintrag in /proc/filesystems ist daher nicht automatisch ein geeigneter Kandidat für eine Datenpartition. Die Datei beantwortet die Frage „Welche Typen kennt der Kernel?“, nicht die Fragen „Was ist aktuell eingehängt?“ oder „Welches Dateisystem sollte ich auf diese Partition formatieren?“

Virtuelle und Pseudo-Dateisysteme

Ein Pseudo-Dateisystem ist ein virtuelles Dateisystem, das der Kernel zur Laufzeit bereitstellt. Es bildet keine gewöhnliche Sammlung dauerhaft gespeicherter Benutzerdaten auf einer Partition ab. Stattdessen stellt es Informationen oder Verwaltungsfunktionen in einer dateiähnlichen Form bereit.

proc ist ein bekanntes Beispiel. Das Dateisystem wird üblicherweise unter /proc eingehängt. Dort können Informationen über den Kernel, laufende Prozesse und bestimmte Systemparameter sichtbar werden. Viele Einträge entstehen dynamisch und spiegeln den aktuellen Systemzustand wider.

Wenn proc in /proc/filesystems auftaucht, bedeutet das deshalb nicht, dass eine Partition mit dem Dateisystemtyp proc für gewöhnliche Dateien formatiert werden soll. Es zeigt lediglich, dass der Kernel diesen virtuellen Dateisystemtyp unterstützt.

Normales Datenträger-Dateisystem — Beispiel: ext4. Auf Datenträger formatierbar: ja. Zweck: dauerhafte Speicherung gewöhnlicher Dateien und Verzeichnisse.

Pseudo-Dateisystem — Beispiel: proc. Auf Datenträger formatierbar: nein, nicht als gewöhnliche Datenpartition. Zweck: Informationen und Schnittstellen des laufenden Kernels.

Bedeutung von nodev — Beispiel: ein mit nodev markierter Typ. Auf Datenträger formatierbar: nicht direkt als blockgerätebasiertes Dateisystem. Zweck: häufig virtuelle, speicherbezogene oder anders bereitgestellte Dateisystemfunktionen.

Nützliche Befehle zur Analyse

Eingehängte Dateisysteme anzeigen

Der Befehl mount ohne Argumente listet typischerweise aktuell eingehängte Dateisysteme auf:

mount

findmnt stellt Quellen und Mountpunkte häufig übersichtlicher als Baum oder Tabelle dar:

findmnt

Blockgeräte und Dateisysteme zuordnen

lsblk -f zeigt Blockgeräte, Partitionen, erkannte Dateisystemtypen, Labels und Mountpunkte:

lsblk -f

Damit lässt sich beispielsweise prüfen, ob eine Partition ein Dateisystem besitzt und ob sie bereits eingehängt wurde.

Praktisches Beispiel: getrennte Home-Partition

  1. Eine Partition wird mit ext4 eingerichtet.
  2. Das Verzeichnis /home wird als Mountpunkt verwendet.
  3. Die Partition wird an /home eingehängt.
  4. Die persönlichen Benutzerverzeichnisse liegen nun auf dieser eigenen Partition.

Für Programme und Benutzer bleibt der Zugriffspfad beispielsweise /home/anna. Die physische Trennung ist im einheitlichen Linux-Verzeichnisbaum nicht durch einen zusätzlichen Laufwerksbuchstaben sichtbar.

Praktisches Beispiel: separate Boot-Partition

  1. Eine kleine Partition wird für Startdateien vorgesehen.
  2. Sie erhält ein geeignetes Dateisystem.
  3. Die Partition wird an /boot eingehängt.
  4. Die für den Bootvorgang benötigten Dateien sind unter /boot erreichbar.

Auch hier kann der Speicher physisch auf einer eigenen Partition liegen, obwohl der Zugriff über einen normalen Pfad im gemeinsamen Baum erfolgt.

Fehlerbehebung beim Mounten

Die Partition ist vorhanden, aber Dateien sind nicht sichtbar

  • Prüfe mit findmnt, ob die Partition überhaupt eingehängt ist.
  • Verwende lsblk -f, um Dateisystemtyp, Partition und Mountpunkt zu vergleichen.
  • Kontrolliere, ob die Partition möglicherweise an einem anderen Pfad eingehängt wurde.
  • Beachte, dass ein nicht eingehängter Mountpunkt nur den Inhalt des lokalen Verzeichnisses zeigt.

Der Mountpunkt existiert nicht

Wenn mount meldet, dass der Zielpfad nicht existiert, kann das Verzeichnis angelegt werden:

sudo mkdir -p /mnt/daten

Danach sollten Pfad, Schreibweise und erforderliche Berechtigungen kontrolliert werden.

Ein Typ aus /proc/filesystems funktioniert nicht für eine Partition

Prüfe, ob der Eintrag mit nodev markiert ist. Dann handelt es sich wahrscheinlich um ein virtuelles oder nicht direkt gerätebasiertes Dateisystem. Für eine gewöhnliche Datenpartition wird ein geeigneter gerätebasierter Typ benötigt, beispielsweise ext4.

Probleme nach einer Änderung an /etc/fstab

  • Vergleiche die eingetragene UUID mit der Ausgabe von lsblk -f oder blkid.
  • Prüfe, ob Mountpunkt und Dateisystemtyp korrekt geschrieben sind.
  • Teste die Konfiguration mit sudo mount -a, bevor du neu startest.
  • Bei nicht zwingend benötigten Wechseldatenträgern kann die Option nofail sinnvoll sein, damit ein fehlendes Laufwerk den Systemstart nicht unnötig blockiert. Die Option sollte passend zum Einsatzzweck gewählt werden.

Prüfungsrelevante Merksätze

  • Ein Datenträger ist das Speichermedium; eine Partition ist ein abgegrenzter Bereich darauf; ein Dateisystem organisiert Dateien in diesem Bereich.
  • Formatieren bedeutet das Einrichten der Verwaltungsstrukturen eines Dateisystems und nicht bloß das Löschen von Dateien.
  • Linux verwendet einen gemeinsamen Verzeichnisbaum ab /; zusätzliche Dateisysteme werden an Mountpunkten eingehängt.
  • Windows verwendet im Alltag häufig Laufwerksbuchstaben wie C:, D: und E:.
  • Ein Mountpunkt muss als Verzeichnis existieren. Sein bisheriger Inhalt kann während des Mountens verdeckt werden.
  • mount ist typischerweise temporär, während /etc/fstab dauerhafte Mounts konfigurieren kann.
  • ext2 besitzt kein Journal; ext3 und ext4 unterstützen Journaling.
  • /proc/filesystems zeigt bekannte Dateisystemtypen des laufenden Kernels, nicht die aktuell eingehängten Dateisysteme.
  • nodev weist auf einen Dateisystemtyp hin, der nicht direkt als gewöhnliches blockgerätebasiertes Dateisystem verwendet wird.