linux-rhel-centos-fedora storage networking nfs rhel server

NFS Server & Client on RHEL (Artikel 088)

Implementierung von NFS-Diensten in der Red Hat Familie. Erfahren Sie, wie Sie den NFS-Server konfigurieren, Firewall-Regeln setzen und Clients sicher anbinden.

# NFS on RHEL: Zentraler Speicher im Enterprise-Netz

TL;DR / Management Summary In RHEL-Umgebungen ist NFS (Network File System) die Standardmethode zum Teilen von Dateien zwischen Linux-Servern. Ob für Shared-Web-Roots, Backup-Speicher oder Proxmox-ISOs: Die Einrichtung erfordert präzise Konfiguration des Dämons und der Firewalld, da NFS eine Vielzahl von Ports (RPC) nutzt. Wir fokussieren uns auf die stabile Version 4.2 und die Absicherung der Exports.


# 1. Einführung & Architektur

Der NFS-Dienst unter RHEL.

RHEL 8/9 nutzt standardmäßig NFSv4.2, das fortgeschrittene Features wie Server-Side Copy und Sparse-Files unterstützt.

# Architektur-Übersicht (Mermaid)

graph LR
    A[NFS Server: nfs-server.service] --> B[Exports Table: /etc/exports]
    B --> C{Firewalld Check}
    C -->|Allow nfs, mountd, rpc-bind| D[Internal Network]
    D --> E[NFS Client: nfs-utils]
    E --> F[VFS Mount Point]

# 2. Server-Setup: Exports bereitstellen

Den Speicher freigeben.

# Schritt 1: Pakete installieren & Dienst starten

sudo dnf install nfs-utils
sudo systemctl enable --now nfs-server

# Schritt 2: Verzeichnis exportieren

Datei: /etc/exports

/data/shared    192.168.1.0/24(rw,sync,no_root_squash,no_subtree_check)
  • rw: Lese- und Schreibzugriff.
  • sync: Änderungen sofort auf Disk schreiben (Sicherer).
  • no_root_squash: Erlaubt dem Client-Root, als Root auf dem Server zu agieren (Vorsicht: Sicherheitsrisiko!).

# Schritt 3: Firewall konfigurieren (Kritisch in RHEL!)

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

# 3. Client-Setup: Einbinden des Speichers

Zugriff vom RHEL-Gast.

# Schritt 1: Installation

sudo dnf install nfs-utils

# Schritt 2: Mounten via fstab (Persistent)

Datei: /etc/fstab

server01:/data/shared  /mnt/data  nfs  defaults,nfsvers=4.2,_netdev  0  0

Das Flag _netdev stellt sicher, dass RHEL auf das Netzwerk wartet, bevor es den Mount versucht.


# 4. Day-2 Operations: Management & Checks

Den Überblick behalten.

# Aktive Exports prüfen

# Auf dem Server
sudo exportfs -v

# Auf dem Client (Was bietet der Server an?)
showmount -e server01

# Status der Verbindungen

nfsstat -s # Server-Statistiken
nfsstat -c # Client-Statistiken

# 5. Troubleshooting & “War Stories”

Wenn der Mount hängen bleibt.

# Story 1: “Der hängende Boot (NFS-Timeout)”

Symptom: Der Server bootet 90 Sekunden lang nicht, weil er auf den NFS-Server wartet, der gerade offline ist. Ursache: Standard-Mount-Optionen blockieren den Bootvorgang. Lösung: Nutzen Sie x-systemd.automount in der fstab. Der Server bootet sofort, und das Filesystem wird erst in dem Moment gemountet, in dem ein Prozess darauf zugreift.

# Story 2: “User-ID Mismatch”

Symptom: Dateien gehören auf dem Client dem User nobody, obwohl sie auf dem Server admin gehören. Ursache: NFSv4 nutzt Domain-Mapping. Wenn die Domäne in /etc/idmapd.conf nicht übereinstimmt, mappt NFS alle User auf nobody. Lösung: Stellen Sie sicher, dass Domain = yourdomain.com auf beiden Systemen identisch gesetzt ist.


# 6. Fazit & Empfehlung

  • Version: Nutzen Sie immer nfsvers=4.2 für beste Performance auf modernen RHEL-Systemen.
  • Security: Beschränken Sie Exports in /etc/exports immer auf spezifische IP-Subnetze.
  • Performance: Nutzen Sie dedizierte Netzwerkkarten (oder VLANs) für NFS-Traffic, um die Applikations-Bandbreite nicht zu beeinträchtigen.

# Anhang: Cheatsheet

Aufgabe Befehl
Exports neu laden sudo exportfs -ra
RPC Status rpcinfo -p
Mount-Optionen sehen findmnt -t nfs4
NFS Server Logs journalctl -u nfs-server
Verbindung testen rpcinfo -t <server_ip> nfs