Die Struktur des Linux-Dateisystems verstehen: Der Filesystem Hierarchy Standard (FHS)

Inhaltsverzeichnis

Das Linux-Dateisystem wirkt auf den ersten Blick wie ein Labyrinth aus kryptischen Ordnern. Der Filesystem Hierarchy Standard (FHS) bringt Ordnung hinein: Er definiert, wo essenzielle Programme, Bibliotheken, Konfigurationen und Daten liegen. Diese Einheitlichkeit macht Software portabler und Administration vorhersagbarer – über Distributionen wie Debian/Ubuntu, RHEL/Fedora und SUSE hinweg.

Eine Analogie – Wurzel, Äste und Blätter

Das Verzeichnisstruktur in Linux wird mit der Struktur eines Baumes verglichen, deswegen nennt man das Verzeichnis der Verzeichnisse auch root – zu deutsch also Wurzel. In diesem Verzeichnis befinden sich alle anderen Verzeichnisse, die weiter unten gelistet sind. Man kann die Unterverzeichnisse, aus meiner Sicht, also als Zweige ansehen, die immer weiter wachsen können, jedoch immer eine einzige Wurzel haben. Dateien wären in diesem Vergleich folglich die Blätter eines Baums.

Eltern- und Kinderverzeichnisse

Ein gängiger Gebrauch ist es auch von Kinder- und Elternverzeichnissen zu sprechen. Elternverzeichnisse beinhalten Kinderverzeichnisse und Kinderverzeichnisse befinden sich in Elternverzeichnissen. Die Trennung bzw. Verschachtlung von Verzeichnissen werden auf Linuxsystemen mit den Slash, also dem Zeichen / markiert.

/home/andy/Musik/lieblingslied.mp3

Der erste / bildet dabei das root-Verzeichnis. Das das Elternverzeichnis aller anderen Verzeichnisse ist, selbst aber keine Elternverzeichnis hat.

Ornungssliebhaber und Querulanten

Der FHS-Standard versucht, wie bereits oben erwähnt, den Verzeichnisbaum zu strukturieren was dazu führt das viele Distributionen die erste Schicht der Verzeichnisse (auch Top-Level-Verzeichnis) fast identisch haben.

Im Distibutionsökosystem, vor allem außerhalb Corporate-Linux gibt es auch ein paar Querulanten wie GoboLinux die revolutionäre Ansätze haben und das Dateisystem, meiner Ansicht nach einem viel logischeren Ansatz unterziehen. Gobo hat nur 5 Hauptverzeichnisse:

  • /data
  • /mont
  • /programms
  • /system
  • /users

Was Gobo sonst noch anders macht wird man verstehen wenn man die normale Anordnung der Versezeichnisse (sieh Unten) kennt. Hier ein Video von Bread on Penguins zu dieser Distro.

Disk-basierte und virtuelle Dateisysteme

Weiterhin wird zwischen disk-basierten und virtuellen Dateisystemen unterschieden. Die ersten haben ihre Namen von Festplatten, hinzu gehörig kann man auch Netzwerkspeicher ansehen, weil diese auch festplattenbasiert ist, aber eben über spezifischen Netzwerkprotokole wie echter Vor-Ort-Speicher im System angesehen wird. Daten auf diesen Speicherformen werden dauerhaft gespeichert (persistent) und nicht vom System selbst gelöscht. Zu den disk-basierten Verzeichnissen gehören:

  • /boot
  • /etc
  • /home
  • /opt
  • /root
  • /usr
  • /var
  • /tmp.

Die zweite Form von Dateisystemen sind virtuelle Dateisysteme. Diese befinden sich in der Regel im Arbeitsspeicher (RAM), sind schneller (bis zu 10x) und werden vom System für verscheiden Daten genutzt die nur temporär benötigt werden, weswegen sie auch nach dem Herunterfahren bzw. Neustart gelöscht werden. Verzeichnisse die diesem Typ entsprechen sind:

  • /proc
  • /sys
  • /dev
  • /run.

Das Root-Dateisystem (FHS‑Standard, alphabetisch)

/bin – „Binaries“: Essentielle Benutzerprogramme, die auch in Rettungs- oder Single-User-Modi verfügbar sein müssen.

/boot – „Boot“: Statische Bootloader-Dateien, Kernel (vmlinuz) und Initialramdisk (initrd). Ohne /boot kein Systemstart.

/dev – „Devices“: Geräte- und Spezialdateien (z. B. /dev/sda, /dev/null), über die der Kernel Hardware als Dateien verfügbar macht.

/etc – „Et Cetera“ (historisch): Host-spezifische Systemkonfiguration (z. B. /etc/passwd, /etc/fstab, /etc/ssh/sshd_config). Heute klar als „Config-Verzeichnis“ etabliert.

/home – „Home“ (optional im FHS): Benutzerverzeichnisse, z. B. /home/andy. Kann in Unternehmensumgebungen auch auf separaten Datenträgern/Netzfreigaben liegen.

/lib – „Libraries“: Essentielle Shared Libraries für Programme in /bin und /sbin sowie Kernel-Module.

/media – „Media“: Standard-Mountpunkt für automatisch eingehängte Wechselmedien (USB, DVD).

/mnt – „Mount“: Reservierter Mountpunkt für manuelles temporäres Einhängen (z. B. mount /dev/sdb1 /mnt).

/opt – „Optional“: Add-on-Software von Drittanbietern, die bewusst außerhalb der Paketverwaltung abgelegt wird.

/proc – „Processes“ (virtuell, Linux‑spezifisch): Laufzeitinformationen zu Prozessen und Kernel (z. B. /proc/cpuinfo). Existiert nur im RAM-Speicher.

/root – „Root‑Home“ (optional): Home-Verzeichnis des Superusers root; bewusst getrennt von /home, damit es auch bei Systemproblemen erreichbar bleibt.

/run – „Runtime“ (virtuell, Linux‑spezifisch): Flüchtige Laufzeitdaten (PID‑Dateien, Sockets). Inhalt wird beim Neustart verworfen.

/sbin – „System Binaries“: Administrative Systemprogramme (z. B. ip, reboot, fdisk), primär für Root gedacht.

/srv – „Service“: Datenspeicher für von diesem System bereitgestellte Dienste (z. B. /srv/www für Webinhalte).

/sys – „System“ (virtuell, Linux‑spezifisch): Schnittstelle zu Kernel- und Hardwareinformationen (z. B. /sys/class/net/).

/tmp – „Temporary“: Temporäre Dateien, die beim Neustart gelöscht werden dürfen. Für größere/über Neustarts persistente Temporärdaten (30-Tage) siehe /var/tmp.

/usr – historisch „user“: Heute „zweite Hierarchie“ für Programme, Bibliotheken und Dokumentation des Normalbetriebs (/usr/bin, /usr/lib, /usr/share). Historisch lagen hier Benutzerbereiche; der häufig kolportierte Begriff „Unix System Resources“ ist eher eine spätere Umdeutung.

/var – „Variable“: Häufig änderliche Daten wie Logs (/var/log), Caches (/var/cache), Spool‑Queues (/var/spool) und Zustandsdaten (/var/lib); /var/tmp überlebt Neustarts.

Distribution‑spezifische Verzeichnisse und Symlink‑Strategien

Einer der System-Links, hier weiß hinterlegt. Alle in diesem Fall in Fedora-Linux gesetzten Links gehen in das /usr-Verzeichnis

Warum überhaupt Symlinks (merged‑/usr)?

Früher konnten /usr und das Root‑FS getrennt (oder über das Netzwerk) bereitgestellt werden, weshalb ein Minimal‑Satz an Programmen/Libraries unter / liegen musste (/bin, /sbin, /lib). In modernen Systemen ist /usr beim Booten zuverlässig verfügbar. Viele Distributionen haben daher ein merged‑/usr-Layout eingeführt: /bin → /usr/bin, /sbin → /usr/sbin, /lib → /usr/lib, ggf. /lib64 → /usr/lib64. Das reduziert Duplikate, vereinfacht Images/Snapshots/Container – und dank Symlinks bleiben alte Pfade kompatibel.

Debian/Ubuntu:
Zusatzverzeichnisse: /lost+found (vom ext‑Dateisystem automatisch angelegt; Wiederherstellungsfragmente), /snap (Mountpunkte für Snap‑Pakete, primär Ubuntu).
Symlinks: Wechsel auf merged‑/usr seit Debian 10 und Ubuntu 20.04. Ziel: konsistente Pfade, weniger doppelte Dateien, saubere Trennung von „frühem Boot‑Satz“ und restlichem System, ohne alte Skripte zu brechen.

RHEL/Fedora:
Zusatzverzeichnisse: /lib64 (64‑Bit‑Libraries; FHS kennt /lib<qual> für alternative Formate), teils /afs (Mountpunkt für Andrew File System), in bestimmten Setups /image (temporäre Installer-/Image‑Mounts).
Symlinks: Vorreiter bei merged‑/usr (seit Jahren Standard). Vorteile: einfachere Pflege großer Flotten, reproduzierbarere Builds, kleinere/übersichtlichere Container‑Basisschichten.

SUSE (openSUSE, SLES, MicroOS):
Besonderheiten: starker Fokus auf transaktionale/immutable Ansätze (z. B. MicroOS mit btrfs‑Snapshots und minimalem Root‑Satz). /srv wird häufig bewusst für Service‑Daten genutzt, klar getrennt von /var (Zustände/Logs).
Symlinks: Frühe Einführung von merged‑/usr. Motivation: einheitliche, snapshot‑freundliche Struktur; kompatibel zu klassischen Pfaden über Symlinks.

Fazit

Der FHS ist die Landkarte des Linux‑Dateisystems. Alphabetisch geordnete Kernverzeichnisse erleichtern das Verständnis und die Prüfungsvorbereitung. Distributionen setzen zusätzlich auf merged‑/usr und ergänzende Verzeichnisse, um moderne Anforderungen – Container, Cloud, Immutable‑Designs – abzubilden. Symlinks sind dabei die Brücke zwischen Tradition (/bin/bash) und moderner Realität (/usr/bin/bash).

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Andreas Moor
Andreas Moor
@blog@andreas-moor.de

Hallo Fediverse, ich bin Andy!

Hier und auf meiner Website findest du mein akkumuliertes Linux-Sysadmin-Wissen, meine kleinen und größeren Projekte und die Tools, die ich nutze.

Viel Spaß beim stöbern, lesen und lernen! 🧑‍💻

236 Beiträge
16 Folgende