Home / LinuxUser / 2002 / 03 / Das Network File System (NFS)

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

Mandriva gibt Distribution in die Hände der Community
(268 Punkte bei 24 Stimmen)
Neues vom Systemd
(161 Punkte bei 4 Stimmen)
Mandriva in Nöten
(161 Punkte bei 4 Stimmen)

Heftarchiv

LinuxUser Heftarchiv

EasyLinux Heftarchiv

Ubuntu User Heftarchiv

Ubuntu User Heftarchiv

Partner-Links:

Shopping
Topsuche
 
Yatego Deutschlands größte Shoppingmall. 10000 Shops,
3.5 Mio Artikel. Alle Bestseller, Servertechnik und Technik Themenwelten.

Notebooks und Netzwerkhardware bei Mercateo günstig kaufen.
Internet Telefonie mit VoIP Telefonen von Gigaset
Das B2B Portal www.Linx.de informiert über Produkte und Dienstleistungen.
Günstige Digitalkameras finden Sie im Preisvergleich.

Verteilte Daten

Das Network File System (NFS)

Vorbereitungen

Ehe jedoch entfernte Dateisysteme ins lokale Filesystem eingehängt werden können, bedarf es noch kleinerer Vorbereitungen – client- wie serverseitig. Als erstes wäre hier die Konfigurationsdatei /etc/exports auf dem freigebenden Rechner zu nennen, in der alle zu exportierenden Verzeichnisse aufgeführt werden. Dazu kommen Angaben, wer (welche Clients) wie (mit welchen Rechten) auf die Freigaben zugreifen dürfen. Abbildung 4 zeigt eine exports-Datei, in der das Verzeichnis /export/RPMS auf dem NFS-Server sowohl zum Lesen ("read") als auch zum Schreiben ("write") für alle (@L: *) Client-Rechner freigegeben wird. Auf eine auf dem NFS-Server unter /mnt/cdrom gemountete CD darf lediglich der Client stargazer lesend ("read only") zugreifen.

Abbildung 4: Die Datei /etc/exports mit verschiedenen Freigaben

In der zweiten Spalte können weitere Einschränkungen festgelegt werden. So lässt sich gezielt festlegen, dass in der ersten Spalte angegebene Verzeichnisse nur für Rechner mit bestimmten IP-Adressen oder aus bestimmten Domains zugänglich sind. Sogar Wildcards sind möglich.

Der Befehl exportfs zeigt alle freigegebenen Verzeichnisse an. Wenn Sie ihn mit der Option -r benutzen, synchronisiert er die Datei exports mit der NFS-Tabelle (bei Red Hat unter /var/lib/nfs/xtab, auf Solaris-Workstations unter /etc/dfs/sharetab zu finden). Neue exportfs-Einträge werden dabei in die NFS-Tabelle aufgenommen, während nicht mehr in der Export-Liste vorhandene Einträge gelöscht werden. Ein Blick in diese Datei verrät Neugierigen übrigens weitere interessante Parameter für die zweite exports-Spalte, von denen einige in Tabelle 1 aufgeführt sind.

Tabelle 1: Zugriffsparameter für die Export-Liste

ro "read only" (schreibgeschützt)
rw "read/write" (volle Lese- und Schreibrechte für den Client)
noaccess Zugriffsverweigerung für Unterverzeichnisse
root_squash root erhält die UserID des Pseudobenutzers nobody, eine sichere (Default-)Einstellung, da so der root-Benutzer des Client-Rechners nicht mit root-Rechten auf dem Server schreiben kann.
no_root_squash root-Account auf dem Client wird dem auf dem Server gleichgestellt. Hier ist der root-User des Client-Rechners auch root auf dem Server!
all_squash Alle Zugreifenden erhalten die Nobody-UID
anongid=gid Squashing der Gruppe; die Gruppen-ID wird auf gid gesetzt. Bei dieser Option kann root entscheiden, mit welcher Server-GID die Client-User arbeiten sollen, sobald sie Zugriff auf den Server haben.
anonuid=uid Squashing des Users, die zugreifenden User bekommen die User-ID uid verpasst.

Der lokale NFS-Daemon auf dem Client-Rechner bekommt nun alle erforderlichen Variablen und Daten geliefert, um mit dem NFS-Server zu kommunizieren. Von jetzt an können Sie mit dem externen Filesystem arbeiten, als ob es lokal zu Ihrem Rechner gehörte. Es ist nun ein Teil Ihres eigenen Systems.

Auch für den mount-Befehl gibt es weitere Optionen (vgl. Tabelle 2), zum Beispiel hard und soft. Bei einem "Hardmount" (der Normalfall) versucht der Client, auf Teufel-komm-raus Zugriff auf den NFS-Server zu erlangen. Bei einer Netzstörung oder der Nichtverfügbarkeit des Servers kann diese Hartnäckigkeit zum Erliegen des Systems führen. Beim "Softmount" dagegen schickt der Client Anfragen lediglich so lange ab, bis ein Timeout eintritt und der User eine Fehlermeldung erhält – auch nicht immer die optimale Lösung. Um bei diesen beiden Mount-Verfahren einen Abbruch zu erzwingen, gibt es die Option intr (ihr Gegenteil heißt nointr). Sie erlaubt es Ihnen, einen Mount-Versuch per Hand (meist mit [Strg-c]) frühzeitig zu unterbrechen. Per Default (oder bei Angabe der Mount-Option fg) gibt der Mount-Prozess nicht auf, wenn's beim ersten Mal nicht klappt. Gibt man den entsprechenden Befehl in einer Shell ein, bleibt diese blockiert. Mit der Option bg versehen, reagiert mount auf einen missglückten Versuch entspannter: Der Prozess taucht in den Hintergrund ab und wird zu einer Art Daemon, der es später nochmal probiert, ohne die Shell zu blockieren. So versucht der Befehl

mount -t NFS -o bg,intr,retry=5 defiant:/export/RPMS /mnt/nfs

das auf dem Rechner defiant freigegebene Verzeichnis /export/RPMS in den lokalen Dateibaum unter /mnt/nfs einzuhängen. Geht der erste Versuch schief, taucht der mount-Prozess in den Hintergrund ab (bg), damit Sie weiter auf Ihrer Shell arbeiten können. Nach fünf Fehlversuchen soll er automatisch aufgeben (retry=5), während der Sie allerdings die Option zum Abbruch von Hand haben (intr).

Tabelle 2: Mount-Parameter für über NFS zu mountende Dateisysteme

rw, ro Schreib- und Lesezugriff bzw. Nur-Lese-Zugriff
fg Mount-Vorgang im Vordergrund ("foreground")
bg Mount-Vorgang im Hintergrund ("background")
retrans=zahl Anzahl der Wiederholungsversuche, um einen Mount durchzuführen. Der Default-Wert liegt bei 5.
hard "Hartes" Mounten, d. h., es werden Anfragen abgesetzt, bis der Server antwortet (default).
soft "Weiches" Mounten, d. h., wenn ein Zähler abgelaufen ist (retrans), gibt es eine Fehlermeldung, und der Versuch wird abgebrochen.
intr, nointr Möglichkeit des Abbruchs durch eine Tastenkombination ("interrupt") bzw. das Verhindern derselben.
remount Aushängen eines Verzeichnisses, um es sofort wieder (beispielsweise mit neuen Optionen) einzuhängen
suid, nosuid Möglichkeit zur Benutzung des SUID-Bit auf dem eingehängten Dateisystem
retry=zahl Anzahl der erfolglosen Mount-Versuche (Default ist 10000), bis endgültig abgebrochen wird.
wsize=zahl Größe des Puffers für Schreibzugriffe (Default liegt zwischen 2048 und 32 kB, je nach Unix-System und -Version).
rsize=zahl Puffergröße für Lesezugriffe (Default siehe oben)
timeo=zahl Zeitspanne für Wiederholversuche, angegeben in Zehntelsekunden.
proto=protokoll ab Version 3: Angabe des Protokolls (UDP oder TCP)
[root@defiant /]# ls -al /usr/bin/passwd
-r-sr-xr-x root system passwd
[root@defiant /]# ls -al /etc/shadow
-rw-r--r-- root system passwd

Sysadmins sind bekanntlich sehr faule Menschen, die alles automatisieren möchten. Statt Dateisysteme per Hand einzuhängen, gibt es daher auch hier einen einfacheren Weg: den Eintrag in die Datei /etc/fstab des lokalen NFS-Client-Rechners. In dieser Datei stehen alle Dateisysteme, Schnittstellen und Devices, die irgendwann einmal gemountet werden bzw. werden können. Lassen Sie uns einen kurzen Blick auf Abbildung 5 werfen.

Abbildung 5: /etc/fstab

Auch hier sehen Sie wieder, dass es sich um eine reine ASCII-Datei handelt, in der Sie als root selbstständig Einträge vornehmen können. In der ersten Spalte findet das Gerät (die Festplattenpartition, das CD-Device etc.), das Sie mounten möchten, seinen Platz. Darauf folgt der Mountpoint, also das Verzeichnis, unterhalb dessen das "fremde" Dateisystem in den lokalen Dateibaum eingehängt wird. Die dritte Spalte enthält den Filesystem-Typ, in der vierten definiert man die Mount-Optionen (siehe Tabelle 2). Die letzten beiden Spalten enthalten die Information, ob ein Filesystem-Dump, d. h. eine Sicherung des Dateisystems oder Verzeichnisses, erzeugbar sein und ob das Dateisystem vor dem Mounten geprüft werden soll.

Ein für Sie zugängliches, von einem NFS-Server exportiertes Verzeichnis tragen Sie hier etwa folgendermaßen ein:

defiant:/export/RPMS   /mnt/nfs   nfs   noauto,user,bg,hard,intr   0   0

Dieser Eintrag ähnelt den bisherigen Konsoleneingaben sehr: Quell- und Zielverzeichnis, der Dateisystemtyp (nfs) und die verschiedenen Optionen sind leicht auszumachen. Das Beispielverzeichnis wird nicht automatisch beim Booten gemountet (noauto), kann aber von Normalbenutzern eingehängt werden (user). Dabei kommen die oben erwähnten NFS-Mount-Optionen bg, hard und intr zum Zuge. Nun lässt sich das von defiant exportierte Verzeichnis /export/RPMS mit einem einfachen mount /mnt/nfs ins lokale Dateisystem einhängen.

Automount

Das ist Ihnen noch nicht einfach genug? Dann brauchen Sie einen Automounter. Er hängt benötigte Verzeichnisse automatisch bei Bedarf (Zugriff) ein und entfernt sie nach einem bestimmten Zeitraum der Nichtnutzung wieder. Dies lässt sich über ein Kernel-Modul namens autofs realisieren, dass in vielen Fällen bereits im vorgefertigten Kernel integriert ist.

Das Autofs-Modul "belauscht" alle "Wechsel"-Vorgänge innerhalb des Dateisystems. Bei einem cd in ein Verzeichnis oder bei Aufruf einer Datei unterhalb des eingehängten Mountpoints gibt das Modul die Anfrage an den Automount-Daemon weiter. Dieser arbeitet nun die Konfigurationseinstellungen ab, die in den "auto-Dateien" unterhalb von /etc definiert sind. Die erste Datei, der er sich zuwendet, ist die /etc/auto.master, die die allgemeine Vorgehensweise beschreibt (Listing 1).

Listing 1

Ausschnitte aus einer auto.master-Datei

#/etc/auto.master
/export/RPMS     /etc/auto.rpms
/home            /etc/auto.home -intr,[…]

/xxx             /etc/auto.xxx  -nosuid,[…]

Die erste Spalte gibt die Mountpoints an, in der zweiten Spalte steht der Name einer sogenannten Map-Datei, und die dritte definiert die zugehörigen Mount-Optionen. Wenn Sie nun auf das Verzeichnis /xxx zugreifen wollen, erkennt dies das Autofs-Modul; der Automount-Daemon liest die auto.master-Datei aus und sieht, dass alle weiteren Informationen in der Datei /etc/auto.xxx abgelegt sind. Dort liest er die hinterlegte Vorgehensweise aus. Diese Map-Datei ist ähnlich aufgebaut wie die Master-Datei.

Listing 2

Ausschnitte aus einer Map-Datei

cdrom      -fstype=iso9660      :/dev/cdrom
dokus      -ro,intr,soft        ftp.bobcom.de:/pub/linux/HOWTO
win2k      -fstype=vfat,ro      :/dev/hdc1

Das erste Beispiel in Listing 2 verfügt, dass Daten-CDs mit dem ISO-9660-Dateisystem über die Gerätedatei /dev/cdrom ins Unterverzeichnis /xxx/cdrom eingebunden werden. Die zweite Zeile mountet das Verzeichnis /pub/linux/HOWTO vom NFS-Server ftp.bobcom.de nur lesbar ("read only") per manuell unterbrechbarem Softmount ins lokale Verzeichnis /xxx/dokus (bei NFS-Mounts muss kein Filesystemtyp angegeben werden), während die lokale VFAT-Windows-Partition /dev/hdc ebenfalls nur lesbar bei Bedarf unter /xxx/win2k zu finden ist.

Anhand der Erkenntnisse aus dieser Map setzt der Automounter den Mount-Vorgang in Gang, und kurz darauf können Sie sich im implizit angeforderten neuen Verzeichnis bewegen. Wenn Sie längere Zeit (Defaultwert ist fünf Minuten) nicht mehr darin befinden, erfolgt ein automatischer Unmount.

Manche fragen sich jetzt sicher, was bei gleichzeitigem Schreibzugriff mehrerer Clients auf eine Datei passiert. Hier werden – ähnlich einer Datenbank – die Files gelockt, d. h. für den weiteren Gebrauch gesperrt, und selbst in eine Datenbank eingetragen. Hierbei erhält der verantwortliche "Network Lock Manager" (NLM) Schützenhilfe vom "Network State Monitor" (NSM), der die Aktivitäten der am NFS-Zugriff beteiligten Maschinen überwacht. Hat ein Client einen Zugriff beendet oder muss neu booten, entsperrt der Lock Manager die Dateien und gibt sie für die Öffentlichkeit wieder frei.

Einem Freund empfehlen    Druckansicht Bookmark and Share
Kommentare

Hits
Wertung: 55 Punkte (2 Stimmen)

Schlecht Gut

Infos zur Publikation

Infos zur Publikation

LinuxUser 06/2012

Aktuelle Ausgabe kaufen:

Heft bestellen Heft als PDF kaufen

LinuxUser erscheint monatlich und kostet in der Nomedia-Ausgabe EUR 5,50 und mit DVD EUR 8,50. Weitere Informationen zum Heft finden Sie auf der LinuxUser-Homepage.

Im LinuxUser-Probeabo erhalten Sie drei Ausgaben für 3 Euro. Das Jahresabo (ab EUR 56,10) können Sie im LNM-Shop bestellen.

Tipp der Woche

Adobe AIR
Adobe-AIR-Programme installieren und (manuell) starten
Tim Schürmann, 14.05.2012 13:09, 0 Kommentare

Es gibt sie noch: neue Anwendungen, die Adobes Integrated Runtime voraussetzen. Aktuellstes und vermutlich auch größtes Beispiel ist das Adventure Botanicula

Aktuelle Fragen

gibt es ein Kommandozeilen Tool, um ein X11-Fenster in ein Anderes einzubetten?
GoaSkin , 21.05.2012 16:44, 0 Antworten
Das XEmbed-Protokoll ist u.A. dazu gedacht, dass man eine X11-Anwendung in eine andere wie ein Wi...
Apache2, Options -Indexes geht nicht
no no, 12.05.2012 19:01, 8 Antworten
Habe in apache2.conf folgendes stehen: Options -Indexes ...
LInux auf Dell LS H500
Andreas Endresl, 09.05.2012 08:54, 2 Antworten
Habe einen alten Dell Latitude LS H500 nur mit ext. Floppy und CD es geht nur immer eines von den...
Datenwiederherstellung unter Ubuntu 12.04 mit "Simple Backup" nach Umzug von Linux Mint
Christian Lottmann, 07.05.2012 13:33, 0 Antworten
Vor dem Umzug auf Ubuntu 12.04 habe ich unter Linux MInt mit "Simple Backup" voll (15.4.2012) und...
DKMS für den propritären NVIDIA-Treiber
Commander Data, 26.04.2012 22:02, 2 Antworten
Hallo an die Gemeinde. Ich habe hier ein interessantes Stück openSuSE gefunden. http://forums.op...