Verteilte Daten

Das Network File System (NFS)

01.03.2002

Was passiert eigentlich, wenn man auf Daten entfernter Rechner per NFS zugreift? Ein Blick hinter die Theorie- und Praxiskulissen.

Bereits 1984, also lange, bevor Linus Torvalds auch nur annähernd an Linux dachte, und die Computer-Welt noch von Mainframes regiert wurde, machte sich das Unternehmen Sun Microsystems an die Aufgabe, ein System zu entwickeln, mit dem man über das Netzwerk auf Dateien anderer Rechner zugreifen und diese auslesen, verändern oder abspeichern konnte. 1985 war es schließlich soweit: Sun stellte "NFS Version 2" (NFS V2) der Öffentlichkeit vor. Mit der Veröffentlichung der Spezifikation selbst durchbrach Sun zum ersten Mal die geheiligte Tradition der Geheimhaltung solch technischer Einzelheiten – und ebnete damit letzten Endes den Siegeszug von NFS. Sun stellte allen anderen Firmen die Entwicklungsergebnisse als Lizenz zur Verfügung und ermöglichte somit einen De-facto-Standard in der Unix-Welt, der sich bis heute durchgesetzt hat und immer noch eine der erfolgreichsten Unix-Technologien darstellt.

Nach und nach wurde NFS auf alle möglichen Plattformen wie System V, BSD, AIX, HP-UX und später auch Linux portiert und ist heute Teil jeder Linux-Distribution. Doch was verbirgt sich hinter diesen drei Buchstaben? In erster Linie ein zustandsloses Protokoll, d. h., die beteiligten Programme müssen sich nicht merken, in welchem Zustand ihre Verhandlungen stehen, und sie müssen auch nicht dauernd miteinander reden.

Protokoll-Kollegen

1991 veröffentlichte SunSoft, eine Sun-Tochtergesellschaft, eine Protokoll-Suite namens ONC ("Open Network Computing"), in die alle an einem Datei-Zugriff über NFS beteiligten Protokolle integriert wurden.

Der NFS-Dienst vertritt dort die Applikationsebene, d. h., mit ihm wird direkt gearbeitet. Ein weiterer, wichtiger Kollege aus der ONC-Suite ist der "Remote Procedure Call"-Dienst (RPC), der die Empfangszentrale für Anfragen von Clients ist. Diese leitet er an die zugehörigen Ports und Server weiter, die die eigentliche Arbeit machen.

Da NFS verschiedenartige Plattformen, unabhängig von ihren Herstellern, verbinden möchte, gibt es bei der Verständigung oftmals Probleme. Diese löst der XDR-Dienst ("External Data Representation") durch Konvertierung der Daten, d. h., er übersetzt alle eingehenden Daten in ein für das Betriebssystem des Rechners verständliches Format. Auf der Applikationsebene tummeln sich nicht nur der NFS-Dienst selbst, sondern auch das Mount-Protokoll oder der Lock-Manager. Ersteres koordiniert den "Einhängevorgang" eines NFS-Server-Dateisystems in den Dateibaum des Client-Rechners. Dabei wird der NFS-Server gefragt und die Berechtigungsnachricht an den Client weitergegeben. Der Lock-Manager sperrt Dateien bzw. Ordner bei bereits bestehenden Verbindungen, um Sicherheit bei der Bearbeitung der Daten zu gewährleisten und konsistente Dateien sicherzustellen.

Der Portier

Da eine Kommunikation zwischen zwei Rechnern über sogenannte Sockets, also die IP-Adresse und die zugehörige Port-Nummer eines Dienstes, läuft, muss der Client, der seine Anfrage an den Server richtet, auch den Port kennen. Dies übernimmt der Portmapper, von Sun auch RPC-Bind genannt.

Abbildung 1: So funktioniert eine Client-Server-Abfrage

Dieses Server-Programm sollte standardmäßig auf Ihrem System installiert sein; es wird beim Booten meist automatisch gestartet. Es pflegt eine kleine Datenbank, in der sich die RPC-Dienste nach dem Startvorgang registrieren. Sie geben unter anderem ihre interne Programm- und Versionsnummer an, durch die bei Anfragen an den Portmapper eine Zuordnung zum richtigen Dienst sichergestellt wird. Man kann den Portmapper mit einem Portier vergleichen, der Ihnen, vorausgesetzt, Sie nennen Ihren richtigen Namen, Ihren Schlüssel aushändigt, mit dem Sie Ihr Zimmer aufschließen können.

Ein Client, der einen RPC-Dienst nutzen will, übergibt den passenden Protokolltyp, die Programm- und die Versionsnummer des Dienstes, sodass der Portmapper seine Datenbank durchsuchen und die auf die Anfrage passende Port-Nummer mitteilen kann.

Abbildung 2: Ausgabe der vom Portmapper verwalteten Versionsnummern und Dienstinfos

Dies geschieht pro Sitzung in der Regel einmal: Der Client merkt sich die Port-Nummer und interagiert nun auf direktem Wege mit dem passenden Server-Daemon. Doch wie starten Sie nun eine NFS-Anfrage?

Nehmen wir an, Sie möchten ein freigegebenes Datenverzeichnis /export/RPMS auf dem NFS-Server (nennen wir ihn defiant und geben ihm die IP-Adresse 192.168.1.1), manuell ins Verzeichnis /mnt/nfs/ auf dem Client-Rechner einhängen. Dazu verwenden Sie den Befehl mount, der vom Einhängen lokaler Datenträger hinlänglich bekannt sein dürfte. Dessen Syntax lautet

mount eventuelle_optionen server:/pfad_zum_verzeichnis lokaler_mountpoint

…, in unserem Beispiel also

mount -t NFS defiant:/export/RPMS /mnt/nfs

Damit fragt der Client-Daemon beim RPC-Dienst und beim Portmapper an und übergibt diesem als Programmnummer 100005, als Version 2 und als Protokoll UDP. Programmnummer und Version entnimmt der mount-Client seinen eigenen, internen Daten, die diese standardisierten Nummern enthalten

Abbildung 3: Der NFS-Mount-Vorgang

Daraufhin gibt der Portmapper als Zugriffsport den Port 1033 an (vgl. Abbildung 2), eine Information, die unmittelbar an den Client-Daemon weitergegeben wird. Im nächsten Schritt greift der Client über das entsprechende Socket (192.168.1.1:1033, wobei vor dem Doppelpunkt die IP-Adresse des Servers, dahinter die Port-Nummer für diese NFS-Verbindung steht) auf den Server-Rechner zu, wo der dortige Mount-Daemon direkt angesprochen wird. Von dort aus kommt der NFS-Daemon ins Spiel, der die Berechtigungen prüft und ein sogenanntes File Handle erstellt. Dabei handelt es sich um ein Datenobjekt mit eindeutiger Zufallszahl, die die Identifikation der Datei gewährleisten soll und nur einmalig vergeben wird. Mit diesen Parametern versehen geht die Anfrage wieder zurück zum Client-Rechner, der seinen Aufruf wiederum an den NFS-Client weitergibt. Dieser baut die Verbindung auf, um mit den gewünschten Daten arbeiten zu können.

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Ähnliche Artikel

  • Netzwerkdateisystem NFS
    Wenn mehrere Linux- oder Unix-Rechner via Netzwerk Daten tauschen sollen, gelingt das am einfachsten mit NFS.
  • Fein vernetzt
    Wer zu Hause ein kleines Linux-Netzwerk betreibt, möchte vermutlich darüber auch Dateien austauschen. Für eine dauerhafte und stabile Verbindung bietet sich dazu das Netzwerkdateisystem NFS an.
  • Linux-PCs miteinander verknüpfen
    Für viele PC-Benutzer stellt bereits die Administration eines einzigen Rechners eine große Herausforderung dar. Gehören Sie nicht dazu, lesen Sie in diesem Artikel, wie Sie ein komplettes Linux-Netzwerk erstellen.
  • System getankt
    Via PXE lassen sich auch Live-Systeme booten: Sie schalten einen plattenlosen Rechner einfach ein und er holt sein komplettes OS beim Server ab.
  • Daten sicher teilen
    Beim Datenzugriff auf entfernte Rechner kombinieren SSH-basierte Dateisysteme einfache Konfiguration und sichere Verschlüsselung.
Kommentare

Infos zur Publikation

LU 12/2014: ANONYM & SICHER

Digitale Ausgabe: Preis € 4,95
(inkl. 19% MwSt.)

Mit der Zeitschrift LinuxUser sind Sie als Power-User, Shell-Guru oder Administrator im kleinen Unternehmen monatlich auf dem aktuelle Stand in Sachen Linux und Open Source.

Sie sind sich nicht sicher, ob die Themen Ihnen liegen? Im Probeabo erhalten Sie drei Ausgaben zum reduzierten Preis. Einzelhefte, Abonnements sowie digitale Ausgaben erwerben Sie ganz einfach in unserem Online-Shop.

NEU: DIGITALE AUSGABEN FÜR TABLET & SMARTPHONE

HINWEIS ZU PAYPAL: Die Zahlung ist auch ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!       

Tipp der Woche

Ubuntu 14.10 und VirtualBox
Ubuntu 14.10 und VirtualBox
Tim Schürmann, 08.11.2014 18:45, 0 Kommentare

Wer Ubuntu 14.10 in einer virtuellen Maschine unter VirtualBox startet, der landet unter Umständen in einem Fenster mit Grafikmüll. Zu einem korrekt ...

Aktuelle Fragen

Nach Ubdates alles weg ...
Maria Hänel, 15.11.2014 17:23, 4 Antworten
Ich brauche dringen eure Hilfe . Ich habe am wochenende ein paar Ubdates durch mein Notebook von...
Brother Drucker MFC-7420
helmut berger, 11.11.2014 12:40, 1 Antworten
Hallo, ich habe einen Drucker, brother MFC-7420. Bin erst seit einigen Tagen ubuntu 14.04-Nutzer...
Treiber für Drucker brother MFC-7420
helmut berger, 10.11.2014 16:05, 2 Antworten
Hallo, ich habe einen Drucker, brother MFC-7420. Bin erst seit einigen Tagen ubuntu12.14-Nutzer u...
Can't find X includes.
Roland Welcker, 05.11.2014 14:39, 1 Antworten
Diese Meldung erhalte ich beim Versuch, kdar zu installieren. OpenSuse 12.3. Gruß an alle Linuxf...
DVDs über einen geeigneten DLNA-Server schauen
GoaSkin , 03.11.2014 17:19, 0 Antworten
Mein DVD-Player wird fast nie genutzt. Darum möchte ich ihn eigentlich gerne abbauen. Dennoch wür...