28 Verteilte Nutzung von Dateisystemen mit NFS #
Das NFS-Protokoll (Network File System) sorgt für den Zugriff auf Dateien auf einem Server, der ähnlich wie der Zugriff auf lokale Dateien erfolgt.
28.1 Überblick #
Über das standardisierte, erprobte und weithin unterstützte NFS-Netzwerkprotokoll (Network File System) können Dateien durch separate Hosts gemeinsam genutzt werden.
Über den NIS (Network Information Service) lässt sich eine zentrale Benutzerverwaltung im Netzwerk einrichten. Die Kombination aus NFS und NIS sorgt für die Zugriffskontrolle im Netzwerk anhand von Datei- und Verzeichnisrechten. NFS mit NIS macht ein Netzwerk für den Benutzer transparent.
In der Standardkonfiguration vertraut NFS dem Netzwerk uneingeschränkt – und damit auch jedem Rechner, der mit einem vertrauenswürdigen Netzwerk verbunden ist. Alle Benutzer mit Administratorrechten auf einem Rechner mit physischem Zugriff auf ein Netzwerk, dem der NFS-Server vertraut, können auf sämtliche Dateien zugreifen, die der Server zur Verfügung stellt.
Diese Sicherheitsstufe reicht in vielen Fällen aus, beispielsweise wenn das vertrauenswürdige Netzwerk tatsächlich vollständig privat ist, das Netzwerk sich in einem einzigen Schrank oder Computerraum befindet und kein unbefugter Zugriff möglich ist. In anderen Fällen ist die Notwendigkeit, einem ganzen Teilnetz als einer einzigen Einheit zu vertrauen, dagegen restriktiv und es besteht Bedarf an einem feiner abgestuften Vertrauensverhältnis. Für diese Fälle unterstützt NFS verschiedene Sicherheitsstufen mithilfe der KerberosInfrastruktur. Für Kerberos ist NFSv4 erforderlich, wobei diese Version standardmäßig verwendet wird. Weitere Informationen finden Sie in Chapter 6, Network Authentication with Kerberos.
Die folgenden Begriffe werden im YaST-Modul verwendet.
- Exporte
Ein von einem NFS-Server exportiertes Verzeichnis, das von Clients in ihr System integriert werden kann.
- NFS-Client
Der NFS-Client ist ein System, das NFS-Dienste eines NFS-Servers über das NFS-Protokoll verwendet. Das TCP/IP-Protokoll ist bereits in den Linux-Kernel integriert, weshalb keine zusätzliche Software installiert werden muss.
- NFS-Server
Der NFS-Server stellt NFS-Dienste für Clients bereit. Ein laufender Server ist von den folgenden Daemons abhängig:
nfsd
(Worker),idmapd
(ID-Name-Zuordnung für NFSv4, nur für bestimmte Szenarien),statd
(Dateisperren) undmountd
(Einhängeanforderungen).- NFSv3
NFSv3 ist die Implementierungsversion 3, die „alte“ zustandslose NFS, die die Clientauthentifizierung unterstützt.
- NFSv4
NFSv4 ist die neue Implementationsversion 4, die die sichere Benutzerauthentifizierung über Kerberos unterstützt. Für NFSv4 ist nur ein einzelner Port erforderlich; diese Version eignet sich daher besser für Umgebungen hinter einer Firewall als NFSv3.
Das Protokoll wird als https://datatracker.ietf.org/doc/html/rfc7530 angegeben.
- pNFS
Parallel NFS, eine Protokollerweiterung für NFSv4. Alle pNFS-Clients können direkt auf die Daten auf einem NFS-Server zugreifen.
Im Prinzip können alle Exporte allein mit IP-Adressen vorgenommen werden. Es ist ratsam, über ein funktionierendes DNS-System zu verfügen, um Zeitüberschreitungen zu vermeiden. DNS ist zumindest für die Protokollierung erforderlich, weil der mountd-Daemon Reverse-Lookups ausführt.
28.2 Installieren des NFS-Servers #
Der NFS-Server ist kein Bestandteil der Standardinstallation. Zum Installieren des NFS-Servers mit YaST wählen Sie
› , wählen Sie und aktivieren Sie die Option im Abschnitt . Klicken Sie auf . Die erforderlichen Pakete werden installiert.Wie NIS ist NFS ein Client-Server-System. Ein Rechner kann jedoch beides gleichzeitig sein – er kann Dateisysteme im Netzwerk zur Verfügung stellen (exportieren) und Dateisysteme anderer Hosts mounten (importieren).
Das lokale Einhängen von NFS-Volumes auf dem exportierenden Server wird in SUSE Linux Enterprise Server nicht unterstützt.
28.3 Konfigurieren des NFS-Servers #
Die Konfiguration eines NFS-Servers kann über YaST oder manuell erfolgen. NFS kann für die Authentifizierung auch mit Kerberos kombiniert werden.
28.3.1 Exportieren von Dateisystemen mit YaST #
Mit YaST können Sie einen Computer im Netzwerk als NFS-Server bereitstellen. Dies ist ein Server, der Verzeichnisse und Dateien an alle Hosts, die ihm Zugriff gewähren, oder an alle Mitglieder einer Gruppe exportiert. Der Server kann so außerdem Anwendungen bereitstellen, ohne dass die Anwendungen auf allen Hosts lokal installiert sein müssen.
Verfahren Sie wie folgt, um einen solchen Server einzurichten:
Starten Sie YaST, und wählen Sie Abbildung 28.1, „Konfiguration des NFS-Servers“). Sie werden ggf. aufgefordert, weitere Software zu installieren.
› (sieheAbbildung 28.1: Konfiguration des NFS-Servers #Aktivieren Sie das Optionsfeld
.Wenn eine Firewall im System aktiv ist (SuSEFirewall2), aktivieren Sie die Option
. YaST aktiviert dennfs
-Service und passt so die Konfiguration für den NFS-Server an.Überlegen Sie, ob die Verwendung der Option Anmerkung: NFSv2.
angebracht ist. Wenn Sie NFSv4 deaktivieren, unterstützt YaST lediglich NFSv3. Informationen zum Aktivieren von NFSv2 finden Sie inIst NFSv4 aktiviert, geben Sie außerdem den entsprechenden NFSv4-Domänennamen ein. Dieser Parameter gilt für den
idmapd
-Daemon, der für Kerberos-Einrichtungen oder für Fälle, in denen die Clients nicht mit numerischen Benutzernamen arbeiten können, erforderlich ist. Behalten Sie den Wertlocaldomain
(den Standardwert) bei, wenn Sieidmapd
nicht ausführen oder keine speziellen Anforderungen haben. Weitere Informationen zumidmapd
-Daemon finden Sie unter/etc/idmapd.conf
.
Klicken Sie auf
, wenn Sie einen sicheren Zugriff auf den Server benötigen. Als Voraussetzung hierfür muss Kerberos in der Domäne installiert sein und sowohl der Server als auch der Client müssen kerberisiert sein. Mit wechseln Sie zum nächsten Konfigurationsdialogfeld.Klicken Sie im oberen Bereich des Dialogfelds auf
. Das Verzeichnis wird exportiert.Falls Sie die zulässigen Hosts nicht bereits konfiguriert haben, wird automatisch ein weiteres Dialogfeld geöffnet, in dem Sie die Client-Informationen und Optionen angeben. Geben Sie den Platzhalter für den Host ein. (In der Regel können Sie die Standardeinstellungen beibehalten).
Es gibt vier mögliche Typen von Platzhalterzeichen für den Host, die für jeden Host festgelegt werden können: ein einzelner Host (Name oder IP-Adresse), Netzgruppen, Platzhalterzeichen (wie
*
, womit angegeben wird, dass alle Computer auf den Server zugreifen können) und IP-Netzwerke.Weitere Informationen zu diesen Optionen finden Sie auf der man-Seite zu
exports
.Klicken Sie zum Beenden der Konfiguration auf
.
28.3.2 Manuelles Exportieren von Dateisystemen #
Die Konfigurationsdateien für den NFS-Exportdienst lauten /etc/exports
und /etc/sysconfig/nfs
. Neben diesen Dateien ist /etc/idmapd.conf
für die NFSv4-Serverkonfiguration mit kerberisiertem NFS oder für Fälle, in denen die Clients keine numerischen Benutzernamen verarbeiten können, erforderlich.
Führen Sie den Start bzw. Neustart der Dienste mit dem Befehl systemctl restart nfsserver.service
aus. Hiermit wird auch der RPC-Portmapper neu gestartet, der vom NFS-Server benötigt wird.
Damit der NFS-Server bei jedem Booten gestartet wird, führen Sie sudo systemctl enable nfsserver
aus.
NFSv4 ist die aktuelle Version des NFS-Protokolls für SUSE Linux Enterprise Server. Die Verzeichnisse werden nunmehr in NFSv4 auf dieselbe Weise für das Exportieren vorbereitet wie in NFSv3.
In SUSE Linux Enterprise Server 11 war das Einhängen mit Einbindung in /etc/exports
obligatorisch. Dies wird weiterhin unterstützt, ist jedoch überholt.
/etc/exports
Die Datei
/etc/exports
enthält eine Liste mit Einträgen. Mit jedem Eintrag wird ein Verzeichnis angegeben, das freigegeben wird. Zudem wird angegeben, wie das Verzeichnis freigegeben wird. Ein typischer Eintrag in/etc/exports
besteht aus:/SHARED/DIRECTORY HOST(OPTION_LIST)
Beispiel:
/export/data 192.168.1.2(rw,sync)
Hier wird die IP-Adresse
192.168.1.2
verwendet, um den erlaubten Client zu identifizieren. Sie können auch den Namen des Hosts, ein Platzhalterzeichen, mit dem mehrere Hosts angegeben werden (*.abc.com
,*
usw.) oder Netzwerkgruppen (@my-hosts
) verwenden).Eine detaillierte Erläuterung aller Optionen und der entsprechenden Bedeutungen finden Sie auf der man-Seite zu
exports
(man exports
).Falls Sie
/etc/exports
bei laufendem NFS-Server geändert haben, müssen Sie den Server neu starten, damit die Änderungen in Kraft treten:sudo systemctl restart nfsserver
./etc/sysconfig/nfs
Die Datei
/etc/sysconfig/nfs
enthält einige Parameter, die das Verhalten des NFSv4-Server-Daemon bestimmen. Der ParameterNFS4_SUPPORT
muss dabei aufyes
(Standard) gesetzt werden. Der ParameterNFS4_SUPPORT
bestimmt, ob der NFS-Server NFSv4-Exporte und -Clients unterstützt.Falls Sie
/etc/sysconfig/nfs
bei laufendem NFS-Server geändert haben, müssen Sie den Server neu starten, damit die Änderungen in Kraft treten:sudo systemctl restart nfsserver
.Tipp: EinhängeoptionenIn SUSE Linux Enterprise Server 11 war das Einhängen mit
--bind
in/etc/exports
obligatorisch. Dies wird weiterhin unterstützt, ist jedoch überholt. Die Verzeichnisse werden nunmehr in NFSv4 auf dieselbe Weise für das Exportieren vorbereitet wie in NFSv3.Anmerkung: NFSv2Wenn NFS-Clients weiterhin von NFSv2 abhängig sind, aktivieren Sie es auf dem Server in
/etc/sysconfig/nfs
, indem Sie Folgendes festlegen:NFSD_OPTIONS="-V2" MOUNTD_OPTIONS="-V2"
Überprüfen Sie nach Neustart des Diensts mit dem folgenden Kommando, ob Version 2 verfügbar ist:
tux >
cat /proc/fs/nfsd/versions +2 +3 +4 +4.1 -4.2/etc/idmapd.conf
Ab SLE 12 SP1 ist der
idmapd
-Daemon nur dann erforderlich, wenn die Kerberos-Authentifizierung verwendet wird oder die Clients keine numerischen Benutzernamen verarbeiten können. Linux-Clients können numerische Benutzernamen seit dem Linux-Kernel 2.6.39 verarbeiten. Deridmapd
-Daemon führt die Name-ID-Zuordnung für NFSv4-Anforderungen an den Server aus und schickt Antworten an den Client.Falls
idmapd
erforderlich ist, muss dieser Daemon auf dem NFSv4-Server ausgeführt werden. Die Name-ID-Zuordnung auf dem Client erfolgt mitnfsidmap
das vom Paket bereitgestellt wird. nfs-clientbereitgestellt.Stellen Sie sicher, dass Benutzernamen und IDs (UIDs) Benutzern auf eine einheitliche Weise auf allen Rechnern zugewiesen werden, auf denen möglicherweise Dateisysteme mit NFS freigegeben werden. Dies kann mit NIS, LDAP oder einem beliebigen einheitlichen Domänenauthentifizierungsmechanismus in Ihrer Domäne erreicht werden.
Der Parameter
Domain
muss in der Datei/etc/idmapd.conf
für den Client und den Server identisch festgelegt sein. Wenn Sie sich nicht sicher sind, belassen Sie die Domäne in den Server- und den Clientdateien alslocaldomain
. Eine Beispielkonfigurationsdatei sieht folgendermaßen aus:[General] Verbosity = 0 Pipefs-Directory = /var/lib/nfs/rpc_pipefs Domain = localdomain [Mapping] Nobody-User = nobody Nobody-Group = nobody
Starten Sie den
idmapd
-Daemon mitsystemctl start nfs-idmapd
. Falls Sie/etc/idmapd.conf
bei laufendem Daemon geändert haben, müssen Sie den Daemon neu starten, damit die Änderungen in Kraft treten:systemctl start nfs-idmapd
.Weitere Informationen finden Sie auf den man-Seiten zu
idmapd
undidmapd.conf
(man idmapd
undman idmapd.conf
).
28.3.3 NFS mit Kerberos #
Wenn die Kerberos-Authentifizierung für NFS verwendet werden soll, muss die GSS-Sicherheit (Generic Security Services) aktiviert werden. Wählen Sie im ersten YaST-NFS-Server-Dialogfeld die Option
. Zur Verwendung dieser Funktion muss ein funktionierender Kerberos-Server zur Verfügung stehen. YaST richtet diesen Server nicht ein, sondern nutzt lediglich die über den Server bereitgestellten Funktionen. Wenn Sie die Authentifizierung mittels Kerberos verwenden möchten, müssen Sie zusätzlich zur YaST-Konfiguration mindestens die nachfolgend beschriebenen Schritte ausführen, bevor Sie die NFS-Konfiguration ausführen:Stellen Sie sicher, dass sich Server und Client in derselben Kerberos-Domäne befinden. Beide müssen auf denselben KDC-Server (Key Distribution Center) zugreifen und die Datei
krb5.keytab
gemeinsam verwenden (der Standardspeicherort auf allen Rechnern lautet/etc/krb5.keytab
). Weitere Informationen zu Kerberos finden Sie unter Chapter 6, Network Authentication with Kerberos.Starten Sie den gssd-Dienst auf dem Client mit
systemctl start rpc-gssd.service
.Starten Sie den svcgssd-Dienst auf dem Server mit
systemctl start rpc-svcgssd.service
.
Bei der Kerberos-Authentifizierung muss der idmapd
-Daemon ebenfalls auf dem Server ausgeführt werden. Weitere Informationen finden Sie unter /etc/idmapd.conf
.
Weitere Informationen zum Konfigurieren eines kerberisierten NFS finden Sie über die Links in Abschnitt 28.5, „Weiterführende Informationen“.
28.4 Konfigurieren der Clients #
Wenn Sie Ihren Host als NFS-Client konfigurieren möchten, müssen Sie keine zusätzliche Software installieren. Alle erforderlichen Pakete werden standardmäßig installiert.
28.4.1 Importieren von Dateisystemen mit YaST #
Autorisierte Benutzer können NFS-Verzeichnisse eines NFS-Servers über das YaST-NFS-Clientmodul in den lokalen Dateibaum einhängen. Führen Sie dazu die folgenden Schritte aus:
Starten Sie das YaST-NFS-Client-Modul.
Klicken Sie auf dem Karteireiter
auf . Geben Sie den Hostnamen des NFS-Servers, das zu importierende Verzeichnis und den Einhängepunkt an, an dem das Verzeichnis lokal eingehängt werden soll.Wenn Sie NFSv4 verwenden, wählen Sie die Option
auf der Registerkarte . Der muss zudem denselben Wert aufweisen, der beim NFSv4-Server verwendet wird. Die Standarddomäne istlocaldomain
.Wenn die Kerberos-Authentifizierung für NFS verwendet werden soll, muss die GSS-Sicherheit aktiviert werden. Wählen Sie
.Wenn Sie eine Firewall nutzen und den Zugriff auf den Dienst von Ferncomputern aus zulassen möchten, aktivieren Sie auf dem Karteireiter
die Option . Der Status der Firewall wird neben dem Kontrollkästchen angezeigt.Klicken Sie zum Speichern der Änderungen auf
.
Die Konfiguration wird in /etc/fstab
geschrieben und die angegebenen Dateisysteme werden eingehängt. Wenn Sie den YaST-Konfigurationsclient zu einem späteren Zeitpunkt starten, wird auch die vorhandene Konfiguration aus dieser Datei gelesen.
Auf (festplattenlosen) Systemen, in denen die Stammpartition über das Netzwerk als NFS-Freigabe eingehängt ist, müssen Sie beim Konfigurieren des Netzwerkgeräts, über das die NFS-Freigabe erreichbar ist, besonders vorsichtig vorgehen.
Wenn Sie das System herunterfahren oder neu booten, werden in der standardmäßigen Reihenfolge zunächst die Netzwerkverbindungen deaktiviert und anschließend die Stammpartition ausgehängt. Bei einem NFS-Root kann dies zu Problemen führen: Die Stammpartition kann nicht fehlerfrei ausgehängt werden, da die Netzwerkverbindung zur NFS-Freigabe schon nicht mehr aktiviert ist. Damit das System nicht das relevante Netzwerkgerät deaktiviert, öffnen Sie die Registerkarte gemäß Abschnitt 16.4.1.2.5, „Aktivieren des Netzwerkgeräts“ und wählen Sie unter die Option .
28.4.2 Manuelles Importieren von Dateisystemen #
Voraussetzung für den manuellen Import eines Dateisystems von einem NFS-Server ist ein aktiver RPC-Port-Mapper. Der Start des nfs
-Dienstes erfordert einige Vorsicht; starten Sie ihn daher mit systemctl start nfs
als root
. Danach können ferne Dateisysteme mit mount
wie lokale Partitionen in das Dateisystem eingehängt werden:
tux >
sudo mount HOST:REMOTE-PATHLOCAL-PATH
Geben Sie zum Beispiel zum Import von Benutzerverzeichnissen vom nfs.example.com
-Rechner folgendes Kommando ein:
tux >
sudo mount nfs.example.com:/home /home
28.4.2.1 Verwenden des Diensts zum automatischen Einhängen #
Ferne Dateisysteme können mit dem autofs-Daemon automatisch eingehängt werden. Fügen Sie den folgenden Eintrag in der Datei /etc/auto.master
hinzu:
/nfsmounts /etc/auto.nfs
Nun fungiert das Verzeichnis /nfsmounts
als Root-Verzeichnis für alle NFS-Einhängungen auf dem Client, sofern die Datei auto.nfs
entsprechend ausgefüllt wurde. Der Name auto.nfs
wurde nur der Einfachheit halber ausgewählt – Sie können einen beliebigen Namen auswählen. Fügen Sie der Datei auto.nfs
wie folgt Einträge für alle NFS-Einhängungen hinzu:
localdata -fstype=nfs server1:/data nfs4mount -fstype=nfs4 server2:/
Aktivieren Sie die Einstellungen mit systemctl start autofs
als root
. In diesem Beispiel wird /nfsmounts/localdata
, das Verzeichnis /data
von server1
, mit NFS eingehängt und /nfsmounts/nfs4mount
von server2
wird mit NFSv4 eingehängt.
Wenn die Datei /etc/auto.master
während der Ausführung des autofs-Diensts bearbeitet wird, muss die automatische Einhängung mit systemctl restart autofs
erneut gestartet werden, damit die Änderungen wirksam werden.
28.4.2.2 Manuelles Bearbeiten von /ect/fstab
#
Ein typischer NFSv3-Einhängeeintrag in /etc/fstab
sieht folgendermaßen aus:
nfs.example.com:/data /local/path nfs rw,noauto 0 0
Bei NFSv4-Einhängepunkten geben Sie nfs4
statt nfs
in die dritte Spalte ein:
nfs.example.com:/data /local/pathv4 nfs4 rw,noauto 0 0
Mit der Option noauto
wird verhindert, dass das Dateisystem beim Starten automatisch eingehängt wird. Wenn Sie das jeweilige Dateisystem manuell einhängen möchten, können Sie das Einhängekommando auch kürzen, indem Sie nur den Einhängepunkt angeben:
tux >
sudo mount /local/path
Wenn die Option noauto
nicht angegeben ist, wird das Einhängen dieser Dateisysteme beim Start durch die init-Skripte des Systems geregelt.
28.4.3 pNFS (paralleles NFS) #
NFS wurde in den 1980er-Jahren entwickelt und gehört damit zu den ältesten Protokollen. Zum Freigeben kleinerer Dateien ist NFS völlig ausreichend. Wenn Sie dagegen große Dateien übertragen möchten oder wenn eine große Anzahl Clients auf die Daten zugreifen soll, wird ein NFS-Server rasch zu einer Engstelle, die die Systemleistungen erheblich beeinträchtigt. Dies liegt daran, dass die Dateien rasch größer werden, wobei die relative Ethernet-Geschwindigkeit nicht ganz mithalten kann.
Wenn Sie eine Datei von einem normalen NFS-Server anfordern, werden die Metadaten der Datei nachgeschlagen, die Daten dieser Datei werden zusammengestellt und die Datei wird schließlich über das Netzwerk an den Client übertragen. Der Leistungsengpass wird jedoch in jedem Fall ersichtlich, unabhängig davon, wie groß oder klein die Dateien sind:
Bei kleinen Dateien dauert das Sammeln der Metadaten am längsten.bereitgestellt.
Bei großen Dateien dauert das Übertragen der Daten vom Server auf den Client am längsten.
pNFS (paralleles NFS) trennt die Metadaten des Dateisystems vom Speicherort der Daten und überwindet so diese Einschränkungen. Für pNFS sind dabei zwei Arten von Servern erforderlich:
Ein Metadaten- oder Steuerungsserver, der den gesamten verbleibenden Verkehr (nicht den Datenverkehr) abwickelt
Mindestens ein Speicherserver, auf dem sich die Daten befinden
Der Metadatenserver und die Speicherserver bilden gemeinsam einen einzigen logischen NFS-Server. Wenn ein Client einen Lese- oder Schreibvorgang startet, teilt der Metadatenserver dem NFSv4-Client mit, auf welchem Speicherserver der Client auf die Dateiblöcke zugreifen soll. Der Client kann direkt auf dem Server auf die Daten zugreifen.
SUSE Linux Enterprise Server unterstützt pNFS nur auf der Clientseite.
28.4.3.1 Konfigurieren eines pNTP-Clients mit YaST #
Befolgen Sie die Anweisungen unter Prozedur 28.2, „Importieren von NFS-Verzeichnissen“; aktivieren Sie jedoch das Kontrollkästchen und (optional) . YaST führt alle erforderlichen Schritte aus und schreibt die erforderlichen Optionen in die Datei /etc/exports
.
28.4.3.2 Manuelles Konfigurieren eines pNTP-Clients #
Beginnen Sie gemäß Abschnitt 28.4.2, „Manuelles Importieren von Dateisystemen“. Der Großteil der Konfiguration wird durch den NFSv4-Server ausgeführt. Der einzige Unterschied für pNFS besteht darin, dass die Option minorversion
und der Metadatenserver MDS_SERVER in das Kommando mount
eingefügt werden:
tux >
sudo mount -t nfs4 -o minorversion=1 MDS_SERVER MOUNTPOINT
Als Hilfe für die Fehlersuche ändern Sie den Wert im Dateisystem /proc
:
tux >
sudo echo 32767 > /proc/sys/sunrpc/nfsd_debugtux >
sudo echo 32767 > /proc/sys/sunrpc/nfs_debug
28.5 Weiterführende Informationen #
Außer auf den man-Seiten zu exports
, nfs
und mount
stehen Informationen zum Konfigurieren eines NFS-Servers und -Clients unter /usr/share/doc/packages/nfsidmap/README
zur Verfügung. Weitere Online-Dokumentation finden Sie auf folgenden Websites:
Die detaillierte technische Dokumentation finden Sie online unter SourceForge.
Anweisungen zum Einrichten eines kerberisierten NFS finden Sie unter NFS Version 4 Open Source Reference Implementation.
Falls Sie Fragen zu NFSv4 haben, lesen Sie die Linux NFSv4-FAQ.