# Kernel NFS

Noch steht die Entwicklung des NFS-Kernel-Dämons am Anfang... fehlende Eigenschaften sind:

- Die Unterstützung von NFS über TCP (momentan nur UDP)
- Die Authentifizierung der Clients mittels DES (Data Encryption Standard)
- Umsetzung des NFS-Protokolls Version 3 (als Alpha-Version verfügbar)

# Den Server einrichten

Zum Lieferumfang des Kernel-Dämons gehören eine Vielzahl von Werkzeugen (meist liegen diese Programme unter `/usr/sbin`):

- `/usr/sbin/kexportfs` Die Tabelle der zu exportierenden Verzeichnisse wird in der Datei `/var/lib/nfs/etab` gehalten (Laut Manual Pages soll die Datei `xtab` heißen; in der mir vorliegenden Version wird oben genannte Datei von `kexportfs` angelegt.). Diese Tabelle wird bei einer Mount-Anforderung vom `mountd` gelesen. `kexportfs` synchronisiert u.a. diese Datei mit der `/etc/exports`. Das Programm kann auch benutzt werden, um ein Verzeichnis zu exportieren, ohne einen entsprechenden Eintrag in `/etc/exports` vornehmen zu müssen.
- `/usr/sbin/knfsstat` Gibt Statistiken zum Kernel-NFS aus.
- `/usr/sbin/knhfsstone` Ein Programm zum Test der Performance der NFS-Operationen.
- `/usr/sbin/kshowmount` Zeigt auf dem Server die aktuell von Clients importierten Verzeichnisse an.
- `/usr/sbin/rpc.klockd` Zum Sperren von Dateien über NFS (die Implementierung ist noch unvollständig).
- `/usr/sbin/rpc.kmountd` Wartet auf Mount-Anforderungen, überprüft deren Berechtigung und liefert - falls die Rechte gesetzt sind - ein Handle auf das angeforderte Verzeichnis.
- `/usr/sbin/rpc.knfsd` Dieser Dämon erledigt die eigentlichen Schreib- und Leseanforderungen. Im Unterschied zum User-Level-NFS können mehrere Threads des Dämons gestartet werden.
- `/usr/sbin/rpc.krquotad` Setzt die Quotas ("Wieviel Plattenspeicher steht dem Nutzer zu?") auf einem NFS-Dateisystem um.
- `/usr/sbin/rpc.kstatd` Eine (noch unvollständige) Implementierung des MSN (Network Status Monitor). Dieser Dämon wird vom `klogd` benötigt und soll das Datei-Recovery (Wiederherstellung) nach einem Server-Absturz ermöglichen.

Da einige der Programme nur einen Bruchteil der vorgesehen Funktionalität offerieren, werden wir nur einen "minimalen" NFS-Server starten (ohne Datei-Recovery, ohne Quotas...):

- Wer auf das automatische Laden von Modulen durch den Kernel verzichtet, der muss zunächst das Modul per Hand laden:

  `root@sonne> modprobe nfsd root@sonne> lsmod Module Size Used by nfsd 145324 0 (unused) parport_pc 5748 0 (unused) parport 6716 0 [vmppuser parport_pc] rtl8139 12320 1 (autoclean) serial 42932 1 (autoclean) memstat 1604 0 (unused) nls_iso8859-1 2236 1 (autoclean)`

- Der Portmapper muss aktiv sein:

  `root@sonne> ps ax | grep portmap && /sbin/portmap`

- Der für die Mount-Anforderungen zuständige Dämon muss gestartet werden:

  `root@sonne> ps ax | grep mountd && /usr/sbin/rpc.kmountd`

  Je nach Version des Programmes und des `knfsd` kann es notwendig sein, die Option `--no-nfs-version 3` zu verwenden, um Unstimmigkeiten zwischen altem und neuem Protokoll zu vermeiden.

- Der Nutzer-Teil des NFS-Server-Prozesses muss gestartet werden (im Wesentlichen startet dieses Programm nur die spezifizierte Anzahl an Kernel-Threads):

  `# ein einziger Thread root@sonne> ps ax | grep nfsd && /usr/sbin/rpc.knfsd # 8 Threads root@sonne> /usr/sbin/rpc.knfsd 8 # Verwendung des Ports 1111 anstatt 2049 root@sonne> /usr/sbin/rpc.knfsd -p 1111`

- Nun ist noch die Datei `/var/lib/nfs/etab` zu erzeugen:

  `root@sonne> /usr/sbin/kexportfs -a`

  Nach einer Modifizierung der Datei `/etc/exports` sind nun nicht mehr die Dämons zu verständigen, sondern nur die Tabelle zu erneuern (in manchen Versionen hilft leider nur der Neustart des Moduls):

  `root@sonne> /usr/sbin/kexportfs -r`