NFSv4 mit Ubuntu
Getestet mit:
- Server:
Ubuntu Alternate Intrepid Ibex (8.10)
Ubuntu Alternate Jaunty Jackalope (9.04)
- Client:
Kubuntu Jaunty Jackalope (9.04)
Kubuntu Karmic Koala (9.10 beta)
Ich hatte ein paar schwierigkeiten mit diesem HowTo: https://help.ubuntu.com/community/NFSv4Howto/ Irgendwie wollte der Server nur das NFSv4 Protokoll zur Verfügung stellen. Ich hab einige man files gelesen, ein paar Einstellungen geändert und plötzlich hat das NFSv4 Protokoll funktioniert. Ich hatte eigentlich nur Sachen geändert, welche die Performance verringern aber die Datenintegrität erhöhen (das ist mir wichtiger). Da ich nicht weiss, welche Änderung zum Erfolg geführt hat gebe ich hier mal alle Einstellungen an, die ich gemacht habe. Das folgende entspricht fast dem Ohne-Kerberos-Teil des oben genannten HowTos. Ich habe das ganze auf Ubuntu 8.10 alternate (auf dem server) und Kubuntu 9.04 (client) ausprobiert.
Installation
Auf dem System, dass als NFS Client funtionieren soll:
# apt-get install nfs-common
Auf dem System, dass als NFS Server funktionieren soll:
# apt-get install nfs-kernel-server
Es gibt auch ein nfs-user-server package. Es soll bessere Fehlermeldungen geben, aber die Performance soll nicht so gut sein.
Konfiguration ohne Kerberos
Diese Konfiguration sollte nicht in einem öffentlich zugänglichen Netzwerk benutzt werden, wenn die Daten auf dem Server nicht öffentlich sein sollen. Für ein privates LAN hinter einem NAT ohne Weiterleitung zu Port 2049 und mit gut abgesichertem (oder ohne) WLAN sollte es ok sein.
Konfiguration des NFS Servers
Vorbemerkung: Nach dem konfigurieren: Am besten den Server komplett neu starten. Aus irgendeinem Grund ist sonst nur die NFS Protokollversion 3 aktiv.
Es muss ein Pseudodateisystem mit den Verzeichnissen erstellt werden, die exportiert (freigegeben) werden sollen. Das geht einfach durch mounten der Verzeichnisse in ein anderes Dateisystem mit der --bind Option. [Mehr Infos hier (englisch)].
Pseudodateisystem um die User-Verzeichnisse im /home Verzeichnis zu exportieren (freizugeben):
# mkdir /export # mkdir /export/users
Zum sofortigen benutzen:
# mount --bind /home /export/users
Wenn die exports nach einem Neustart verfügbar sein sollen, diese zeile zu /etc/fstab hinzufügen:
/home /export/users none bind 0 0
Nun würde man mit dem exportfs Befehl dem NFS Server sagen, dass er daraus sein Pseudodateisystem machen soll, auf Ubuntu/Debian Systemen gibt es aber ein init Skript um den Server zu starten und die exports einzurichten. Dieses init Skript kann über folgende Konfigurationsdateien beeinflusst werden:
/etc/default/nfs-kernel-server:
NEED_SVCGSSD=no
/etc/default/nfs-common:
NEED_STATD=no NEED_IDMAPD=yes NEED_GSSD=no
Um die Dateien in dem Subnetz 192.168.1.0/24 freizugeben, folgende Zeile in /etc/exports einfügen. 192.168.1.0/24 kann z.B. durch einen einzelnen Hostnamen oder * (die ganze Welt glaube ich) ersetzt werden:
/export/users 192.168.1.0/24(rw,sync,fsid=0,insecure,no_subtree_check)
- Serverdienst (neu)starten:
# /etc/init.d/nfs-kernel-server restart
NFSv4 Client
Den Export vom Server zur sofortigen Verwendung mounten (<NFS-SERVER> durch den Hostnamen des Servers ersetzen):
# mkdir /nfs-home # mount -t nfs4 <NFS-SERVER>:/ /nfs-home
Eintrag in /etc/fstab, damit der Export auch nach einem Neustart verwendet werden kann:
<NFS-SERVER>:/ /nfs-home nfs4 _netdev,auto 0 0
Die auto Option mountet beim Neustart und die _netdev Option wartet bis die Netzwerkgerätemodule geladen wurden.
Bei Fehlern mal folgendes versuchen:
# /etc/init.d/nfs-common restart
Links
NFSv4 project (englisch)
Official linux FAQ (englisch)
Umich CITI intructions (englisch)
Learning NFSv4 with Fedora Core 2 (englisch)
Microsoft Support: NFS unter Windows (deutsch)