Zentrale Datenhalde via NFS

 Zielgruppe: Fortgeschrittene 

Hier und da mag es sinnvoll sein, eine große Festplatte nicht nur für sich zu behalten, sondern auch anderen Rechnern, die nicht so üppig ausgestattet sind, zur Verfügung zu stellen. In anderen Fällen will man eine zentrale Datenhalde etwa für die Rechner einer kleinen Arbeitsgruppe bereitstellen. Dies vereinfacht vor allem das Sichern der benutzten Daten, da man sie nicht mehr von verschiedenen Rechnern zusammensuchen muss.

Unter Linux gibt es einen sehr einfachen Mechanismus zum Teilen von Plattenplatz. Dieser heißt [GLOSS:NFS]. Dabei gibt es zwei verschiedene Varianten: Einmal einen Server, der in den Linux Kernel eingebunden wird und einmal einen Server, der als normales Anwendungsprogramm läuft. Der Kernel Server ist freilich schneller, aber eben mit den Rechten des Kernels gespickt und daher unter dem Aspekt der Sicherheit vielleicht nicht das Optimum. Für welchen Server man sich auch immer entscheidet, man installiert auf dem Rechner (Debian woody) mit dem überschüssigen Plattenplatz entweder das Paket "nfs-kernel-server" oder "nfs-user-server". Auf jedem Rechner, der die entfernte Festplatte einbinden soll, müssen die entsprechenden Programme für das NFS zur Verfügung stehen. Bei einem Debian System ist dafür lediglich das Paket "nfs-common" via apt-get zu installieren. Für alle anderen Distributionen wird es entsprechende Pakete geben.

Nach der Installation geht die Konfiguration ebenso flott von der Hand: Auf dem NFS Server müssen zwei Dateien angepasst werden: /etc/exports und /etc/hosts.allow. Bei /etc/exports werden die zur Verfügung zu stellenden Verzeichnisse eingetragen. Dabei steht je ein Verzeichnis in einer Zeile, die das folgende Format hat:

Verzeichnis Rechnerliste

wobei die Rechnerliste auch einfach ein IP Adressbereich sein kann. Zudem können hinter jedem Rechner noch Optionen stehen, die in runde Klammern eingeschlossen werden. Eine mögliche Konfiguration wäre also etwa

/home/nfs 192.168.0.0/255.255.255.0

oder auch

/home/nfs 192.168.0.1(ro,no_root_squash) 192.168.0.3(rw,no_root_squash)

Die entsprechenden Optionen können in der Manpage zum NFS Server nachgelesen werden (man exports). 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. Darüber hinaus gibt es selbstverständlich die Möglichkeit, nur Leserechte (ro) oder Lese- und Schreibrechte (rw) für die entsprechenden Rechner einzuräumen.

Da der Zugriff über den portmap [GLOSS:Dämon] und den tcpd läuft, muss noch in der Datei /etc/hosts.allow festgelegt werden, welche Rechner überhaupt mit dem Server Kontakt aufnehmen dürfen. Eine Zeile wie

portmap: ALL

erlaubt grundsätzlich allen Rechnern den Zugriff auf den Dienst des NFS Servers. Besser ist natürlich eine entsprechende Einschränkung auf bestimmte IP-Adressen im lokalen Netzwerk:

portmap: 192.168.0.1 192.168.0.3

Nach den Änderungen muss der NFS Server seine Konfiguration neu einlesen. Dies bewerkstelligt man mit

/etc/init.d/nfs-user-server reload

oder

/etc/init.d/nfs-kernel-server reload

als root. Damit ist die Konfiguration des Servers abgeschlossen.

Von einem Client aus wird das entsprechende Verzeichnis (/home/nfs) auf dem Server (hier mit der IP 192.168.0.0) nun über den mount Befehl

mount -t nfs 192.168.0.0:/home/nfs /mnt/nfs

in das Verzeichnis /mnt/nfs auf dem lokalen Rechner eingebunden. Es unterscheidet sich nun für einen Anwender nicht von einem beliebigen anderen Verzeichnis auf dem Rechner, obwohl die Daten auf einem anderen Rechner, dem NFS Server liegen. Wenn der Server immer zur Verfügung steht, kann man auch einen entsprechenden Eintrag in der Datei /etc/fstab vornehmen.

So. Dann muss man die große zentrale Festplatte nur noch regelmäßig aufräumen, damit sie nicht wirklich zur zentralen Datenhalde wird, wo sich aller Müll sammelt...