linux-ubuntu-debian storage networking nfs mounting performance

NFS Client Setup: Mounting & Performance (Artikel 022)

Konfiguration von NFS-Clients unter Ubuntu und Debian. Optimierung der Mount-Optionen für Performance und Stabilität, Einsatz von autofs und Troubleshooting von Netzwerk-Dateisystemen.

# NFS Client Deep Dive: Netzwerkspeicher effizient nutzen

TL;DR / Management Summary NFS (Network File System) ist das Rückgrat des Unix-Storage-Sharings. Während die Einrichtung trivial erscheint (mount server:/data /mnt), liegen die Tücken im Detail: Timeouts, Performance-Einbrüche bei hoher Latenz und der Unterschied zwischen NFSv3 (legacy) und NFSv4 (modern/stateful). Wir zeigen, wie man NFS-Shares stabil einbindet und mit rsize/wsize das Maximum aus der Leitung herausholt.


# 1. Einführung & Architektur

Das Protokoll verstehen.

NFS erlaubt es einem Server, Verzeichnisse über das Netzwerk zu exportieren, die auf dem Client wie lokale Dateisysteme wirken.

# NFSv3 vs. NFSv4

  • NFSv3: Statuslos (stateless). Schnell bei einfachem Setup, nutzt viele Ports (Portmapper/RPC), keine native Sicherheit (IP-basiert).
  • NFSv4: Statusbehaftet (stateful). Nutzt nur einen Port (2049/TCP), unterstützt ACLs und Kerberos-Authentifizierung. Standard für Enterprise.
graph LR
    subgraph "NFS Server (z.B. Proxmox/TrueNAS)"
        A[ZFS/LVM Data] --- B[nfs-kernel-server]
    end
    B -->|TCP 2049| C[NFS Client]
    subgraph "NFS Client (Ubuntu/Debian)"
        C --- D[VFS Layer]
        D --- E[Application]
    end

# 2. Grundkonfiguration

Vorbereitung und manueller Mount.

# Pakete installieren

sudo apt update
sudo apt install nfs-common

# Manueller Test-Mount

sudo mount -t nfs 192.168.1.100:/export/data /mnt/data

# 3. Performance Tuning: rsize & wsize

Die Geschwindigkeit optimieren.

Standardmäßig handeln Client und Server die Blockgröße aus. Manuell gesetzte Werte können bei 10G-Netzwerken oder hoher Latenz Wunder wirken.

# Empfohlene Enterprise-Optionen für High Performance
sudo mount -t nfs -o rw,nfsvers=4.1,rsize=1048576,wsize=1048576,hard,intr 192.168.1.100:/data /mnt/data
  • rsize/wsize: Blockgröße für Lese-/Schreibzugriffe (1048576 = 1MB).
  • hard vs soft: hard sorgt dafür, dass die Applikation wartet, bis der Server wieder da ist (Datenkonsistenz!). soft wirft nach Timeouts Fehler (Gefahr von Datenkorruption).
  • intr: Erlaubt es, hängende NFS-Prozesse per Signal zu unterbrechen.

# 4. Day-2 Operations: Automatisierung

Fstab vs. Autofs.

# Der klassische Weg: /etc/fstab

Gut für permanente Shares (z.B. Backup-Server).

# Eintrag in /etc/fstab
192.168.1.100:/data  /mnt/data  nfs  defaults,nfsvers=4.1,_netdev  0  0

_netdev: Wichtig! Sagt dem System, dass es erst auf das Netzwerk warten soll, bevor es mountet.

# Der elegante Weg: autofs

Mountet das Verzeichnis erst, wenn man darauf zugreift. Ideal, wenn der Server nicht immer online ist.

sudo apt install autofs
# Konfiguration in /etc/auto.master und /etc/auto.nfs

# 5. Troubleshooting & “War Stories”

Wenn ‘ls’ hängen bleibt.

# Story 1: “Der hängende Server (NFS Stale Handle)”

Symptom: ls /mnt/data ergibt “Stale file handle”. Ursache: Der Server hat Dateien oder das Dateisystem neu organisiert/gelöscht, aber der Client hat noch alte File-IDs im Cache. Lösung: umount -l /mnt/data (Lazy Unmount) und neu mounten.

# Story 2: “Mount-Hänger beim Boot”

Symptom: Server bootet nicht mehr und wartet ewig beim Netzwerk-Mount. Ursache: DNS-Auflösung für den NFS-Server geht noch nicht oder Switch-Port-Delay (STP). Lösung: Nutzen Sie IP-Adressen statt Hostnamen in der fstab oder setzen Sie die Option noauto,x-systemd.automount – das nutzt Systemd, um den Mount erst bei Zugriff durchzuführen.


# 6. Monitoring & Checks

# Performance messen

# Zeigt detaillierte NFS-Statistiken
nfsstat -c

# Live-Monitoring der Durchsatzrate
iostat -nt

# Export-Liste des Servers prüfen

showmount -e 192.168.1.100

# 7. Fazit & Empfehlung

  • Version: Nutzen Sie wenn möglich immer NFSv4.1 oder höher.
  • Netzwerk: Nutzen Sie dedizierte Storage-VLANs für NFS-Traffic.
  • Sicherheit: NFS ist unverschlüsselt! In unsicheren Netzen (Cloud) müssen Sie IPsec oder WireGuard Tunnel darunter legen.

# Anhang: Cheatsheet

Aufgabe Befehl
Version prüfen nfsstat -m
Erzwungener Unmount umount -f -l /mnt/data
RPC Status prüfen rpcinfo -p <server_ip>
Mount-Optionen sehen `cat /proc/mounts