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:
- Das Verzeichnis /usr/src wird an alle Rechner der Domäne willemer.edu
exportiert.
- @awfriends dürfen lesend und schreibend zugreifen. Es handelt sich um
eine Netzgruppe (netgroup).
- Die /cdrom darf jeder lesen, aber niemand schreiben.
/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.