layout: ../../../layouts/BlogLayout.astro title: “NFS Exports einrichten: Kompletter Konfigurations-Guide” description: “Meistere /etc/exports-Syntax, Sicherheitsoptionen und Performance-Tuning. Plattformspezifische Anleitungen für Ubuntu, Synology DSM, QNAP QTS und TrueNAS.” date: “2026-02-01” category: “Tutorial” readingTime: “10 min” slug: “nfs-exports-configuration-guide” tags: [“nfs”, “linux”, “synology”, “qnap”, “truenas”, “konfiguration”] locale: “de”

NFS-Exports sind das Fundament des Linux-Dateiaustauschs. Ob du einen neuen Fileserver aufsetzt, eine NAS-Appliance für die Migration konfigurierst oder Mount-Fehler debuggst — das Verständnis von /etc/exports ist essenziell. Dieser Guide behandelt Syntax, Sicherheitsoptionen, Performance-Tuning und plattformspezifische Anleitungen.

NFS-Grundlagen

NFS (Network File System) ermöglicht es einem Server, Verzeichnisse über das Netzwerk freizugeben. Clients mounten diese freigegebenen Verzeichnisse, als wären sie lokale Dateisysteme.

Komponenten:

/etc/exports-Syntax

Die Export-Datei definiert, welche Verzeichnisse freigegeben werden und mit welchen Berechtigungen:

/path/to/export    client(options)

Einfache Beispiele

# /data an einen einzelnen Host freigeben
/data    192.168.1.100(rw,sync,no_subtree_check)

# An ein ganzes Subnetz freigeben
/data    192.168.1.0/24(rw,sync,no_subtree_check)

# An mehrere Clients freigeben (verschiedene Optionen)
/data    192.168.1.0/24(rw,sync) 10.0.0.0/8(ro,sync)

# An jeden Client freigeben (mit Vorsicht verwenden)
/data    *(ro,sync,no_subtree_check)

# An einen Hostnamen oder DNS-Muster freigeben
/data    client.example.com(rw,sync)
/data    *.example.com(ro,sync)

Achtung bei Leerzeichen

Es darf kein Leerzeichen zwischen der Client-Angabe und der öffnenden Klammer stehen. 192.168.1.0/24(rw) ist korrekt. 192.168.1.0/24 (rw) exportiert an alle mit rw und an das Subnetz mit Standard (ro) — ein häufiger und gefährlicher Fehler.

Export-Optionen

Lese-/Schreiboptionen

OptionBeschreibung
rwLese-/Schreibzugriff
roNur-Lese-Zugriff (Standard)
syncErst antworten, wenn Änderungen auf Disk geschrieben sind (sicher, Standard)
asyncVor dem Schreiben antworten (schneller, aber Datenverlustrisiko bei Crash)

User-Mapping-Optionen

OptionBeschreibung
root_squashRoot (UID 0) auf nobody mappen (Standard, empfohlen)
no_root_squashRoot-Zugriff als Root erlauben (gefährlich)
all_squashAlle Benutzer auf nobody mappen
anonuid=NUID für anonyme/gesquashte Benutzer setzen
anongid=NGID für anonyme/gesquashte Benutzer setzen

Wann no_root_squash verwenden

Deaktiviere Root-Squashing nur, wenn der Client tatsächlich Root-Zugriff braucht — zum Beispiel ein Backup-Server, der Ownership über alle Dateien hinweg erhalten muss. Für Migrationstools wie syncopio stellt no_root_squash sicher, dass Berechtigungen beim Transfer korrekt erhalten bleiben.

Subtree-Optionen

OptionBeschreibung
subtree_checkPrüfen, ob Dateien im exportierten Subtree liegen (langsamer, sicherer)
no_subtree_checkSubtree-Prüfung überspringen (schneller, für die meisten Fälle empfohlen)

NFSv4-Optionen

OptionBeschreibung
fsid=0Als NFSv4-Pseudo-Root-Dateisystem markieren
crossmntTraversierung von Mount-Points innerhalb des Exports erlauben
sec=krb5Kerberos-Authentifizierung erfordern
sec=krb5iKerberos + Integritätsprüfung
sec=krb5pKerberos + Privacy (Verschlüsselung)

Plattformspezifische Einrichtung

Ubuntu / Debian

# NFS-Server installieren
sudo apt update
sudo apt install nfs-kernel-server

# Export-Verzeichnis erstellen
sudo mkdir -p /srv/data
sudo chown nobody:nogroup /srv/data

# Exports konfigurieren
echo '/srv/data  192.168.1.0/24(rw,sync,no_subtree_check,no_root_squash)' | sudo tee -a /etc/exports

# Änderungen anwenden
sudo exportfs -ra

# Prüfen
sudo exportfs -v

# Starten und aktivieren
sudo systemctl enable --now nfs-kernel-server

RHEL / Rocky Linux / AlmaLinux

# NFS-Server installieren
sudo dnf install nfs-utils

# Exports konfigurieren
sudo vi /etc/exports
# /srv/data    192.168.1.0/24(rw,sync,no_subtree_check)

# Anwenden und starten
sudo exportfs -ra
sudo systemctl enable --now nfs-server

# Firewall-Regeln
sudo firewall-cmd --permanent --add-service=nfs
sudo firewall-cmd --permanent --add-service=mountd
sudo firewall-cmd --permanent --add-service=rpc-bind
sudo firewall-cmd --reload

Synology DSM

  1. Öffne Systemsteuerung > Dateidienste > NFS
  2. NFS-Dienst aktivieren (NFSv4.1 für beste Performance auswählen)
  3. Gehe zu Freigegebene Ordner, wähle einen Ordner, klicke Bearbeiten
  4. Öffne den Tab NFS-Berechtigungen
  5. Klicke Erstellen und konfiguriere:
Synology DSM — NFS-Berechtigungsregel
Hostname/IP192.168.1.0/24
BerechtigungLesen/Schreiben
SquashRoot auf Admin mappen
Sicherheitsys
AsyncAktiviert
Synology DSM NFS-Berechtigungskonfiguration für einen freigegebenen Ordner

QNAP QTS

  1. Öffne Systemsteuerung > Netzwerk & Dateidienste > NFS-Dienst
  2. NFS aktivieren und NFS-Version auswählen
  3. Gehe zu Freigegebene Ordner, wähle den Ordner, klicke Berechtigungen für freigegebene Ordner bearbeiten
  4. Wechsle zum Tab NFS-Host-Zugriff
  5. Regel hinzufügen:

TrueNAS

  1. Navigiere zu Freigaben > Unix-Freigaben (NFS)
  2. Klicke Hinzufügen
  3. Konfiguriere:
  4. Klicke Absenden
  5. NFS-Dienst unter Dienste aktivieren

Performance-Tuning

Server-Seite

# NFS-Daemon-Threads erhöhen (Standard ist oft 8)
# Für ausgelastete Server 32-64 verwenden
echo 64 > /proc/fs/nfsd/threads

# Oder permanent in /etc/nfs.conf setzen
[nfsd]
threads = 64

# Aktuelle NFS-Statistiken überwachen
nfsstat -s

Client-seitige Mount-Optionen

# High-Performance-Mount
mount -t nfs4 server:/export /mnt -o \
  rsize=1048576,\        # 1 MB Lesegröße
  wsize=1048576,\        # 1 MB Schreibgröße
  nconnect=8,\           # 8 TCP-Verbindungen (Linux 5.3+)
  hard,\                 # Bei Fehler unbegrenzt wiederholen
  intr,\                 # Unterbrechung während Retry erlauben
  noatime,\              # Access-Times nicht aktualisieren
  nocto                  # Nicht bei Open aktualisieren (leseintensive Workloads)
OptionAuswirkungWann verwenden
nconnect=NGrößte Einzelverbesserung; N TCP-Verbindungen pro MountImmer (Linux 5.3+)
rsize/wsize=1MGrößere I/O-Operationen = weniger Round-TripsWorkloads mit großen Dateien
noatimeatime-Updates überspringen = weniger SchreibzugriffeLeseintensive Workloads
noctoRevalidierung bei Open überspringen = schnellere OpensWenn sich Daten selten ändern

nconnect ist ein Game-Changer

Eine einzelne NFS-TCP-Verbindung erreicht typischerweise maximal ~3-4 Gbps aufgrund von Head-of-Line-Blocking. Mit nconnect=8 kannst du eine 10-Gbps- oder sogar 25-Gbps-Leitung sättigen. Das ist die Mount-Option mit dem größten Einfluss auf den Durchsatz.

Fehlerbehebung

Essenzielle Diagnose-Befehle

# Aktuelle Exports anzeigen
exportfs -v

# Anzeigen, was der Client als verfügbar sieht
showmount -e server

# Prüfen, ob RPC-Dienste laufen
rpcinfo -p server

# NFS-Mount testen
mount -t nfs4 -v server:/export /mnt

# NFS-Statistiken prüfen
nfsstat -c     # Client-Statistiken
nfsstat -s     # Server-Statistiken

# Mount-Probleme debuggen
mount -t nfs4 -v -o nfsvers=4 server:/export /mnt 2>&1

Häufige Probleme

ProblemUrsacheLösung
”mount.nfs: access denied”Client-IP nicht in der Export-Liste/etc/exports prüfen, exportfs -ra ausführen
”mount.nfs: Connection timed out”Firewall blockiert NFS-PortsPorts 2049 (NFS), 111 (rpcbind) öffnen
”Permission denied” bei Dateienroot_squash oder UID-Mismatchno_root_squash verwenden oder UIDs mappen
Stale file handleExport wurde geändert, während gemountetAuf dem Client neu mounten: umount /mnt && mount ...
Sehr langsame PerformanceStandard-Mount-Optionennconnect=8,rsize=1048576,wsize=1048576 hinzufügen
”Program not registered”NFS-Server läuft nichtsystemctl start nfs-server

Firewall-Ports

Damit NFS über Firewalls funktioniert:

DienstPortProtokoll
NFS2049TCP (v4), TCP/UDP (v3)
rpcbind111TCP/UDP
mountdDynamisch*TCP/UDP
statdDynamisch*TCP/UDP

*Für NFSv3 mit Firewalls statische Ports in /etc/nfs.conf setzen:

[mountd]
port = 20048

[statd]
port = 32765

NFSv4 braucht nur Port 2049 — einer seiner Vorteile gegenüber v3.

Weiterführende Artikel