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

So installieren Sie NFS-Client und -Server unter Ubuntu 20.04

Network File System oder kurz NFS ist ein verteiltes Dateisystemprotokoll, mit dem Sie Remote-Verzeichnisse auf Ihrem Server einhängen können. NFS ermöglicht Ihnen den Zugriff auf Dateien und Ordner von einem anderen Server oder Client. Sie können von mehreren Clients oder entfernten Systemen über ein Netzwerk auf diesen Server schreiben. Diese Technologie gibt Ihnen die Flexibilität, eine Ressource über mehrere Systeme hinweg gemeinsam zu nutzen.

In diesem Tutorial lernen wir, wie man einen NFS-Server einrichtet und NFS-Freigaben auf einem Client mit Ubuntu 20.04 einbindet.

Voraussetzungen

  • Zwei Ubuntu 20.04-Systeme. Jeder Server sollte einen Nicht-Root-Benutzer mit sudo-Berechtigungen und UFW-Firewall-Set haben.
  • Sie können sowohl den Server als auch den Client über ein privates Netzwerk einrichten. Für unser Tutorial werde ich host_ip verwenden, um die host_ip zu bezeichnen Adresse und client_ip um auf die IP-Adresse des Clients zu verweisen.

Schritt 1 – NFS auf Server und Client installieren

Host

Wir müssen den nfs-kernel-server installieren Paket auf dem Host, um Ihre Verzeichnisse freizugeben.

$ sudo apt update
$ sudo apt install nfs-kernel-server

Kunde

Für den Client installieren wir den nfs-common Paket, das dem Client erlaubt, das Host-Verzeichnis zu mounten, aber das Verzeichnis selbst nicht hosten kann.

$ sudo apt update
$ sudo apt install nfs-common

Schritt 2 – Share-Verzeichnisse auf dem Host erstellen

Es gibt zwei Möglichkeiten, wie Sie dem Client Zugriff auf Verzeichnisse auf dem Host gewähren können. Standardmäßig lässt der NFS-Server keine Operationen zu, die sudo-Berechtigungen erfordern. Das bedeutet, dass Superuser auf dem Client keine Dateien als Root schreiben, die Eigentümerschaft neu zuweisen oder Aufgaben ausführen können, die erhöhte Berechtigungen erfordern.

Aber manchmal muss ein Client bestimmte Operationen auf dem Host ausführen, die erhöhte Berechtigungen erfordern, aber keinen Superuser-Zugriff dafür benötigen.

Erste Methode

Dies ist die Standardmethode zum Freigeben von Verzeichnissen. Es erschwert es einem Root-Benutzer auf dem Client, mit erhöhten Rechten mit dem Host zu interagieren.

Erstellen Sie zuerst das Freigabeverzeichnis.

$ sudo mkdir /var/nfs/general -p

Wenn Sie Root-Operationen auf dem Client ausführen, übersetzt NFS diese in nobody:nogroup Anmeldeinformationen auf dem Hostcomputer. Daher müssen wir dem gemeinsam genutzten Verzeichnis die entsprechenden Eigentumsrechte zuweisen.

$ sudo chown nobody:nogroup /var/nfs/general

Zweite Methode

Hier teilen wir das Host-Home-Verzeichnis mit dem Client. Dies ermöglicht Root-Benutzern auf dem Client den richtigen Zugriff auf den Host.

Da das Home-Verzeichnis bereits auf dem Host-Server vorhanden ist, müssen wir es nicht erstellen. Es besteht auch keine Notwendigkeit, die Berechtigungen darauf zu ändern, da es mehrere Probleme für Benutzer auf dem Host-Rechner schafft.

Schritt 3 – NFS auf dem Host konfigurieren

Es ist an der Zeit, NFS zu konfigurieren, um die Freigabe einzurichten.

Öffnen Sie die Datei /etc/exports auf dem Host-Server.

$ sudo nano /etc/exports

Fügen Sie unten die folgenden Zeilen hinzu, jeweils eine für jedes freigegebene Verzeichnis.

/var/nfs/general    client_ip(rw,sync,no_subtree_check)
/home               client_ip(rw,sync,no_root_squash,no_subtree_check)

Lassen Sie uns all diese Optionen und ihre Bedeutung durchgehen.

  • w :Dies gibt dem Client Lese- und Schreibzugriff auf die Host-Verzeichnisse.
  • synchronisieren :Diese Option zwingt NFS, Änderungen zu schreiben, bevor es antwortet. Dies bedeutet, dass NFS zuerst das Schreiben in das Hostverzeichnis abschließt und dann dem Client antwortet. Dies stellt sicher, dass der aktuelle Status des Hostservers wiedergegeben wird, kann jedoch die Geschwindigkeit von Dateivorgängen verlangsamen.
  • no_subtree_check :Diese Option deaktiviert die Teilbaumprüfung. Die Teilbaumprüfung ist eine Operation, bei der der Server bei jeder NFS-Anfrage prüfen muss, ob die Datei, auf die zugegriffen wird, vorhanden ist und sich in der exportierten Baumstruktur befindet. Dieser Vorgang verursacht Probleme, wenn die Dateien, auf die ein Client zugreift, umbenannt werden. Daher ist es am besten, es in den meisten Fällen deaktiviert zu lassen. Es hat einige geringfügige Auswirkungen auf die Sicherheit, kann aber die Zuverlässigkeit verbessern.
  • no_root_squash :Standardmäßig übersetzt NFS alle Operationen, die vom Client als root ausgeführt werden, an einen nicht privilegierten Benutzer auf dem Server. Dies geschieht mit der Absicht, die Sicherheit zu verbessern. Diese Option deaktiviert dieses Verhalten für bestimmte Freigaben.

Wenn Sie fertig sind, schließen Sie die Datei, indem Sie Strg + X drücken und geben Sie Y ein wenn Sie dazu aufgefordert werden.

Starten Sie den NFS-Server neu, um die Änderungen zu übernehmen.

$ sudo systemctl restart nfs-kernel-server

Schritt 4 – Host-Firewall konfigurieren

Best Practice bei NFS ist es, es speziell für die IP-Adresse jedes Clients separat zu aktivieren, anstatt den Zugriff darauf von überall zuzulassen.

NFS verwendet Port 2049. Aktivieren Sie den Zugriff für NFS mit dem folgenden Befehl.

$ sudo ufw allow from client_ip to any port nfs

Überprüfen Sie den Status zur Bestätigung.

$ sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                 
2049                       ALLOW       167.100.34.78        
OpenSSH (v6)               ALLOW       Anywhere (v6)

Schritt 5 – Bereitstellungspunkte auf dem Client erstellen

Nachdem unser Host nun konfiguriert ist, ist es an der Zeit, den Client einzurichten.

Erstellen Sie zwei Verzeichnisse für Mounts auf dem Client.

$ sudo mkdir -p /nfs/general
$ sudo mkdir -p /nfs/home

Nachdem wir nun alles auf der Seite des Hosts eingestellt haben, können wir die Freigaben unter Verwendung der IP-Adresse des Hosts mounten.

$ sudo mount host_ip:/var/nfs/general /nfs/general
$ sudo mount host_ip:/home /nfs/home

Sie können mit dem folgenden Befehl überprüfen, ob sie erfolgreich gemountet wurden.

$ df -h
Filesystem                      Size  Used Avail Use% Mounted on
udev                            448M     0  448M   0% /dev
tmpfs                            99M  664K   98M   1% /run
/dev/vda1                        25G  3.2G   21G  14% /
tmpfs                           491M     0  491M   0% /dev/shm
tmpfs                           5.0M     0  5.0M   0% /run/lock
tmpfs                           491M     0  491M   0% /sys/fs/cgroup
tmpfs                            99M     0   99M   0% /run/user/1000
123.175.112.87:/var/nfs/general  25G   18G  6.3G  74% /nfs/general
123.175.112.87:/home             25G   18G  6.3G  74% /nfs/home

Sie können beide gemounteten Freigaben am Ende der Liste sehen. Da beide von demselben Dateisystem gemountet wurden, zeigen sie die vollständige Festplattennutzung und nicht die tatsächliche Nutzung der gemounteten Verzeichnisse.

Verwenden Sie den folgenden Befehl, um zu sehen, wie viel tatsächlicher Speicherplatz unter jedem Mount verwendet wird.

$ du -sh /nfs/general
36K     /nfs/general

Schritt 6 – NFS-Freigabe testen

Erstellen Sie eine Testdatei in /var/nfs/general teilen.

$ sudo touch /nfs/general/general.test

Überprüfen Sie die Inhaberschaft.

$ ls -l /nfs/general/general.test
-rw-r--r-- 1 nobody nogroup 0 Aug  1 13:31 /nfs/general/general.test

Dies wurde mit den standardmäßigen NFS-Optionen gemountet, und da wir die Datei mit root vom Client-Rechner erstellt haben, wurde der Besitz auf dem Host auf nobody:nogroup übertragen . Hier kann der Client-Benutzer keine Verwaltungsaufgaben auf dem Rechner des Hosts ausführen.

Erstellen Sie eine Testdatei für die Freigabe /nfs/home`.

$ sudo touch /nfs/home/home.test

Überprüfen Sie die Inhaberschaft.

$ ls -l /nfs/home/home.test
-rw-r--r-- 1 root root 0 Aug  1 13:32 /nfs/home/home.test

Da wir hier die Testdatei mit root vom Client-Rechner erstellt haben, wurde der Besitz auf dem Host-Rechner beibehalten. Das lag daran, dass wir no_root_squash verwendet haben Flag, das Root-Benutzer auf dem Client-Rechner auch als Root-Benutzer auf dem Host-Rechner erlaubt.

Schritt 7 – NFS-Freigaben während des Bootvorgangs bereitstellen

Diese Mounts werden nicht beibehalten, wenn Sie den Client-Rechner booten. Um sie dauerhaft zu machen, müssen wir die /etc/fstab bearbeiten Datei.

Öffnen Sie die /etc/fstab Datei zum Bearbeiten.

$ sudo nano /etc/fstab

Fügen Sie die folgenden Zeilen am Ende der Datei ein. Jede Zeile entspricht jedem Verzeichnis, das beim Booten gemountet werden soll.

. . .
host_ip:/var/nfs/general    /nfs/general   nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
host_ip:/home               /nfs/home      nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0

Um mehr über diese Optionen zu erfahren, lesen Sie die Manpage von nfs .

$ man nfs

Speichern Sie die Datei, indem Sie Strg + X drücken und geben Sie Y ein wenn Sie dazu aufgefordert werden.

Starten Sie den Server neu, um die Mounts zu überprüfen.

$ sudo reboot

Melden Sie sich beim Client-Server an und prüfen Sie, ob die Mounts vorhanden sind.

$ df -h
Filesystem                      Size  Used Avail Use% Mounted on
udev                            448M     0  448M   0% /dev
tmpfs                            99M  664K   98M   1% /run
/dev/vda1                        25G  3.2G   21G  14% /
tmpfs                           491M     0  491M   0% /dev/shm
tmpfs                           5.0M     0  5.0M   0% /run/lock
tmpfs                           491M     0  491M   0% /sys/fs/cgroup
tmpfs                            99M     0   99M   0% /run/user/1000
123.175.112.87:/var/nfs/general  25G   18G  6.3G  74% /nfs/general
123.175.112.87:/home             25G   18G  6.3G  74% /nfs/home

Schritt 8 – Unmounten von NFS-Freigaben

Sobald Sie NFS-Mounts nicht mehr benötigen, können Sie sie mit dem folgenden Befehl aushängen.

$ sudo umount /nfs/home
$ sudo umount /nfs/general

Ein häufiger Fehler ist die Verwendung von unmount statt umount das ist der eigentliche Befehl.

Stellen Sie sicher, dass sie ordnungsgemäß ausgehängt wurden.

$ df -h
Filesystem                      Size  Used Avail Use% Mounted on
udev                            448M     0  448M   0% /dev
tmpfs                            99M  664K   98M   1% /run
/dev/vda1                        25G  3.2G   21G  14% /
tmpfs                           491M     0  491M   0% /dev/shm
tmpfs                           5.0M     0  5.0M   0% /run/lock
tmpfs                           491M     0  491M   0% /sys/fs/cgroup
tmpfs                            99M     0   99M   0% /run/user/1000

Sie müssen auch ihre Einträge aus /etc/fstab löschen Datei, damit sie beim Booten nicht neu gemountet werden. Sie können ihre Einträge auch einfach auskommentieren, indem Sie ein # setzen Zeichen voran, falls Sie die Reittiere wiederverwenden müssen.

Schlussfolgerung

Damit ist unser Tutorial abgeschlossen, in dem wir gelernt haben, wie man NFS-Mounts auf einem Host-Rechner erstellt und wie man von verschiedenen Client-Rechnern darauf zugreift. Wenn Sie Fragen haben, schreiben Sie sie in die Kommentare unten.


Ubuntu
  1. So installieren Sie Chef Server, Workstation und Chef Client unter Ubuntu 18.04

  2. So installieren Sie NTP-Server und -Client unter Ubuntu 18.04 LTS

  3. Installieren Sie UrBackup Server und Client auf Ubuntu 20.04 – wie geht das?

  4. So richten Sie NFS-Server und -Client unter Ubuntu 20.04 ein

  5. Installieren Sie vnc-Server und -Client auf Ubuntu

So installieren Sie UrBackup Server und Client auf Ubuntu 20.04

So installieren Sie Telnet-Server und -Client unter Ubuntu

Installieren Sie NFS-Server und -Client auf Ubuntu

So installieren Sie NTP-Server und Client(s) unter Ubuntu 20.04 LTS

So installieren und konfigurieren Sie NFS unter Ubuntu 22.04/20.04

So installieren Sie den NFS-Server unter Ubuntu 20.04 LTS