GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Fragen im Vorstellungsgespräch unter Linux Network File System (NFS).

Was ist NFS?

Network File System (NFS) ist eines der ältesten Computer-File-Sharing-Produkte, die es heute gibt. Es ist nach wie vor am beliebtesten für die gemeinsame Nutzung von Dateiverzeichnissen zwischen UNIX- und Linux-Systemen. NFS ermöglicht es Servern, bestimmte Verzeichnisse festzulegen, die sie bestimmten Hosts zur Verfügung stellen, und ermöglicht dann Client-Systemen, sich mit diesen Verzeichnissen zu verbinden, indem sie sie lokal einhängen.

NFS kann mithilfe von Firewall-Regeln (iptables), TCP-Wrappern (um den Hostzugriff zuzulassen und zu verweigern) und SELinux (um einzuschränken, wie File-Sharing-Protokolle NFS-Ressourcen gemeinsam nutzen können) gesichert werden. Obwohl NFS von Natur aus unsicher war, als es erstellt wurde (Daten werden unverschlüsselt geteilt und der Benutzerzugriff ist ziemlich offen), haben Funktionen in NFS Version 4 dazu beigetragen, die Gesamtsicherheit von NFS zu verbessern.

Was sind 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.

Wie konfiguriere ich NFS-Server und NFS-Client in CentOS/RHEL?

Bitte lesen Sie die folgenden Posts, um NFS-Server und -Client-Rechner zu konfigurieren.

Einsteigerleitfaden für NFS in CentOS / RHEL
CentOS / RHEL 7 :Konfigurieren eines NFS-Servers und NFS-Clients

Was sind die Konfigurationsdateien für den NFS-Server?

Die primäre Konfiguration für den NFS-Server ist die Datei /etc/exports. Dies ist die Datei, die Sie verwenden, um anzugeben, welche Verzeichnisse Sie für die NFS-Clients freigeben möchten. Die Syntax dieser Datei ist:

Directory      hostname(options)

Der Wert von Directory sollte durch den Namen des Verzeichnisses ersetzt werden, das Sie freigeben möchten (z. B. /usr/share/doc). Der Wert Hostname sollte ein Client-Hostname sein, der in eine IP-Adresse aufgelöst werden kann. Der Optionswert wird verwendet, um anzugeben, wie die Ressource geteilt werden soll.

Beispielsweise würde der folgende Eintrag in der Datei /etc/exports das Verzeichnis /usr/share/doc mit dem NFS-Client client01 (mit den Optionen „Lesen/Schreiben“) und dem NFS-Client „client02“ (mit der Option „Nur Lesen“) teilen ):

# vi /etc/exports
/usr/share/doc      client01(rw) client02(ro)

Beachten Sie, dass zwischen den Namen/Optionen von client01 und client02 ein Leerzeichen steht, aber kein Leerzeichen zwischen dem Hostnamen und der entsprechenden Option.

Verstehen der /etc/exports-Datei

Was sind die am häufigsten verwendeten NFS-Sharing-Optionen in /etc/exports

Es gibt viele verschiedene NFS-Sharing-Optionen, einschließlich dieser:

  • w :Als Lese-/Schreibzugriff freigeben. Beachten Sie, dass die normalen Linux-Berechtigungen weiterhin gelten. (Beachten Sie, dass dies eine Standardoption ist.)
  • ro :Als schreibgeschützt freigeben.
  • synchronisieren :Dateidatenänderungen werden sofort auf der Festplatte vorgenommen, was sich auf die Leistung auswirkt, aber weniger wahrscheinlich zu Datenverlust führt. Bei einigen Distributionen ist dies die Voreinstellung.
  • asynchron :Das Gegenteil von Sync; Dateidatenänderungen werden zunächst im Speicher vorgenommen. Dies beschleunigt die Leistung, führt aber eher zu Datenverlust. Bei einigen Distributionen ist dies die Voreinstellung.
  • root_squash :Ordnen Sie den Root-Benutzer und das Gruppenkonto vom NFS-Client den anonymen Konten zu, normalerweise entweder dem Konto "nobody" oder dem Konto "nfsnobody". Weitere Einzelheiten finden Sie im nächsten Abschnitt „Benutzer-ID-Zuordnung“. (Beachten Sie, dass dies eine Standardoption ist.)
  • no_root_squash :Ordnen Sie den Root-Benutzer und das Gruppenkonto vom NFS-Client den lokalen Root- und Gruppenkonten zu.
Allgemeine NFS-Mount-Optionen in Linux

Wie erhalte ich Informationen über die Leistung von NFS-Freigaben?

Der Befehl nfsiostat funktioniert wie der Befehl iostat, außer nur für die NFS-Einhängepunkte. nfsiostat erhält Eingaben von /proc/self/mountstats und liefert Informationen über die Eingabe-/Ausgabeleistung von im System gemounteten NFS-Freigaben. Der Befehl nfsiostat wird von den nfs-utils bereitgestellt Paket.

Unten sehen Sie eine Beispielausgabe des Befehls nfsiostat.

Die folgende Tabelle zeigt eine kurze Beschreibung jeder Spalte in der About-Ausgabe.

Feld Beschreibung
op/s Dies ist die Anzahl der Operationen pro Sekunde.
rpc bklog Dies ist die Länge der Rückstandswarteschlange.
kB/s Dies ist die Anzahl der pro Sekunde geschriebenen/gelesenen kB.
kB/op Dies ist die Anzahl der pro Vorgang geschriebenen/gelesenen KB.
Rückübertragung Dies ist die Anzahl der Neuübertragungen.
durchschnittliche RTT (ms) Dies ist die Dauer von dem Zeitpunkt, an dem der Kernel des Clients die RPC-Anforderung sendet, bis zu dem Zeitpunkt, an dem er die Antwort erhält.
avg exe (ms) Dies ist die Dauer ab dem Zeitpunkt, an dem der NFS-Client die RPC-Anfrage an seinen Kernel durchführt, bis die RPC-Anfrage abgeschlossen ist, dies schließt die obige RTT-Zeit ein.

Nachfolgend finden Sie eine Syntax zur Verwendung des Befehls nfsiostat.

# nfsiostat --help
Usage: nfsiostat [interval] [count] [options] [mount point]

Options:
  --version             show program's version number and exit
  -h, --help            show this help message and exit

  Statistics Options:
    File I/O is displayed unless one of the following is specified:

    -a, --attr          displays statistics related to the attribute cache
    -d, --dir           displays statistics related to directory operations
    -p, --page          displays statistics related to the page cache

  Display Options:
    Options affecting display format:

    -s, --sort          Sort NFS mount points by ops/second
    -l LIST, --list=LIST
                        only print stats for first LIST mount points

Hier
Intervall – Zeit in Sekunden zwischen jedem Bericht.
Anzahl – Anzahl der Berichte, die im Abstand von [Intervall] Sekunden generiert werden sollen. Wenn Sie die Anzahl hier nicht angeben, wird der Bericht kontinuierlich im angegebenen Intervall generiert.
Optionen – Die verschiedenen Optionen werden in den folgenden Beispielen erklärt.
mount_point – Sie können einen bestimmten NFS-Mount-Punkt angeben, für den die Statistiken angezeigt werden sollen. In diesem Fall wird nur ein Bericht für den angegebenen Einhängepunkt generiert.

Wie kann ich aktuell freigegebene NFS-Freigaben anzeigen?

Der Befehl exportfs kann auf dem NFS-Server verwendet werden, um anzuzeigen, was derzeit freigegeben ist:

# exportfs
/share          [world]

Wie teilt man eine NFS-Ressource über die Befehlszeile?

Der Befehl exportfs kann auch verwendet werden, um eine Ressource vorübergehend gemeinsam zu nutzen, vorausgesetzt, die NFS-Dienste wurden bereits gestartet:

# exportfs -o ro 192.168.1.100:/usr/share/doc
# exportfs
/usr/share/doc  192.168.1.100
/share          [world]

Das -o Option wird verwendet, um die Freigabeoptionen anzugeben. Das Argument enthält den Namen der Systeme, für die die Freigabe erfolgen soll, sowie das Verzeichnis, das freigegeben werden soll, getrennt durch einen Doppelpunkt (:).

Wenn Sie Änderungen an der Datei /etc/exports vornehmen, wird jede neu hinzugefügte Freigabe nach einem Neustart aktiviert. Wenn Sie diese Änderungen sofort aktivieren möchten, führen Sie den folgenden Befehl aus:

# exportfs –a

Wie wird die NFS-Freigabe auf den Client-Systemen bereitgestellt?

Nachdem die NFS-Freigabe vom NFS-Server exportiert wurde, kann sie mit der folgenden Befehlssyntax auf den berechtigten Clients gemountet werden:

# mount [NFS server IP or hostname]:/share/path /client/path

Wenn beispielsweise /exports/downloads vom NFS-Server 10.10.10.100 freigegeben wird, können wir es mit dem folgenden Befehl auf dem Client-Server als Verzeichnis /mnt/downloads mounten:

# mount 10.10.10.100:/exports/downloads /mnt/downloads

Wie demounte ich ein NFS-Dateisystem?

Nachdem ein NFS-Dateisystem gemountet wurde, ist das Unmounten einfach. Sie verwenden den Befehl umount entweder mit dem lokalen Einhängepunkt oder dem Namen des entfernten Dateisystems. Zum Beispiel:

# umount /mnt/nfs_mnt

oder:

# umount 10.10.10.100:/nfs_share

Wie erhalte ich eine Liste von Clients, die mit dem NFS-Server verbunden sind?

Um eine Liste der Clients zu erhalten, die mit dem NFS-Server verbunden sind, verwenden Sie den Befehl showmount an einer Terminal-Eingabeaufforderung. Um auch die Verzeichnisse anzuzeigen, mit denen die Clients verbunden sind, verwenden Sie:

# showmount -a

Was ist der Standardport, der vom NFS-Server verwendet wird?

Standardmäßig verwendet der NFS-Server den Port 2049.

Welche Ports müssen in der Firewall geöffnet sein, damit NFS funktioniert?

Die TCP- und UDP-Ports 2049 (nfs) und 111 (rpcbind) müssen geöffnet sein, damit ein NFS-Server ordnungsgemäß funktioniert. Der Server muss außerdem die TCP- und UDP-Ports 20048 für den showmount-Befehl öffnen, um verfügbare freigegebene NFS-Verzeichnisse von rpc.mountd auf dem Server abzufragen.

Wie kann ich NFS-Freigaben von Client-Systemen anzeigen?

Von einem Client-Linux-System aus können Sie den Befehl showmount verwenden, um zu sehen, welche freigegebenen Verzeichnisse auf einem ausgewählten Computer verfügbar sind, wie in diesem Beispiel:

$ showmount -e server.example.com
/export/myshare client.example.com
/mnt/public *

Die Ausgabe von showmount zeigt, dass das gemeinsam genutzte Verzeichnis mit dem Namen /export/myshare nur für den Host client.example.com verfügbar ist. Das freigegebene Verzeichnis /mnt/public steht jedoch jedem zur Verfügung.

Wie kann ich gemountete NFS-Mount-Punkte auf dem NFS-Client anzeigen?

Verwenden Sie den folgenden Befehl, um die gemounteten NFS-Mount-Punkte auf einem NFS-Client-Server anzuzeigen:

# mount -t nfs4

Beispielausgabe:

# mount -t nfs4
10.10.10.100:/mnt on /mnt/fed type nfs4 (rw,relatime,vers=4.2,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.10.20.200,local_lock=none,addr=10.10.20.200)

Die Ausgabe des Befehls mount -t nfs4 zeigt nur die Dateisysteme, die von NFS-Dateiservern gemountet wurden.

Wie werden NFS-Dateisysteme beim Booten gemountet?

Um ein NFS-Dateisystem so einzurichten, dass es bei jedem Start Ihres Linux-Systems automatisch an einem bestimmten Mount-Punkt gemountet wird, müssen Sie der Datei /etc/fstab einen Eintrag für dieses NFS-Dateisystem hinzufügen.

Hier ist das Format zum Hinzufügen eines NFS-Dateisystems zu Ihrem lokalen System:

host:directory    mountpoint   nfs   options   0   0

Das erste Element (host:directory) identifiziert den NFS-Servercomputer und das freigegebene Verzeichnis. Einhängepunkt ist der lokale Einhängepunkt, an dem das NFS-Verzeichnis eingehängt wird. Darauf folgt der Dateisystemtyp (nfs). Alle Optionen, die sich auf das Mount beziehen, erscheinen als nächstes in einer durch Kommas getrennten Liste. (Die letzten beiden Nullen konfigurieren das System so, dass es den Inhalt des Dateisystems nicht ausgibt und fsck nicht auf dem Dateisystem ausführt.)

Das Folgende sind Beispiele für NFS-Einträge in /etc/fstab:

# vi /etc/fstab
nfs_server01:/data    /mnt/data      nfs    bg,rsize=8192,wsize=8192  0  0

Wie verwende ich autofs, um NFS-Dateisysteme bei Bedarf zu mounten?

Die autofs-Einrichtung hängt Netzwerkdateisysteme bei Bedarf ein, wenn jemand versucht, die Dateisysteme zu verwenden. Wenn die autofs-Funktion konfiguriert und aktiviert ist, können Sie alle verfügbaren freigegebenen NFS-Verzeichnisse veranlassen, bei Bedarf einzuhängen. Um die autofs-Funktion nutzen zu können, müssen Sie das autofs-Paket installiert haben.

Wenn Sie bei aktiviertem autofs den Hostnamen und das Verzeichnis kennen, die von einem anderen Hostcomputer gemeinsam genutzt werden, wechseln Sie einfach (cd) in das autofs-Mount-Verzeichnis (standardmäßig /net oder /var/autofs). Dadurch wird die gemeinsam genutzte Ressource automatisch gemountet und für Sie zugänglich gemacht. Die folgenden Schritte erklären, wie Sie die Autofs-Funktion in Fedora oder RHEL aktivieren:

1. Öffnen Sie als Root-Benutzer die /etc/auto.master Datei und suchen Sie nach der folgenden Zeile:

# vi /etc/auto.master
/net -hosts

Dadurch fungiert das /net-Verzeichnis als Einhängepunkt für die freigegebenen NFS-Verzeichnisse, auf die Sie im Netzwerk zugreifen möchten.

2. Um den autofs-Dienst in CentOS/RHEL 7 oder höher zu starten, geben Sie Folgendes als Root-Benutzer ein:

# systemctl start autofs.service

3. Richten Sie auf Systemen mit CentOS/RHEL 7 oder höher den autofs-Dienst so ein, dass er bei jedem Systemstart neu gestartet wird:

# systemctl enable autofs

Wie konfiguriere ich firewalld auf einem NFS-Server?

Damit der NFS-Server funktioniert, aktivieren Sie die Dienste nfs, mountd und rpc-bind in der entsprechenden Zone in der Anwendung firewall-config oder verwenden Sie firewall-cmd :

# firewall-cmd --add-service=nfs --zone=internal --permanent
# firewall-cmd --add-service=mountd --zone=internal --permanent
# firewall-cmd --add-service=rpc-bind --zone=internal --permanent


Linux
  1. 40 Linux-Interviewfragen für Studienanfänger Teil-2

  2. Top 25 Linux-Interviewfragen

  3. Linux-Interviewfragen:Open Files / Open File Descriptors

  4. Fehlerbehebung bei häufigen NFS-Problemen unter Linux

  5. Fragen im Vorstellungsgespräch:Linux Package Manager (RPM)

Automount NFS-Freigabe in Linux mit autofs

Fsck-Befehl unter Linux (Dateisystem reparieren)

Meine Go-to-Fehlerbehebungsbefehle für Linux-Netzwerke

Verwaltung des Netzwerkdateisystems (NFS) unter Linux

Was ist das Linux-Dateisystem? Einfache Anleitung

Die 50 am häufigsten gestellten Fragen und Antworten zu Linux-Interviews