Das Network File System - abgekürzt NFS - ist ein von Sun Microsystems entwickeltes Protokoll das den Zugriff auf Dateien über ein Netzwerk ermöglicht. Dabei werden die Dateien nicht z.B. bei FTP ) übertragen sondern die Benutzer können auf die sich auf einem entfernten Rechner befinden zugreifen als wenn sie auf ihrer lokalen Festplatte abgespeichert wären.
Bei diesem UNIX -Netzwerkprotokoll handelt es sich um einen Internet - Standard ( RFC 1094 RFC 1813 ) der auch als verteiltes Dateisystem (engl. Distributed File System) bezeichnet wird. sind auch auf Microsoft - Windows - Servern verfügbar wodurch UNIX- Workstations Zugang zu deren Dateien erhalten können. Entsprechung zu NFS heißt unter Windows- und OS/2 -Umgebungen Server Message Block ( SMB ). Sowohl NFS als auch SMB regeln um Dateien zu öffnen und zu schließen. regeln sie die Zugriffskontrolle welcher Benutzer Lese- Schreibzugriff auf eine Ressource erhält.
NFS arbeitet auf dem Netzwerk-Transportprotokoll TCP/IP . NFS ist ursprünglich ein zustandsloses UDP -Protokoll. Mittlerweile gibt es aber auch NFS TCP. Derzeit wird NFS Version 4 entwickelt schneller und nicht mehr zustandslos sein soll.
Ein Programm greift auf das Dateisystem Systemrufe zu. Unter UNIX sind die wichtigsten Systemrufe:
open close - Öffnen und Schließen einer Datei
read write - Lesen und Schreiben
creat unlink - Erzeugen und Löschen
mkdir rmdir - Erzeugen und Löschen eines Verzeichnisses
readdir - Lesen von Verzeichniseinträgen
Ein Netzwerkdateisytem muss diese Aufrufe in verpacken und an einen Server senden. Dieser antwortet dann mit der Information oder einem Fehler.
Die Entwickler von Sun Microsystems entschieden zunächst für ein Remote Procedure Call -Modell. Das XDR setzt die Parameter in maschinenunabhängiges Format um die Zugriffe werden dann RPC wie ein normaler Unterprogrammaufruf behandelt.
Die Systemaufrufe werden aber nicht direkt RPC-Aufrufe umgesetzt da dann eine über open geöffnete Datei auch auf dem Server werden müsste. Bei vielen Clients wären die dann schnell überlastet da die Maschinen Mitte 1980er Jahre noch relativ wenig Speicher hatten. Aufgaben des Servers wurden daher so einfach möglich gehalten der Server merkt sich keine zwischen zwei RPC-Aufrufen. Er ist also zustandslos.
Statt open wird ein lookup -Aufruf implementiert. Dieser liefert ein Datei-"Handle" das Inodenummer und die Gerätenummer des Massenspeichers auf Server enthält. Über dieses Handle kann eine auf dem Server eindeutig identifiziert werden. Unter steht über diese beiden Nummern die Dateiinformation ohne Suche eindeutig zur Verfügung.
Die weiteren Aufrufe wie read oder write müssen stets ein Offset übergeben so der Server auch hier ohne Kenntnis früherer die gewünsche Information eindeutig liefern kann.
Weitere Eigenschaften des Protokolls sind
nur kurze Cachezeiten (wenige Sekunden) für Verzeichnisinformationen und Dateiattribute
kein Datencache
Verwendung des verbindungslosen User Datagram Protocols UDP
Lock- und Mount-Operationen über zusätzliche Hilfsprotokolle
Verwendung von Unix-Dateiattributen (zum Beispiel Benutzer- uid )
Trotz des einfachen Designs läuft NFS normalen Umgebungen gut:
Verwendung über das Internet (lange Antwortzeiten)
Verwendung von Firewalls (UDP kein fester Port Portmapper )
Das Protokoll wurde Ende der 1980er Jahre entwickelt. Auch teure Workstations hatten zu dieser Zeit nur wenige Arbeitsspeicher typisch etwa 4 bis 8 MB. NFS-Server kann auf solchen Maschinen aufgrund des trotzdem effizient betrieben werden.
Wegen des zustandslosen Servers kann dieser Datenverlust heruntergefahren und neu gestartet werden. Programme nicht ab und Benutzer müssen dann einfach bis der Server wieder verfügbar ist.
Workstations können über NFS ganz ohne betrieben werden. Das Betriebssystem und die Betriebsparameter über Protokolle wie BOOTP und TFTP geladen werden. Ein spezieller Kernel kann über NFS bereits (Wurzel-Laufwerk unter Unix) zugreifen. plattenlose Workstations ( diskless workstations ) wurden von der Firma Sun in 1990er Jahren angeboten.
Vorteil ist ein verringerter Wartungsaufwand gemeinsame von Plattenplatz sowie einfachere und preiswerte Client-Workstations
Sun und andere Firmen boten in 1990er Jahren auch NFS-Clientsoftware für PCs unter Windows an das PC-NFS. Der Server musste eine Unix-Workstation sein. Bis Windows für Workgroups der Netzwerkzugriff unter Windows nicht Teil des In Unix-Umgebungen wurde der Einsatz von PCs wesentlich erleichtert.
PC-NFS musste mit den unterschiedlichen Konzepten DOS/Windows-Systems kämpfen. Die damaligen Windows-Versionen erlaubten nur mit bis zu acht Zeichen sowie eine Zeichen lange Erweiterung die durch ein Punkt wurde (z. B. AUTOEXEC.BAT) während Unix 255 langen Pfadnamen erlaubte. Die Dateinamen unterschieden im zu DOS zwischen Groß- und Kleinschreibung. PC-NFS also zwischen den Dateinamenkonzepten übersetzen.
Ein Unix-Dateiname file.txt erschien als FILE.TXT unter Windows/DOS während Dateiname Dokumentation.txt etwa in DOKU~123.TXT umgesetzt wurde.
Die NFS Version 4 stellt eine dar die neuere Erfordernisse berücksichtigt. Sie ist RFC 3510 standardisiert.
Die Unix-Lastigkeit der frühen Versionen wird wie möglich verringert. Die Benutzer- und Gruppennummern durch Zeichenketten ersetzt. Da manche Dateisysteme keine Implementierung von eindeutigen Dateihandles ermöglichen werden flüchtige Handles eingeführt die nur eine bestimmte zur Verfügung stehen und dann neu angefragt müssen. Unter Unix kann man Handles sehr aus der Geräte- und Inodenummer konstruieren. Auch die nicht zwischen Groß- und Kleinschreibung unterscheiden benutzerdefinierte Dateiattribute werden jetzt unterstützt.
Das Mount- und Lockprotokoll sind jetzt des Protokolls selbst Hilfsprotokolle werden nicht mehr Das Protokoll selbst läuft auf dem festen 2049 UDP wird nicht mehr unterstützt. Zwar auch schon frühere Versiuonenauf diesem Port die wurden vom RPC-Portmapper aber dynamisch zugeteilt. Die von Firewalls beim NFS-Verbindungen wird durch diese Massnahmen möglich.
Mehrere Anfragen können gebündelt werden ( combined request ) sie werden dann vom Server ausgeführt eine Antwort muss zurückgesendet werden. Das Protokoll damit effizient auch im Wide Area Bereich WAN ) eingesetzt werden zum Beispiel zwischen verschiedenen einer Organisation.
Verschlüsselung ist jetzt Teil der Spezifikation. war früher schon über Secure-RPC eine verschlüsselung Dies wurde nur selten genutzt unter anderem Secure-RPC nicht grundsätzlich zur Verfügung stand.
Der lookup -Aufruf wird durch open ersetzt die Speicherung von Dateiinformatinen wird möglich. Beispielsweise könnte die Schreib-/Leseposition auf dem verwaltet werden. Auch die gemeinsame Nutzung von wird besser unterstützt. Falls viele Clients eine nur lesen kann diese an Clients verliehen leases ) werden. Auch wenn ein Client eine schreibt kann diese verliehen werden. .