Mit NFS (Network File System) können Hosts Partitionen auf einem Remote-System mounten und verwenden, als wären sie ein lokales Dateisystem. Dadurch können Dateien an einem zentralen Ort organisiert werden, während entsprechend berechtigte Benutzer kontinuierlichen Zugriff auf sie haben.
Zur Zeit werden zwei Versionen von NFS verwendet. Die Version 2 von NFS (NFSv2), die seit mehreren Jahren verwendet wird, wird umfassend von verschiedenen Betriebssystemen unterstützt. Die Version 3 von NFS (NFSv3) verfügt über mehr Features, einschließlich einer variablen Dateigröße und einem besseren Fehlerreport. Red Hat Linux unterstützt beide Versionen und verwendet NFSv3 standardmäßig für die Verbindung mit einem Server, der es ebenfalls unterstützt.
Dieses Kapitel betrachtet die Version 2 von NFS, obwohl viele Konzepte auch für die Version 3 gelten. Weiterhin stehen nur grundsätzliche Konzepte und ergänzende Informationen zur Verfügung. Spezielle Anweisungen bezüglich der Konfiguration und Funktionsweise eines NFS auf Clients oder Servern finden Sie im Kapitel Network File System (NFS) im Red Hat Linux Handbuch benutzerdefinierter Konfiguration.
Linux verwendet für das NFS Datei-Sharing eine Kombination aus dem Kernel-Level-Support und den ständig ausgeführten Daemon-Prozessen, wobei der Support für das NFS im Linux-Kernel aktiviert sein muß. NFS verwendet Remote Procedure Calls (RPC), um Anfragen zwischen Clients und Servern zu senden. Dazu muss der Dienst portmap sowie die korrekten Runlevel für die NFS- Kommunikation aktiviert sein. Wenn Sie mit portmap arbeiten, wird durch verschiedene andere Prozesse sichergestellt, dass eine bestimmte NFS-Verbindung zugelassen und ohne Fehler ausgeführt werden kann:
rpc.mountd — Der ausgeführte Prozess empfängt die Anfrage des NFS-Clients für das Mounten und kontrolliert, ob diese mit einem aktuell exportierten Dateisystem übereinstimmt.
rpc.nfsd — Der Prozess, der die Benutzerplatz-Komponenten des NFS-Dienstes implementiert. Er verwendet den Linux-Kernel, um mit den dynamischen Vorgaben des NFS-Clients übereinzustimmen. Zum Beispiel zusätzliche Server-Threads für NFS- Clients.
rpc.lockd — Ein Daemon, der bei neueren Kernels nicht benötigt wird. Das Sperren von NFS-Dateien wird nun vom Kernel durchgeführt. Für Benutzer, die einen älteren Kernel verwenden, der standardmäßig diese Funktion nicht enthält, ist der Daemon im Paket nfs-utils enthalten.
rpc.statd — Implementiert das Network Status Monitor (NSM)-RPC- Protokoll. Es liefert die reeboot-Meldung, wenn ein NFS-Server neu gestartet wird, der nicht korrekt beendet wurde.
rpc.rquotad — Ein RPC-Server, der Remote- Benutzern Informationen über die Benutzerquote liefert.
Für den NFS-Dienst sind nicht alle diese Programme notwendig. Die einzigen Dienste, die aktiviert sein müssen, sind rpc.mountd , rpc.nfsd und portmap. Die anderen Daemonen bieten zusätzliche Funktionen; sie sollten nur verwendet werden, wenn die Serverumgebung dies erfordert.
Die Version 2 von NFS verwendet das User Datagram Protocol (UDP), um Netzwerk-Verbindung ohne Status zwischen dem Client und dem Server herzustellen. Die Version 3 von NFS kann UDP oder TCP verwenden, wenn sie über ein IP ausgeführt wird. Die UDP- Verbindung minimiert den Netzwerkverkehr, da der NFS-Server dem Client ein Cookie schickt, nachdem dieser für den Zugriff auf die gemeinsamen Dateien autorisiert worden ist. Dieses Cookie ist ein zufälliger Wert, der im Server gespeichert ist und mit allen RPC-Anfragen vom Client zum Server übermittelt wird. Der NFS-Server kann ohne Auswirkung auf die Clients neu gestartet werden, das Cookie beleibt dabei intakt.
NFS führt Authentifizierungen nur dann durch, wenn ein Client versucht, ein Remote-Dateisystem zu mounten. Der NFS-Server verwendet zuerst TCP-Wrapper, um den Zugriff einzuschränken. Die TCP-Wrapper lesen die Dateien /etc/hosts.allow und /etc/hosts.deny, um festzulegen, ob einem bestimmten Host der Zugriff auf den NFS-Server erlaubt oder verwehrt wird. Weitere Informationen zum Konfigurieren der Zugriffssteuerung mit TCP-Wrapper finden Sie unter Kapitel 15.
Erhält der Client die Berechtigung, die TCP-Wrapper zu passieren, verweist der NFS-Server auf die Konfigurationsdatei /etc/exports, um festzulegen, ob der Client über ausreichende Privilegien zum Mounten der exportierten Dateisysteme verfügt. Ist der Zugriff gewährt, werden alle Datei- und Verzeichnisvorgänge mit Hilfe von RPC zum Server gesendet.
![]() | Warnung |
---|---|
Die NFS-Mount-Privilegien werden speziell für einen Client und nicht für einen Benutzer gewährt. Auf exportierte Dateisysteme kann von allen Benutzern auf dem Remote-Rechner zugegriffen werden. Sie müssen beim Konfigurieren der Datei /etc/exports besonders vorsichtig sein, wenn Sie die Lese/Schreibberechtigung (rw) für das exportierte Dateisystem setzen. |
NFS benötigt Remote Procedure Calls (RPC), um zu funktionieren. portmap wird benötigt, um die RPC-Anfragen den korrekten Dienste zuzuordnen. portmap wird von den RPC-Prozessen benachrichtigt, wenn sie starten. Des Weiteren teilen die Anfragen die überwachte Port-Nummer sowie die Nummern des RPS-Programms mit, die aufgerufen werden. Der Client kontaktiert portmap auf dem Server mit einer bestimmten RPC-Programmnummer. portmap leitet dann den Client zur richtigen Port-Nummer um, damit er mit dem gewünschten Dienst kommunizieren kann.
Da RPC-basierte Dienste für die Verbindungen mit ankommenden Client-Anfragen von portmap abhängig sind, muss portmap verfügbar sein, bevor einer dieser Dienste gestartet wird. Wenn portmap aus irgendeinem Grund unerwartet abgebrochen wird, starten Sie portmap und alle Dienste, die beim Start ausgeführt wurden, neu.
Der portmap-Dienst kann zusammen mit den Hosts- Zugriffsdateien von TCP Wrappers (/etc/hosts.allow und /etc/hosts.deny) verwendet werden, um zu steuern, welche Remote-Systeme RPC-basierte Dienste auf dem Server verwenden dürfen. Unter Kapitel 15 finden Sie weitere Informationen. Die Regeln für die Zugriffssteuerung für portmap gelten für alle RPC-basierten Dienste. Alternativ können Sie auch jeden der NFS-RPC-Daemonen einzeln bestimmen, auf den sich eine bestimmte Regel für die Zugriffssteuerung beziehen soll. Die man-Seiten für rpc.mountd und rpc.statd enthalten Informationen über die genaue Syntax dieser Regeln.
Da portmap die Koordination zwischen RPC- Diensten und den Port-Nummern übernimmt, die für die Kommunikation mit den Diensten verwendet werden, ist es beim Lösen von Problemen sehr hilfreich, eine Übersicht über die aktuellen RPC- Dienste zu haben, die portmap verwenden. Der Befehl rpcinfo zeigt jeden RPC-basierten Dienst mit Port-Nummer, RPC-Programmnummer, Version und dem Typ des IP- Protokolls (TCP oder UDP) an.
Sie können rpcinfo -p verwenden, um sicherzustellen, dass die richtigen NFS-RPC-basierten Dienste für portmap aktiviert sind:
program vers proto port 100000 2 tcp 111 portmapper 100000 2 udp 111 portmapper 100024 1 udp 1024 status 100024 1 tcp 1024 status 100011 1 udp 819 rquotad 100011 2 udp 819 rquotad 100005 1 udp 1027 mountd 100005 1 tcp 1106 mountd 100005 2 udp 1027 mountd 100005 2 tcp 1106 mountd 100005 3 udp 1027 mountd 100005 3 tcp 1106 mountd 100003 2 udp 2049 nfs 100003 3 udp 2049 nfs 100021 1 udp 1028 nlockmgr 100021 3 udp 1028 nlockmgr 100021 4 udp 1028 nlockmgr |
Die Option -p prüft den Portmapper auf einem bestimmten Host bzw. schlägt standardmäßig localhost vor, wenn kein spezieller Host aufgeführt ist. Auf der rpcinfo-man-Seite stehen weitere Optionen zur Verfügung.
Im oben aufgeführten Output werden NFS-Dienste angezeigt, die ausgeführt werden. Wenn einer der NFS-Dienste nicht korrekt startet, kann portmap die RPC-Anfragen von Clients für diesen Dienst nicht dem richtigen Port zuordnen. In vielen Fällen führt das Neustarten von NFS als Root (/sbin/service nfs restart ) dazu, dass der Dienst korrekt in portmap registriert werden und arbeiten kann.
Zurück | Zum Anfang | Vor |
Zusätzliche Ressourcen | Zum Kapitelanfang | NFS-Server-Konfigurationsdateien |