GNU/Linux >> LINUX-Kenntnisse >  >> Cent OS

Leitfaden für Anfänger zu NFS in CentOS / RHEL

Einführung in NFS

Ein Netzwerkdateisystem (NFS) ermöglicht es einem Server, Verzeichnishierarchien (Dateisysteme) mit entfernten Systemen über ein Netzwerk gemeinsam zu nutzen. NFS-Server exportieren das Verzeichnis und NFS-Clients mounten das exportierte Verzeichnis. Das Serververzeichnis erscheint den Client-Systemen dann so, als wären es lokale Verzeichnisse. NFS reduziert den Speicherbedarf und verbessert die Datenkonsistenz und -zuverlässigkeit, da Benutzer auf Dateien zugreifen, die auf einem zentralisierten Server gespeichert sind.

RedHat Linux 7 unterstützt NFS Version 2 (NFSv2) nicht. Die folgenden zwei Versionen werden unterstützt:
NFS-Version 3 (NFSv3).
NFS-Version 4 (NFSv4).

NFS basiert auf Remote Procedure Calls (RPC) zwischen Clients und Servern. RPC-Dienste werden vom rpcbind-Dienst gesteuert. Der rpcbind-Dienst ersetzt portmap, das in früheren Linux-Versionen verwendet wurde, um RPC-Programmnummern Kombinationen von IP-Adressen-Port-Nummern zuzuordnen. rpcbind antwortet auf Anfragen für RPC-Dienste und baut Verbindungen zum angeforderten RPC-Dienst auf. rpcbind wird mit NFSv4 nicht verwendet, da der Server auf dem bekannten TCP-Port 2049 lauscht. Die Mount- und Locking-Protokolle wurden ebenfalls in das NFSv4-Protokoll integriert, daher interagiert NFSv4 auch nicht mit den lockd- und rpc.statd-Daemons.

NFS-Server und RPC-Prozesse

Durch Starten des nfs-server-Dienstes werden der NFS-Server und andere RPC-Prozesse gestartet, die zum Bearbeiten von Anforderungen für gemeinsam genutzte NFS-Dateisysteme erforderlich sind. Sie können den Kurznamen „nfs verwenden “ statt „nfs-server “ beim Starten des Dienstes. Beispiel:

# systemctl start nfs

Dies ist der NFS-Serverprozess, der den Teil des NFS-Dienstes auf Benutzerebene implementiert. Die Hauptfunktionalität wird vom Kernelmodul nfsd übernommen. Das User-Space-Programm gibt lediglich an, auf welchen Sockets der Kernel-Server lauscht, welche NFS-Versionen er unterstützt und wie viele nfsd-Kernel-Threads er verwendet. Verwenden Sie den Befehl ps –e, um die Anzahl der laufenden Threads anzuzeigen.

# ps -ef | grep nfs
root      9093     2  0 11:21 ?        00:00:00 [nfsd4_callbacks]
root      9099     2  0 11:21 ?        00:00:00 [nfsd]
root      9100     2  0 11:21 ?        00:00:00 [nfsd]
root      9101     2  0 11:21 ?        00:00:00 [nfsd]
root      9102     2  0 11:21 ?        00:00:00 [nfsd]
root      9103     2  0 11:21 ?        00:00:00 [nfsd]
root      9104     2  0 11:21 ?        00:00:00 [nfsd]
root      9105     2  0 11:21 ?        00:00:00 [nfsd]
root      9106     2  0 11:21 ?        00:00:00 [nfsd]

Die Anzahl der auszuführenden nfsd-Threads wird in /proc/fs/nfsd/threads definiert Datei. In diesem Beispiel werden 8 nfsd-Threads angegeben:

# cat /proc/fs/nfsd/threads
8

Das Starten des nfs-server-Dienstes startet auch die RPC-Prozesse. Sie können den Befehl ps –e verwenden, um die Namen der RPC-Prozesse anzuzeigen.

# ps -e | grep -i rpc
  177 ?        00:00:00 rpciod
 9080 ?        00:00:00 rpc.statd
 9081 ?        00:00:00 rpc.idmapd
 9082 ?        00:00:00 rpcbind
 9083 ?        00:00:00 rpc.mountd
 9084 ?        00:00:00 rpc.rquotad

rpc.statd

Dieser Prozess implementiert das NSM-RPC-Protokoll (Network Status Monitor), das NFS-Clients benachrichtigt, wenn ein NFS-Server neu gestartet wird, ohne ordnungsgemäß heruntergefahren zu werden. Dies wird nicht mit NFSv4 verwendet.

rpc.mountd

Dies ist der NFS-Mount-Daemon, der die Serverseite der Mount-Anforderungen von NFSv3-Clients implementiert. Es überprüft, ob die angeforderte NFS-Freigabe derzeit vom NFS-Server exportiert wird und ob der Client darauf zugreifen darf. Für NFSv4 ist der rpc.mountd-Daemon nur auf dem NFS-Server erforderlich, um die Exporte einzurichten.

rpc.idmapd

Dadurch werden NFSv4-Client- und -Server-Upcalls bereitgestellt, die zwischen On-the-Wire-NFSv4-Namen (bei denen es sich um Zeichenfolgen in Form von Benutzer@Domäne handelt) und lokalen UIDs und GIDs zugeordnet werden. Damit idmapd mit NFSv4 funktioniert, muss /etc/idmapd.conf konfiguriert werden. Dieser Dienst ist für die Verwendung mit NFSv4 erforderlich, jedoch nicht, wenn alle Hosts denselben DNS-Domänennamen verwenden.

rpc.rquotad

Dieser Prozess stellt Benutzerkontingentinformationen für Remotebenutzer bereit. Es wird automatisch vom nfs-Dienst gestartet und erfordert keine Benutzerkonfiguration. Die Ergebnisse werden vom Befehl quota verwendet, um Benutzerquoten für entfernte Dateisysteme anzuzeigen, und vom Befehl edquota, um Quoten für entfernte Dateisysteme festzulegen.

gesperrt

Dies ist ein Kernel-Thread, der sowohl auf Clients als auch auf Servern ausgeführt wird. Es implementiert das Network Lock Manager (NLM)-Protokoll, das es NFSv3-Clients ermöglicht, Dateien auf dem Server zu sperren. Es wird automatisch gestartet, wenn der NFS-Server ausgeführt wird und wenn ein NFS-Dateisystem gemountet wird.

nfslock

Das Starten dieses Dienstes startet die RPC-Prozesse, die es NFS-Clients ermöglichen, Dateien auf dem Server zu sperren.

NFS-Serverkonfiguration

Um mit der Konfiguration eines Systems als NFS-Server zu beginnen, installieren Sie das Paket nfs-utils:

# yum install nfs-utils

Die Hauptkonfigurationsdatei für den NFS-Server ist /etc/exports . Diese Datei speichert eine Liste exportierter Verzeichnishierarchien, die entfernte Systeme einhängen können. Das Format für Einträge ist:

export-point client1(options) [client2(options) ... ]

Der Exportpunkt ist der absolute Pfadname der zu exportierenden Verzeichnishierarchie. Export-Point kann von einem oder mehreren Client-Systemen mit jeweils spezifischen Optionen gemountet werden. Zwischen dem Kundenattribut und der offenen Klammer stehen keine Leerzeichen. Wenn keine Clientoptionen angegeben sind, gelten die folgenden Standardeinstellungen:

  • ro:Schreibgeschützt . Client-Hosts können die im Dateisystem freigegebenen Daten nicht ändern. Um Client-Hosts zu erlauben, Änderungen am Dateisystem vorzunehmen, geben Sie die Option rw (Lesen/Schreiben) an.
  • synchronisieren :Der NFS-Server antwortet nur auf Anfragen, nachdem Änderungen, die durch vorherige Anfragen vorgenommen wurden, auf die Festplatte geschrieben wurden. async gibt an, dass der Server nicht warten muss.
  • wdelay :Der NFS-Server verzögert das Festschreiben von Schreibanforderungen, wenn er vermutet, dass eine weitere Schreibanforderung unmittelbar bevorsteht. Um die Verzögerung zu deaktivieren, verwenden Sie die Option no_wdelay. no_wdelay ist nur verfügbar, wenn auch die Standard-Synchronisierungsoption angegeben ist.
  • root_squash :Verhindert, dass remote verbundene Root-Benutzer Root-Rechte haben, wodurch die Befugnisse des Remote-Root-Benutzers effektiv „gequetscht“ werden. Anfragen scheinen vom Benutzer nfsnobody zu kommen, einem nicht privilegierten Benutzer auf dem lokalen System, oder wie von anonuid angegeben. Um Root-Squash zu deaktivieren, geben Sie die Option no_root_squash an.
  • no_all_squash :Ändert nicht die Zuordnung von Remote-Benutzern. Um jeden entfernten Benutzer (einschließlich Root) zu komprimieren, verwenden Sie die Option all_squash.

Um die Benutzer-ID (UID) und Gruppen-ID (GID) anzugeben, die der NFS-Server entfernten Benutzern zuweist, verwenden Sie die Optionen anonuid und anongid wie folgt:

export-point client(anonuid=uid,anongid=gid)

Mit den Optionen anonuid und anongid können Sie ein spezielles Benutzer- und Gruppenkonto erstellen, das entfernte NFS-Benutzer gemeinsam nutzen können. Standardmäßig werden Access Control Lists (ACLs) von NFS unterstützt. Um diese Funktion zu deaktivieren, geben Sie beim Exportieren des Dateisystems die Option no_acl an.

Sie können Platzhalterzeichen wie (*) und (?) in Clientnamen verwenden. Sie können auch Verzeichnisse zu allen Hosts in einem IP-Netzwerk exportieren. Geben Sie dazu als Adresse/Netzmaske ein Paar aus IP-Adresse und Netzmaske an. Jede der folgenden Formen ist gültig:

192.168.1.0/24
192.168.1.0/255.255.255.0

/etc/exports Beispiele

Im folgenden Beispiel kann ein Client-System mit der IP-Adresse 192.0.2.102 das Verzeichnis /export/ mit Lese-/Schreibberechtigungen mounten. Alle Schreibvorgänge auf die Festplatte sind asynchron:

/export/directory 192.0.2.102(rw,async)

Das folgende Beispiel exportiert das Verzeichnis /exports/apps auf alle Clients, konvertiert alle verbindenden Benutzer in den lokalen anonymen Benutzer nfsnobody und macht das Verzeichnis schreibgeschützt:

/exports/apps *(all_squash, ro)

Das folgende Beispiel exportiert das Verzeichnis /spreadsheets/proj1 mit Nur-Lese-Berechtigungen für alle Clients im Subnetz 192.168.1.0 und Lese-/Schreibberechtigungen für das Client-System mit dem Namen mgmtpc:

/spreadsheets/proj1 192.168.1.0/24(ro) mgmtpc(rw)

Starten des NFS-Dienstes

Der rpcbind-Dienst muss vor dem Start von nfs gestartet werden. Der folgende Befehl prüft, ob der rpcbind-Dienst aktiviert ist und ausgeführt wird.

# systemctl status rpcbind

Wenn der rpcbind-Dienst läuft, kann der nfs-Dienst gestartet werden. Starten Sie nfs neu, nachdem Sie Konfigurationsänderungen in /etc/exports vorgenommen haben, oder führen Sie den Befehl exportfs -a aus.

# systemctl start nfs

Überprüfen Sie, ob der nfslock-Dienst aktiviert ist und ausgeführt wird. Das Starten dieses Dienstes startet die RPC-Prozesse, die es NFS-Clients ermöglichen, Dateien auf dem Server zu sperren.

# systemctl status nfslock

Verwenden Sie den Befehl systemctl enable, um die Dienste beim Booten automatisch zu starten. Verwenden Sie den vollständigen Namen von nfs-server, wenn Sie den NFS-Dienst aktivieren.

# systemctl enable nfs-server

Geben Sie Konfigurationsoptionen und -argumente an, indem Sie sie in /etc/sysconfig/nfs platzieren . Diese Datei enthält mehrere Kommentare, die Sie bei der Angabe von Optionen als Argumente unterstützen. Verwenden Sie den Befehl showmount –e, um exportierte Dateisysteme anzuzeigen:

# showmount –e

exportfs-Dienstprogramm

Sie können einen NFS-Server auch über die Befehlszeile konfigurieren, indem Sie exportfs verwenden. Mit diesem Befehl kann der Root-Benutzer Verzeichnisse selektiv exportieren oder deexportieren, ohne /etc/exports zu ändern und ohne den NFS-Dienst neu zu starten. Die Syntax für den Befehl lautet:

# exportfs [options] [client:dir ...]

Das client-Argument ist der Name des Client-Systems, in das dir exportiert wird. Das Argument dir ist der absolute Pfadname des exportierten Verzeichnisses. Im Folgenden finden Sie eine Liste einiger Optionen:

  • -r :Exportieren Sie die Einträge in /etc/exports erneut und synchronisieren Sie /var/lib/nfs/etab mit /etc/exports. Die Datei /var/lib/nfs/etab ist die Master-Exporttabelle. rpc.mountd liest diese Datei, wenn ein Client einen NFS-Mount-Befehl sendet.
  • -a :Exportieren Sie die Einträge in /etc/exports, aber synchronisieren Sie nicht /var/lib/nfs/etab. Führen Sie exportfs –a aus, nachdem Sie Konfigurationsänderungen vorgenommen haben.
  • -ich :Ignorieren Sie die Einträge in /etc/exports und verwenden Sie nur Kommandozeilenargumente.
  • -u :Der Export eines oder mehrerer Verzeichnisse rückgängig machen.
  • -o :Geben Sie die Client-Optionen wie in /etc/exports.
  • angegeben an

NFS-Client-Konfiguration

Um mit der Konfiguration eines Systems als NFS-Client zu beginnen, installieren Sie das Paket nfs-utils:

# yum install nfs-utils

Verwenden Sie den Befehl mount, um exportierte Dateisysteme (NFS-Freigaben) auf der Clientseite einzuhängen. Syntax für den Befehl ist:

# mount -t nfs -o options host:/remote/export /local/directory

Im Folgenden finden Sie Beschreibungen der Argumente:

  • -t nfs :Gibt an, dass der Dateisystemtyp nfs ist. Mit dieser Option verwendet mount NFSv4, wenn der Server dies unterstützt; andernfalls wird NFSv3 verwendet.
  • -o Optionen :Eine durch Kommas getrennte Liste von Mount-Optionen
  • Host :/remote/export:Der Hostname, der das Dateisystem exportiert, gefolgt von einem Doppelpunkt, gefolgt vom absoluten Pfadnamen der NFS-Freigabe
  • /local/directory :Der Einhängepunkt auf dem Client-System

Um beispielsweise das von Host abc exportierte /home-Verzeichnis mit Nur-Lese-Berechtigungen (Option ro) auf dem lokalen Einhängepunkt /abc_home einzuhängen und zu verhindern, dass entfernte Benutzer höhere Privilegien erlangen, indem sie ein setuid-Programm ausführen (Option nosuid):

# mount -t nfs -o ro,nosuid abc:/home /abc_home

Um NFS-Freigaben beim Booten zu mounten, fügen Sie Einträge zur Dateisystem-Mount-Tabelle /etc/fstab hinzu. Einträge haben folgendes Format:

# vi /etc/fstab
server:/exported-filesystem    local_mount_point   nfs   options   0 0

Beispielsweise lautet der /etc/fstab-Eintrag, der den Mount-Befehl auf der vorherigen Seite repliziert:

# vi /etc/fstab
abc:/home    /abc_home    nfs    ro,nosuid    0 0

Der Befehl df zeigt gemountete Dateisysteme an, einschließlich NFS-gemountete Dateisysteme. Bei NFS-Mounts zeigt die Spalte „Dateisystem“ die Informationen server:/exported-filesystem an. Verwenden Sie das -T Option zum Einfügen einer „Typ“-Spalte:

# df -hT
Filesystem     Type      Size  Used Avail Use% Mounted on
host03:/Dev    nfs4      976M  2.5M 907M  1%   /remote_dev
CentOS / RHEL 7 :Konfiguration eines NFS-Servers und NFS-Clients


Cent OS
  1. Installieren Sie Webmin auf CentOS 7 / RHEL 7

  2. Ein ultimativer Leitfaden zum Aktualisieren des Kernels auf CentOS/RHEL/Fedora

  3. CentOS / RHEL 7 :Konfigurieren eines NFS-Servers und NFS-Clients

  4. CentOS / RHEL 7:Einsteigerleitfaden für Firewalld

  5. CentOS / RHEL :Einsteigerleitfaden für vsftpd (Installation und Konfiguration)

Überprüfen Sie die IP-Adresse von CentOS/RHEL

Gnome auf RHEL 8 / CentOS 8 installieren

Installieren Sie Python 2 auf RHEL 8 / CentOS 8

So richten Sie den NFS-Server unter CentOS 8 / RHEL 8 ein

CentOS / RHEL 7:Leitfaden für Anfänger zu systemd-Diensteinheiten

Vollständiger Leitfaden zur Konfiguration von iSCSI in CentOS / RHEL 7