kernel-nfsd

Achtung, öffnet in einem neuen Fenster. PDFDruckenE-Mail

Leider werden von Buffalo nur samba und ftp als Protokolle unterstützt. Für die Verwendung mit einem Linux-Rechner bietet das nfs-Protokoll allerdings große Vorteile in der Geschwindigkeit.

Der erste Schritt ist die Installation der OpenLink Firmware. Ich verwende die Version 0.52b. Nach erfolgreicher Installation hat man Zugriff per ssh auf die Linkstation und kann eigene Software installieren.

Die für den kernel-nfsd erforderlichen Pakete habe ich von einem Debian Mirror geladen, mit alien in tar-Archive umgewandelt und erstmal ausgepackt.

 

Erforderliche Pakete und Dateien


portmap:
FILE                                                        PACKAGE
etc/init.d/portmap net/portmap
sbin/pmap_dump net/portmap
sbin/pmap_set net/portmap
sbin/portmap net/portmap
usr/share/doc/portmap/README.gz net/portmap
usr/share/doc/portmap/changelog.Debian.gz net/portmap
usr/share/doc/portmap/changelog.gz net/portmap
usr/share/doc/portmap/copyright net/portmap
usr/share/doc/portmap/portmapper.txt.gz net/portmap
usr/share/man/man8/pmap_dump.8.gz net/portmap
usr/share/man/man8/pmap_set.8.gz net/portmap
usr/share/man/man8/portmap.8.gz net/portmap


nfs-common:

FILE                                                        PACKAGE
etc/default/nfs-common net/nfs-common
etc/init.d/nfs-common net/nfs-common
sbin/rpc.lockd net/nfs-common
sbin/rpc.statd net/nfs-common
sbin/showmount net/nfs-common
usr/sbin/nfsstat net/nfs-common
usr/share/doc/nfs-common/README net/nfs-common
usr/share/doc/nfs-common/changelog.Debian.gz net/nfs-common
usr/share/doc/nfs-common/changelog.gz net/nfs-common
usr/share/doc/nfs-common/copyright net/nfs-common
usr/share/man/man8/lockd.8.gz net/nfs-common
usr/share/man/man8/nfsstat.8.gz net/nfs-common
usr/share/man/man8/rpc.lockd.8.gz net/nfs-common
usr/share/man/man8/rpc.statd.8.gz net/nfs-common
usr/share/man/man8/showmount.8.gz net/nfs-common
usr/share/man/man8/statd.8.gz net/nfs-common


nfs-kernel-server:


FILE PACKAGE

etc/default/nfs-kernel-server net/nfs-kernel-server
etc/exports net/nfs-kernel-server
etc/init.d/nfs-kernel-server net/nfs-kernel-server
usr/sbin/exportfs net/nfs-kernel-server
usr/sbin/rpc.mountd net/nfs-kernel-server,net/nfs-user-server
usr/sbin/rpc.nfsd net/nfs-kernel-server,net/nfs-user-server
usr/share/doc/nfs-kernel-server/NEWS.Debian.gz net/nfs-kernel-server
usr/share/doc/nfs-kernel-server/README net/nfs-kernel-server
usr/share/doc/nfs-kernel-server/changelog.Debian.gz net/nfs-kernel-server
usr/share/doc/nfs-kernel-server/changelog.gz net/nfs-kernel-server
usr/share/doc/nfs-kernel-server/copyright net/nfs-kernel-server
usr/share/man/man5/exports.5.gz net/nfs-kernel-server,net/nfs-user-server
usr/share/man/man7/nfsd.7.gz net/nfs-kernel-server
usr/share/man/man8/exportfs.8.gz net/nfs-kernel-server
usr/share/man/man8/mountd.8.gz net/nfs-kernel-server
usr/share/man/man8/nfsd.8.gz net/nfs-kernel-server
usr/share/man/man8/rpc.mountd.8.gz net/nfs-kernel-server,net/nfs-user-server
usr/share/man/man8/rpc.nfsd.8.gz net/nfs-kernel-server,net/nfs-user-server

dann benötigt man noch die folgenden Kernel-Module:

lib/modules/2.4.20_mipsel_linkstation/kernel/net/sunrpc/sunrpc.o
lib/modules/2.4.20_mipsel_linkstation/kernel/fs/nfsd/nfsd.o
lib/modules/2.4.20_mipsel_linkstation/kernel/fs/lockd/lockd.o

Die Module sind in der von Buffalo veröffentlichten Kernel Source bereits enthalten und müssen durch die folgenden Einstellungen in der .config eingeschaltet werden:

CONFIG_NFS_FS=m
CONFIG_NFSD=m
CONFIG_NFSD_V3=y
CONFIG_NFSD_TCP=y

Ich habe jetzt noch die Patches von "nfs-Guru" Trond Myklebust eingespielt (einige müssen von Hand eingepflegt werden, da die Vanilla- Sourcen hier wohl bereits verändert waren). Für die maximale Blockgröße gibt es einen Patch von Neil Brown, der die Blockgröße an PAGE_SIZE anpaßt.

Jetzt die Kernel-Module übersetzen und in die o.a. Verzeichnisse kopieren. Anschließen die Modulabhängigkeiten mit depmod -a neu erzeugen.

Zusätzlich war bei mir noch die Datei /etc/rpc erforderlich, ohne die nfsv3 nicht funktioniert. Diese Datei ist im Paket netbase enthalten. Ich habe sie aber von einem anderen Debian System kopiert. Der portmapper benötigt noch das Verzeichnis /var/run.

Testen

Eintragen der Freigaben in die /etc/exports:

# /etc/exports: the access control list for filesystems which may be exported
# to NFS clients. See exports(5).
/mnt/hda/share dbox(rw,async,no_root_squash)

Hier wird das Verzeichnis /mnt/hda/share für den Rechner dbox ohne Einschränkungen freigegeben. Die Beispieldatei befindet sich als /etc/exports.sample im Download-Archiv. Spätere Änderungen in der Datei werden mit dem Kommando exportfs -r übernommen. Die Freigaben können mit showmount -e überprüft werden.

Zuerst die Dienste von Hand starten und auf Feldermeldungen (/var/log/messages) achten:

/etc/init.d/portmap start
/etc/init.d/nfs-kernel-server start
/etc/init.d/nfs-common start

Gibt es Probleme mit einem Dienst, diesen zuerst mit /etc/init.d... stop beenden, ändern und anschließend wieder starten.

Konnte alles ohne Fehler gestartet werden, dann mit lsmod nachschauen, ob die Kernel-Module geladen worden sind.

Nun von die Freigabe auf einem anderen Rechner mounten:

mount -t nfs -o nfsvers=3,rsize=32768,wsize=32768 nas:/mnt/hda/share /mnt 

nas ist hier durch den Hostnamen bzw. die IP der LinkStation zu ersetzen. Wenn wir das Verzeichnis vom anderen Rechner mounten konnten, dann nochmal ausgiebig testen und zum Schluß für automatisches Starten und Beenden der Dienste die folgenden Links anlegen:


cd /etc/rc.d/rc2.d
ln -s ../init.d/nfs-common K79nfs-common
ln -s ../init.d/nfs-kernel-server K80nfs-kernel-server
ln -s ../init.d/portmap S32portmap
#
cd /etc/rc.d/rc2.d
ln -s ../init.d/portmap S18portmap
ln -s ../init.d/nfs-kernel-server S20nfs-kernel-server
ln -s ../init.d/nfs-common S21nfs-common
#
cd /etc/rc.d/rc6.d
ln -s ../init.d/nfs-common K79nfs-common
ln -s ../init.d/nfs-kernel-server K80nfs-kernel-server
ln -s ../init.d/portmap S32portmap

Performance

Messung mit bonnie++ von einem Linux Notebook (Debian Sarge, Kernel 2.6.). Die LinkStation wurde gemountet mit:

mount -t nfs -o nfsvers=3,rsize=32768,wsize=32768 nas:/mnt/hda/share /mnt

Version 1.03 ------Sequential Output------ --Sequential Input- --Random-
-Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
blue 1G 7404 29 7541 1 3911 36 10213 45 10517 2 175.4 1
------Sequential Create------ --------Random Create--------
-Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
16 155 2 388 82 508 4 156 2 1377 6 381 4

Download

Das tar-Archiv können Sie hier herunterladen. Das Archiv mit tar zxvf Dateiname -C / auspacken, depmod -a eingeben und dann mit dem Kapitel Testen weitermachen.