NFS-Konfiguration

Aus Synology Wiki
Wechseln zu: Navigation, Suche

Konfiguration unter Windows XP

ursprünglich erstellt von Benutzer papiga01 im Forum der NFS Teil für Linux ist später separat dazugekommen.

Voraussetzungen

  • Auf der DS ist NFS aktiviert.
  • Es existiert ein User mit Passwort (nennen wir ihn mal "Foo" und dass Passwort "Bar"
  • Auf der DS ist ein Verzeichnis freigegeben d.h. in der Datei /etc/exports existiert ein Eintrag z.b.
/volume1/music  192.168.1.0/255.255.255.0(rw,no_wdelay,root_squash,insecure_locks,anonuid=1024,anongid=100)

Vorbereitung

Von der DS kopiert man sich die Dateien (oder ihren Inhalt): /etc/passwd und /etc/group auf den PC in c:\ Anmerkung: in den kopierten Dateien c:\passwd und c:\group braucht man nicht alle Einträge, sondern nur diejenigen Einträge, die den user "Foo" betreffen. Den Rest kann man entfernen.)

Installation

  • Für Windows XP folgende Datei downloaden: Windows Services for UNIX Version 3.5 von dieser Downloadseite
  • Mit einem Doppelklick wird die Datei entpackt, danach startet man SfuSetup.msi und wählt die Custom Installation.
  • Bei den Komponenten wählt man Client for NFS und User Name Mapping aus, den Rest kann man abwählen.
  • Im nächsten Schritt wählt man password and group files und schreibt dann c:\passwd und c:\group

Benutzung Windows

  • In XP den Explorer öffnen und unter Netzwerkumgebung - Gesamtes Netzwerk müsste nun NFS Network neu hinzugekommen sein.
  • Darunter befindet sich Default LAN und darunter die DiskStation mit den freigegebenen Verzeichnissen (/volume1/music).
  • Mit einem Rechtsklick auf ein freigegebenes Verzeichnis kann man das Verzeichnis auch einem Laufwerksbuchstaben zuweisen (User:Foo Passwort:Bar)

Konfiguration des NFS-Clients mit Linux

  • Beispiel Mount unter Linux in der /etc/fstab (diskstation mit der IP-Adresse ersetzen)
diskstation:/volume1/myfiles /myfiles nfs auto,user,defaults,rsize=32768,wsize=32768,tcp,intr 0 0

intr ist wichtig, da man sonst bei einem hängenden Mount z.B. DS wurde ausgeschaltet, keinen umount mehr hinbekommt.

rsize und wsize sind die Buffergrössen und können ruhig Maximal eingestellt werden. Speicher ist nicht mehr sooo teuer, dass man Hamstern muss.

tcp sollte defaultmässig gesetzt sein und ist nur noch mal zur Sicherheit drin. Performance technisch sollte man keinen grösseren Unterschied (Also TCP langsammer) zu UDP merken .

user ermöglich den Mount durch einen Benutzer vorzunehmen.

auto mountet automatisch beim Booten.

defaults sind defaults...

NFS und Benutzerrechte

Wenn die Diskstation mittels NFS genutzt wird, ist es sehr empfehlenswert, die UIDs und GIDs (Benutzer- und Gruppen-IDs) zwischen der Diskstation und den Linux-Clients anzupassen. So bleiben die Benutzerrechte von Dateien und Ordnern auf NFS-Laufwerken und Linux-Clients konsistent, was dem Nutzer langfristig Dateizugriffsprobleme erspart. Wichtig: Da die Diskstations noch immer nicht das Programm usermod enthalten, das zur Bearbeitung der UIDs und GIDs auf der Konsole nötig wäre, müssen UIDs und GIDs auf den Linux-Clients angepasst werden!

Zunächst meldet man sich - am besten - mittels ssh an der Diskstation an (Terminal: ssh admin@IP_der_Diskstation) und sucht in der Datei cat /etc/passwd den Nutzernamen mit seiner UID und GID, den man auch auf dem Linux-Client nutzt bzw. nutzen möchte, zum Beispiel linuxuser_A.

Die UIDs und GIDs können nun auf zwei Arten korrekt eingestellt werden.

Fall 1) User ist auf dem Linux-Client noch nicht vorhanden, aber bereits auf der Diskstation (Beispiel linuxuser_A):

Beispiel:

linuxuser_A:x:1027:100::/var/services/homes/linuxuser_A:/sbin/nologin

Die UID ist der 3. Eintrag (= 1027) und die GID der 4. Eintrag (= 100) in der Zeile. Hierbei handelt es sich um den einfachsten Fall. Im Linux-Client kann nun der Nutzer linuxuser_A mit der UID und GID der Diskstation angelegt werden (man adduser).

Fall 2) User ist auf dem Linux-Client schon vorhanden, aber auf der Diskstation noch nicht:

Zunächst legt man auf der Diskstation beispielweise den linuxuser_A an. Anschließend muss auf der Diskstation die Datei /etc/passwd geprüft werden, welche UID und GID für linuxuser_A vergeben wurden (siehe oben).

Nun meldet man sich auf seinem Linux-Client als ein anderer Nutzer als linuxuser_A an, zum Beispiel linuxuser_B. Dies ist nötig, um die UIDs und GIDs ändern zu können. Vor der Änderung sollte man sich mit dem Befehl die bisherigen Werte für UID und GID notieren, beispielweise könnte das 1000 und 1001 sein.

id linuxuser_A 

Mit folgendem Befehl kann nun die UID und GID von linuxuser_A geändert werden:

usermod -u 1027 -g 100 linuxuser_A

Für 1027 und 100 müssen die IDs eingetragen werden, die man aus der Datei /etc/passwd der Diskstation für linuxuser_A abgelesen hat.

Jetzt besteht folgendes Problem: Der User linuxuser_A hat neue IDs erhalten und kann jetzt nicht mehr auf seine Daten zugreifen, da diese ja noch mit den alten IDs abgespeichert worden sind. Lösung: Die IDs müssen verändert werden!

Dazu nutzt man find. Der Benutzer, also linuxuser_A, sollte zur Umstellung immer noch nicht eingeloggt sein, damit auch tatsächlich alle Dateien umgestellt werden können. Der Befehl find muss mit root-Rechten ausgeführt werden.

Verwendung von find - ggfs. muss ganz an den Anfang der Befehl sudo vorangestellt werden:

find / -user <alte UID> -exec chown <neue UID von der Diskstation> {} \;
find / -group <alte GID> -exec chgrp <neue GID von der Diskstation> {} \;

Für das Beispiel mit linuxuser_A heißen die Befehle dann - eventuell mit sudo:

find / -user 1000 -exec chown 1027 {} \;
find / -group 1001 -exec chgrp 100 {} \;

Je nach Dateisystemgröße können die Änderungen eine Weile lang dauern. Erst im Anschluss loggt man sich wieder als linuxuser_A an. Nach dem Einloggen und nachdem die volumes von der Diskstation eingebunden worden sind, ist es ratsam zu überprüfen, ob die UIDs und GIDs von eventuell bereits abgespeicherten Daten(!) auf der Diskstation für linuxuser_A stimmen. Falls nicht, können die Daten einfach mit dem Befehl "find" von oben nachträglich geändert werden. Dazu kann der Ordner bei Bedarf genau gewählt werden, z.B. find /mnt/Server/music -user usw.

Hinweis: Die Beschreibung in Fall 2) richtet sich auch an die User, die bereits seit längerem mit einem "linuxuser_A" auf dem Linux-Client und "linuxuser_A" auf der Diskstation arbeiten und nun endlich einmal UID und GID abgleichen wollen.

Mediaserver und NFS

Bei Benutzung der Mediendienste, für Music, Fotos und Videos ist derzeit (DSM3.0-1372) leider die Nutzung von NFS etwas eingeschränkt. Im Gegensatz zur Nutzung von CIFS wird der Index der Medien Datenbank nicht automatisch mit neuen Daten zu neuen Dateien gefüllt. Um nicht ständig neue Dateien von Hand über die Weboberfläche indizieren zu müssen, ist folgender Eintrag in der /etc/crontab nützlich. Statt "video" ist es möglich Optionen aus video|music|photo|playlist zu verwenden.

15      1       *       *       *       root    /usr/syno/bin/synoindex -R video

Linux Automounter mit autofs

Hinweis: Die unten dargestellte Vorgehensweise bezieht sich auf Debian-basierte Distributionen. Bei auf Arch basierten Distributionen muss im ArchWiki nachgelesen werden: https://wiki.archlinux.org/index.php/Autofs

Da man mit festen Einträgen in der /etc/fstab für NFS unter Umständen hängende NFS-Mounts bekommen kann, ist es möglich stattdessen die NFS-Mounts über Automounter einhängen zu lassen. Dazu muss autofs installiert sein.

Zunächst wird ans Ende der Datei /etc/auto.master eingetragen:

/mnt/Server       /etc/auto.misc

Hinweis: Bei /mnt/Server kann anstelle von "Server" auch ein anderer Ordnername eingetragen werden, z.B. /mnt/meinServer. Das Verzeichnis wird dann nach einem Neustart vom System angelegt. Sollte jemand das Verzeichnis nachträglich verändern wollen, sollte das System anschließend auch neu gestartet werden.

Danach werden die freigegebenen Ordner von der Diskstation in /etc/auto.misc eingetragen (für das NFS-Filesystem):

video        -rsize=32768,wsize=32768,intr,tcp,timeo=300,rw      diskstation:/volume1/video

Es können auch mehrere Einträge gleichzeitig eingetragen werden:

video        -rsize=32768,wsize=32768,intr,tcp,timeo=300,rw      diskstation:/volume1/video
musik        -rsize=32768,wsize=32768,intr,tcp,timeo=300,rw      diskstation:/volume1/musik
fotos        -rsize=32768,wsize=32768,intr,tcp,timeo=300,rw      diskstation:/volume1/fotos

Beachte: Für diskstation muss jeweils die IP-Adresse der Diskstation eingetragen werden!

Nach Anlegen des Verzeichnisses /mnt/Server z.B. mit "mkdir /mnt/Server" (siehe auch den Hinweis oben!!) und einem Neustart von autofs (hängt von der Distribution ab, z.B. bei gentoo, Linuxmint /etc/init.d/autofs restart), werden die Verzeichnisse automatisch gemountet. Dazu gibt man im Terminal ein: cd /mnt/Server/video . Mit einem symbolischen Link z.B. "ln -s /mnt/Server/video /mnt" kann der Mount-Punkt dort zugänglich gemacht werden, wo er benötigt wird. Alternativ kann im Dateimanager ein Lesezeichen hinzugefügt werden, wenn man den Ordner geöffnet hat.

Troubleshooting:

Falls das Mounten nicht klappt, wird das Paket "nfs-common" in der Distribution nachinstalliert. Anschließend wird mit dem Befehl showmount -e diskstation geprüft (für diskstation die IP-Adresse eintragen), welche NFS-Mountpunkte die Diskstation bereit stellt. Diese Mountpunkte müssen mit der IP-Adresse in /etc/auto.misc identisch sein und ggfs. korrigiert werden. Dazu kann die Weboberfläche der Diskstation geöffnet werden, um die NFS-Berechtigungen einzustellen.

Systemsteuerung > Gemeinsame Ordner > rechte Maustaste auf den zu mountenden Ordner > Bearbeiten > NFS-Berechtigungen

Dort sollten zwei IP-Adressen eingetragen werden: IP-Adresse_der_Diskstation und IP-Adresse_der_Diskstation/24. Beispiel: 192.168.1.110 und 192.168.1.110/24. Anschließend "/etc/init.d/autofs restart" ausführen oder den Computer/Laptop neu starten.

Bemerkungen

  • Unterstützte NFS-Versionen:
NFS 2.0
NFS 3.0

externe Links