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.2für beste Performance auf modernen RHEL-Systemen. - Security: Beschränken Sie Exports in
/etc/exportsimmer 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 |