Das Linux-Dateisystem — Verzeichnisbaum, Partitionen und Mount
Das Linux-Dateisystem ist kein Chaos — es folgt einem klaren Prinzip: Alles hängt an einem einzigen Baum, der bei / beginnt. Wenn du verstehst, was wo liegt und warum, navigierst du sicher durch jede Distribution. Dieser Artikel erklärt den Verzeichnisbaum, aktuelle Dateisysteme, Partitionen und das Mounten — alles was du als Einsteiger wirklich brauchst.
Der Verzeichnisbaum: Was liegt wo?
Linux kennt keine Laufwerksbuchstaben wie C: oder D:. Stattdessen gibt es genau einen Baum, der bei / (Wurzel, englisch: root) anfängt. Alle Festplatten, USB-Sticks und Netzlaufwerke werden als Äste dieses Baums eingehängt. Das Filesystem Hierarchy Standard (FHS) legt fest, welches Verzeichnis welchen Zweck hat — distributionsübergreifend. Ein Ubuntu-System und ein Fedora-System haben dieselbe Grundstruktur, auch wenn einzelne Distributionen kleine Abweichungen haben.
Die wichtigsten Verzeichnisse im Überblick
/(Root): Der Stamm. Alles beginnt hier. Nurrootdarf hier direkt schreiben./home: Persönliche Verzeichnisse der Benutzer. Dein Heimverzeichnis ist/home/gunter— dort liegen Dokumente, Downloads, Konfigurationsdateien. Die Tilde~ist eine Kurzform dafür./etc: Systemkonfiguration als Textdateien./etc/fstab(Partitionstabelle),/etc/hostname,/etc/apt/sources.list— wer konfiguriert, landet hier./var: Variable Daten, die sich laufend ändern: Logdateien in/var/log, E-Mail-Warteschlangen, Paket-Caches. Kann auf Servern schnell voll werden./usr: Programme und Bibliotheken für alle Benutzer./usr/binenthält die meisten Befehle wiels,grep,bash. Früher auf eigener Partition, heute meist zusammen mit/./tmp: Temporäre Dateien. Wird nach jedem Neustart geleert (oder per systemd-tmpfiles nach einer bestimmten Zeit). Nie für wichtige Daten nutzen./boot: Kernel, Initramfs und Bootloader-Dateien (GRUB). Typisch 500 MB bis 1 GB groß. Bei verschlüsseltem Root-Verzeichnis oft separate Partition./dev: Gerätedateien./dev/sdaist deine erste Festplatte,/dev/sda1ihre erste Partition. USB-Sticks erscheinen hier als/dev/sdbund so weiter./proc: Kein echtes Dateisystem auf Disk — der Kernel stellt hier Laufzeitinformationen bereit./proc/cpuinfozeigt Prozessordaten,/proc/meminfoden RAM-Status. Schreibzugriffe ändern Kernel-Parameter./sys: Ähnlich wie/proc, aber für Hardware-Informationen zuständig. Hier findest du Geräteparameter, Treiberstatus und Power-Management-Einstellungen — alles als les- und teils schreibbare Dateien.
ls / siehst du alle Verzeichnisse der obersten Ebene auf einen Blick. Mit man hier öffnest du die vollständige Dokumentation des Dateisystembaums — direkt im Terminal.Das Unix-Prinzip: Alles ist eine Datei
In Linux ist nahezu alles als Datei modelliert. Das klingt abstrakt, ist aber eines der mächtigsten Konzepte des Systems: Einheitliche Werkzeuge funktionieren für verschiedenste Ressourcen, ohne dass du für jede Geräteklasse ein eigenes Programm brauchst.
Konkret bedeutet das:
- Reguläre Dateien: Texte, Bilder, Programme — das Offensichtliche.
- Verzeichnisse: Technisch eine spezielle Datei, die Namen und Inodes anderer Dateien listet. Ein Inode speichert Metadaten wie Eigentümer, Berechtigungen und Zeitstempel.
- Gerätedateien:
/dev/sdarepräsentiert deine Festplatte. Mitdd if=/dev/sda of=backup.imgkannst du sie 1:1 kopieren — wie eine Datei lesen. - Sockets und Pipes: Kommunikationskanäle zwischen Prozessen, ebenfalls als Datei-Einträge im Dateisystem.
- Pseudo-Dateisysteme:
/procund/sysliegen nicht auf Disk, verhalten sich aber wie Verzeichnisse mit lesbaren Dateien.
Der praktische Nutzen: Befehle wie cat, grep oder echo funktionieren auf regulären Dateien genauso wie auf Gerätedateien oder Kernel-Interfaces. Du brauchst kein spezielles Tool für jeden Ressourcentyp — das spart Lernaufwand und macht Shell-Scripting besonders mächtig.
# Prozessor-Informationen lesen — wie eine normale Textdatei
cat /proc/cpuinfo | grep "model name" | head -1
# Ausgabe (Beispiel):
model name : Intel(R) Core(TM) i5-1135G7 @ 2.40GHz
# RAM-Belegung anzeigen
cat /proc/meminfo | grep -E "MemTotal|MemAvailable"
# Ausgabe (Beispiel):
MemTotal: 16186188 kB
MemAvailable: 10234512 kB
Dateisysteme: ext4, Btrfs und XFS
Ein Dateisystem ist die Methode, mit der Daten auf einer Partition organisiert werden — es legt fest, wie Blöcke auf Disk adressiert, wie Metadaten gespeichert und wie Fehler behandelt werden. Für Linux-Desktop gibt es drei relevante Optionen.
ext4 — der bewährte Standard
ext4 ist seit 2008 der Standard bei Ubuntu, Debian und den meisten Distributionen. Es ist erprobt, schnell und stabil. Ich habe seit 2003 diverse Dateisysteme ausprobiert — ext3, ReiserFS, kurz XFS — und lande immer wieder bei ext4. Nicht weil es das modernste ist, sondern weil es einfach funktioniert. Langweilig, aber zuverlässig. Journaling schützt vor Datenverlust bei unerwarteten Abstürzen: Alle Schreiboperationen werden erst im Journal protokolliert, bevor sie auf Disk landen. Maximale Dateigröße: 16 TiB, maximale Partitionsgröße: 1 EB. Für einen Desktop-PC die sichere Wahl — besonders wenn du ext4 nicht aktiv wechseln willst.
Auf einem neu installierten Ubuntu-System kannst du das Dateisystem einer Partition direkt abfragen:
# Dateisystem einer Partition anzeigen
lsblk -f /dev/sda3
# Ausgabe (Beispiel):
NAME FSTYPE FSVER LABEL UUID MOUNTPOINTS
sda3 ext4 1.0 f0e9d8c7-b6a5-4321-fedc-ba0987654321 /
Btrfs — modern mit Snapshots
Btrfs (B-Tree Filesystem) ist seit Fedora 33 (2020) Standard-Dateisystem und in openSUSE schon länger etabliert. Die Kernfunktionen:
- Copy-on-Write (CoW): Schreiboperationen überschreiben keine Blöcke direkt — stattdessen wird eine neue Kopie angelegt. Das macht atomare Snapshots möglich.
- Snapshots: Einen Systemzustand in Sekunden einfrieren, ohne doppelten Speicherbedarf (nur geänderte Blöcke werden gespeichert).
- Integrierte RAID-Funktionen: Mehrere Platten ohne LVM kombinieren.
- Transparente Kompression: Dateien werden automatisch komprimiert (zstd-Algorithmus), spart Platz ohne Konfigurationsaufwand.
Für Einsteiger mit Fedora oder openSUSE: Btrfs ist vorinstalliert und funktioniert out-of-the-box. Tools wie Timeshift nutzen Btrfs-Snapshots für System-Backups. Snapshots sind kein Ersatz für echte Backups — sie liegen auf derselben Festplatte wie die Daten. Festplatte kaputt, Snapshots weg. Trotzdem: Wer Fedora oder openSUSE nutzt, sollte Btrfs-Snapshots mitnehmen. Das hat mich schon zweimal vor einem kaputten System nach einem fehlgeschlagenen Update gerettet.
XFS — für große Datenmengen
XFS wird bei RHEL und Rocky Linux als Standard verwendet und ist für Server mit großen Dateien und hohem Durchsatz optimiert. Für Desktop-Nutzer weniger relevant, aber du begegnest ihm auf Servern oder NAS-Systemen. Wichtig: XFS-Partitionen lassen sich vergrößern, aber nicht verkleinern — das ist ein wesentlicher Unterschied zu ext4 und Btrfs.
NTFS und FAT32 — für USB-Sticks und Windows-Kompatibilität
USB-Sticks kommen oft mit FAT32 oder exFAT formatiert — beide funktionieren unter Linux ohne Probleme. NTFS (Windows-Standard) wird über den ntfs-3g-Treiber eingebunden, der in allen großen Distributionen vorinstalliert ist. Für externe Datenträger die du zwischen Linux und Windows teilst: exFAT ist heute die bessere Wahl (keine 4-GB-Dateigrößenbeschränkung wie bei FAT32).
Partitionen anzeigen und verstehen
Bevor du eine Partition änderst, musst du wissen was vorhanden ist. Dafür gibt es drei praktische Wege — alle zeigen dieselben Informationen, nur in unterschiedlicher Form.
lsblk — der schnellste Überblick
lsblk (list block devices) zeigt alle Blockgeräte in einer Baumstruktur. Kein root-Zugriff nötig. SATA-Festplatten erscheinen als sda, sdb etc., NVMe-SSDs als nvme0n1. Partitionen sind jeweils nummerierte Unterknoten.
lsblk
# Ausgabe (Beispiel):
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 476,9G 0 disk
├─sda1 8:1 0 512M 0 part /boot/efi
├─sda2 8:2 0 1G 0 part /boot
└─sda3 8:3 0 475,4G 0 part /
sdb 8:16 1 14,9G 0 disk
└─sdb1 8:17 1 14,9G 0 part /media/gunter/USB-STICK
Du siehst sofort: sda ist die Haupt-SSD mit drei Partitionen (EFI, Boot, Root), sdb ist ein eingesteckter USB-Stick. Die Spalte MOUNTPOINTS zeigt, wo die Partition im Verzeichnisbaum eingehängt ist.
fdisk und gdisk — Partitionen bearbeiten
fdisk arbeitet mit MBR- und GPT-Partitionstabellen, gdisk ist auf GPT spezialisiert (moderner Standard für UEFI-Systeme). Beide sind interaktive Kommandozeilen-Tools. Für Einsteiger: Änderungen nur mit Bedacht vornehmen — falsche Partitionierung löscht Daten unwiderruflich. Zum reinen Anschauen ist fdisk -l völlig sicher.
# Partitionstabelle einer Disk anzeigen (nur lesen, keine Änderung)
sudo fdisk -l /dev/sda
# Ausgabe (Beispiel):
Disk /dev/sda: 476,9 GiB, 512110190592 bytes, 1000215216 sectors
Disk model: Samsung SSD 870
...
Device Start End Sectors Size Type
/dev/sda1 2048 1050623 1048576 512M EFI System
/dev/sda2 1050624 3147775 2097152 1G Linux filesystem
/dev/sda3 3147776 1000215182 997067407 475,4G Linux filesystem
GNOME Disks — grafisch
Wer lieber klickt: GNOME Disks (Paketname: gnome-disk-utility) zeigt alle Laufwerke und Partitionen grafisch, erlaubt Formatierung, S.M.A.R.T.-Tests und das Bearbeiten von fstab-Einträgen — ohne Terminal. Es ist auf Ubuntu und den meisten GNOME-basierten Distributionen vorinstalliert.
Mounten: Partitionen einhängen
Mounten bedeutet, ein Dateisystem an einen Punkt im Verzeichnisbaum zu hängen. Erst nach dem Mounten ist der Inhalt zugänglich. Bei modernen Distributionen passiert das automatisch beim Start — aber manuelles Mounten ist oft nötig, zum Beispiel für USB-Sticks ohne Automount oder zweite Festplatten.
mount und umount
# Mountpunkt anlegen (einmalig)
sudo mkdir -p /mnt/usb
# USB-Stick manuell einhängen
sudo mount /dev/sdb1 /mnt/usb
# Inhalt prüfen
ls /mnt/usb
# Aushängen — immer bevor du den Stick abziehst!
sudo umount /mnt/usb
umount — sonst droht Datenverlust. Wenn umount mit „device is busy“ scheitert, hat noch ein Prozess die Partition geöffnet. lsof +D /mnt/usb zeigt welcher.Mit der Option -t kannst du das Dateisystem angeben, falls Linux es nicht automatisch erkennt. Die Option -o setzt Mount-Optionen:
# NTFS-Stick explizit einbinden
sudo mount -t ntfs-3g /dev/sdb1 /mnt/usb
# Nur-Lesen mounten (schreibgeschützt)
sudo mount -o ro /dev/sdb1 /mnt/usb
# Alle aktuell eingehängten Dateisysteme anzeigen
mount | grep "^/dev"
/etc/fstab — automatisches Mounten beim Start
/etc/fstab (filesystem table) steuert, welche Partitionen beim Systemstart automatisch eingehängt werden. Jede Zeile entspricht einer Partition oder einem Netzlaufwerk.
cat /etc/fstab
# Typischer Aufbau:
# <Gerät> <Mountpunkt> <Typ> <Optionen> <dump> <pass>
UUID=a1b2c3d4-e5f6-7890-abcd-ef1234567890 / ext4 defaults 0 1
UUID=f0e9d8c7-b6a5-4321-fedc-ba0987654321 /boot ext4 defaults 0 2
UUID=1234abcd-5678-ef90-1234-abcdef567890 /boot/efi vfat umask=0077 0 1
Die sechs Felder bedeuten:
- Gerät: UUID, Label oder Gerätename (
/dev/sda1) - Mountpunkt: Wo die Partition im Baum hängt
- Dateisystemtyp: ext4, btrfs, vfat, ntfs-3g, …
- Optionen:
defaultsfür Standardoptionen,rofür schreibgeschützt,noautofür kein automatisches Mounten - dump: Fast immer 0 (Backup-Tool-Relikt)
- pass: Reihenfolge der Filesystem-Prüfung beim Start (0 = keine, 1 = root, 2 = andere)
UUID statt Gerätename — warum das wichtig ist
Ein Gerätename wie /dev/sdb kann sich nach einem Neustart ändern — besonders wenn mehrere USB-Geräte angeschlossen sind. Ich habe das auf die harte Tour gelernt: Backup-Script lief auf /dev/sdb1, nach einem Neustart war das plötzlich die falsche Platte. UUIDs (Universally Unique Identifiers) bleiben dauerhaft an eine Partition gebunden, unabhängig davon, an welchem Port ein Gerät hängt.
# UUIDs aller Partitionen anzeigen
lsblk -f
# Ausgabe (Beispiel):
NAME FSTYPE FSVER LABEL UUID MOUNTPOINTS
sda
├─sda1 vfat FAT32 EFI A1B2-C3D4 /boot/efi
├─sda2 ext4 1.0 a1b2c3d4-e5f6-7890-abcd-ef1234567890 /boot
└─sda3 ext4 1.0 f0e9d8c7-b6a5-4321-fedc-ba0987654321 /
# Alternativ: blkid zeigt UUIDs und Typen aller Partitionen
sudo blkid
/etc/fstab ein. Backup vor jeder Änderung: sudo cp /etc/fstab /etc/fstab.bak. Ein Fehler in fstab kann den Boot-Prozess unterbrechen — dann hilft der Recovery-Modus der Distribution.USB-Stick automatisch mounten
Moderne Desktop-Umgebungen (GNOME, KDE, XFCE) mounten USB-Sticks automatisch über udisks2. Der Mountpunkt ist dann /media/BENUTZERNAME/LABEL. Falls du das manuell in fstab einträgst, verwende die Option noauto,user — dann kann auch ein normaler Benutzer ohne sudo mounten.
Speicherplatz prüfen: df, du und ncdu
Volle Festplatte, kein Platz mehr — das passiert. Diese drei Befehle helfen dir, schnell den Überblick zu behalten und den Verursacher zu finden.
df -h — Belegung aller Partitionen
df (disk free) zeigt den freien Speicher pro eingehängter Partition. Das -h steht für human-readable: Gigabyte statt Byte. Besonders wichtig: df zeigt die Belegung auf Partition-Ebene, nicht auf Verzeichnis-Ebene — du macht das.
df -h
# Ausgabe (Beispiel):
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 475G 128G 323G 29% /
tmpfs 7,7G 1,2M 7,7G 1% /run
/dev/sda2 974M 287M 620M 32% /boot
/dev/sda1 511M 30M 482M 6% /boot/efi
/dev/sdb1 15G 4,3G 11G 29% /media/gunter/USB-STICK
Die Spalte Use% zeigt die Belegung. Bei über 90% solltest du aufräumen — volle Partitionen können zu Systeminstabilität führen. Die Zeilen mit tmpfs sind RAM-basierte Dateisysteme, die keinen Platz auf Disk belegen.
du -sh — Größe eines Verzeichnisses
du (disk usage) zeigt den tatsächlich belegten Platz eines Verzeichnisses. -s summiert (statt jede Datei einzeln), -h macht die Ausgabe lesbar. Mit --max-depth steuerst du wie tief du in den Baum schaust.
# Wie groß ist das Downloads-Verzeichnis?
du -sh ~/Downloads
# Ausgabe:
4,2G /home/gunter/Downloads
# Die zehn größten Unterverzeichnisse in /var/log
du -sh /var/log/* | sort -rh | head -10
# Nur eine Ebene tief im Home-Verzeichnis
du -h --max-depth=1 ~
ncdu — interaktiver Speicherplatz-Browser
ncdu (NCurses Disk Usage) ist das mächtigste der drei Tools: Es zeigt den Verzeichnisbaum interaktiv, sortiert nach Größe, und du kannst navigieren wie in einem Dateimanager. Installation: sudo apt install ncdu (Ubuntu/Debian) oder sudo dnf install ncdu (Fedora).
# Aktuelles Verzeichnis scannen
ncdu
# Ganzes Dateisystem scannen (als root)
sudo ncdu /
Mit den Pfeiltasten navigierst du, mit Enter öffnest du Unterverzeichnisse, mit d löschst du direkt aus ncdu heraus. Für die Fehlersuche bei vollem Speicher ist ncdu deutlich effizienter als df und du kombiniert.
/boot voll läuft (häufig nach vielen Kernel-Updates), zeigt df -h /boot das Problem. Alte Kernel entfernst du mit sudo apt autoremove (Ubuntu) — das löscht nicht mehr benötigte Kernel-Pakete automatisch.Weiterlernen
Das Dateisystem ist das Fundament — aber erst in Kombination mit der Kommandozeile wird es praktisch nutzbar. Wenn du verstehen willst, wie du Dateien und Verzeichnisse mit Bash-Befehlen verwaltest, lies weiter in den Grundlagen-Tutorials:
- Die Shell für Neulinge — Erste Schritte im Terminal, Grundkonzepte erklärt
- Grundlegende Kommandos —
ls,cd,cp,mv,rmund weitere Alltagsbefehle