NFS-Protokoll
In dieser interaktiven Lerneinheit verstehst du die technischen Abläufe der NFS-Kommunikation und lernst, wie Client und Server bei Dateizugriffen zusammenarbeiten. Du erfährst detailliert, welche Schritte bei einer NFS-Anfrage durchlaufen werden - von der ersten Kontaktaufnahme bis zum eigentlichen Dateizugriff, was dir bei der späteren Fehlersuche und Optimierung in der Praxis hilft.
Einführung
Montagmorgen, 8:45 Uhr. Ein Kollege ruft panisch an:
“Wir kommen nicht mehr an unsere Projektdateien!” Das gesamte Entwicklerteam steht still. Alle arbeiten mit zentral gespeicherten Daten – aber niemand weiß, wie genau dieses System im Hintergrund funktioniert. Ein Blick auf den Server zeigt: Der NFS-Dienst ist abgestürzt.

Solche Situationen passieren häufiger, als man denkt. Und sie zeigen, wie entscheidend es ist, zu verstehen, wie verteilte Dateisysteme wie NFS (Network File System) funktionieren.
In dieser Lerneinheit lernst du, wie ein NFS-Client mit dem Server kommuniziert – Schritt für Schritt und technisch nachvollziehbar. Du verstehst, welche Dienste beteiligt sind, wie Zugriffe organisiert werden und was im Hintergrund passiert, wenn du im Explorer auf ein Netzlaufwerk klickst.
Lernziele
Nach dieser Lerneinheit kannst du:
- Den Ablauf einer NFS-Kommunikation zwischen Client und Server nachvollziehen und die Rolle von Portmapper, mountd und nfsd erklären.
- Erklären, was ein NFS-Filehandle ist, wie es aufgebaut ist und warum es für den zustandslosen Zugriff zentral ist.
- Caching-Mechanismen und Konsistenzmodelle in NFS benennen, vergleichen und deren Auswirkungen auf Performance und Datenintegrität beurteilen.
- Die Unterschiede zwischen NFSv3 und NFSv4 analysieren und bewerten, welche Version für welchen Einsatzbereich besser geeignet ist.
Überleitung
Bevor wir in die Details einsteigen, klären wir zunächst die grundsätzliche Frage: Wozu braucht man überhaupt NFS? Was ist der praktische Nutzen – und welche Probleme löst dieses System im Arbeitsalltag?
Wozu braucht man überhaupt NFS?
In vielen Netzwerken arbeiten mehrere Clients mit zentral gespeicherten Daten – etwa in Unternehmen, Bildungseinrichtungen oder Rechenzentren. NFS (Network File System) sorgt dafür, dass du auf Dateien eines entfernten Servers so zugreifen kannst, als wären sie lokal gespeichert. In dieser Einheit lernst du, wie genau dieser Zugriff technisch abläuft.
Was passiert bei einer NFS-Kommunikation?
Damit ein Client erfolgreich auf ein Verzeichnis oder eine Datei auf einem NFS-Server zugreifen kann, müssen mehrere Dienste und Schritte zusammenarbeiten. Besonders wichtig ist dabei die Zusammenarbeit von Portmapper, mountd und nfsd.
Schritt-für-Schritt: Der Ablauf bei NFSv3
1. Server bereitstellen und Portmapper nutzen
Bevor etwas passiert, muss der NFS-Server aktiv sein. Er registriert sich beim Portmapper (ein Dienst auf Port 111), der als zentrale Vermittlungsstelle fungiert.
Der Portmapper beantwortet Anfragen von Clients und sagt ihnen, auf welchem Port sie einen bestimmten NFS-Dienst erreichen.
Schritt-für-Schritt: Der Ablauf bei NFSv3
2. Mount-Anfrage senden
Der Client fragt beim Portmapper, auf welchem Port der mountd-Dienst erreichbar ist. Dann stellt er dort eine Mount-Anfrage – also die Bitte, ein bestimmtes Verzeichnis auf dem Server einbinden zu dürfen.
Schritt-für-Schritt: Der Ablauf bei NFSv3
3. Filehandle empfangen
Wenn der Zugriff erlaubt ist, schickt der Server dem Client ein sogenanntes Filehandle zurück.
Ein Filehandle ist ein eindeutiger Identifikator für das Verzeichnis, das gemountet werden soll. Es wird bei allen weiteren Operationen verwendet.
Schritt-für-Schritt: Der Ablauf bei NFSv3
4. Port für Dateioperationen ermitteln
Der Client fragt erneut beim Portmapper – diesmal nach dem Port für den nfsd (NFS-Daemon), der die eigentlichen Dateioperationen übernimmt.
Schritt-für-Schritt: Der Ablauf bei NFSv3
5. Dateioperationen über RPC
Jetzt kann der Client über RPC (Remote Procedure Call) Operationen wie READ, WRITE, LOOKUP oder CREATE durchführen. Jede dieser Aktionen wird mit dem passenden Filehandle durchgeführt.
Beispiel: Eine Datei mit NFS lesen
Ein Client möchte die Datei /home/beispiel/datei.txt lesen:
- Anfrage an den Portmapper: Wo ist
mountd? - Anfrage an
mountd: Zugriff auf/home/beispiel→ Filehandle erhalten - Anfrage an den Portmapper: Wo ist
nfsd? - Anfrage an
nfsd:LOOKUPaufdatei.txt→ Datei-Filehandle erhalten - Anfrage an
nfsd:READauf das Filehandle → Dateiinhalt wird geliefert
Wichtigste NFS-Prozeduren im Überblick
| Prozedur | Zweck | Ablauf |
|---|---|---|
| MOUNT | Verzeichnis einbinden | Anfrage an mountd → Rückgabe eines Filehandles |
| LOOKUP | Datei suchen | Anfrage an nfsd → Rückgabe des Datei-Filehandles |
| READ | Datei lesen | Anfrage mit Datei-Filehandle → Rückgabe der Dateiinhalte |
| WRITE | Datei schreiben | Anfrage mit Filehandle, Offset und Daten → Bestätigung nach Schreiben |
| CREATE | Datei erzeugen | Datei wird erstellt, Server gibt Filehandle zurück |
| REMOVE | Datei löschen | Datei wird entfernt |
| MKDIR | Verzeichnis erstellen | Verzeichnis wird erstellt, Filehandle wird zurückgegeben |
| RMDIR | Verzeichnis löschen | Verzeichnis wird gelöscht |
Warum sind Performance und Konsistenz bei Dateizugriffen entscheidend?
Wenn mehrere Clients gleichzeitig auf dieselben Dateien im Netzwerk zugreifen, braucht es klare Regeln: Wer darf wann schreiben? Wer sieht welche Änderung? Und wie bleibt alles schnell und stabil? Genau hier kommen Filehandles, Caching-Strategien und moderne NFS-Versionen ins Spiel.
NFS-Dateihandles: Zugriff ohne Umwege
Ein NFS-Dateihandle ist ein eindeutiger Bezeichner für eine Datei oder ein Verzeichnis auf dem Server.
Der Client muss nicht bei jeder Aktion den Pfad neu übermitteln – er nutzt den Filehandle als direkten Zugriffsschlüssel.
Aufbau eines Filehandles
Ein typischer Filehandle besteht aus:
- Gerätenummer: Identifiziert das Speichergerät
- Inode-Nummer: Eindeutige ID der Datei im Dateisystem
- Generation Number: Zähler zur Erkennung wiederverwendeter Inodes
Diese Daten erlauben einen schnellen, zustandslosen Zugriff – typisch für NFSv3.
Caching: Schneller Zugriff mit Risiko
Um die Netzwerkbelastung zu senken, speichern Clients bestimmte Informationen lokal – das nennt man Caching. Doch je mehr lokal gespeichert wird, desto höher das Risiko für veraltete oder widersprüchliche Daten.
Zwei zentrale Cache-Formen
| Typ | Beschreibung |
|---|---|
| Attribute Caching | Speichert Metadaten (Größe, Zeitstempel) lokal, um Serveranfragen zu reduzieren |
| Data Caching | Speichert Dateiinhalte im RAM des Clients, um Lesezugriffe zu beschleunigen |
Konsistenzmodelle in NFS
| Modell | Beschreibung |
|---|---|
| Close-to-Open Consistency | Änderungen werden beim Schließen geschrieben und beim nächsten Öffnen gelesen |
| Write-Back Caching | Daten werden verzögert zurückgeschrieben – schneller, aber risikobehaftet |
| Lease-Based Consistency | (NFSv4) Server vergibt exklusive Rechte auf Zeitbasis – besser für parallele Zugriffe |
NFS-Versionen im Vergleich
| Kriterium | NFSv3 | NFSv4 |
|---|---|---|
| Transportprotokoll | UDP & TCP, Ports über Portmapper | Nur TCP, einheitlich über Port 2049 |
| Zustandsmodell | Zustandslos | Zustandsbehaftet: Sessions, Sperren (Locking) |
| Authentifizierung | Maschinenbasiert | Benutzerbasiert, Kerberos-Integration |
| Namensraum | Pro Export | Globaler, zusammenhängender Namensraum |
| Delegierung & Caching | Nicht vorhanden | Delegation von Zugriffsrechten zur Lastverteilung |
| Zeichensatz | Eingeschränkt | Unicode-Unterstützung für internationale Umgebungen |
Fazit
NFSv4 bringt deutlich mehr Kontrolle, Sicherheit und Performance. Es ersetzt den Portmapper, vereinfacht Firewalleinstellungen und bietet bessere Unterstützung für moderne Anwendungen. Trotzdem bleibt NFSv3 relevant – vor allem in etablierten, stabilen Systemen, die auf einfache, schnelle Kommunikation setzen.
Zusammenfassung und Ausblick
Zusammenfassung:
Kerninhalte im Überblick
In den letzten beiden Abschnitten hast du die Grundlagen und technischen Details von NFS (Network File System) kennengelernt. Dabei ging es sowohl um den Ablauf der Kommunikation als auch um zentrale Konzepte wie Filehandles, Caching und Versionen.
Kommunikationsablauf (NFSv3)
- NFS arbeitet nach dem Client-Server-Prinzip.
- Der Client nutzt den Portmapper, um Ports für die Dienste mountd (Mount-Anfragen) und nfsd (Dateioperationen) zu ermitteln.
- Über Remote Procedure Calls (RPC) stellt der Client Anfragen zur Nutzung entfernter Dateien.
- Der Zugriff erfolgt über sogenannte Filehandles, die als eindeutige Referenz auf Verzeichnisse oder Dateien dienen.
Technische Konzepte
- Filehandles bestehen aus Gerätenummer, Inode und Generation Number und erlauben einen schnellen, zustandslosen Zugriff.
- Caching verbessert die Performance durch lokale Zwischenspeicherung von Metadaten und Dateiinhalten.
- Konsistenzmodelle wie Close-to-Open Consistency oder Lease-Based Consistency (in NFSv4) regeln, wann Änderungen für andere Clients sichtbar sind.
NFSv3 vs. NFSv4
- NFSv3 ist zustandslos, verwendet UDP/TCP über den Portmapper und ist in vielen Alt-Systemen etabliert.
- NFSv4 ist zustandsbehaftet, arbeitet nur über TCP (Port 2049) und integriert Authentifizierung, Locking sowie einen globalen Namensraum.
- NFSv4 ist moderner, sicherer und einfacher in Firewalleinstellungen, während NFSv3 durch Einfachheit punktet.
Ausblick:
In der nächsten Einheit schauen wir un die Sicherheit an:
- Welche Risiken und Schwachstellen bestehen in älteren NFS-Versionen?
- Wie funktioniert die Authentifizierung in NFSv4, etwa über Kerberos?
- Welche Best Practices helfen dir dabei, NFS-Umgebungen sicher zu betreiben?
Du lernst, wie du NFS-Systeme nicht nur effizient, sondern auch robust und abgesichert einsetzt.