Linux-Dateisystem
Wie funktioniert das Linux-Dateisystem?
Das Fundament: Die Baumstruktur nach FHS
Das Linux-Dateisystem organisiert alle Dateien und Verzeichnisse in einer hierarchischen Baumstruktur. Diese Struktur beginnt immer an der Wurzel, dem Stammverzeichnis (dargestellt durch ein einfaches /
), und ist durch den Filesystem Hierarchy Standard (FHS) standardisiert. Das ist so, als ob jede Bibliothek der Welt denselben Aufbau hätte, sodass du dich sofort zurechtfindest, egal welche Linux-Distribution du nutzt. Zu den wichtigsten Verzeichnissen gehören:
/bin
– Essenzielle Programme: Grundlegende Befehle wiels
,cp
undmv
./etc
– Konfigurationsdateien: Die "Schaltzentrale" des Systems mit allen wichtigen Einstellungen./home
– Die Heimat der Benutzer:innen: Persönliche Verzeichnisse für jede:n Benutzer:in./var
– Variable Daten: Daten, die sich im Betrieb ändern, wie z. B. Logdateien in/var/log
./usr
– Installierte Programme: Die meisten installierten Anwendungen und Bibliotheken./tmp
– Temporäre Dateien: Ein Ordner für temporäre Daten, der oft beim Neustart geleert wird.
Der Personalausweis jeder Datei: Inodes
Jede einzelne Datei und jedes Verzeichnis im Linux-System besitzt einen sogenannten Inode. Stell dir einen Inode wie den Eintrag in einem Bibliothekskatalog vor: Er enthält alle wichtigen Metadaten, aber nicht den Inhalt selbst. Zu diesen Metadaten gehören:
- Die Dateiberechtigungen (wer darf lesen, schreiben, ausführen?)
- Der oder die Eigentümer:in und die zugehörige Gruppe
- Die Dateigröße
- Zeitstempel (Erstellungs-, Zugriffs- und Änderungsdatum)
- Ein Verweis darauf, in welchen physischen Blöcken auf der Festplatte der eigentliche Inhalt der Datei gespeichert ist.
Wenn du eine Datei öffnest, liest das System zuerst den Inode, um alle diese Informationen zu erhalten und zu prüfen, ob du überhaupt die nötigen Rechte für den Zugriff hast.
Dateiberechtigungen und Eigentum: Wer darf was?
Die im Inode gespeicherten Berechtigungen sind ein Kernkonzept der Linux-Sicherheit. Sie legen für drei verschiedene Kategorien fest, wer was mit einer Datei oder einem Verzeichnis tun darf:
- Benutzer:in (User/Owner): Die Person, der die Datei gehört.
- Gruppe (Group): Eine definierte Gruppe von Benutzer:innen.
- Andere (Others): Alle anderen Benutzer:innen auf dem System.
Für jede dieser Kategorien gibt es drei grundlegende Rechte:
- Lesen (
r
für read): Den Inhalt einer Datei ansehen oder die Dateien in einem Verzeichnis auflisten. - Schreiben (
w
für write): Den Inhalt einer Datei ändern oder in einem Verzeichnis Dateien erstellen/löschen. - Ausführen (
x
für execute): Eine Datei als Programm starten oder in ein Verzeichnis wechseln.
Beispiel: Ein Webserver soll die Dateien einer Webseite ausliefern dürfen (r
), aber nicht verändern (w
). Du könntest die Eigentümerin der Dateien auf dich setzen (mit r
und w
) und die Gruppe auf den Benutzer des Webservers (z.B. www-data
) mit nur Leserechten (r
).
Geräte einbinden: Das Mount-Konzept
Unter Linux wird alles in die eine große Verzeichnisstruktur integriert. Wenn du ein neues Speichergerät wie eine externe Festplatte oder einen USB-Stick anschließt, wird dessen Dateisystem nicht als separater Laufwerksbuchstabe (wie D:
unter Windows) angezeigt. Stattdessen wird es an einem leeren Ordner, einem sogenannten Mount-Punkt, in den bestehenden Verzeichnisbaum "eingehängt". Dieser Prozess wird Mounten genannt.
Beispiel: Du erstellst einen Ordner /media/usb-stick
und mountest dann deinen USB-Stick (z.B. das Gerät /dev/sdb1
) dorthin. Ab sofort ist der Inhalt des USB-Sticks im Ordner /media/usb-stick
sichtbar und zugänglich. Um diesen Vorgang dauerhaft zu machen, z.B. nach einem Neustart, werden Einträge in der Datei /etc/fstab
vorgenommen.
Welche Dateisystemtypen gibt es unter Linux?
Der Alleskönner: ext4
Das Fourth Extended Filesystem (ext4) ist seit vielen Jahren das Standard-Dateisystem für die meisten Linux-Distributionen. Es ist extrem stabil, zuverlässig und bietet eine hervorragende Allround-Leistung für Desktops und Server. Eine wichtige Eigenschaft ist das Journaling: Bevor eine Änderung tatsächlich auf die Festplatte geschrieben wird, wird sie in einem "Journal" protokolliert. Fällt der Strom aus, kann das System nach dem Neustart anhand des Journals den Zustand des Dateisystems schnell und sicher wiederherstellen, was das Risiko von Datenverlust minimiert.
Der Spezialist für große Daten: XFS
XFS ist ein hochleistungsfähiges Dateisystem, das ursprünglich für Server mit sehr großen Datenmengen und hoher Parallelität entwickelt wurde. Es glänzt besonders beim Umgang mit sehr großen Dateien (im Terabyte-Bereich) und bei vielen gleichzeitigen Lese- und Schreibvorgängen. Daher ist es eine beliebte Wahl für Medienserver, wissenschaftliche Berechnungen oder große Datenbanken. Wie ext4 ist es ein robustes Journaling-Dateisystem.
Der moderne Allrounder: Btrfs
Das B-Tree File System (Btrfs) ist ein modernes Dateisystem, das viele fortschrittliche Funktionen direkt integriert, die bei anderen Dateisystemen zusätzliche Software erfordern. Zu seinen wichtigsten Merkmalen gehören:
- Snapshots: Du kannst den Zustand des gesamten Dateisystems zu einem bestimmten Zeitpunkt "einfrieren" und blitzschnell darauf zurückkehren. Das ist ideal für Backups oder vor riskanten System-Updates.
- Integrierte Volume-Verwaltung: Du kannst mehrere Festplatten einfach zu einem Speicherpool zusammenfassen (ähnlich wie RAID).
- Copy-on-Write (CoW): Geänderte Daten werden nicht direkt überschrieben, sondern zuerst an eine neue Stelle geschrieben. Erst nach dem erfolgreichen Schreiben wird der Verweis auf die neue Version aktualisiert. Dies schützt vor Datenkorruption bei Stromausfällen.
Lernziele
- die grundlegenden Eigenschaften und Unterschiede gängiger Linux-Dateisysteme (z.B. ext4, XFS, Btrfs) vergleichen, indem Aspekte wie Journaling-Fähigkeiten, typische Anwendungsfälle, maximale Dateigrößen und spezifische Features (z.B. Snapshots) gegenübergestellt werden.
- die Struktur des Linux-Dateisystems gemäß dem Filesystem Hierarchy Standard (FHS) erklären, indem die Hauptverzeichnisse (z.B. `/`, `/bin`, `/etc`, `/home`, `/var`, `/usr`, `/tmp`) und deren primäre Funktionen sowie typische Inhalte beschrieben werden.
- das Konzept des Mountens von Dateisystemen unter Linux erklären, indem der Zweck von Mount-Punkten, der Prozess der Einbindung von Speichergeräten (mit verschiedenen Dateisystemtypen wie ext4 oder XFS) in die bestehende Verzeichnisstruktur und die grundlegende Verwendung des `mount`-Befehls erläutert werden.
- die grundlegende Funktionsweise von Inodes und deren direkten Zusammenhang mit Dateiberechtigungen und Eigentumsverhältnissen im Linux-Dateisystem erklären, indem erläutert wird, wie Inodes Metadaten (einschließlich der rwx-Berechtigungen für Benutzer, Gruppe, Andere und Eigentümerinformationen) speichern und wie diese die Zugriffskontrolle auf Dateien und Verzeichnisse spezifisch unter Linux steuern.