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

Verwaltung des Netzwerkdateisystems (NFS) unter Linux

Netzwerkdateisysteme , auch abgekürzt NFS , sind Dateisysteme, auf die über das Netzwerk zugegriffen werden kann.

Im Gegensatz zu Dateisystemen, die sich möglicherweise lokal auf Ihrem Computer befinden, werden Netzwerkdateisysteme auf entfernten Computern gespeichert, auf die über ein bestimmtes Netzwerkprotokoll zugegriffen wird:das NFS-Protokoll .

NFS gehört neben SMB, FTP, HTTP und vielen anderen Dateifreigabeprotokollen zur großen Familie der Dateifreigabeprotokolle.

NFS hat seine eigene Art, auf entfernte Dateisysteme zuzugreifen und diese zu sichern, sowie verschiedene Möglichkeiten, den Zugriff auf entfernte Dateisysteme zu sichern.

In diesem Tutorial werden wir einen NFS-Server einrichten auf einem Remote-Rechner und installieren Sie einen NFS-Client um darauf zuzugreifen.

Wir werden den NFS-Server entsprechend der Ressource konfigurieren, die wir freigeben möchten, und wir werden die kleinen Fallstricke sehen, die es über NFS zu wissen gibt.

Was Sie lernen werden

Wenn Sie diesem Tutorial bis zum Ende folgen, lernen Sie die folgenden Konzepte kennen:

  • So können Sie einen NFSv4-Server einrichten , erstellen Sie einen freigegebenen Ordner und exportieren Sie ihn an Remote-Clients;
  • Wie man einen NFS-Client installiert und wie Sie es an Ihren NFS-Server binden;
  • Wie die Benutzerauthentifizierung auf NFS funktioniert und warum NFS-Authentifizierungen als schwach gelten;
  • Was ist Squashing und warum Sie root_squashing immer aktivieren sollten;
  • Wie NFS die gleichzeitige Bearbeitung im Vergleich zu anderen File-Sharing-Protokollen handhabt.

Das ist ein ziemlich langes Programm, also beginnen wir ohne weiteres damit, dass Sie Ihren eigenen NFSv4-Server einrichten können.

Einrichten eines NFSv4-Servers

Für dieses Tutorial werden wir eine Standard-Kubuntu-Distribution verwenden, aber der Rest dieses Tutorials sollte genauso funktionieren, wenn Sie eine andere Distribution verwenden.

$ uname -a

Linux kubuntu 5.3.0-18-generic #19-Ubuntu GNU/Linux

Stellen Sie vor der Installation von Paketen sicher, dass Ihr System mit dem apt-Befehl richtig konfiguriert ist.

sudo apt-get update

Nachdem Ihr System nun aktualisiert ist, müssen Sie mehrere Pakete für Ihren NFS-Server installieren.

NFSv4-Server installieren

Um einen NFS-Server unter Linux zu installieren, müssen Sie den „nfs-kernel-server“ installieren ” mit apt.

$ sudo apt-get install nfs-kernel-server

Wie Sie dem obigen Screenshot entnehmen können, enthält der nfs-kernel-server einige Konfigurationsdateien, die Sie anpassen müssen:

  • Exporte :Wird als Konfigurationsdatei verwendet, um die Verzeichnisse festzulegen, die über NFS exportiert werden sollen;
  • nfs-kernel-server :Dies kann verwendet werden, wenn Sie die Authentifizierung einrichten oder RPC-bezogene Parameter Ihres NFS-Servers ändern möchten.

Für dieses Tutorial konfigurieren wir nur die Exportdatei, um unsere Verzeichnisse zu exportieren.

Verzeichnisse mit Exporten exportieren

Wie oben erwähnt, werden wir die exports-Datei ändern, die sich im etc-Verzeichnis befindet, um Verzeichnisse gemeinsam zu nutzen.

Die Syntax für die Exportdatei ist ziemlich einfach.

Die Exportdatei ist eine spaltengetrennte Datei, die aus den folgenden Feldern besteht:

  • Lokales Verzeichnis :das Verzeichnis, das auf das lokale Dateisystem exportiert werden soll;
  • IP oder Hostname des Computers, dem Sie Zugriff gewähren möchten;
  • NFS-Optionen wie rw (für read-write), sync (was bedeutet, dass vorgenommene Änderungen direkt auf die Festplatte geschrieben werden)

Zuerst müssen Sie ein Verzeichnis erstellen, das auf Ihr System exportiert wird. Sie müssen es natürlich nicht erstellen, wenn das Verzeichnis bereits auf Ihrem Computer vorhanden ist.

$ sudo mkdir -p /var/share

Im Moment können Sie root als Besitzer und als Gruppe, die die Datei besitzt, lassen, aber wir werden sie später ändern, abhängig von den Berechtigungen, die wir für diesen freigegebenen Ordner wünschen.

Nachdem Ihr freigegebener Ordner erstellt wurde, müssen Sie ihn der Exportdatei hinzufügen, damit er exportiert werden kann.

Gehen Sie zurück zu Ihrem /etc/exports Datei und fügen Sie die Informationen hinzu, die wir in der Aufzählungsliste oben angegeben haben.

In der ersten Spalte müssen Sie den zu exportierenden Ordner angeben, der der soeben erstellte Freigabeordner ist.

Als nächstes müssen Sie die IP oder Hostnamen angeben, die dieses Verzeichnis lokal einhängen können.

In diesem Fall haben wir uns für eine Netzwerk-IP entschieden in der exports-Datei festgelegt, kann aber bei Ihnen anders sein.

Um alle in der Datei „exports“ angegebenen Verzeichnisse zu exportieren, müssen Sie die Datei „exportfs verwenden “-Befehl mit der Option „-a“ für „alle“.

$ sudo exportfs -a

Als Nächstes können Sie überprüfen, ob Ihre Ordner korrekt exportiert wurden, indem Sie den Befehl „exportfs“ mit der Option „-v“ für „verbose“ ausführen.

$ sudo exportfs -v

Wie Sie wahrscheinlich bemerkt haben, wurden einige Optionen, die nicht in der Exportdatei angegeben waren, standardmäßig vom NFS-Server gesetzt:

  • w :Lese- und Schreiboperationen sind auf dem Volume erlaubt (diese Option wurde ursprünglich in der Datei angegeben);
  • wdelay :Der NFS-Server verursacht eine kleine Schreibverzögerung, wenn er vermutet, dass mehrere Schreibvorgänge gleichzeitig ausgeführt werden;
  • root_squash :Das „root“-Konto wird standardmäßig auf den anonymen Benutzer „gequetscht“. Wenn Sie nicht wissen, was Squashing ist, können Sie in den nächsten Abschnitten darüber lesen;
  • no_subtree_check :Standardmäßig überprüft der NFS-Server, ob die angeforderte Operation Teil des auf den Server exportierten Dateisystems ist;
  • sec=sys :Standardmäßig verwendet NFS die auf dem Server festgelegten Anmeldeinformationen. Wenn Ihr System lokale Authentifizierung verwendet, werden diese Anmeldeinformationen verwendet, aber wenn NIS verwendet wird, wird es als Authentifizierungssystem verwendet;
  • sicher :Diese Option überprüft, ob Anfragen von einem Port niedriger als 1024 stammen (zur Erinnerung, NFS-Client-Anfragen stammen von Port 111);
  • no_all_squash :Mit Ausnahme des „root“-Kontos werden andere Benutzer nicht gequetscht, wenn sie mit dem NFS-Server interagieren.

Firewallregeln für NFS anpassen

Damit sich unsere Clients mit unserem NFS-Server verbinden können, müssen Sie sicherstellen, dass die Firewall so konfiguriert ist, dass sie NFS-Verbindungen akzeptiert.

Zur Erinnerung:NFS läuft auf Port 2049 auf dem Server.

Bei Debian und Ubuntu betreiben Sie wahrscheinlich eine UFW-Firewall (Sie können dies mit dem Befehl „ufw status“ überprüfen)

Um NFS-Verbindungen zu Ihrem Server zuzulassen, führen Sie die Datei „ufw ” als root ausführen und Verbindungen auf Port 2049 zulassen.

$ sudo ufw allow 2049

Wenn Sie andererseits eine Red Hat- oder eine CentOS-Distribution ausführen, müssen Sie die eingebaute Firewall „firewalld“ anpassen.

$ sudo firewall-cmd --add-port=2049/tcp

Vergewissern Sie sich schließlich, dass Ihr Netzwerkadapter den Port 2049 korrekt mit dem Befehl „netstat“ nach außen zeigt.

$ netstat -tulpn | grep 2049

Okay, nachdem Sie nun sichergestellt haben, dass Ihr NFS-Server korrekt eingerichtet ist und ausgeführt wird und dass Ihre Freigaben exportiert wurden, sehen wir uns an, wie Sie Ihre NFS-Clients konfigurieren können.

Konfigurieren von NFSv4-Clients

Die Konfiguration auf dem Client ist ziemlich einfach, aber Sie werden bestimmte Pakete benötigen, um NFS-Partitionen zu mounten.

Einhängen von NFS-Partitionen auf Clients

Zuerst müssen Sie die „nfs-utils ”-Paket, um NFS-Pakete mounten zu können.

Sie müssen offensichtlich sudo-Privilegien haben um neue Pakete zu installieren. Hier sind einige Tutorials für Debian/Ubuntu und CentOS/RHEL.

$ sudo apt-get install nfs-utils

$ sudo yum install nfs-utils

Nachdem das Paket installiert ist, können Sie die Partition einfach mit der folgenden Syntax einhängen

$ mount -t nfs <dest_ip_or_hostname>:<remote_path> <mount_point>

Angenommen, Ihr NFS-Server befindet sich unter der IP-Adresse 192.168.178.31/24 und Sie möchten den Ordner /var/share auf dem Server freigeben.

Um diesen Ordner zu exportieren, schreiben Sie den folgenden Befehl

$ sudo mount -t nfs 192.168.178.31:/var/share /var/share

Die NFS-Client-Fehlerbehebung ist nicht sehr praktisch, aber wenn Ihr Terminal in der Hand liegt, bedeutet dies wahrscheinlich, dass Sie den Zielhost nicht erreichen können.

Wenn der Befehl erfolgreich ausgeführt wird, sollten Sie Ihren neuen Einhängepunkt mit dem Befehl df auflisten können.

$ df -H

Neue Dateien auf dem NFS-Volume erstellen

Wie Sie sich wahrscheinlich aus dem letzten Abschnitt erinnern, haben wir gesehen, dass unser NFS-Volume so konfiguriert ist, dass standardmäßig das Root-Konto, aber keine anderen Benutzer gequetscht werden.

Darüber hinaus gehört der freigegebene Ordner root und der root-Gruppe.

Wenn Sie versuchen, neue Dateien auf diesem Volume zu erstellen, erhalten Sie eine Fehlermeldung, dass die Berechtigung verweigert wurde, selbst wenn Sie versuchen, sie mit sudo zu erstellen.

Warum?

Das Client-Konto gehört nicht zur „Root“-Gruppe auf dem Server, und wenn Sie versuchen, eine Datei als Root auf dem Client zu erstellen, werden Sie auf das anonyme Konto gequetscht.

Ein Wort zur NFS-Benutzerverwaltung

Bevor wir unseren Server und Client konfigurieren, um Ordner ordnungsgemäß freizugeben, werfen wir einen kurzen Überblick darüber, wie die Benutzerverwaltung auf NFS-Volumes funktioniert.

Wie Sie wahrscheinlich in unseren vorherigen Tutorials gelernt haben, wird ein Benutzer durch eine Benutzer-ID (auch UID genannt) identifiziert ) und diese UID ist auf einem Computer eindeutig, aber nicht auf mehreren Computern derselben Site.

Wenn Ihr System jedoch nicht für die Zusammenarbeit mit einem zentralen Benutzerverwaltungssystem (wie NIS, OpenLDAP oder Samba) konfiguriert ist, könnten Ihre Benutzer-IDs auf den Systemen, auf denen Sie arbeiten, in Konflikt geraten.

Wenn wir in diesem Fall der Meinung sind, dass Sie kein zentrales Verwaltungssystem haben, geben wir einfach an, dass Sie eine konsistente Benutzerliste zwischen den Systemen führen.

Nachdem Benutzer und Gruppen nun zwischen den Hosts konsistent gemacht wurden, erstellen wir eine Gruppe, die Dateien zum Ordner hinzufügen und löschen kann.

Erstellen einer Gruppe für die NFS-Freigabe

In diesem Tutorial gehen wir davon aus, dass „Administratoren ” können Dateien in diesem Ordner hinzufügen und löschen.

Verwenden Sie zunächst auf dem Server die Datei „groupadd ”-Befehl, um diese neue Gruppe zu erstellen

$ sudo groupadd administrators

Anschließend können Sie die Gruppe, der Ihre NFS-Freigabe gehört, in „Administratoren“ ändern „

$ sudo chown :administrators /var/share

Fügen Sie auf dem Server die zugelassenen Benutzer zu der gerade erstellten Gruppe hinzu.

$ sudo usermod -aG administrators <user>

Sie müssen Ihre geteilten Ablagen nicht erneut exportieren, sondern können einfach mit dem Erstellen von Dateien beginnen, nachdem die Berechtigungen ordnungsgemäß konfiguriert wurden.

Lassen Sie uns auf dem Client mit dem Touch-Befehl eine neue Datei in der geteilten Ablage erstellen.

$ cd /var/share && touch file-example

Auf dem Server können Sie sehen, dass Ihre Datei korrekt erstellt wurde.

Fantastisch!

Sie haben erfolgreich ein NFS-Volume erstellt und Sie haben es mit Client-Rechnern geteilt.

Persistente NFS-Mounts mit fstab

Wie Sie bereits aus früheren Tutorials wissen, macht das Mounten eines Laufwerks unter Linux mit dem mount-Befehl es nicht dauerhaft über Neustarts hinweg.

Um Ihre Mounts persistent zu machen, müssen Sie sie zur fstab-Datei hinzufügen.

Bearbeiten Sie als privilegierter Benutzer die fstab-Datei und fügen Sie eine Zeile für Ihr NFS-Laufwerk hinzu

#
# /etc/fstab
# Accessible filesystems, by reference, are maintained under '/dev/disk'.

<ip_address>:<remote_path>   <mountpoint>  nfs  <options>  0   0

Bei dem zuvor erstellten NFS-Volume beispielsweise auf „192.168.178.31“ im Pfad „/var/share“ würde dies

ergeben
#
# /etc/fstab
# Accessible filesystems, by reference, are maintained under '/dev/disk'.

192.168.178.31:/var/share  /var/share  nfs  defaults  0   0

Wenn Sie ein systemd-basiertes System verwenden, können Sie abhängige Daemons neu laden, indem Sie den Befehl daemon-reload

ausführen
$ systemctl daemon-reload

Fantastisch!

Sie können jetzt Ihren Client-Rechner neu starten und überprüfen, ob Ihr Laufwerk beim Booten korrekt gemountet wurde.

Weiterkommen mit NFS

In diesem Abschnitt werden wir fortgeschrittene Themen zu NFS besprechen, insbesondere wie die gleichzeitige Bearbeitung gehandhabt wird und wie Sie Ihre NFS-Konfigurationen an bestimmte Client-Hosts anpassen können.

Gleichzeitige Bearbeitung

Wenn Sie NFS verwenden, werden Sie wahrscheinlich einige Dateien zusammen mit mehreren anderen Benutzern bearbeiten.

Der NFS-Server hindert Sie nativ nicht daran, dieselbe Datei zu bearbeiten.

Wenn Sie vi als Texteditor verwenden, werden Sie benachrichtigt, dass einige Änderungen bereits von einem anderen Benutzer vorgenommen wurden (über eine swp-Datei).

Der Austausch von NFS-Dateien hindert Sie jedoch nicht daran, die Datei zu bearbeiten:Es wird nur eine Warnmeldung zu den Dateien angezeigt, die derzeit bearbeitet werden.

Wenn Sie andere Texteditoren verwenden, werden außerdem keine „swp“-Dateien erstellt und die Datei enthält den Inhalt der letzten durchgeführten Änderung.

Beachten Sie, dass es eine Möglichkeit gibt, Dateien lokal zu sperren, indem Sie die local_lock ”-Parameter auf der Client-Seite , können Sie in der Linux-Dokumentation nachsehen, ob Sie an dieser Option interessiert sind.

Ordner an bestimmte Client-IP-Adressen exportieren

In einigen Fällen müssen Sie möglicherweise einen Ordner an bestimmte Clients in Ihrem Subnetz exportieren.

Um die IP-Adresse Ihres Clients zu ermitteln, gehen Sie zum Client-Rechner und verwenden Sie den Befehl „ip“ mit der Option „a“ für address.

$ ip a

Wie Sie sehen können, hat mein Client-Host zwei Schnittstellen:die Loopback-Schnittstelle (oder localhost) und einen Netzwerkadapter namens „enp0s3“.

Letzterer hat der Schnittstelle bereits eine IP-Adresse zugewiesen, die in der „inet“-Zeile zu sehen ist:192.168.178.27/24.

Wenn Sie Ihre Ordner in ein ganzes Subnetz exportieren möchten, können Sie die Subnetz-IP angeben:Folglich kann jede IP im Subnetz Ihren Ordner exportieren.

Ebenso ist es möglich, den Hostnamen des Client-Rechners zu prüfen, um ihn später auf den Server zu exportieren.

$ hostname

Zurück zur Exportdatei können Sie wählen, ob Sie eine oder mehrere IP-Adressen exportieren oder eine Maschine anhand ihres Hostnamens exportieren möchten.

NFS-Überwachung

Wenn Sie das Paket nfs-common installieren, installieren Sie am Ende auch die Datei „nfsstat ” Dienstprogramm, das ein Programm ist, das NFS-Statistiken offenlegt.

Mit nfsstat können Sie die Gesamtzahl der auf Ihrem NFS-Server durchgeführten Operationen sowie die aktuelle Aktivität sehen.

Schlussfolgerung

In diesem Tutorial haben Sie gelernt, wie Sie einen NFSv4-Server einrichten können ganz einfach mit dem Dienstprogramm nfs-kernel-server.

Sie haben auch gelernt, wie Sie die Laufwerke auf den Clients mounten können und welche verschiedenen Optionen Sie haben, um Ihre NFS-Mounts zu optimieren.

Schließlich haben Sie sich ausführlich mit NFS-Laufwerken befasst und erfuhr, wie die Benutzerverwaltung zwischen mehreren Host-Rechnern durchgeführt wird und wie Sie Ihr eigenes Benutzerverwaltungssystem einrichten sollten.

Wenn Sie an der Verwaltung von Linux-Systemen interessiert sind, haben wir einen vollständigen Abschnitt auf der Website, der diesem Thema gewidmet ist, also schauen Sie sich das unbedingt an!


Linux
  1. Verbessern Sie die Linux-Systemleistung mit noatime

  2. Was ist NFS und wie wird es unter Linux installiert?

  3. So mounten und unmounten Sie ein Dateisystem unter Linux

  4. Ubuntu Linux – Freigegebenes VHDX

  5. Linux:Wo soll die Auslagerungsdatei abgelegt werden

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

Meine Reise in die Linux-Systemadministration

So überprüfen/reparieren Sie das Linux-Dateisystem beim Booten

So reparieren Sie Dateisystemfehler in Linux Mint

Was ist das Linux-Dateisystem? Einfache Anleitung

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