Linux als SOHO-Server

für Linux- und Windows-Clients
http://linux.eusterholz.dyndns.org

Kapitel:

Home
Debian Installation
Debian Etc.
Internet-Zugang
Telnet
FTP
r-Utilities
SSH
Printing
NTP
Nameserver
NFS/NIS/Automount
Samba (SMB-Server)
Apache (WEB-Server)
Modem / ISDN
Backup
Etc.


NFS

[ NFS ] NIS ] Automount ] /home-Dir ]


NFS (Network File Server) ist ein von der Firma: 'Sun Microsystems' entwickelte Protokoll, welches den Zugriff auf Dateien über ein Netzwerk ermöglicht. Benutzer können so auf Dateien zugreifen, als wenn diese auf ihrer lokalen Festplatte abgespeichert sind.
Was als NFS bezeichnet wird, setzt sich aus verschiedenen Protokollen zusammen. Die einzelnen Protokolle hängen vom Remote Procedure Calls (RPC) und dem Portmapper ab. Ein Portmapper wandelt RPC-Programmnummern in Portnummern um. Wird ein RPC-Server gestartet, so teilt er dem Portmapper mit, welcher Port er benutzen wird, und dieser verwaltet die RPC-Programmnummer. Wenn ein Client eine RPC-Anfrage an eine gegebene Programmnummer sendet, wird zunächst der Portmapper kontaktiert um die Portnummer zu bekommen, die Zugang gewährt. Danach werden die RPC-Pakete an den korrespondierenden Port adressiert. Das NFS-Protokoll ist nach der 'RFC 1094' bzw. 'RFC 1813' spezifiziert.

Im Verlauf dieses Kapitels wird gezeigt, wie NFS unter Debian-Linux zu handhaben ist. Dabei wird auf die Server- und Client-Seite bezüglich NFS eingegangen.

NFS-Server

Unter Debian gibt es zwei verschiedene Varianten des NFS-Servers. Einmal einen Server, der in den Linux-Kernel eingebunden wird: 'nfs-kernel-server' und einmal einen Server, der als normales Anwendungs-Programm läuft, 'nfs-user-server'. Der Kernel-Server ist schneller, der als Programm laufende NFS-Server hat dafür mehr Features. Je nach dem, welche Variante gewünscht wird, ist diese mit 'apt-get install nfs-kernel-server' oder mit 'apt-get install nfs-user-server' zu installieren. Weiterhin sollten die RPC-Tools und der Portmapper installiert sein. Eventuelle Abhängigkeiten werden bei der Installation des NFS-Servers aufgelöst. Unter Debian-Linux sollten bereits bei der Basis-Installation alle Dienste installiert sein. Ist das nicht der Fall, so können diese mit: 'apt-get install nfs-common' nachinstalliert werden, alle daraus resultierenden Abhängigkeiten sollten aufgelöst werden.

Die zentrale Konfigurationsdatei für einen NFS-Server ist die Datei: '/etc/exports'. Diese Datei regelt, welcher Rechner auf welche Verzeichnisse des Servers, wie zugreifen darf. Das folgende Beispiel zeigt zwei NFS-Freigaben:

Auszug aus: /etc/exports

# /etc/exports: the access control list for filesystems which may be exported
#               to NFS clients. See exports(5).

/data/projects  192.168.1.0/24(rw,async,no_subtree_check) alpha.my_network.tld(ro)
/home           *.eusterholz.tld(rw,sync,no_root_squash,no_subtree_check)

Die Datei hat eine einfache Form, zeilenweise werden einzelne NFS-Freigaben definiert. Jede Zeile beginnt mit einen absolutem Pfad zu dem Verzeichnis, welches exportiert werden soll, gefolgt von einer Liste von berechtigten Clients, die durch Leerzeichen getrennt werden. Die Clients können über IP-Addresse oder host-Namen spezifiziert werden. Bei Namen können Wildcards '*' verwendet werden, hinter einer IP-Adresse kann die Netzmaske (z.B. '/24') mit angegeben werden.
Hinter einem Client befinden sich in Klammern die Optionen, die bezüglich des Zugriffs mitgegeben werden können. Dabei ist es wichtig, zwischen der Client-Deklaration und den Optionen dürfen keine Leerzeichen vorhanden sein. Mögliche Optionen sind z.B: 'ro' für nur lesender Zugriff oder 'rw' für lesender und schreibender Zugriff. Weitere Optionen können in den Manualseiten von 'exports' nachgelesen werden.

In der ersten markierten Zeile wird das Verzeichnis: '/data/projects' für alle Rechner im Subnetz: '192.168.1.0' lesend und schreibend freigegeben (Option: 'rw'). Weiterhin ist es dem Rechner: 'alpha.my_network.tld' gestattet, nur lesend auf das Verzeichnis zuzugreifen.
In der letzten Zeile wird das Verzeichnis: '/home' für sämtliche Rechner der Domain: 'eusterholz.tld' lesend und schreibend freigegeben (Option: 'rw'). Die Option: 'no_root_squash' sollte man immer dann verwenden, wenn man nicht möchte, dass der Benutzer: 'root' eines Client-Rechners auch die Rechte des root-Benutzers auf dem NFS-Server hat.

Wurden Änderungen in der Datei: '/etc/exports' vorgenommen, so muss ein:

exportfs -a

ausgeführt werden. Alternativ kann auch der NFS-Server erneut gestartet werden. Der Start es NFS-Servers kann je nach installierter Variante mit:

/etc/init.d/nfs-kernel-server start oder mit: /etc/init.d/nfs-user-server start

auf der Kommandozeile eingeleitet werden.

NFS-Client

Bei einem reinen NFS-Client unter Debian, der sich nur mit einen NFS-Server verbinden soll, genügt es, dass Paket: 'nfs-common' zu installieren. Natürlich müssen auch die RPC-Tools und der Portmapper vorhanden sein. Bei einer Installation mittels: 'apt-get install nfs-common' sollten alle Abhängigkeiten aufgelöst werden.

Konfigurationstechnisch gibt es auf der Seite des NFS-Clients nicht viel zu. Für einen temporäre Zugriffe auf einen NFS-Server eignet sich das Kommando: 'mount' (mount = montiert). Das Kommando: 'mount' kann nach folgenden Schema angewandt werden:

mount -t nfs host:<path> <mountpoint>

Als Beispiel, bezogen auf die obige Freigabe (siehe: '/etc/exports'), kann folgendes Kommando auf dem Client ausgeführt werden:

mount -t nfs 192.168.1.10:/data/projects /mnt

Die Freigabe: '/data/projects' vom Rechner: '192.168.1.10' wird in das Verzeichnis '/mnt' des Clients eingebaut (montiert). Zu beachten ist, dass das Verzeichnis '/mnt' auf dem Client schon existieren.
Um ein ge-moutetes Verzeichnisse wieder zu demontieren, kann das Kommando: 'umount' nach folgenden Schema angewandt werden:

umount <mountpoint>

Bezogen auf das vorherige Beispiel:

umount /mnt

Beim un-mounten ist cdarauf zu achten, dass man sich nicht im ge-mounteten Verzeichnis befindet.

Möchte man vom Client aus, ein entferntes Verzeichnis permanent mounten, so bietet es sich an, dieses Verzeichnis in der Datei: '/etc/fstab' einzutragen. In der Datei: 'fstab' werden statische Informationen über das Dateisystem gehalten, wie z.B. lokale Partitionen der Festplatte usw.. Wieder bezogen auf das obige Beispiel sieht der Eintrag in der 'fstab' wie folgt aus:

/etc/fstab

# /etc/fstab: static file system information.
#
# <file system>              <mount point>  <type>  <options>             <dump> <pass>
/dev/hda2                    /              ext3    errors=remount-ro     0      1
/dev/hda1                    none           swap    sw                    0      0
proc                         /proc          proc    defaults              0      0
/dev/fd0                     /floppy        auto    user,noauto           0      0
/dev/cdrom                   /cdrom         iso9660 ro,user,noauto        0      0
192.168.1.10:/data/projects  /mnt           nfs     defaults              0      0

Bei jeden Hochlauf des Systems wird nun, das freigegebene NFS-Verzeichnis des Servers, mit ins Dateisystem auf dem Client unter '/mnt' eingebunden. Die Möglichen Optionen lassen sich in den Manualseiten zu 'nfs' und 'fstab' nachlesen.

Anmerkungen

Wird bei einer NFS-Client/-Server-Verbindung die Netzwerkverbindung aus irgendeinem Grund unterbrochen, sollte das Kommando: 'umount' mit der Option '-f' angewandt werden. Andernfalls dauert es sehr lange dauern, bis der 'umount' durchgeführt wird.

Beim Aufbau einer NFS-Verbindung während des Bootvorgangs (mittels 'fstab') sollte der NFS-Server einsatzbereit sein, ansonsten kann es eine ganze Weile dauern, bis ein 'Timeout' dafür sorgt, dass der Bootvorgang weitergeht.

Mit dem Kommando: 'showmount', angewandt auf dem NFS-Server, werden alle mount-Informationen ausgegeben. Mittels der Option '-h' kann die Hilfe ausgegeben werden, ohne Optionen zeigt 'showmount' eine Liste der Clients, die von diesem Host mounten.

Bei Problemen mit NFS-Zugriffen sollte zunächst in den log-Dateien unter '/var/log' nach möglichen Ursachen geschaut werden. Auch sollte eine korrekte Namensauflösung aller beteiligten Rechner gegeben sein. Bei Problemen mit Berechtigungen sollten auch die korrekte Konfiguration der Dateien '/etc/hosts.allow' und '/etc/hosts.deny' geprüft werden.

Weitere Infos

Homepage: Linux NFS-HOWTO http://nfs.sourceforge.net/nfs-howto/
Homepage: DE-Linux-NFS-HOWTO http://mysite.verizon.net/res0yizl/jrgenpohl/id12.html
Linux NFS Overview, FAQ and HOWTO Documents http://nfs.sourceforge.net/
Managing NFS and NIS, 2nd Edition http://www.hn.edu.cn/book/NetWork/NetworkingBookshelf_2ndEd/nfs/
Manualseiten zu: exports man exports
Manualseiten zu: mount; nfs; fstab man mount; man nfs; man fstab
System-Dokumentation: nfs-common /usr/share/doc/nfs-common
System-Dokumentation: nfs-kernel-server /usr/share/doc/nfs-kernel-server
System-Dokumentation: nfs-user-server /usr/share/doc/nfs-user-server
RFC: 1094 http://www.faqs.org/rfcs/rfc1094.html
RFC: 1813 http://www.faqs.org/rfcs/rfc1813.html

Home ] Nach oben ] [ NFS ] NIS ] Automount ] /home-Dir ]

letzte Änderung: 11. März 2009

 

Copyright © 2004 Norbert Eusterholz