NFS
NFS steht für Network File System (oder Nightmare File System).
NFS ist das traditionelle Standard-Protokoll in der Unix/Linux- Welt um Dateisysteme über eine Netzwerkverbindung auf anderen Rechnern transparent einzubinden. Es ist in seiner traditionellen Variante sehr einfach aufzusetzen und resourcenschonend. Die dabei auftretenden, eklatanten Sicherheitsprobleme dieser Konfiguration sind innerhalb des typischen Umfelds eines VDR (lokales, privates Netz) in der Regel vertretbar. Es ist grundsätzlich auch möglich NFS abzusichern z.B durch die Benutzung von Kerberos. Der dabei auftretende Aufwand ist dann jedoch wieder erheblich.
Weitere Details können dem entsprechenden Wikipedia-Artikel entnommen werden.
Inhaltsverzeichnis |
Konfiguration von NFS im Allgemeinen
NFS erfordert den Betrieb einiger Dienste auf Client und Server. Man sollte die Systeme so konfigurieren das diese Dienste automatisch starten, dabei werden dann in der Regel auch gleich die erforderlichen Kernel-Module geladen.
NFS setzt auf RPC auf. Aus diesem Grund muß auf Client und Server der Dienst portmap laufen.
Leider haben die Startskripte für die anderen NFS-Dienste unter unterschiedlichen Linux Distributionen keine einheitlichen Namen. Konsultiert im Fall des Zweifels deshalb bitte die entsprechende Dokumentation der von euch verwendeten Distribution. Der Server-Dienst ist dabei immer vom Client-Dienst getrennt und sollte auch nur auf Servern gestartet werden.
NFS ist heutzutage unter Linux als Teil des Kernel implemetiert. Baut man seinen eigenen Kernel muß man deshalb darauf achten die entsprechende Unterstützung einbauen.
Benutzer- und Gruppenkennungen werden bei NFS nur numerisch übertragen, es ist deshalb sinnvoll die Zuordnung von Namen und Nummern auf den beteiligten Rechnern konsistent zu halten. In der NFS Standardkonfiguration wird aus Sicherheitsgründen wird Kennung 0 (root) eines Client auf dem Server gegen die Kennung nobody gemapt. Dieses grundsätzlich sinnvolle Verhalten lässt sich Serverseitig mit den *_squash Optionen beeinflussen. Wer seinen VDR (unnötigerweise) mit Root-rechten betreibt mag an diesen Punkt auf ein Problem stoßen.
Server
NFS-Freigaben auf dem Server werden werden in der Konfigurationsdatei /etc/exports definiert.
# Beispiel für eine /etc/exports /srv/nfs 192.168.25.3(rw,async) /srv/ftp 192.168.25.0/24(ro,all_squash,async) /woanders clas(rw,no_root_squash,sync) jan(rw,async) hein(rw,async) pit(rw,async)
Änderungen in der /etc/exports können dem NFS-Server im laufenden Betrieb mit dem Kommando exportfs bekanntgegeben werden. Welche Clients Verzeichnisse gemounted haben kann (mehr oder weniger zuverlässig) mit showmount erfragt werden.
Bitte seit vorsichtig vorsichtig was ihr für wen freigebt. Manpages: exports(5), nfsd(8), exportfs(8), showmount(8), mountd(8), nfs(5) usw.
Client
Mit Hilfe des mount- Befehls kann man nun diese "Freigabe" auf den Client mounten:
mount -t nfs servername:/srv/nfs /video0
Automatisiert kann das auf dem Client in der /etc/fstab eingetragen werden:
servername:/srv/nfs /video0 nfs defaults 0 0
Oft lässt sich die Geschwindigkeit mit passenden Optionen leicht steigern:
servername:/srv/nfs /video0 nfs rsize=8192,wsize=8192 0 0
VDR-spezifische Nutzung
Beim VDR wird es bei der Nutzung von NFS in erster Linie darum gehen die Videodaten des Servers auf den Clients einzubinden.
VDR-Server
Der VDR organisiert seine Videodaten so das er entsprechend gemountete Festplattenpartitionen benutzt.
server:~# mount | grep video /dev/hda6 on /var/lib/video.00 type ext3 (rw) /dev/hdb1 on /var/lib/video.01 type ext3 (rw) /dev/hdc1 on /var/lib/video.02 type ext3 (rw)
Auf die erste Partition zeigt dabei ein Softlink:
server:~# ls -dl /var/lib/video* lrwxrwxrwx 1 root root 8 2007-10-24 19:30 /var/lib/video -> video.00 drwxr-xr-x 50 vdr vdr 4096 2008-05-19 20:05 /var/lib/video.00 drwxr-xr-x 50 vdr vdr 4096 2008-05-19 20:05 /var/lib/video.01 drwxr-xr-x 50 vdr vdr 4096 2008-05-19 20:05 /var/lib/video.02
Für jede Video-Partition definiert man einen Eintrag in der /etc/fstab:
# /etc/exports /var/lib/video.00 192.168.25.156(rw,async,subtree_check) /var/lib/video.01 192.168.25.156(rw,async,subtree_check) /var/lib/video.02 192.168.25.156(rw,async,subtree_check)
Danach benutzt man das Kommando exportfs um dem NFS-Server die Änderungen übernehmen zu lassen.
server:~# exportfs -a
VDR-Client
Da der VDR bei der Verwendung von mehreren Video-Partitionen absolute Softlinks auf die anderen Partitionen anlegt müssen die NFS-Freigaben auf den selben Mountpunkten gemountet werden.
Anlegen der Mountpoints:
client:~# mkdir -p /var/lib/video.00 /var/lib/video.01 /var/lib/video.02 client:~# cd /var/lib client:~# ln -s video.00 video
Eintragen der Mounts in die /etc/fstab:
# /etc/fstab server:/var/lib/video.00 /var/lib/video.00 nfs defaults 0 0 server:/var/lib/video.01 /var/lib/video.01 nfs defaults 0 0 server:/var/lib/video.02 /var/lib/video.02 nfs defaults 0 0
Der Client mounted die NFS-Freigaben nach dem Aufruf von mount -a oder nach dem nächsten Reboot.
Auf diese Weise zeigen die Softlinks auf der ersten Video-Platte sowohl beim Client als auch beim Server an die richtige Stellen.