NFSv4
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
Dieser Artikel behandelt den Umgang mit dem NFS (Network File System) in der Version 4 und stellt die Unterschiede gegenüber der älteren Versionen 2/3 heraus. Ein Artikel zu NFS im Allgemeinen (mit weiterführenden Details) findet sich in NFS.
Vorteil von NFSv4¶
Gegenüber der vorherigen Versionen bietet NFS in der Version 4 einige Verbesserungen und Vereinfachungen:
Der bemerkenswerteste Unterschied ist, dass NFSv4 mit einem einzelnen Protokoll auskommt. In früheren Varianten von NFS waren stattdessen immer mehrere Protokolle nötig, die vom sog. Portmapper bei jedem Neustart einen Port zugewiesen bekamen. Diese Neuerung macht es v.a. für die (Netzwerk-)Administration um einiges einfacher, da beispielsweise bei Firewall-Freigaben nur noch der NFS-Port 2049 berücksichtigt werden muss.
Weitere Unterschiede¶
NFSv4 kennt UTF-8, sodass es bei Dateinamen mit Sonderzeichen keine Probleme mehr geben sollte.
Das Caching wurde erheblich verbessert, dadurch ist NFSv4 einiges schneller.
Authentifizierung via Kerberos möglich. (Siehe separater Artikel Kerberos/NFS mit Kerberos sichern)
Das Standardprotokoll ist TCP statt UDP wie bei NFSv3.
Das File-Locking wurde verbessert. Dies bedeutet insbesondere weniger Probleme, falls ein und dieselben Ordner via Samba und NFS frei gegeben werden.
Anforderung an die Systemumgebung¶
Wie in den NFS-Versionen zuvor ist es für einen reibungslosen und sicheren Betrieb von Vorteil, wenn alle Benutzer im Netzwerk eindeutige UIDs haben. Alternativ können ab NFSv4 die Berechtigungen auch über die Linux-Benutzernamen gesteuert werden. Zur Autorisierung wird hierfür die Kombination aus Benutzernamen und DNS-Domäne des Rechners verwendet. Falls Server und Client unterschiedlichen DNS-Domänen angehören, kann eine gemeinsame Domäne in der Datei /etc/idmapd eingetragen werden. Weiteres gibt es dazu in der Manpage des idmapd.
Installation¶
Sollte NFS noch nicht vorhanden sein, lässt es nachträglich problemlos installieren. Folgende Pakete und deren Abhängigkeiten müssen über die Paketverwaltung [1] installiert werden.
Server¶
Wenn der Rechner als Server dienen soll, der Dateien bereitstellt:
nfs-kernel-server
Befehl zum Installieren der Pakete:
sudo apt-get install nfs-kernel-server
Oder mit apturl installieren, Link: apt://nfs-kernel-server
Die unterstützten Protokollversionen des Servers können mit dem Befehl
sudo cat /proc/fs/nfsd/versions
abgefragt werden.
Client¶
Wenn der Rechner nur als Client agieren soll, der auf andere Freigaben zugreift:
nfs-common
Befehl zum Installieren der Pakete:
sudo apt-get install nfs-common
Oder mit apturl installieren, Link: apt://nfs-common
Freigaben¶
Gegenüber den Versionen 2/3 wird bei der Freigabe über NFSv4 ein sogenanntes "Pseudodateisystem" benötigt. Im Folgenden wird erklärt, was es damit auf sich hat:
Beispiel:
Als Hauptverzeichnis für die Freigaben auf dem Server soll /srv/nfsv4 dienen. Dazu wird zuerst ein Verzeichnis angelegt[2]:
sudo mkdir /srv/nfsv4
Dieses Verzeichnis ist das Pseudodateisystem, das als Wurzelverzeichnis für die Freigaben dient. Darin enthalten sollen nun zwei einzelne Freigaben erstellt werden.
sudo mkdir /srv/nfsv4/freigabe1 sudo mkdir /srv/nfsv4/freigabe2
Die Freigaben selbst werden wie bei NFSv2/3 durch direkte Bearbeitung der Datei /etc/exports verwaltet. Dazu muss diese Datei angelegt und/oder bearbeitet werden. Zu Beachten ist hier die Angabe des Pseudodateisystems in der ersten Zeile.
Format/Syntax des Files /etc/exports
<pseudo-dateisystem> <rechneradresse>(<optionen>,fsid=0) <pfad1> <rechneradresse>(<optionen>) <pfad2> <rechneradresse>(<optionen>)
Man beachte die spezielle Option vom Pseudo-Dateisystem 'fsid=0'. Diese markiert das oberste Verzeichnis für alle Freigaben zusammen. Um die oben angelegten Verzeichnisse frei zu geben, werden beispielsweise folgende Zeilen benötigt:
/srv/nfsv4 192.168.2.0/24(rw,sync,root_squash,no_subtree_check,fsid=0) /srv/nfsv4/freigabe1 192.168.2.0/24(rw,sync,root_squash,no_subtree_check) /srv/nfsv4/freigabe2 192.168.2.0/24(rw,sync,root_squash,no_subtree_check)
Achtung!
Als Rechneradresse kann neben einer IP-Adresse oder eines IP-Bereiches auch ein Rechnername oder ein DNS-Domainname angegeben werden. Allerdings müssen im Gegensatz zu IP-Adressangaben diese Namen bereits beim Systemboot richtig aufgelöst werden können, was nicht immer der Fall sein muss. Kann der Name beim Booten nicht aufgelöst werden, wird die Freigabe nicht erstellt. Dies kann zu erheblichen Problemen führen.
Nun muss der NFS-Server noch dazu veranlasst werden, die /etc/exports neu einzulesen.
sudo service nfs-kernel-server reload
Ein Test auf dem Server zeigt die Freigaben:
sudo exportfs -v
Einhängen der Freigaben am Client¶
Um zu testen, ob sich die Freigaben am Client fehlerfrei einbinden lassen, hängt man die Verzeichnisse einmal direkt via Kommandozeile ein. Zu beachten ist hier, dass das Pseudodateisystem das Wurzelverzeichnis der Freigabe definiert - / bei der Angabe der Freigabe entspricht also /srv/nfsv4 auf dem NFS-Server.
Zuerst wird der Mountpoint für die Freigaben erstellt:
sudo mkdir /mnt/nfsv4-test
Dann wird die erste Freigabe in das Verzeichnis eingehängt:
sudo mount -t nfs -o nfsvers=4 <nfs-server>:/freigabe1 /mnt/nfsv4-test
Stattdessen kann auch das ganze Wurzelverzeichnis eingehängt werden:
sudo mount -t nfs -o nfsvers=4 <nfs-server>:/ /mnt/nfsv4-test
Wenn bis hierher alles geklappt hat, kann man sich alle Mountpoints noch mit dem Befehl
mount
anzeigen lassen.
Wenn alles geklappt hat, kann man die NFS-Freigabe in die fstab eintragen, z.B.
<nfs-server>:/ /mnt/nfsv4-test nfs nfsvers=4,rw 0 0
Wenn man eine höhere NFS-Version als 4.0 verwenden möchte, kann man dies mit der Option '-o minorversion=' angeben. Der fstab-Eintrag
<nfs-server>:/ /mnt/nfsv4-test nfs nfsvers=4,minorversion=2,rw 0 0
hängt die Freigabe mit der NFS-Version 4.2 ein.
Links¶
Intern¶
NFS – Grundartikel zu NFS (hauptsächlich Version 2/3)
Serverdienste – Übersichtsartikel
Heimnetzwerk – Einführender Artikel; betrifft vor allem einfache Anwendungen
Autofs – Erlaubt auch die Auswahl ("browse") und das Einbinden von NFS-Freigaben
Extern¶
NFSv4Howto 🇬🇧 – im Ubuntu Help Wiki
http://wiki.linux-nfs.org/wiki/index.php/NFSv41_Introduction 🇬🇧 - NFSv41_Introduction
https://patchwork.kernel.org/patch/9769919 🇬🇧 - Eintrag aus der Mailingliste zur Angabe der Minorversion