Network File System (NFS)

Debian Swirl

http://www.black-board.net
Es ist nicht gestattet dieses Tutorial losgelöst von dem Namen BlackBoard und der URL zu verbreiten.


Das Tutorial befindet sich noch in der Entwicklung. Wenn du mitwirken möchtest, melde dich hier.
Dies ist ein Aufruf - wenn du Ahnung hast, mach mit!



1. Was ist NFS?


Das Network File System (NFS) ist ein verteiltes Dateisystem, mit dessen Hilfe der User entfernte Verzeichnisse einhängen kann und diese so nutzen kann, als wären sie auf dem lokalen Rechner vorhanden. NFS arbeitet nach dem Client-Server-Modell, indem ein Server die Verzeichnisse exportiert und der Client diese in seinen Verzeichnisbaum einhängt und somit der Zugriff ermöglicht wird.

Mit NFS ist es nicht mehr notwendig, Kopien der Dateien auf mehreren Rechnern vorzuhalten, da alle Clients auf die Dateien des Servers zurückgreifen können.


2. Installation


Benötigte Pakete:

  • nfs-common - Server/Client
  • portmap - Server/Client
  • nfs-kernel-server - Server

Theoretisch ist es auch möglich NFS ohne den Portmapper zu betreiben. Da dies in der Vergangenheit aber des Öfteren zu Problemen führte, wird diese Möglichkeit hier nicht besprochen.


3. Server


Die Konfiguration des Servers ist relativ einfach, da hier lediglich die Shares in das Configfile '/etc/exports' einzutragen sind. Jeder Eintrag in dieser Datei besteht aus mindestens 2 Spalten und repräsentiert einen Share und seine Zugriffseigenschaften:

directory node1(option11,option12) node2(option21,option22)

1. Spalte (directory)

das Verzeichnis welches freigegeben werden soll, hierzu gehören auch alle Unterverzeichnisse

2. Spalte (node1)

IP -oder DNS-Adresse der NFS-Clients, die dieses Verzeichnis mounten dürfen Beispiele für gültige Einträge:
192.168.0.2
192.168.0.0/24
pc001
*.local.domain

Wird hier nichts eingetragen ist der Share für jeden Client erreichbar (auch über das Internet).

Optionen (für weitere Optionen siehe man exports):

  • ro
    read-only, nur Lesezugriff (default)
  • rw
    Lese-/Schreibzugriff
  • no_root_squash
    In der Defaulteinstellung (root_squash) wird root auf den User nobody gemapped, d.h. der root-User des Clients hat auf dem Share nur die Rechte des Users nobody. Wird nun die Option no_root_squash verwendet hat der Root-User des Clients auf dem Share ebenfalls Root-Rechte.
  • sync
    Synchronisiert Schreib- und Lesezugriffe. Neue Schreibzugriffe werden erst entgegengenommen, wenn der vorherige Schreibvorgang abgeschlossen ist (default).
  • async
    Erlaubt dem NFS-Server gegen das NFS-Protokoll zu verstoßen und Anfragen zu beantworten bevor die Änderungen auf die Festplatte geschrieben wurden.

Nachdem die Konfiguration abgeschlossen ist, muss lediglich der NFS-Server mit "/etc/init.d/nfs-kernel-server start" gestartet werden. Mit Hilfe des Befehls "rpcinfo -p" lässt sich noch prüfen, ob der Server läuft.

Um zu prüfen welche Verzeichnisse im Netz mit welchen Optionen freigegeben sind, verwendet man den Befehl "exportfs -v".


4. Client


Ist ein Server entsprechend konfiguriert, muss der entsprechende Share nur noch auf der Clientseite gemountet werden.

mount -t nfs -o rw,hard,intr server:/share /mnt/share

Eintrag in der /etc/fstab


# <file system> <mount point> <type> <options> <dump> <pass>
server:/share /mnt/share nfs rw,hard,intr 0 0

Einige Mountoptionen sollte man unbedingt einschalten, da sie das Verhalten des Clients bei einem Server-Crash oder einem Zusammenbruch des Netzwerkes bestimmen. Zu empfehlen ist der Gebrauch der beiden Optionen hard und intr.


hard

Der Share wird explizit "hart" gemountet (default). Bei einem längeren Timeout wird eine Fehlermeldung auf der Konsole ausgegeben und die Verbindungsversuche werden fortgesetzt.


intr

Ermöglicht die Unterbrechung von NFS-Aufrufen über Signale. Nützlich, wenn ein Server nicht antwortet und der Client abgebrochen werden muss.


5. Misc


Wie bereits zu Beginn erwähnt, wird der Share auf dem Client wie ein lokales Filesystem behandelt. Des Weiteren sollte man wissen, dass Linux die Zugriffsrechte nicht aufgrund des Benutzernamens verwaltet, sondern anhand der zugrundeliegenden UID (dies könnte an der einen oder anderen Stelle zu Sicherheitsproblemen führen).

User UID
Server: root 0
user_x 501

Client: root 0
user_y 501


In diesem Bespiel hätte user_y auf dem Client auf einmal Zugriff auf die Dateien des user_x auf dem Server. Da dies nicht immer gewollt ist, gibt es das sogenannte Squashing (siehe auch (4)), wodurch auf anonyme User gemappt werden kann (siehe auch: man exports).


Einige interessante Befehle für die Fehlersuche:

  • exportfs -v
    zeigt die exportierten Verzeichnisse
  • showmount
    zeigt, welche Clients auf den Server zugreifen
  • nfsstat
    einige Statistikdaten

6. Links


Verfasser


Letzte Aktualisierung 22.06.2006 von HazardEvil