NFS - Network File System

Willemers Informatik-Ecke

NFS stellt Teile des Verzeichnisbaumes anderen Rechnern als virtuelle Dateisysteme zur Verfügung. Jede UNIX-Maschine ist in der Lage, sowohl als Client als auch Server aufzutreten. Um Zirkel zu vermeiden, in denen ein Rechner einem anderen Rechner Verzeichnisse zur Verfügung gestellt wird, die er von ihm selbst erhalten hat, können über NFS gemountete Verzeichnisse normalerweise nicht wieder exportiert werden. Das gilt nicht für Linux.

NFS basiert wie NIS auf dem RPC (Remote Procedure Call) und verwendet das Protokoll UDP. Für das RPC muss sowohl für den Client als auch den Server der portmap aktiviert werden, der unter UNIX das RPC implementiert. Server und Client müssen sich als Hostnamen ansprechen können, es müssen also Einträge für den jeweils anderen in der /etc/hosts stehen oder über einen Namensdienst wie DNS erreichbar sein.

Synchronität ist wichtig

Da der Eigentümer über die User-ID in den Dateien gespeichert wird, ist es wichtig, dass die Benutzer auf den verschiedenen Computern auch gleiche User-ID haben. Es empfielt sich auch, darauf zu achten, dass die Uhrzeiten auf den verschiedenen Rechnern nicht allzusehr auseinander laufen.

NFS wird nicht durch einen, sondern durch mehrere Serverprozesse getragen.1)

nfsd
Dies ist der Dämon, der die eigentlichen NFS-Anfragen der Clients beantwortet.
biod
Das ist der Block I/O Dämon. Er behandelt die Clientseite des NFS. Normalerweise laufen acht dieser Prozesse parallel.
rpc.lockd
Dieser Prozess behandelt die Sperranforderungen im NFS.
rpc.statd
Dieser Monitorprozess wird von dem Sperrdämon benötigt.
rpc.mountd
Der Mountdämon bearbeitet die Anfragen der Clients ein Verzeichnis einzubinden.

Diese Prozesse werden in den rc-Dateien beim Boot der Maschine gestartet.

Konfiguration des NFS-Servers

/etc/exports

Die Konfiguration von NFS ist relativ einfach. Der NFS-Server benennt in der Datei /etc/exports alle Verzeichnisse, die von anderen Hosts gemountet werden können. Diesen Pfadnamen können Einschränkung angehängt werden, die Rechner, Netze oder auch einzelne Benutzer betreffen. Auch Schreibrechte können auf diese Weise eingegrenzt werden. Der Inhalt einer exports könnte folgendermaßen aussehen:

/usr/src    *.willemer.edu
/home/arnold  @awfriends(rw)
/cdrom       (ro)

Die Zeilen bedeuten nacheinander:

/etc/exports neu einlesen

Nach Änderungen in der /etc/exports wird durch ein kill -1 auf den mountd die Konfiguration neu geladen. Unter Linux wird das Neuladen der exports durch das Aufruf kexportfs -r erreicht.

NFS-Client

Einbinden wie eine normale Platte

Der Client muss ein NFS-Laufwerk wie eine gewöhnliche Platte per mount in den Verzeichnispfad integrieren. Der Befehl dazu lautet:

mount -t nfs Hostname:Pfadname  Mountpoint

Hostname
Der Name des Rechners, der das Verzeichnis anbietet.
Pfadname
Der Pfad auf dem NFS-Server
Mountpoint
Die Stelle, an der das Verzeichnis lokal eingehängt werden soll.

Beispiel:

mount -t nfs idefix:/home/ingres /mnt

Dadurch wird das Verzeichnis /home/ingres auf dem Host idefix auf dem eigenen Host über den Pfadnamen /mnt erreichbar. Ein Befehl wie ls /mnt listet also den Inhalt des Verzeichnisses /home/ingres auf dem Host idefix.

Die Option zur Bestimmung des Dateisystems ist unterschiedlich:

System Option
Linux und FreeBSD -t nfs
SCO -f NFS
HP-UX -F nfs

So würde der obige Aufruf unter SCO lauten:

mount -f NFS idefix:/home/ingres /mnt

/etc/fstab

Man kann NFS-Laufwerke automatisch beim Booten einbinden lassen. Man erreicht dies durch einen Eintrag in der /etc/fstab. Als Dateisystemtyp wird nfs angegeben. Unter SCO stehen diese Einträge in der Datei /etc/default/filesys.

showmount

Um zu ermitteln, welche Verzeichnisse ein NFS-Server anbietet, wird der Befehl showmount verwendet:

silver# showmount -e gaston

Besonderheiten von PC-Systemen

MS-DOS-Systeme und deren Nachfahren, wie MS-Windows oder OS/2, sprechen Platten über Laufwerksbuchstaben an und besitzen keinen zusammenhängenden Verzeichnisbaum. Also werden auch NFS Verzeichnisse als Netzlaufwerke eingebunden. Das NFS verhält sich also hier aus Anwendersicht etwa wie ein Novell-Netzwerk.

Groß- und Kleinschreibung

OS/2 und MS-Windows ab Version 95 sind zwar in der Lage, UNIX-Namen zu verarbeiten, unterscheiden aber nicht zwischen Klein- und Großschreibung. Dagegen kann ein NFS-Laufwerk durchaus zwei Dateien in einem Verzeichnis halten, die sich nur durch Groß- und Kleinschreibung unterscheiden.

NFS-Server ohne UNIX

Beispielsweise für OS/2 gibt es durchaus auch NFS-Server. Das Problem in solchen Fällen ist, dass diese Systeme nicht in der Lage sind, alle UNIX Eigenschaften von Dateien in ihren Dateisystemen abzubilden. Darum sollte man solche Lösungen nur im Ausnahmefall verwenden.
1 vgl. Hurt, Craig: TCP/IP Network Administration. 1994. p. 204. Aktuelle Fassung: Hunt, Craig: TCP/ IP. Netzwerk- Administration.

Diese Seite basiert auf Inhalten aus dem Buch Arnold Willemer: Wie werde ich UNIX-Guru
Verlagsrechte bei galileo computing


Homepage (C) Copyright 2002 Arnold Willemer