Wer zu Hause ein kleines Linux-Netzwerk betreibt, möchte vermutlich darüber auch Dateien austauschen. Für eine dauerhafte und stabile Verbindung bietet sich dazu das Netzwerkdateisystem NFS an.
NFS ist die Abkürzung für Network File System und bezeichnet ein Dateisystem, das sich über ein lokales Netzwerk erstreckt. NFS ist auf diesem Gebiet der Standard für Linux- und Unix-Systeme, in der Windows-Welt benutzt man normalerweise das Common Internet File System (CIFS, ehemals SMB) als Netzwerkdateisystem. Der Einsatz von NFS lohnt sich vor allem in reinen Linux-/Unix-Umgebungen. Bevor Sie sich an das Setup eines entsprechenden Fileservers machen, sollten Sie deshalb die Grundlagen im Kasten Passt NFS zu mir? lesen.
Passt NFS zu mir?
NFS eignet sich für den Einsatz in einem reinen Linux-Netzwerk oder einem Heimnetz aus Linux- und Mac-OS-X-Rechnern. Windows-Maschinen kommen mit NFS auch klar [1], die aktuelle NFS-Version 4 bringt dafür zusätzliche Features mit. Dieser Artikel bespricht jedoch nur das Setup unter Linux.
Um per NFS auf ein gemeinsames Verzeichnis zuzugreifen, brauchen Sie einen NFS-Server, der das Verzeichnis zum Export anbietet. Im Unterschied zu einem Netzwerkzugriff über HTTP oder FTP sollte dieses Verzeichnis stets erreichbar sein. NFS eignet sich somit nicht, um “mal schnell” Dateien zwischen zwei Rechnern auszutauschen, sondern ist eher als feste Lösung gedacht. Ein Szenario wäre zum Beispiel die gemeinsam genutzte Foto-, Film- oder Musiksammlung. Im professionellen Einsatz wird NFS in der Regel dazu benutzt, um allen Benutzern ein zentrales /home-Verzeichnis einzurichten, wodurch sich zum Beispiel das Backup wesentlich erleichtert. (Es genügt, die Dateien auf dem Server zu sichern, die einzelnen Client-Systeme müssen nicht gesichert werden.) Möchten Sie das /home-Verzeichnis zum Export freigeben, sollten Sie NFS zusammen mit einer zentralen Benutzerverwaltung wie NIS oder LDAP einsetzen. So richten Sie die Benutzer einmalig auf dem Server ein und diese können sich automatisch auf jedem Client in der gewohnten Arbeitsumgebung einloggen. Das Setup einer solchen Benutzerverwaltung verlangt aber einiges an Linux-Know-how. Ohne zentrale Benutzerverwaltung stoßen Sie über kurz oder lang auf Zugriffsprobleme.
Der NFS-Server muss nicht besonders performant sein, als Server eignet sich somit auch ein älterer PC. Trotzdem sollten Sie aus Energiespargründen lieber einen NAS-Server betreiben, wenn Sie lediglich Daten im Heim- oder Firmennetz teilen möchten und sich nicht ganz sicher sind, ob NFS die richtige Lösung ist.
NFS bietet sich zum Beispiel an, wenn Sie auf einem Rechner mit einer sehr großen Festplatte (Server) Ihre Musiksammlung oder die Fotos verwalten, diese aber auch auf den anderen Rechnern (Clients) erreichen möchten. Ein Verzeichnis /musik auf dem Server beispielsweise lässt sich dazu über NFS auf dem Client in den Dateisystembaum einhängen. Abbildung 1 zeigt dies am Beispiel von drei Rechnern.

Abbildung 1: Der NFS-Server gibt das Verzeichnis “/musik” zum Export frei. Die Clients hängen dieses in den Verzeichnisbaum ein, womit die 250 GByte allen Rechnern zur Verfügung stehen.
Zu den größten Fallstricken beim NFS-Setup über mehrere Rechner gehört die Benutzerverwaltung. Der NFS-Server speichert in der Grundeinstellung sämtliche Dateien mit der ID des schreibenden Nutzers. Greift zum Beispiel Client “blau” von Mandriva aus auf den NFS-Server zu, erhalten sämtliche Dateien des Clients die ID 500 (erste Benutzer-ID unter Mandriva). Verbirgt sich hingegen hinter Client “grün” ein OpenSuse-Rechner, erhalten die Dateien die ID 1000. Je nach eingestellten Berechtigungen und Export-Optionen ist so ein Dateiaustausch nicht möglich.
Setup unter OpenSuse
Ein NFS-Setup besteht immer aus zwei Schritten. Zunächst müssen Sie auf dem Server die Verzeichnisse auswählen, welche Sie für die anderen Rechner freigeben möchte, danach muss der Client dieses Verzeichnis in den lokalen Verzeichnisbaum einhängen (mounten). OpenSuse bietet für diese Aufgabe zwei YaST-Module an: NFS-Server und NFS-Client (Abbildung 2). Falls YaST nur eines der beiden Module oder gar keines anzeigt, müssen Sie noch über Software / Software installieren oder löschen die Pakete yast2-nfs-server und/oder yast2-nfs-client nachinstallieren.
Auf dem Rechner, den Sie als Server einrichten möchten, starten Sie das YaST-Modul Netzwerkdienste / NFS-Server. Im ersten Dialog (Abbildung 2) legen Sie fest, ob der NFS-Server beim Rechnerstart automatisch starten und ob YaST die Firewall anpassen soll. Wählen Sie hier Starten und markieren Sie die Checkbox Firewall-Port öffnen, da den Clients sonst der Zugriff auf den Server verwehrt wird.
Die Markierung vor der Checkbox NFSv4 aktivieren sollten Sie nur dann entfernen, wenn im lokalen Netz noch ältere Rechner arbeiten, die das aktuelle NFS 4 nicht unterstützen. Den Eintrag NFSv4-Domänennamen lassen Sie am besten unverändert. Er dient in einem Netz mit einem Nameserver dazu dass die Clients den Server leichter finden. NFSv4 unterstützt die Generic-Security-Services-Schnittstelle GSS für erhöhte Sicherheit. In einem reinen NFSv4-Netz sorgt die entsprechende Checkbox für mehr Sicherheit, alte NFSv3-Clients können dann aber nicht mehr auf die exportierten Verzeichnisse zugreifen.
Ein Klick auf Weiter öffnet den Dialog Zu exportierende Verzeichnisse. Hier legen Sie in der oberen Fensterhälfte fest, welche Verzeichnisse Sie freigeben möchten. Dazu klicken Sie auf Verzeichnis hinzufügen und geben den absoluten Pfad ein oder wählen Durchsuchen. In der unteren Fensterhälfte legen Sie die Zugriffsrechte für das ausgewählte Verzeichnis fest. Klicken Sie dazu auf Host hinzufügen und geben Sie im Feld Rechner-Wildcard die IP-Adresse des Clients ein, der auf das Verzeichnis zugreifen darf. Für alle Rechner im lokalen Netz tragen Sie einen Stern * ein. Der NFS-Server sollte dann allerdings über keine direkte Verbindung zum Internet verfügen, da sonst die NFS-Verzeichnisse auch über das Internet erreichbar sind. Um die Liste auf alle Rechner im Netz 192.168.0.0 zu beschränken, tragen Sie 192.168.0.* ein. Unter Optionen geben Sie die einzelnen Exporteigenschaften an. Lassen Sie das Feld leer, trägt YaST automatisch die Parameter ro, root_sqash, sync und no_subtree_check ein.
Das erste exportierte Verzeichnis enthält zudem den Eintrag fsid=0. Details zu den Parametern entnehmen Sie der Tabelle Export-Optionen. Mit den Standard-Optionen von YaST dürfen die Clients zwar das exportierte Verzeichnis lesen aber nicht darauf schreiben. Markieren Sie deshalb für den Schreibzugriff den neuen Eintrag, klicken Sie auf Bearbeiten und ändern Sie ro zu rw. Möchten Sie zum Beispiel den Client “blau” vom Schreibzugriff ausnehmen, wählen Sie erneut Host hinzufügen, tragen unter Rechner-Wildcard die IP-Adresse 192.168.0.3 ein und klicken auf OK. Die spezifische Regel überschreibt die für alle Rechner aufgestellte Regel. Ein Klick auf Beenden schließt das Setup ab und startet den NFS-Server (neu). YaST speichert die Einstellungen in der Datei /etc/exports. Verfügen Sie über das nötige Linux-Know-how können Sie diese Datei auch direkt bearbeiten.
Nach dem Serversetup richten Sie die einzelnen Clients ein. Hier starten Sie das YaST-Modul NFS-Client und klicken auf Hinzufügen. Im neuen Dialog (Abbildung 3) klicken Sie auf Wählen, damit YaST im Netz nach NFS-Servern sucht. Der Server sollte sich dann in der Liste Hostname des NFS-Servers befinden. Geben Sie nun das entfernte Verzeichnis an (auch hier hilft ein Klick auf Wählen bei der Selektion) und den lokalen Mountpunkt. Im Feld Optionen legen Sie fest, mit welchen Parametern das System die NFS-Freigabe einhängt. Soll jeder Benutzer das Verzeichnis einhängen dürfen, geben Sie user,default in das Eingabefeld ein.

Abbildung 3: YaST findet NFS-Server im lokalen Netz automatisch, Sie müssen nur noch das lokale Verzeichnis und die Mount-Optionen angeben.
Schließen Sie das Setup über Klicks auf OK und Beenden ab. Alternativ können Sie NFS-Freigaben auch von Hand in einem Terminalfenster einhängen. Details dazu finden Sie im Abschnitt zu Ubuntu.
Mandriva
Auch die französische Linux-Distribution Mandriva bietet für das Setup des NFS-Servers und -Clients grafische Tools an. Sie finden diese in Drakconf unter Netzwerkschnittstellen / NFS-Freigaben verwalten. Falls Drakconf die zwei Module nicht anzeigt, müssen Sie über den Paketmanager zunächst noch nfs-utils inklusive Abhängigkeiten installieren.
Für das Setup auf dem Server starten Sie das Modul gemeinsame Nutzung von Laufwerken und Verzeichnissen durch NFS. Im neuen Dialog klicken Sie auf Hinzufügen und geben dann im obersten Feld das Verzeichnis an, das Sie freigeben möchten (Abbildung 4).
Sollen sämtliche Rechner Zugriff auf die Freigabe erhalten, belassen Sie den Eintrag Rechnerzugriff. Wenn nicht, tragen Sie die Netzwerkadresse des gewünschten Rechners in das Eingabefeld ein. Um allen Rechnern des Netzes 192.168.0.0 den Zugriff zu erlauben, tragen Sie zum Beispiel 192.168.0.* ein. Unter Benutzer-ID-Abbildung stellen Sie den Eintrag Benutzer-ID auf root-Benutzer auf anonymous abbilden. Dies entspricht der Option root_sqash in der Konfigurationsdatei /etc/exports. Details zu den einzelnen Optionen entnehmen Sie der Tabelle Export-Optionen.
Per Klick auf Fortgeschritten richten Sie noch den Schreibzugriff ein, indem Sie den Eintrag Nur-Lese-Freigabe auf no stellen. Mit einem Klick auf OK beenden Sie das Setup. Nfsdrake zeigt beim nächsten Start dann die einzelnen Optionen so an, wie Sie in der Datei /etc/exports stehen. Den NFS-Server und den zugehörigen Mount-Daemon startet Mandriva automatisch, allerdings blockiert die Firewall einen Zugriff auf die exportierten Verzeichnisse. Starten Sie deshalb in Drakconf das Modul Sicherheit / Einstellungen für die Firewall und markieren Sie die Checkbox Alles (keine Firewall), um die Firewall auszuschalten.
Möchten Sie Mandriva 2009 als NFS-Client einrichten, dann starten Sie aus Drakconf das Modul Netzwerkschnittstellen / Einstellungen für NFS (Netzwerkfilesystem). Hier klicken Sie auf Server suchen, um die vorhandenen NFS-Server anzeigen zu lassen. Bleibt die Liste leer, dann ist vermutlich die Firewall noch aktiv und verhindert Netzwerkscans. Hat Mandriva einen Server gefunden, markieren Sie den Eintrag mit der Maus und klicken anschließend auf das kleine Dreieck vor dem Computersymbol. Sie sehen nun eine Liste der verfügbaren Freigaben (Abbildung 5).

Abbildung 5: Mandriva findet NFS-Server im lokalen Netzwerk automatisch, falls die Firewall nicht aktiv ist.
Wählen Sie die gewünschte Freigabe aus der Liste aus und klicken Sie auf Einhängepunkt. Mandriva schlägt automatisch ein passendes Verzeichnis unter /mnt als Mountpoint vor, hier können Sie dies noch ändern. Über Optionen legen Sie die Mount-Parameter fest. Mandriva 2009 bietet über den Menüpunkt Fortgeschritten detaillierte Hilfe an. Ein Klick auf Einhängen mountet das Verzeichnis, um die Einstellungen zu speichern, wählen Sie Fertig.
Ubuntu von Hand
Ubuntu bietet kein grafisches Tool für das NFS-Setup an, Sie müssen hier deshalb die zwei Schritte Export und Einhängen über die Kommandozeile vornehmen. Bevor Sie Server und Client einrichten können, müssen zunächst die passenden Pakete installiert sein. Der Server benötigt das Paket nfs-kernel-server, auf dem Client genügt die Installation von nfs-common. Ubuntu startet nach der Installation des Pakets nfs-kernel-server den NFS-Server und zwei weitere Dienste, die für den Serverbetrieb nötig sind (mountd, portmap).
Um auf dem Server ein Verzeichnis freizugeben, starten Sie den Editor Kwrite mit Adminrechten über [Alt]+[F2] und den Befehl kdesu kwrite und öffnen die Datei /etc/exports. Gnome-Nutzer starten Gedit mit [Alt]+[F2] und gksudo gedit. Die Konfigurationsdatei /etc/exports bestimmt, welche Clients welche Verzeichnisse einhängen dürfen. Dazu enthält die Datei pro Zeile den Namen des freigegebenen Verzeichnisses, die IP-Adresse oder den Adressbereich der erlaubten Rechner sowie Optionen für den Export, dazu gehören in erster Linie die Rechte. Die Konfigurationsdatei bringt bereits ein paar Beispieleinträge mit, die Sie belassen können.
- Schreiben Sie in eine neue Zeile zunächst das zu exportierende Verzeichnis mit der kompletten Pfadangabe, zum Beispiel
/musik. - Drücken Sie [Tab], um zur nächsten Spalte zu springen, und geben Sie an, welche Rechner Zugriff auf das Verzeichnis haben sollen. Möchten Sie den Zugriff allen Rechnern erlauben, tragen Sie hier einfach einen Stern ein:
*. Für einen ganz bestimmten Rechner geben Sie die IP-Adresse an, zum Beispiel192.168.0.2. Sollen beispielsweise nur die Rechner des Netzes192.168.0.0Zugriff auf die NFS-Freigabe erhalten, beginnt der Eintrag mit192.168.0.*. Falls Sie in der Datei/etc/hostseine Liste von Rechnernamen und zugehörigen IP-Adressen führen, dann können Sie hier auch Rechnernamen angeben. -
Im Anschluss an die Rechnereinträge folgen in Klammern die Parameter für den Export. Achten Sie darauf, kein Leerzeichen zwischen die Rechnerangabe und die Klammer zu setzen. Die wichtigsten Parameter sind
rw(Clients dürfen lesen und schreiben) undro(Clients dürfen nur lesen). Die Parameter sind optional, allerdings gibt der NFS-Server bei einigen eine Fehlermeldung aus, wenn sie nicht gesetzt sind. Die Tabelle Export-Optionen listet die gebräuchlichsten Parameter, detaillierte Informationen zur Datei/etc/exportserhalten Sie auf der Kommandozeile über den Befehlman exports. Für einen Start ohne Warnmeldung tragen Sie nachrwbzw.ronochsync,no_subtree_checkein. -
Nach den Änderungen an der Konfigurationsdatei müssen Sie den NFS-Server neu starten bzw. die Konfigurationsdatei neu einlesen lassen. Für den Neustart öffnen Sie über [Alt]+[F2] und den Befehl
gnome-terminalein Terminalfenster und geben hier folgenden Befehl ein:sudo /etc/init.d/nfs-kernel-server restart
Möchten Sie den Server nicht neu starten, sondern nur die Konfigurationsdatei neu einlesen, ersetzen Sie
restartdurchreload.
Export-Optionen
| Option | Bedeutung |
|---|---|
rw |
Erlaubt den Clients, auf das Dateisystem zu schreiben und davon zu lesen. |
ro |
Erlaubt den Clients nur, das Dateisystem zu lesen. |
sync |
Verbietet asynchrone Dateioperationen (Grundeinstellung). |
async |
Erlaubt asynchrone Dateioperationen. Mit der Option async reagiert NFS zwar etwas schneller, ist allerdings auch anfälliger für Fehler. |
root_sqash |
Alle Anfragen von Root werden so behandelt, als ob sie ein Nutzer ohne Rechte gestellt hätte. NFS verhindert so, dass ein Client mit Root-Rechten auf dem exportierten Verzeichnis ebenfalls Root-Rechte bekommt. Dies ist die Grundeinstellung. |
no_root_sqash |
Greift ein Client mit Root-Rechten auf das exportierte Verzeichnis zu, enthält er ebenfalls Root-Rechte. |
all_squash |
Alle Anfragen werden vom Server so behandelt, als ob sie ein Nutzer ohne Rechte gestellt hätte. Nützlich für FTP-Serverdienste. |
subtree_check |
Überprüft bei sämtlichen Dateien die Rechte und Herkunft, wenn keine komplette Partition sondern nur ein Verzeichnis exportiert wird. Der Subtree-Check bietet dadurch eine zusätzliche Sichererheit, ist jedoch auch anfällig für Fehler, weshalb er in aktuellen NFS-Versionen in der Gruneinstellung ausgeschaltet ist. |
no_subtree_check |
Schaltet den Subtree-Check aus, wodurch NFS zügiger arbeitet. |
fsid= |
NFS identifiziert die freigegebenen Verzeichnisse über eine ID, welche normalerweise der Festplatten- oder Partitions-ID des freigegebenen Verzeichnisses entspricht. Da jedoch nicht jedes Exportverzeichnis einer Partition entsprechen muss, lässt sich die ID nicht immer ermitteln. In solchen Fällen kann man dem NFS-Server die ID über den Parameter fsid= übergeben. Eine besondere Rolle nimmt seit Version 4 der Parameter fsid=0 oder fsid=root ein. Er legt fest, welches Verzeichnis die Wurzel für alle exportierten Verzeichnisse bildet. |
Client-Setup
Gibt der NFS-Server beim Start keine Fehlermeldung aus, richten Sie die Clients ein. NFS-Freigaben hängt das Linux-System wie gewöhnliche Datenträger über den mount-Befehl in den Verzeichnisbaum ein. Möchten Sie das Verzeichnis /musik des Servers mit der IP-Adresse 192.168.0.1 in Ihrem Home-Verzeichnis unter /home/marcel/Musik einhängen, geben Sie folgenden Befehl mit Administratorrechten auf der Kommandozeile ein:
mount 192.168.0.1:/musik /home/marcel/Musik
Sie finden dann die Dateien des Servers auf dem Client im Verzeichnis /home/marcel/Musik. Hat der manuelle Mount-Vorgang geklappt, können Sie die Dateisystemtabelle /etc/fstab um eine entsprechende Zeile ergänzen:
- Starten Sie über [Alt]+[F2] und den Befehl
kdesu kwriteden Editor Kwrite mit Administratorrechten. Nutzen Sie Gnome, lautet der entsprechende Befehlgksudo gedit. -
Öffnen Sie die Datei
/etc/fstabim Editor und fügen Sie am Ende der Datei eine Zeile für das NFS-Verzeichnis ein. Ein entsprechendes Beispiel zeigt Abbildung 6. Als Mount-Optionen empfehlen sichuser(Benutzer dürfen die Freigabe ein- und aushängen),soft(der Client beendet die Verbindung, falls der Server über längere Zeit nicht erreichbar ist) undintr(der Mount-Vorgang lässt sich über [Strg]+[C] unterbrechen). Soll Ubuntu das NFS-Verzeichnis beim Systemstart nicht automatisch einhängen, fügen Sie noch die Optionnoautohinzu. Weitere Mount-Optionen von NFS listet der Befehlman 5 nfs.
Einfach und stabil
Das NFS-Setup wirkt auf den ersten Blick vielleicht etwas kompliziert, funktioniert aber eigentlich ganz einfach. Als Belohnung winkt eine schnelle und stabile Dateisystembrücke zwischen dem Server und den Clients, die zum Beispiel auch Suspend-Vorgänge überdauert. NFS ist deshalb die ideale Lösung für ein permanentes Linux-Netzwerkdateisystem.
Glossar
-
NAS-Server
-
Network Attached Storage. Eine per Netzwerk angeschlossene externe Festplatte, welche je nach Ausstattung und Hardware auch Dateisystemdienste anbietet. Die meisten NAS-Geräte setzen jedoch auf CIFS als Netzwerkdateisystem, da damit Windows-, Linux- und Mac-Rechner klarkommen.
[1] NFS für Windows: http://support.microsoft.com/kb/324055





