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:

  1. Den Ablauf einer NFS-Kommunikation zwischen Client und Server nachvollziehen und die Rolle von Portmapper, mountd und nfsd erklären.
  2. Erklären, was ein NFS-Filehandle ist, wie es aufgebaut ist und warum es für den zustandslosen Zugriff zentral ist.
  3. Caching-Mechanismen und Konsistenzmodelle in NFS benennen, vergleichen und deren Auswirkungen auf Performance und Datenintegrität beurteilen.
  4. 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:

  1. Anfrage an den Portmapper: Wo ist mountd?
  2. Anfrage an mountd: Zugriff auf /home/beispiel → Filehandle erhalten
  3. Anfrage an den Portmapper: Wo ist nfsd?
  4. Anfrage an nfsd: LOOKUP auf datei.txt → Datei-Filehandle erhalten
  5. Anfrage an nfsd: READ auf das Filehandle → Dateiinhalt wird geliefert

Wichtigste NFS-Prozeduren im Überblick

ProzedurZweckAblauf
MOUNTVerzeichnis einbindenAnfrage an mountd → Rückgabe eines Filehandles
LOOKUPDatei suchenAnfrage an nfsd → Rückgabe des Datei-Filehandles
READDatei lesenAnfrage mit Datei-Filehandle → Rückgabe der Dateiinhalte
WRITEDatei schreibenAnfrage mit Filehandle, Offset und Daten → Bestätigung nach Schreiben
CREATEDatei erzeugenDatei wird erstellt, Server gibt Filehandle zurück
REMOVEDatei löschenDatei wird entfernt
MKDIRVerzeichnis erstellenVerzeichnis wird erstellt, Filehandle wird zurückgegeben
RMDIRVerzeichnis löschenVerzeichnis wird gelöscht
⏳ Lädt Dataview-Inhalt...

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

TypBeschreibung
Attribute CachingSpeichert Metadaten (Größe, Zeitstempel) lokal, um Serveranfragen zu reduzieren
Data CachingSpeichert Dateiinhalte im RAM des Clients, um Lesezugriffe zu beschleunigen

Konsistenzmodelle in NFS

ModellBeschreibung
Close-to-Open ConsistencyÄnderungen werden beim Schließen geschrieben und beim nächsten Öffnen gelesen
Write-Back CachingDaten 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

KriteriumNFSv3NFSv4
TransportprotokollUDP & TCP, Ports über PortmapperNur TCP, einheitlich über Port 2049
ZustandsmodellZustandslosZustandsbehaftet: Sessions, Sperren (Locking)
AuthentifizierungMaschinenbasiertBenutzerbasiert, Kerberos-Integration
NamensraumPro ExportGlobaler, zusammenhängender Namensraum
Delegierung & CachingNicht vorhandenDelegation von Zugriffsrechten zur Lastverteilung
ZeichensatzEingeschränktUnicode-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.

⏳ Lädt Dataview-Inhalt...

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.