1 📂 NFS (Network File System)
Um den Begriff NFS architektonisch sauber einzuordnen, müssen wir den Unterschied zu anderen Protokollen wie HTTP oder FTP betrachten. Während man bei FTP Dateien explizit herunter- und hochladen muss, arbeitet NFS als verteiltes Dateisystem. Sobald eine NFS-Freigabe aktiv ist, merkt der Benutzer oder eine Anwendung (z. B. ein im Netzwerk laufender Mediaplayer oder ein Docker-Container) überhaupt nicht, dass die Daten physikalisch auf einem ganz anderen Server liegen.
NFS verschmilzt entfernte Netzwerkspeicher direkt auf Kernel-Ebene mit dem lokalen Verzeichnisbaum.
Das Funktionsprinzip von NFS basiert auf einer klassischen Server-Client-Struktur:
- Der Server definiert in einer zentralen Konfigurationsdatei (/etc/exports), welche physikalischen Ordner (z. B. auf einem großen RAID-Verbund unter /srv/nfs) für welche IP-Adressen im Netzwerk freigegeben werden.
- Der Client bindet diese Freigabe über das Netzwerk an einen beliebigen leeren Ordner (z. B. /mnt/freigabe) an.
- Die Kommunikation erfolgt über RPC (Remote Procedure Calls). Moderne Versionen (NFSv4) benötigen dafür nur noch einen einzigen, festen Netzwerkport (TCP 2049), was die Absicherung über Firewalls im Vergleich zu älteren Versionen drastisch vereinfacht.
Die Kernphilosophie von NFS lautet:
„Biete maximale, native Linux-Performance im Netzwerk. Behandle entfernte Dateien exakt so, als lägen sie auf einer lokalen Festplatte, und bewahre die strikten POSIX-Dateiberechtigungen fehlerfrei.“
2 📦 DIE INSTALLATIONSBEFEHLE FÜR DIE „FANTASTISCHEN VIER“
Bei NFS müssen wir zwischen dem Server (der die Daten bereitstellt) und dem Client (der die Daten einbindet) unterscheiden. In den meisten Linux-Umgebungen sind beide Komponenten in den Paketquellen vorhanden.
2.1 1️⃣ Debian 13 „Trixie“
Debian trennt Server- und Client-Pakete sauber voneinander.
# === AUF DEM SERVER ===
sudo apt update && sudo apt install -y nfs-kernel-server
# Den Dienst aktivieren und starten
sudo systemctl enable --now nfs-server
# === AUF DEM CLIENT ===
sudo apt update && sudo apt install -y nfs-common
2.2 2️⃣ Arch Linux
Unter Arch Linux sind alle benötigten Werkzeuge im Paket nfs-utils gebündelt.
# === AUF SERVER & CLIENT IDENTISCH ===
sudo pacman -Sy --needed nfs-utils
# Nur auf dem Server den Dienst starten:
sudo systemctl enable --now nfs-server
2.3 3️⃣ Fedora
Fedora nutzt ebenfalls das standardisierte Dienst-Paket über DNF.
# === AUF SERVER & CLIENT IDENTISCH ===
sudo dnf install -y nfs-utils
# Nur auf dem Server den Dienst starten:
sudo systemctl enable --now nfs-server
2.4 4️⃣ openSUSE (Tumbleweed)
Unter openSUSE lässt sich das Paket komfortabel über Zypper einrichten.
# === AUF SERVER & CLIENT IDENTISCH ===
sudo zypper install -y nfs-kernel-server
# Nur auf dem Server den Dienst starten:
sudo systemctl enable --now nfs-server
3 🛠️ Konfiguration und Praxis
3.1 1. Eine Freigabe auf dem Server einrichten
Die Konfiguration erfolgt ausschließlich über die Datei /etc/exports.
# 1. Die Konfigurationsdatei als Admin öffnen
sudo nano /etc/exports
# 2. Folgende Zeile eintragen, um den Ordner /srv/nfs für das lokale Netz freizugeben:
# (rw = Schreibrechte, sync = Daten sofort schreiben, no_subtree_check = beschleunigt den Zugriff)
/srv/nfs 11.0.0.0/24(rw,sync,no_subtree_check)
# 3. Den Server zwingen, die Konfigurationsdatei ohne Neustart sofort neu einzulesen
sudo exportfs -arv
3.2 2. Die Freigabe auf dem Client einbinden (Mounten)
# 1. Einen leeren Zielordner erstellen
sudo mkdir -p /mnt/netzwerk_freigabe
# 2. Den entfernten Server-Ordner (Server-IP z. B. 11.0.0.5) temporär einbinden
sudo mount -t nfs 11.0.0.5:/srv/nfs /mnt/netzwerk_freigabe
# 3. Dauerhafte Einbindung: Folgende Zeile in die /etc/fstab des Clients eintragen:
# (nofail sorgt dafür, dass der Client bootet, selbst wenn der Server mal offline ist)
11.0.0.5:/srv/nfs /mnt/netzwerk_freigabe nfs defaults,nofail 0 0
4 ⚠️ DIE TYPISCHEN NFS-STOLPERSTEINE
4.1 Das „Alles gehört plötzlich dem Benutzer nobody“ - ID-Mapping-Problem
- Das Problem:
Ein Nutzer richtet eine NFSv4-Freigabe ein. Wenn er nun auf dem Client eine Datei im Netzwerkordner erstellt, wird diese zwar geschrieben, gehört aber laut ls -l auf dem Server dem mysteriösen Benutzer nobody und der Gruppe nogroup. Dateirechte funktionieren nicht mehr wie gewohnt. - Die Ursache:
NFSv4 nutzt ein striktes Namens- und ID-Mapping über den Dienst idmapd. Wenn die lokalen Benutzernamen oder die numerischen User-IDs (UID, z. B. 1000) auf dem Server und dem Client nicht absolut identisch sind, oder wenn die lokale Domain in der Konfiguration abweicht, kapituliert NFS und weist der Datei aus Sicherheitsgründen die anonyme ID nobody zu. Die Lösung: Das ID-Mapping konfigurieren. Auf Server und Client muss die Datei /etc/idmapd.conf geöffnet und die Domain des lokalen Netzwerks exakt gleich benannt werden:
Danach den Dienst mit sudo systemctl restart nfs-idmapd neu starten. Alternativ kann man bei der Freigabe in der /etc/exports den Parameter no_root_squash oder all_squash mitgeben, um IDs gezielt zu erzwingen.
4.2 Der „Client friert komplett ein, wenn der Server offline geht“ - Albtraum
- Das Problem:
Der NFS-Server (z. B. ein NAS im Keller) wird heruntergefahren. Sobald der Nutzer auf seinem Linux-Client nun den Dateimanager (wie Dolphin) öffnet oder ein Terminal in die Richtung bewegt, friert die gesamte grafische Oberfläche für Minuten komplett ein (Hard-Hang). - Die Ursache:
NFS versucht standardmäßig unendlich lange und mit maximaler Priorität auf Kernel-Ebene, den verlorenen Server wiederzuerreichen (Hard Mount). Das blockiert alle Systemaufrufe, die das Dateisystem abfragen wollen. Tipp: Beim Einbinden in der /etc/fstab unbedingt die Parameter soft und timeo verwenden.
Der Parameter soft erlaubt es dem Kernel, nach einer durch timeo definierten Zeitspanne (hier 10 Sekunden) einen Fehler auszugeben, anstatt das System komplett einfrieren zu lassen. Die UI bleibt dadurch flüssig bedienbar.
5 📝 LIZENZ-STATUS & FAZIT
NFS ist ein offener, freier Industriestandard und zu 100 % kostenlos und quelloffen.