FreeBSD unterstützt das Netzwerkdateisystem NFS, das es einem Server erlaubt, Dateien und Verzeichnisse über ein Netzwerk mit Clients zu teilen. Mit NFS können Benutzer und Programme auf Daten entfernter Systeme zugreifen, und zwar so, als ob es sich um lokal gespeicherte Daten handeln würde.
Die wichtigsten Vorteile von NFS sind:
Daten, die sonst auf jeden Client dupliziert würden, können an einem zentralen Ort aufbewahrt, und von den Clients über das Netzwerk aufgerufen werden.
Verschiedene Clients können auf ein gemeinsames
Verzeichnis /usr/ports/distfiles
zugreifen. Die gemeinsame Nutzung dieses Verzeichnisses
ermöglicht einen schnellen Zugriff auf die Quelldateien,
ohne sie auf jede Maschine zu kopieren zu müssen.
In größeren Netzwerken ist es praktisch, einen zentralen NFS-Server einzurichten, auf dem die Heimatverzeichnisse der Benutzer gespeichert werden. Dadurch steht den Benutzern immer das gleiche Heimatverzeichnis zur Verfügung, unabhängig davon, an welchem Client im Netzwerk sie sich anmelden.
Die Verwaltung der NFS-Exporte wird vereinfacht. Zum Beispiel gibt es dann nur noch ein Dateisystem, für das Sicherheits- oder Backup-Richtlinien festgelegt werden müssen.
Wechselmedien können von anderen Maschinen im Netzwerk verwendet werden. Dies reduziert die Anzahl von Geräten im Netzwerk und bietet einen zentralen Ort für die Verwaltung. Oft ist es einfacher, über ein zentrales Installationsmedium Software auf mehreren Computern zu installieren.
NFS besteht aus einem Server und einem oder mehreren Clients. Der Client greift über das Netzwerk auf die Daten zu, die auf dem Server gespeichert sind. Damit dies korrekt funktioniert, müssen einige Prozesse konfiguriert und gestartet werden:
Folgende Daemonen müssen auf dem Server ausgeführt werden:
Daemon | Beschreibung |
---|---|
nfsd | Der NFS-Daemon. Er bearbeitet Anfragen der NFS-Clients. |
mountd | Der NFS-Mount-Daemon. Er
bearbeitet die Anfragen von
nfsd . |
rpcbind | Der Portmapper-Daemon. Durch ihn erkennen die NFS-Clients, welchen Port der NFS-Server verwendet. |
Der Einsatz von nfsiod(8) ist nicht zwingend erforderlich, kann aber die Leistung auf dem Client verbessern.
Die Dateisysteme, die der NFS-Server
exportieren soll, werden in /etc/exports
festgelegt. Jede Zeile in dieser Datei beschreibt ein zu
exportierendes Dateisystem, Clients, die darauf
Zugriff haben sowie alle Zugriffsoptionen. Die Optionen
eines auf einen anderen Rechner exportierten Dateisystems
müssen alle in einer Zeile stehen. Wird in einer Zeile kein
Rechner festgelegt, dürfen alle Clients im Netzwerk das
exportierte Dateisystem einhängen.
Wie Dateisysteme exportiert werden, ist in der folgenden
/etc/exports
zu sehen. Diese Beispiele
müssen natürlich an die Arbeitsumgebung und die
Netzwerkkonfiguration angepasst werden. Es existieren viele
verschiedene Optionen, allerdings werden hier nur wenige von
ihnen erwähnt. Eine vollständige Liste der Optionen finden
Sie in exports(5).
Dieses Beispiel exportiert /cdrom
für
drei Clients, alpha
,
bravo
und
charlie
:
/cdrom -roalpha
bravo
charlie
Die Option -ro
kennzeichnet das
exportierte Dateisystem als schreibgeschützt. Dadurch sind
Clients nicht in der Lage, das exportierte Dateisystem zu
verändern. Dieses Beispiel geht davon aus, dass die Hostnamen
entweder über DNS oder über
/etc/hosts
aufgelöst werden können.
Lesen Sie hosts(5) falls das Netzwerk über keinen
DNS-Server verfügt.
Das nächste Beispiel exportiert /home
auf drei durch IP-Adressen bestimmte
Clients. Diese Einstellung kann für Netzwerke ohne
DNS-Server und
/etc/hosts
nützlich sein. Die Option
-alldirs
ermöglicht es, auch
Unterverzeichnisse als Mountpunkte festzulegen. Dies bedeutet
aber nicht, dass alle Unterverzeichnisse eingehängt werden,
vielmehr wird es dem Client ermöglicht, nur diejenigen
Verzeichnisse einzuhängen, die auch benötigt werden.
/usr/home -alldirs 10.0.0.2 10.0.0.3 10.0.0.4
Das nächste Beispiel exportiert /a
,
damit Clients von verschiedenen Domänen auf das Dateisystem
zugreifen können. Die Option -maproot=root
erlaubt es dem Benutzer root
des Clients, als
root
auf das
exportierte Dateisystem zu schreiben. Wenn diese Option nicht
gesetzt ist, wird der
root
-Benutzer des Clients dem nobody
-Konto des Servers
zugeordnet und unterliegt somit den Zugriffsbeschränkungen
dieses Kontos.
/a -maproot=root host.example.com box.example.org
Ein Client kann für jedes Dateisystem nur einmal definiert
werden. Wenn beispielsweise /usr
ein
gesondertes Dateisystem ist, dann wären die folgenden Einträge
falsch, da in beiden Einträgen der gleiche Rechner angegeben
wird:
#Nicht erlaubt, wenn /usr ein einziges Dateisystem ist /usr/src client /usr/ports client
Das richtige Format für eine solche Situation ist:
/usr/src /usr/ports client
Das Folgende ist ein Beispiel für eine gültige
Exportliste, in der /usr
und
/exports
lokale Dateisysteme sind:
# 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
Damit die vom NFS-Server benötigen
Prozesse beim Booten gestartet werden, fügen Sie folgende
Optionen in /etc/rc.conf
hinzu:
rpcbind_enable="YES" nfs_server_enable="YES" mountd_flags="-r"
Der Server kann jetzt mit diesem Kommando gestartet werden:
#
service nfsd start
Wenn der NFS-Server startet, wird
auch mountd automatisch gestartet.
Allerdings liest mountd
/etc/exports
nur, wenn der Server
gestartet wird. Um nachfolgende Änderungen an
/etc/exports
wirksam werden zu lassen,
kann mountd angewiesen werden, die
Datei neu einzulesen:
#
service mountd reload
Um den NFS-Client zu aktivieren, setzen
Sie folgende Option in /etc/rc.conf
auf
jedem Client:
nfs_client_enable="YES"
Der Client ist nun in der Lage, ein entferntes Dateisystem
einzuhängen. In diesen Beispielen ist der Name des Servers
server
und der Name des Clients
client
. Fügen Sie folgenden Befehl
aus, um das Verzeichnis /home
vom
server
auf dem
client
ins Verzeichnis
/mnt
einzuhängen:
#
mount server:/home /mnt
Die Dateien und Verzeichnisse in
/home
stehen dem Rechner
client
nun im Verzeichnis
/mnt
zur Verfügung.
Um ein entferntes Dateisystem bei jedem Systemstart
automatisch einzuhängen, fügen Sie das Dateisystem in
/etc/fstab
ein:
server:/home /mnt nfs rw 0 0
fstab(5) enthält eine Beschreibung aller Optionen.
Einige Anwendungen erfordern die Sperrung von Dateien,
damit sie korrekt arbeiten. Um diese Sperre zu aktivieren,
müssen diese Zeilen in /etc/rc.conf
sowohl auf dem Client als auch auf dem Server hinzugefügt
werden:
rpc_lockd_enable="YES" rpc_statd_enable="YES"
Danach starten Sie die beiden Anwendungen:
#
service lockd start
#
service statd start
Wenn keine Dateisperren zwischen den
NFS-Clients und dem
NFS-Server benötigt werden, können Sie den
NFS-Client durch die Übergabe der
Option -L
an mount
zu einer lokalen Sperrung von Dateien zwingen. Weitere
Details finden Sie in mount_nfs(8).
autofs(5) wird seit FreeBSD 10.1-RELEASE unterstützt. Um die Funktionalität des automatischen Einhängens in älteren FreeBSD-Versionen zu benutzen, verwenden Sie stattdessen amd(8). In diesem Kapitel wird nur das automatische Einhängen mit Hilfe von autofs(5) beschrieben.
autofs(5) ist eine gebräuchliche Bezeichnung für verschiedene Komponenten, welche es erlauben, lokale und entfernte Dateisysteme automatisch einzuhängen, sobald auf eine Datei oder ein Verzeichnis in diesem Dateisystem zugegriffen wird. Es besteht aus einer Kernel-Komponente autofs(5) und mehreren Benutzerprogrammen: automount(8), automountd(8) und autounmountd(8). autofs(5) ist eine Alternative für amd(8) aus früheren FreeBSD-Versionen. amd(8) steht nach wie vor zur Verfügung, da beide Programme ein unterschiedliches Format verwenden. Das Format welches autofs(5) verwendet ist das gleiche wie bei anderen SVR4 Automountern, beispielsweise denen aus Solaris™, Mac OS® X und Linux®.
Das virtuelle autofs(5)-Dateisystem wird von automount(8) in einen bestimmten Mountpunkt eingehängt. Dies geschieht gewöhnlich während des Bootens.
Jedes Mal, wenn ein Prozess versucht auf eine Datei unterhalb des autofs(5)-Mountpunkts zuzugreifen, wird der Kernel den automountd(8)-Daemon benachrichtigen und den aktuellen Prozess anhalten. Der automountd(8)-Daemon wird dann die Anfrage des Kernels bearbeiten und das entsprechende Dateisystem einhängen. Anschließend wird der Daemon den Kernel benachrichtigen, dass der angehaltene Prozess wieder freigegeben werden kann. Der autounmountd(8)-Daemon hängt automatisch Dateisysteme nach einiger Zeit ab, sofern sie nicht mehr verwendet werden.
Die primäre Konfigurationsdatei von autofs ist
/etc/auto_master
. Sie enthält die
einzelnen Zuordnungen zu den Mountpunkten. Eine Erklärung
zu auto_master
und der Syntax für
die Zuordnungen finden Sie in auto_master(5).
Eine spezielle Automounter Zuordnung wird in
/net
eingehängt. Wenn auf eine Datei in
diesem Verzeichnis zugegriffen wird, hängt autofs(5)
einen bestimmten, entfernen Mountpunkt ein. Wenn
beispielsweise auf eine Datei unterhalb von
/net/foobar/usr
zugegriffen werden soll,
würde automountd(8) das exportierte Dateisystem
/usr
von dem Rechner foobar
einhängen.
In diesem Beispiel zeigt showmount -e
die exportierten Dateisysteme des
NFS-Servers foobar
:
%
showmount -e foobar
Exports list on foobar: /usr 10.10.10.0 /a 10.10.10.0%
cd /net/foobar/usr
Die Ausgabe von showmount
zeigt das
exportierte Dateisystem /usr
. Wenn in
das Verzeichnis /host/foobar/usr
gewechselt wird, fängt automountd(8) die Anforderung ab
und versucht, den Rechnernamen foobar
aufzulösen.
Gelingt dies, wird automountd(8) automatisch das
exportierte Dateisystem einhängen.
Um autofs(5) beim Booten zu aktivieren, fügen Sie
diese Zeile in /etc/rc.conf
ein:
autofs_enable="YES"
Danach kann autofs(5) gestartet werden:
#
service automount start
#
service automountd start
#
service autounmountd start
Obwohl das Format von autofs(5) das gleiche ist wie in anderen Betriebssystemen, kann es wünschenswert sein, Informationen von anderen Betriebssystemen zu Rate zu ziehen, wie dieses Mac OS X Dokument.
Weitere Informationen finden Sie in den Manualpages automount(8), automountd(8), autounmountd(8) und auto_master(5).
Wenn Sie Fragen zu FreeBSD haben, schicken Sie eine E-Mail an
<de-bsd-questions@de.FreeBSD.org>.
Wenn Sie Fragen zu dieser Dokumentation haben, schicken Sie eine E-Mail an
<de-bsd-translators@de.FreeBSD.org>.