The NFS section of "Advanced Networking".

Submitted by:	Johann Kois <J.Kois@web.de>
This commit is contained in:
Martin Heinen 2003-04-06 14:55:18 +00:00
parent 45fbed1546
commit 6c7fbabc60
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=16459

View file

@ -3,8 +3,8 @@
The FreeBSD German Documentation Project
$FreeBSD$
$FreeBSDde: de-docproj/books/handbook/advanced-networking/chapter.sgml,v 1.28 2003/03/08 18:27:42 mheinen Exp $
basiert auf: 1.196
$FreeBSDde: de-docproj/books/handbook/advanced-networking/chapter.sgml,v 1.38 2003/04/06 14:26:10 mheinen Exp $
basiert auf: 1.202
-->
<chapter id="advanced-networking">
@ -603,7 +603,7 @@ host2.example.com link#1 UC 0 0
(Host) ausgef&uuml;hrt. Angezeigt werden die Gateway-Rechner
entlang des Verbindungspfades. Schlie&szlig;lich wird der
Zielrechner erreicht oder es kommt zu einem Verbindungsabbruch
(z.B. durch Nichterreichbarkeit eines
(beispielsweise durch Nichterreichbarkeit eines
Gateway-Rechners).</para>
<para>F&uuml;r weitere Informationen lesen Sie bitte die
@ -1154,7 +1154,8 @@ wi0: flags=8843&lt;UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST&gt; mtu 1500
<para>Die zweite h&auml;ufig anzutreffende Situation tritt auf,
wenn Firewallfunktionen ben&ouml;tigt werden, ohne dass
IP-Maskierung (NAT - Network Adress Translation) verwendet wird.</para>
IP-Maskierung (NAT &ndash; Network Adress Translation)
verwendet wird.</para>
<para>Ein Beispiel daf&uuml;r w&auml;re ein kleines Unternehmen,
das &uuml;ber DSL oder ISDN an ihren ISP angebunden ist. Es
@ -1218,7 +1219,7 @@ wi0: flags=8843&lt;UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST&gt; mtu 1500
der Bridge als Firewall lesen Sie bitte den entsprechenden Abschnitt
des Handbuchs (<xref linkend="firewalls">).</para>
<para>Wenn Sie Nicht-IP-Pakete (wie z.B. ARP) durch Ihre
<para>Wenn Sie Nicht-IP-Pakete (wie ARP-Pakete) durch Ihre
Bridge leiten wollen, m&uuml;ssen Sie eine zus&auml;tzliche,
undokumentierte Option verwenden. Es handelt sich um
<literal>IPFIREWALL_DEFAULT_TO_ACCEPT</literal>.
@ -1288,12 +1289,610 @@ wi0: flags=8843&lt;UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST&gt; mtu 1500
</sect1>
<sect1 id="nfs">
<title>NFS (Network File System)</title>
<!-- j.kois@web.de, 04. April 2003 -->
<sect1info>
<authorgroup>
<author>
<firstname>Tom</firstname>
<surname>Rhodes</surname>
<contrib>Reorganisiert und erweitert von </contrib>
</author>
</authorgroup>
<para>Dieser Abschnitt ist noch nicht &uuml;bersetzt. Lesen Sie
bitte <ulink
url="http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/nfs.html">
das Original in englischer Sprache</ulink>.</para>
<authorgroup>
<author>
<firstname>Bill</firstname>
<surname>Swingle</surname>
<contrib>Geschrieben von </contrib>
</author>
</authorgroup>
</sect1info>
<title>NFS &ndash; Network File System</title>
<indexterm><primary>NFS</primary></indexterm>
<para>Eines der vielen von FreeBSD unterst&uuml;tzten Dateisysteme
ist das Netzwerkdateisystem, das auch als <acronym>NFS</acronym>
bekannt ist. <acronym>NFS</acronym> erm&ouml;glicht es einem
System, Dateien und Verzeichnisse &uuml;ber ein Netzwerk mit anderen
zu teilen. &Uuml;ber <acronym>NFS</acronym> k&ouml;nnen Benutzer
und Programme auf Daten entfernter Systeme zugreifen, und zwar
genauso, wie wenn es sich um lokale Daten handeln w&uuml;rde.</para>
<para>Einige der wichtigsten Vorteile von <acronym>NFS</acronym>
sind:</para>
<itemizedlist>
<listitem>
<para>Lokale Arbeitsstationen ben&ouml;tigen weniger Plattenplatz,
da gemeinsam benutzte Daten nur auf einem einzigen Rechner
vorhanden sind. Alle anderen Stationen greifen &uuml;ber das
Netzwerk auf diese Daten zu.</para>
</listitem>
<listitem>
<para>Benutzer ben&ouml;tigen nur noch ein zentrales
Heimatverzeichnis auf einem <acronym>NFS</acronym>-Server.
Diese Verzeichnisse sind &uuml;ber das Netzwerk auf allen
Stationen verf&uuml;gbar.</para>
</listitem>
<listitem>
<para>Speicherger&auml;te wie Disketten-, CD-ROM-
oder ZIP-Laufwerke k&ouml;nnen &uuml;ber das Netzwerk von
anderen Arbeitstationen genutzt werden. Dadurch sind f&uuml;r
das gesamte Netzwerk deutlich weniger Speicherger&auml;te
n&ouml;tig.</para>
</listitem>
</itemizedlist>
<sect2>
<title>Wie funktioniert <acronym>NFS</acronym>?</title>
<para><acronym>NFS</acronym> besteht aus zwei Hauptteilen: Einem
Server und einem oder mehreren Clients. Der Client greift
&uuml;ber das Netzwerk auf die Daten zu, die auf dem Server
gespeichert sind. Damit dies korrekt funktioniert, m&uuml;ssen
einige Prozesse konfiguriert und gestartet werden:</para>
<para>Der Server ben&ouml;tigt folgende Daemonen:</para>
<indexterm>
<primary>NFS</primary>
<secondary>Server</secondary>
</indexterm>
<indexterm>
<primary><application>portmap</application></primary>
</indexterm>
<indexterm>
<primary><application>mountd</application></primary>
</indexterm>
<indexterm>
<primary><application>nfsd</application></primary>
</indexterm>
<informaltable frame="none">
<tgroup cols="2">
<thead>
<row>
<entry>Daemon</entry>
<entry>Beschreibung</entry>
</row>
</thead>
<tbody>
<row>
<entry>nfsd</entry>
<entry>Der <acronym>NFS</acronym>-Daemon. Er bearbeitet
Anfragen der <acronym>NFS</acronym>-Clients.</entry>
</row>
<row>
<entry>mountd</entry>
<entry>Der <acronym>NFS</acronym>-Mount-Daemon. Er
bearbeitet die Anfragen, die &man.nfsd.8; an ihn
weitergibt.</entry>
</row>
<row>
<entry>portmap</entry>
<entry> Der Portmapper-Daemon. Durch ihn erkennen die
<acronym>NFS</acronym>-Clients, welchen Port der
<acronym>NFS</acronym>-Server verwendet.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
<para>Der Client kann ebenfalls einen Daemon aufrufen, und zwar den
<application>nfsiod</application>-Daemon. Der
<application>nfsiod</application>-Daemon bearbeitet Anfragen vom
<acronym>NFS</acronym>-Server. Er ist optional und verbessert
die Leistung des Netzwerks. F&uuml;r eine normale und korrekte
Arbeit ist er allerdings nicht erforderlich. Lesen Sie
&man.nfsiod.8;, wenn Sie weitere Informationen ben&ouml;tigen.</para>
</sect2>
<sect2 id="configuring-nfs">
<title><acronym>NFS</acronym> einrichten</title>
<indexterm>
<primary>NFS</primary>
<secondary>einrichten</secondary>
</indexterm>
<para><acronym>NFS</acronym> l&auml;&szlig;t sich leicht
einrichten. Die n&ouml;tigen Prozesse werden durch einige
&Auml;nderungen in <filename>/etc/rc.conf</filename> bei
jedem Systemstart gestartet.</para>
<para>Stellen Sie sicher, dass auf dem <acronym>NFS</acronym>-Server
folgende Optionen in <filename>/etc/rc.conf</filename>
gesetzt sind:</para>
<programlisting>
portmap_enable="YES"
nfs_server_enable="YES"
mountd_flags="-r"
</programlisting>
<para><command>mountd</command> l&auml;uft automatisch, wenn der
<acronym>NFS</acronym>-Server aktiviert ist.</para>
<para>Auf dem Client muss in <filename>/etc/rc.conf</filename>
folgende Option gesetzt sein:</para>
<programlisting>nfs_client_enable="YES"</programlisting>
<para>
<filename>/etc/exports</filename> legt fest, welche Dateisysteme
<acronym>NFS</acronym> exportieren (manchmal auch als
<quote>teilen</quote> bezeichnet) soll. Jede Zeile in
<filename>/etc/exports</filename> legt ein Dateisystem sowie
die Arbeitsstationen, die darauf Zugriff haben, fest. Au&szlig;erdem
ist es m&ouml;glich, Zugriffsoptionen festzulegen. Es gibt viele
verschiedene Optionen, allerdings werden hier nur einige von
ihnen erw&auml;hnt. Wenn Sie Informationen &uuml;ber weitere
Optionen ben&ouml;tigen, lesen Sie &man.exports.5;.</para>
<para>Nun folgen einige Beispieleintr&auml;ge f&uuml;r
<filename>/etc/exports</filename>:</para>
<indexterm>
<primary>NFS</primary>
<secondary>Beispiele zum Export von Dateisystemen</secondary>
</indexterm>
<para>Die folgenden Beispiele geben Ihnen Anhaltspunkte zum
Exportieren von Dateisystemen, obwohl diese Einstellungen
nat&uuml;rlich von Ihrer Arbeitsumgebung und Ihrer
Netzwerkkonfiguration abh&auml;ngen. Das n&auml;chste
Beispiel exportiert das Verzeichnis <filename>/cdrom</filename>
f&uuml;r drei Rechner, die sich in derselben Dom&auml;ne wie
der Server befinden oder f&uuml;r die entsprechende Eintr&auml;ge
in <filename>/etc/hosts</filename> existieren.
Die Option <option>-ro</option> kennzeichnet das
exportierte Dateisystem als schreibgesch&uuml;tzt. Durch dieses
Flag ist das entfernte System nicht in der Lage, das exportierte
Dateisystem zu ver&auml;ndern.</para>
<programlisting>/cdrom -ro host1 host2 host3</programlisting>
<para>Die n&auml;chste Zeile exportiert <filename>/home</filename>
auf drei durch IP-Adressen bestimmte Rechner. Diese Einstellung
ist n&uuml;tzlich, wenn Sie &uuml;ber ein privates Netzwerk ohne
<acronym>DNS</acronym>-Server verf&uuml;gen. Optional
k&ouml;nnten interne Rechnernamen auch in
<filename>/etc/hosts</filename> konfiguriert werden.
Ben&ouml;tigen Sie hierzu weitere Informationen, lesen Sie bitte
&man.hosts.5;. Durch das Flag <option>-alldirs</option> wird es
m&ouml;glich, auch Unterverzeichnisse als Mountpunkte
festzulegen. Dies bedeutet aber nicht, dass alle
Unterverzeichnisse eingeh&auml;ngt werden, vielmehr wird es dem
Client erm&ouml;glicht, nur diejenigen Verzeichnisse
einzuh&auml;ngen, die auch ben&ouml;tigt werden.</para>
<programlisting>/home -alldirs 10.0.0.2 10.0.0.3 10.0.0.4</programlisting>
<para>Die n&auml;chste Zeile exportiert <filename>/a</filename>,
damit Clients von verschiedenen Dom&auml;nen auf das Dateisystem
zugreifen k&ouml;nnen. Das <option>-maproot=root</option>-Flag
erlaubt es dem Benutzer <username>root</username> des entfernten
Systems, als <username>root</username> auf das exportierte
Dateisystem zu schreiben. Wenn dieses Flag nicht gesetzt ist,
kann selbst <username>root</username> nicht auf das exportierte
Dateisystem schreiben.</para>
<programlisting>/a -maproot=root host.example.com box.example.org</programlisting>
<para>Damit ein Client auf ein exportiertes Dateisystem zugreifen
kann, muss ihm dies explizit gestattet werden. Stellen Sie also
sicher, dass der Client in <filename>/etc/exports</filename>
aufgef&uuml;hrt wird.</para>
<para>Jede Zeile in <filename>/etc/exports</filename> entspricht
der Exportinformation f&uuml;r ein Dateisystem auf einen Rechner.
Ein entfernter Rechner kann f&uuml;r jedes Dateisystem nur
einmal festgelegt werden, und kann auch nur einen Standardeintrag
haben. Nehmen wir an, dass <filename>/usr</filename>
ein einziges Dateisystem ist. Dann w&auml;ren folgende Zeilen
ung&uuml;ltig:</para>
<programlisting>
/usr/src client
/usr/ports client
</programlisting>
<para>Das Dateisystem <filename>/usr</filename> wird hier zweimal
auf den selben Rechner (<hostid>client</hostid>)
exportiert. Dies ist aber nicht zul&auml;ssig. Der richtige
Eintrag sieht daher so aus:</para>
<programlisting>/usr/src /usr/ports client</programlisting>
<para>Die Eigenschaften eines auf einen anderen Rechner
exportierten Dateisystems m&uuml;ssen alle in einer Zeile
stehen. Zeilen, in denen kein Rechner festgelegt wird, werden
als einzelner Rechner behandelt. Dies schr&auml;nkt die
M&ouml;glichkeiten zum Export von Dateisystemen ein, f&uuml;r
die meisten Anwender ist dies aber kein Problem.</para>
<para>Eine g&uuml;ltige Exportliste, in der
<filename>/usr</filename> und <filename>/exports</filename>
lokale Dateisysteme sind, sieht so aus:</para>
<programlisting>
# Export src and ports to client01 and client02, but only
# client01 has root privileges on it
/usr/src /usr/ports -maproot=root client01
/usr/src /usr/ports client02
# The client machines have root and can mount anywhere
# on /exports. Anyone in the world can mount /exports/obj read-only
/exports -alldirs -maproot=root client01 client02
/exports/obj -ro
</programlisting>
<para>Sie m&uuml;ssen <command>mountd</command> nach jeder
&Auml;nderung von <filename>/etc/exports</filename> neu
starten, damit die &Auml;nderungen wirksam werden. Dies
kann durch das Senden des HUP-Signals an den
<command>mountd</command>-Prozess erfolgen:</para>
<screen>&prompt.root; <userinput>kill -HUP `cat /var/run/mountd.pid`</userinput></screen>
<para>Alternativ k&ouml;nnen Sie auch das System neu starten.
Dies ist allerdings nicht n&ouml;tig. Wenn Sie die folgenden
Befehle als <username>root</username> ausf&uuml;hren, sollte
alles korrekt gestartet werden.</para>
<para>Auf dem <acronym>NFS</acronym>-Server:</para>
<screen>&prompt.root; <userinput>portmap</userinput>
&prompt.root; <userinput>nfsd -u -t -n 4</userinput>
&prompt.root; <userinput>mountd -r</userinput></screen>
<para>Auf dem <acronym>NFS</acronym>-Client:</para>
<screen>&prompt.root; <userinput>nfsiod -n 4</userinput></screen>
<para>Nun sollte alles bereit sein, um ein entferntes Dateisystem
einh&auml;ngen zu k&ouml;nnen. In unseren Beispielen nennen wir
den Server <literal>server</literal>, den Client
<literal>client</literal>. Wenn Sie ein entferntes Dateisystem
nur zeitweise einh&auml;ngen wollen, oder nur Ihre Konfiguration
testen m&ouml;chten, f&uuml;hren Sie auf dem Client als
<username>root</username> einen Befehl &auml;hnlich dem
folgenden aus:</para>
<indexterm>
<primary>NFS</primary>
<secondary>Dateisysteme einh&auml;ngen</secondary>
</indexterm>
<screen>&prompt.root; <userinput>mount server:/home /mnt</userinput></screen>
<para>Dadurch wird das Verzeichnis <filename>/home</filename> des
Servers auf dem Client unter <filename>/mnt</filename> eingeh&auml;ngt.
Wenn alles korrekt konfiguriert wurde, sehen Sie auf dem Client
im Verzeichnis <filename>/mnt</filename> alle Dateien des
Servers.</para>
<para>Wenn Sie ein entferntes Dateisystem nach jedem Systemstart
automatisch einh&auml;ngen wollen, f&uuml;gen Sie das Dateisystem
in <filename>/etc/fstab</filename> ein. Dazu ein Beispiel:</para>
<programlisting>server:/home /mnt nfs rw 0 0</programlisting>
<para>F&uuml;r Informationen zu allen m&ouml;glichen Optionen lesen
Sie bitte &man.fstab.5;.</para>
</sect2>
<sect2>
<title>Praktische Anwendungen</title>
<para><acronym>NFS</acronym> ist in vielen Situationen
n&uuml;tzlich. Einige Anwendungsbereiche finden Sie in der
folgenden Liste:</para>
<indexterm>
<primary>NFS</primary>
<secondary>Anwendungsbeispiele</secondary>
</indexterm>
<itemizedlist>
<listitem>
<para>Mehrere Maschinen k&ouml;nnen sich ein CD-ROM-Laufwerk
oder andere Medien teilen. Dies ist billiger und au&szlig;erdem
praktischer, um Programme auf mehreren Rechnern zu
installieren.</para>
</listitem>
<listitem>
<para>In gr&ouml;&szlig;eren Netzwerken ist es praktisch,
einen zentralen <acronym>NFS</acronym>-Server einzurichten,
auf dem die Heimatverzeichnisse der Benutzer gespeichert
werden. Diese Heimatverzeichnisse werden &uuml;ber das
Netzwerk exportiert. Dadurch haben die Benutzer immer das
gleiche Heimatverzeichnis zur Verf&uuml;gung,
unabh&auml;ngig davon, an welchem Arbeitsplatz sie sich
anmelden.</para>
</listitem>
<listitem>
<para>Verschiedene Rechner k&ouml;nnen auf ein gemeinsames
<filename>/usr/ports/distfiles</filename>-Verzeichnis
zugreifen. Wenn Sie nun einen Port auf mehreren Rechnern
installieren wollen, greifen Sie einfach auf dieses
Verzeichnis zu, ohne die Quelldateien auf jede Maschine
zu kopieren.</para>
</listitem>
</itemizedlist>
</sect2>
<sect2 id="amd">
<!-- j.kois@web.de, 05. April 2003 -->
<sect2info>
<authorgroup>
<author>
<firstname>Wylie</firstname>
<surname>Stilwell</surname>
<contrib>Beigetragen von </contrib>
</author>
</authorgroup>
<authorgroup>
<author>
<firstname>Chern</firstname>
<surname>Lee</surname>
<contrib>&Uuml;berarbeitet von </contrib>
</author>
</authorgroup>
</sect2info>
<title>AMD</title>
<indexterm><primary>amd</primary></indexterm>
<indexterm><primary>Automatic Mounter Daemon</primary></indexterm>
<para>&man.amd.8; (Automatic Mounter Daemon) h&auml;ngt ein
entferntes Dateisystem automatisch ein,
wenn auf eine Datei oder ein Verzeichnis in diesem Dateisystem
zugegriffen wird. Dateisysteme, die &uuml;ber einen gewissen
Zeitraum inaktiv sind, werden von <application>amd</application>
automatisch abgeh&auml;ngt.
<application>amd</application> ist eine einfache
Alternative zum dauerhaften Einh&auml;ngen von Dateisystemen
in <filename>/etc/fstab</filename>.</para>
<para>In der Voreinstellung stellt <application>amd</application>
die Verzeichnisse <filename>/host</filename> und
<filename>/net</filename> als NFS-Server bereit. Wenn auf eine Datei
in diesen Verzeichnissen zugegriffen wird, sucht
<application>amd</application> den entsprechenden Mountpunkt
und h&auml;ngt das Dateisystem automatisch ein.
<filename>/net</filename> wird zum Einh&auml;ngen von
exportierten Dateisystemen von einer IP-Adresse verwendet,
w&auml;hrend <filename>/host</filename> zum Einh&auml;ngen
von exportierten Dateisystemen eines durch seinen Namen
festgelegten Rechners dient.</para>
<para>Ein Zugriff auf eine Datei in
<filename>/host/foobar/usr</filename> w&uuml;rde
<application>amd</application> veranlassen,
das von <hostid>foobar</hostid> exportierte Dateisystem
<filename>/usr</filename> einzuh&auml;ngen.</para>
<example>
<title>Ein exportiertes Dateisystem mit
<application>amd</application> in den Verzeichnisbaum
einh&auml;ngen</title>
<para>Sie k&ouml;nnen sich die verf&uuml;gbaren Mountpunkte
eines entfernten Rechners mit <command>showmount</command>
ansehen. Wollen Sie sich die Mountpunkte des Rechners
<hostid>foobar</hostid> ansehen, so verwenden Sie:</para>
<screen>&prompt.user; <userinput>showmount -e foobar</userinput>
Exports list on foobar:
/usr 10.10.10.0
/a 10.10.10.0
&prompt.user; <userinput>cd /host/foobar/usr</userinput></screen>
</example>
<para>Wie Sie an diesem Beispiel erkennen k&ouml;nnen, zeigt
<command>showmount</command> <filename>/usr</filename>
als exportiertes Dateisystem an. Wenn man in das Verzeichnis
<filename>/host/foobar/usr</filename> wechselt, versucht
<application>amd</application> den Rechnernamen
<hostid>foobar</hostid> aufzul&ouml;sen und den gew&uuml;nschten
Export in den Verzeichnisbaum einzuh&auml;ngen.</para>
<para><application>amd</application> kann durch das Einf&uuml;gen
der folgenden Zeile in <filename>/etc/rc.conf</filename>
automatisch gestartet werden:</para>
<programlisting>amd_enable="YES"</programlisting>
<para>Mit der Option <varname>amd_flags</varname> kann
<application>amd</application> angepasst werden.
Die Voreinstellung f&uuml;r <varname>amd_flags</varname> sieht
so aus:</para>
<programlisting>amd_flags="-a /.amd_mnt -l syslog /host /etc/amd.map /net /etc/amd.map"</programlisting>
<para><filename>/etc/amd.map</filename> legt die Standardoptionen
fest, mit denen exportierte Dateisysteme in den Verzeichnisbaum
eingeh&auml;ngt werden. <filename>/etc/amd.conf</filename>
hingegen legt einige der erweiterten Optionen von
<application>amd</application> fest.</para>
<para>F&uuml;r weitere Informationen lesen Sie bitte &man.amd.8;
und &man.amd.conf.5;.</para>
</sect2>
<sect2 id="nfs-integration">
<!-- j.kois@web.de, 05. April 2003 -->
<sect2info>
<authorgroup>
<author>
<firstname>John</firstname>
<surname>Lind</surname>
<contrib>Beigetragen von </contrib>
</author>
</authorgroup>
</sect2info>
<title>Integrationsprobleme mit anderen Systemen</title>
<para>Bestimmte ISA-Ethernetadapter haben Beschr&auml;nkungen, die
zu ernsthaften Netzwerkproblemen, insbesondere mit NFS
f&uuml;hren k&ouml;nnen. Es handelt sich dabei nicht um ein
FreeBSD-spezifisches Problem, aber FreeBSD-Systeme sind davon
ebenfalls betroffen.</para>
<para>Das Problem tritt fast ausschlie&szlig;lich dann auf, wenn
(FreeBSD)-PC-Systeme mit Hochleistungsrechnern verbunden werden,
wie Systemen von Silicon&nbsp;Graphics, Inc. oder
Sun&nbsp;Microsystems, Inc. Das Einh&auml;ngen via NFS funktioniert
problemlos, auch einige Dateioperationen k&ouml;nnen erfolgreich
sein. Pl&ouml;tzlich aber wird der Server nicht mehr auf den
Client reagieren, obwohl Anfragen an und von anderen Rechnern
weiter bearbeitet werden. Dieses Problem betrifft stets den
Client, egal ob es sich beim Client um das FreeBSD-System oder
den Hochleistungsrechner handelt. Auf vielen Systemen gibt es
keine M&ouml;glichkeit mehr, den Client ordnungsgem&auml;&szlig;
zu beenden. Die einzige L&ouml;sung ist oft, den Rechner neu
zu starten, da dieses NFS-Problem nicht mehr behoben werden kann.</para>
<para>Die <quote>korrekte</quote> L&ouml;sung f&uuml;r dieses
Problem ist es, sich eine schnellere Ethernetkarte f&uuml;r
FreeBSD zu kaufen. Allerdings gibt es auch eine einfache und
meist zufriedenstellende L&ouml;sung, um dieses Problem zu
umgehen. Wenn es sich beim FreeBSD-System um den
<emphasis>Server</emphasis> handelt, verwenden Sie beim
Einh&auml;ngen in den Verzeichnisbaum auf der Clientseite
zus&auml;tzlich die Option <option>-w=1024</option> . Wenn es
sich beim FreeBSD-System um den <emphasis>Client</emphasis>
handelt, dann h&auml;ngen Sie das NFS-Dateisystem mit der
zus&auml;tzlichen Option <option>-r=1024</option> ein.
Diese Optionen k&ouml;nnen auf der Clientseite auch durch
das vierte Feld der Eintr&auml;ge in <filename>/etc/fstab</filename>
festgelegt werden, damit die Dateisysteme automatisch eingeh&auml;ngt
werden. Um die Dateisysteme manuell einzuh&auml;ngen, verwendet
man bei <command>mount</command> zus&auml;tzlich die Option
<option>-o</option>.</para>
<para>Es gibt ein anderes Problem, das oft mit diesem verwechselt
wird. Dieses andere Problem tritt auf, wenn sich &uuml;ber NFS
verbundene Server und Clients in verschiedenen Netzwerken
befinden. Wenn dies der Fall ist, stellen Sie
<emphasis>sicher</emphasis>, dass Ihre Router die
n&ouml;tigen UDP-Informationen weiterleiten, oder Sie werden
nirgends hingelangen, egal was Sie machen.</para>
<para>In den folgenden Beispielen ist <hostid>fastws</hostid> der
Name des Hochleistungsrechners (bzw. dessen Schnittstelle),
<hostid>freebox</hostid> hingegen ist der Name des
FreeBSD-Systems, das &uuml;ber eine Netzkarte mit geringer
Leistung verf&uuml;gt. <filename>/sharedfs</filename> ist das
exportierte NFS&nbsp;-Dateisystem (lesen Sie dazu auch
&man.exports.5;). Bei <filename>/project</filename> handelt es
sich um den Mountpunkt, an dem das exportierte Dateisystem auf
der Clientseite eingeh&auml;ngt wird. In allen F&auml;llen
k&ouml;nnen zus&auml;tzliche Optionen, wie z.B.
<option>hard</option>, <option>soft</option> oder
<option>bg</option> w&uuml;nschenswert sein.</para>
<para>FreeBSD als Client (eingetragen in
<filename>/etc/fstab</filename> auf <hostid>freebox</hostid>):</para>
<programlisting>fastws:/sharedfs /project nfs rw,-r=1024 0 0</programlisting>
<para>Manuelles Einh&auml;ngen auf <hostid>freebox</hostid>:</para>
<screen>&prompt.root; <userinput>mount -t nfs -o -r=1024 fastws:/sharedfs /project</userinput></screen>
<para>FreeBSD als Server (eingetragen in
<filename>/etc/fstab</filename> auf <hostid>fastws</hostid>):</para>
<programlisting>freebox:/sharedfs /project nfs rw,-w=1024 0 0</programlisting>
<para>Manuelles Einh&auml;ngen auf <hostid>fastws</hostid>:</para>
<screen>&prompt.root; <userinput>mount -t nfs -o -w=1024 freebox:/sharedfs /project</userinput></screen>
<para>Nahezu alle 16-bit Ethernetadapter erlauben Operationen
ohne obengenannte Einschr&auml;nkungen auf die Lese- oder
Schreibgr&ouml;&szlig;e.</para>
<para>F&uuml;r alle technisch Interessierten wird nun beschrieben,
was passiert, wenn dieser Fehler auftritt, und warum er
irreversibel ist. NFS arbeitet &uuml;blicherweise mit einer
<quote>Blockgr&ouml;&szlig;e</quote> von 8&nbsp;kByte (obwohl
es kleinere Fragmente zulassen w&uuml;rde). Da die maximale
Rahmengr&ouml;&szlig;e von Ethernet 1500&nbsp;Bytes
betr&auml;gt, wird der NFS-<quote>Block</quote> in einzelne
Ethernetrahmen aufgeteilt, obwohl es sich nach wie vor um eine
Einheit handelt, die auch als Einheit empfangen, verarbeitet
und <emphasis>best&auml;tigt</emphasis> werden muss. Der
Hochleistungsrechner verschickt die Pakete, aus denen der
NFS-Block besteht, so eng hintereinander, wie es der Standard
erlaubt. Auf der anderen Seite (auf der sich die langsamere
Netzkarte befindet), &uuml;berschreiben die sp&auml;teren
Pakete ihre Vorg&auml;nger, bevor diese vom System verarbeitet
werden (&Uuml;berlauf!). Dies hat zur Folge, dass der NFS-Block
nicht mehr rekonstruiert und best&auml;tigt werden kann. Als
Folge davon glaubt der Hochleistungsrechner, dass der andere
Rechner nicht erreichbar ist (Timeout!) und versucht die
Sendung zu wiederholen. Allerdings wird wiederum der komplette
NFS-Block verschickt, so dass sich der ganze Vorgang wiederholt,
und zwar immer wieder (oder bis zum Systemneustart).</para>
<para>Indem wir die Einheitengr&ouml;&szlig;e unter der maximalen
Gr&ouml;&szlig;e der Ethernetpakete halten, k&ouml;nnen wir
sicherstellen, dass jedes vollst&auml;ndig erhaltene
Ethernetpaket individuell angesprochen werden kann und vermeiden
die Blockierung des Systems.</para>
<para>&Uuml;berl&auml;ufe k&ouml;nnen zwar nach wie vor auftreten,
wenn ein Hochleistungsrechner Daten auf ein PC-System
transferiert. Durch die besseren (und schnelleren) Netzkarten
treten solche &Uuml;berl&auml;ufe allerdings nicht mehr
<emphasis>zwingend</emphasis> auf, wenn
NFS-<quote>Einheiten</quote> &uuml;bertragen werden. Tritt nun
ein &Uuml;berlauf auf, wird die betroffene Einheit erneut
verschickt, und es besteht eine gute Chance, dass sie nun
erhalten, verarbeitet und best&auml;tigt werden kann.</para>
</sect2>
</sect1>
<sect1 id="diskless">