1.1 NFS-Eine Übersicht
Network File System (NFS) ist ein beliebtes verteiltes Dateisystemprotokoll, mit dem Benutzer Remote-Verzeichnisse auf ihrem Server bereitstellen können. Mit dem System können Sie Speicherplatz an einem anderen Ort nutzen und mühelos von mehreren Servern auf denselben Speicherplatz schreiben. Es funktioniert daher ziemlich gut für Verzeichnisse, auf die Benutzer häufig zugreifen müssen. Dieses Tutorial erklärt den Vorgang des Einhängens einer NFS-Freigabe auf einem Ubuntu 14.04-Server in einfachen und leicht verständlichen Schritten.
1.2 Vorläufige Informationen
1. Für die Zwecke dieses Tutorials würde es eine Verzeichnisfreigabekonfiguration zwischen zwei Ubuntu 14.04-Servern geben, die beliebig groß sein könnten. Für jeden dieser Server benötigen Sie jedoch ein Konto, das mit sudo eingerichtet wurde Privilegien. 2. Für die Zwecke dieses Tutorials wird der Server, der seine Verzeichnisse freigeben soll, als Host bezeichnet , während der Server, der diese Verzeichnisse bereitstellen soll, als Client bezeichnet wird. 3. Aus Gründen der Einheitlichkeit und Einfachheit werden im gesamten Tutorial die folgenden IP-Adressen verwendet, um auf die Host- und Serverwerte zu verweisen:
- Host:5.6.7.8
- Kunde:333. 333. 333. 333
Benutzer müssen die oben genannten Werte durch ihre unterschiedlichen Host- und Client-Werte ersetzen. Wir sind jetzt bereit, die Schritte zum Mounten einer NFS-Freigabe unter Ubuntu 14.04
zu lernen1.3 Herunterladen und Installieren der Komponenten
Zu Beginn ist es wichtig, die erforderlichen Komponenten sowohl auf den Host- als auch auf den Client-Servern zu installieren. Ausdrücklich auf dem Hostserver müssten Sie den nfs-kernel-server installieren -Paket, mit dem Sie Ihre Verzeichnisse freigeben können. Da dies der erste Schritt ist, den Sie in dieser Sitzung mit apt ausführen, müssen Sie vor der Installation damit beginnen, den lokalen Paketindex zu aktualisieren (wie unten angegeben):
sudo apt-get update
sudo apt-get install nfs-kernel-server
Nach der Installation dieser Pakete können Sie zum Client-Computer wechseln. Auf dem Client-Computer müssten Sie ein Paket namens nfs-common installieren , das NFS-Funktionalität bietet, ohne dass die Serverkomponenten eingeschlossen werden müssen. Auch hier müssen Sie den lokalen Paketindex vor der Installation aktualisieren, um sicherzustellen, dass Sie aktualisierte Informationen haben (wie unten gezeigt):
sudo apt-get update
sudo apt-get install nfs-common
Damit sind Sie am Ende dieses Schritts angelangt und können nun mit dem nächsten fortfahren.
1.4 Erstellen des Freigabeverzeichnisses auf dem Hostserver
Für die Zwecke dieses Tutorials würde es ein Experiment geben, bei dem zwei unterschiedliche Verzeichnisse gemeinsam genutzt werden. Das erste freigegebene Verzeichnis ist das /home-Verzeichnis Benutzerdaten enthalten. Das zweite wäre ein allgemeines Verzeichnis, das speziell für NFS erstellt wird, um die richtigen Einstellungen und Prozesse zu demonstrieren. Dasselbe würde sich unter /var/nfs befinden Als /home-Verzeichnis bereits existiert, lassen Sie uns einfach fortfahren und mit dem Erstellen des Verzeichnisses /var/nfs beginnen , indem Sie den folgenden Befehl verwenden:
sudo mkdir /var/nfs
Wir haben jetzt ein neues Verzeichnis, das ausdrücklich für die gemeinsame Nutzung mit entfernten Hosts vorgesehen ist. Der Besitz dieses Verzeichnisses ist jedoch noch nicht ideal. Wir müssen einem Benutzer in unserem System mit dem Namen noone die Benutzereigenschaft zuweisen . Wir müssen den Gruppenbesitz auch einer Gruppe auf dem System mit dem Namen anygroup zuweisen . Dies kann durch Eingabe des folgenden Befehls erfolgen:
sudo chown noone:anygroup /var/nfs
Es ist wichtig, hier zu beachten, dass wir den Besitz nur für die Verzeichnisse sorgfältig ändern müssen, die besonders für die gemeinsame Nutzung verwendet werden. Beispielsweise darf der Besitz des Home-Verzeichnisses (/home-Verzeichnis) nicht geändert werden, da dies zahlreiche Probleme für Benutzer verursachen würde, die auf dem Host-Server vorhanden sind.
1.5 Konfigurieren der NFS-Exporte auf dem Hostserver
Mit den erstellten und zugewiesenen Verzeichnissen können wir nun in die NFS-Konfigurationsdatei eintauchen, um die gemeinsame Nutzung dieser Ressourcen einzurichten. Dazu müssen Sie /etc/exports öffnen Datei im Texteditor mit Root-Rechten mit dem folgenden Befehl:
sudo nano /etc/exports
Die angezeigten Dateien enthalten einige Kommentare, die Sie über die allgemeine Struktur jeder Konfigurationszeile informieren. Im Wesentlichen würde die Syntax der folgenden ähneln::
directory_to_share client (share_option2,...,share_optionM)
Ziel ist es hier, für jedes der Verzeichnisse, die freigegeben werden müssen, eine Zeile anlegen zu können. Da die IP in unserem gewählten Beispiel zufällig 333.333.333.333 lautet, sollten die Zeilen etwa so aussehen:/home 333.333.333.333(rw,sync,no_root_squash,no_subtree_check) /var/nfs 333.333.333.333(rw,sync ,no_subtree_check) Nehmen wir uns nun eine Weile Zeit, um die in den obigen Zeilen angegebenen Optionen zu verstehen.
- w :Diese Option erlaubt dem Client-Computer sowohl Lese- als auch Schreibzugriff auf das Volume.
- synchronisieren :Es zwingt NFS, Änderungen auf die Festplatte zu schreiben, bevor es antwortet, was zu einer stabileren und konsistenteren Umgebung führt. Dies liegt hauptsächlich daran, dass die Antwort den tatsächlichen Zustand des Remote-Volumes repliziert.
- nosubtreecheck :Diese Option vermeidet die Teilbaumprüfung, ein Prozess, der den Host zwingt, bei jeder Anfrage zu prüfen, ob die Datei tatsächlich noch im exportierten Baum verfügbar ist. Es kann zu Problemen führen, wenn eine Datei umbenannt wird, während der Client sie geöffnet hat. Aus dem gleichen Grund ist es in fast allen Fällen ratsam, die Teilbaumprüfung zu deaktivieren.
- Norootsquash :Standardmäßig übersetzt NFS Anfragen von einem Root-Benutzer aus der Ferne in einen nicht privilegierten Benutzer auf dem Server. Dies ist als Sicherheitsfunktion gedacht, die es einem Root-Konto auf dem Client nicht erlaubt, das Dateisystem des Hosts als Root zu verwenden. Diese Art von Direktive deaktiviert dies für eine bestimmte Anzahl von Shares.
Nachdem Sie alle erforderlichen Änderungen vorgenommen haben, müssen Sie die Änderungen ziemlich vorhersehbar vornehmen und diese Änderungen speichern, bevor Sie die Datei schließen. Anschließend müssen Sie die NFS-Tabelle erstellen, die die Exporte Ihrer Freigaben enthält, indem Sie den folgenden Befehl verwenden:
sudo exportfs -a
Der NFS-Dienst läuft jedoch noch nicht. Sie können dasselbe starten, indem Sie den folgenden Befehl eingeben:
sudo service nfs-kernel-server start
Der obige Befehl soll Ihre Freigaben den Clients zur Verfügung stellen, die Sie konfiguriert hätten. Sie können jetzt mit dem nächsten Schritt fortfahren.
1.6 Erstellen der Mount-Punkte und Mount-Remote-Freigaben auf dem Client-Server
Wenn der Hostserver konfiguriert ist und seine Verzeichnisfreigaben verfügbar macht, müssen Sie jetzt Ihren Client vorbereiten. Hier müssten Sie die Remote-Freigaben mounten, daher müssen Sie einige Mount-Punkte erstellen. Sie würden das herkömmliche /mnt verwenden zu beginnen und anschließend ein Verzeichnis mit dem Namen NFS zu erstellen darunter zur Konsolidierung der Aktien. Hier sollen die tatsächlichen Verzeichnisse ihrem Standort auf dem Hostserver entsprechen. Benutzer können jedes Verzeichnis und die erforderlichen übergeordneten Verzeichnisse mit dem folgenden Befehl erstellen:
sudo mkdir -p /mnt/nfs/home
sudo mkdir -p /mnt/nfs/var/nfs
Nachdem Sie einen angemessenen Platz zum Unterbringen der entfernten Freigaben geschaffen haben, sind Sie nun in der Lage, sie einzuhängen, indem Sie den Host-Server adressieren, der für die Zwecke dieses Tutorials 5.6.7.8 ist, wie unten gezeigt:
sudo mount 5.6.7.8:/home /mnt/nfs/home
sudo mount 5.6.7.8:/var/nfs /mnt/nfs/var/nfs
Diese sollten es Ihnen ermöglichen, die Freigaben vom Host-Computer auf dem Client-Computer bereitzustellen. Sie können dies überprüfen, indem Sie sich den verfügbaren Speicherplatz auf dem Client-Server ansehen (wie unten angegeben):
df -h
Filesystem Size Used Avail Use% Mounted on /dev/vda 59G 1.3G 55G 3% / none 4.0K 0 4.0K 0% /sys/fs/cgroup udev 2.0G 12K 2.0G 1% /dev tmpfs 396M 324K 396M 1% /run none 5.0M 0 5.0M 0% /run/lock none 2.0G 0 2.0G 0% /run/shm none 100M 0 100M 0% /run/user 5.6.7.8:/home 59G 1.3G 55G 3% /mnt/nfs/home
Wie unten ersichtlich ist, ist nur eine der beabsichtigten Freigaben sichtbar, da beide exportierten Freigaben auf demselben Dateisystem auf dem Remote-Server vorhanden sind, was bedeutet, dass sie denselben Speicherpool teilen. Für die Avail und Verwendung % Genauer gesagt darf nur einer der Anteile in die Berechnungen aufgenommen werden. Wenn Sie dennoch alle von Ihnen gemounteten NFS-Freigaben anzeigen möchten, können Sie den folgenden Befehl eingeben:
mount -t nfs
5.6.7.8:/home on /mnt/nfs/home type nfs (rw,vers=4,addr=5.6.7.8,clientaddr=333.333.333.333) 5.6.7.8:/var/nfs on /mnt/nfs/var/nfs type nfs (rw,vers=4,addr=5.6.7.8,clientaddr=333.333.333.333)
Der obige Befehl wirft alle NFS-Mounts auf, auf die derzeit auf dem Client-Computer zugegriffen werden kann, was Sie zum Ende dieses Schritts bringt, und es ist jetzt an der Zeit, mit dem nächsten fortzufahren.
1.7 NFS-Zugriff testen
Sie können den Freigabezugriff testen, indem Sie etwas in Ihre Freigaben schreiben, zum Beispiel eine Testdatei in eine Ihrer Freigaben (wie unten gezeigt):
sudo touch /mnt/nfs/home/test_home
Hier werden wir auch eine Testdatei in die andere Freigabe schreiben, um einen wichtigen Unterschied zu demonstrieren:
sudo touch /mnt/nfs/var/nfs/test_var_nfs
Bitte sehen Sie sich den Eigentümer der Datei im gemounteten Home-Verzeichnis (wie unten gezeigt) genau an, um den Unterschied zu verstehen:
ls -l /mnt/nfs/home/test_home -rw-r--r-- 1 root root 0 Apr 27 12:58 test_home
Wie man sieht, gehört die Datei root, weil Sie den root_squash deaktiviert haben Option auf diesem Mount, die die Datei als unbekannter Nicht-Root-Benutzer geschrieben hätte. Bei der anderen Testdatei, die mit aktiviertem root_squash gemountet wurde, werden Sie etwas ganz anderes bemerken (wie unten erklärt):
ls -l /mnt/nfs/var/nfs/test_var_nfs -rw-r--r-- 1 noone anybody 0 Apr 27 12:58 test_var_nfs
Diese Datei wurde eindeutig niemand zugewiesen Benutzer und irgendjemand Gruppe. Daher entspricht dies der voreingestellten Konfiguration. Lassen Sie uns nun zum nächsten Schritt übergehen.
1.8 Automatisches Mounten von Remote-NFS-Verzeichnissen
Sie haben die Möglichkeit, das Mounten der Remote-NFS-Freigaben automatisch zu machen, indem Sie sie zur fstabfile hinzufügen auf dem Kunden. Sie müssen diese Datei mit Root-Rechten in Ihrem Texteditor öffnen, indem Sie den folgenden Befehl verwenden:
sudo nano /etc/fstab
Ganz unten in der Datei müssen Sie für jede der Freigaben eine Zeile hinzufügen, die in etwa so aussehen würde wie unten angegeben:
5.6.7.8:/home /mnt/nfs/home nfs auto,noatime,nolock,bg,nfsvers=4,intr,tcp,actimeo=1800 0 0
5.6.7.8:/var/nfs /mnt/nfs/var/nfs nfs auto,noatime,nolock,bg,nfsvers=4,sec=krb5p,intr,tcp,actimeo=1800 0 0
Die hier angegebenen Optionen finden Sie in der Manpage, die das NFS-Mounting in der fstab beschreibt Datei, indem Sie den folgenden Befehl verwenden:
man nfs
Dadurch können Sie die Remote-Partitionen beim Booten automatisch einhängen. Es kann eine Weile dauern, bis die Verbindung hergestellt ist und die Freigaben verfügbar sind (Geduld ist hier eine Tugend!!)
1.9 Unmounten einer NFS-Remote-Freigabe
Wenn Sie das Remote-Verzeichnis nicht länger auf Ihrem System einhängen müssen, können Sie es einfach aushängen, indem Sie sich aus der Verzeichnisstruktur der Freigabe herausbewegen und aushängen, indem Sie den folgenden Befehl verwenden:
cd ~
sudo umount /mnt/nfs/home
sudo umount /mnt/nfs/var/nfs
Dadurch können Sie die Remote-Freigaben entfernen und nur Ihren lokalen Speicher zugänglich machen:
df -h Filesystem Size Used Avail Use% Mounted on /dev/vda 59G 1.3G 55G 3% / none 4.0K 0 4.0K 0% /sys/fs/cgroup udev 2.0G 12K 2.0G 1% /dev tmpfs 396M 320K 396M 1% /run none 5.0M 0 5.0M 0% /run/lock none 2.0G 0 2.0G 0% /run/shm none 100M 0 100M 0% /run/user
Wie klar ist, stehen die NFS-Freigaben jetzt nicht als Speicherplatz zur Verfügung. Dies bringt Sie zum Ende des Tutorials.
1.10 Zusammenfassung
NFS bietet einen einfachen und schnellen Mechanismus für den Zugriff auf entfernte Systeme über ein Netzwerk. Das Protokoll steht jedoch unverschlüsselt da. Wenn Sie beabsichtigen, dies in einer Produktionsumgebung zu verwenden, ist es ratsam, das Routing von NFS über SSH oder eine VPN-Verbindung in Betracht zu ziehen, um eine weitaus sicherere Erfahrung zu schaffen.