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.
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:
/homefür persönliche Benutzerverzeichnisse/bootfür Dateien, die beim Systemstart benötigt werden/mntals häufig verwendeter Bereich für manuell eingehängte Dateisysteme/mediafür automatisch oder interaktiv eingebundene Wechseldatenträger, abhängig von der Linux-Umgebung/varfür veränderliche Daten wie Protokolle und Warteschlangen, wenn dafür ein eigenes Dateisystem vorgesehen ist/tmpfü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.
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.
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
- Eine Partition wird mit
ext4eingerichtet. - Das Verzeichnis
/homewird als Mountpunkt verwendet. - Die Partition wird an
/homeeingehängt. - 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
- Eine kleine Partition wird für Startdateien vorgesehen.
- Sie erhält ein geeignetes Dateisystem.
- Die Partition wird an
/booteingehängt. - Die für den Bootvorgang benötigten Dateien sind unter
/booterreichbar.
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 -foderblkid. - 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
nofailsinnvoll 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:undE:. - Ein Mountpunkt muss als Verzeichnis existieren. Sein bisheriger Inhalt kann während des Mountens verdeckt werden.
mountist typischerweise temporär, während/etc/fstabdauerhafte Mounts konfigurieren kann.ext2besitzt kein Journal;ext3undext4unterstützen Journaling./proc/filesystemszeigt bekannte Dateisystemtypen des laufenden Kernels, nicht die aktuell eingehängten Dateisysteme.nodevweist auf einen Dateisystemtyp hin, der nicht direkt als gewöhnliches blockgerätebasiertes Dateisystem verwendet wird.