Die Begriffe Datei und Dateisystem stehen für Betriebssystemkonzepte. Mit Dateien stellt ein Betriebssystem Anwendungsprogrammen und damit den Benutzern ein Mittel zur Verfügung, um Daten persistent (dauerhaft) zu speichern. Dafür enthält die Rechnerhardware Datenträger mit geeigneten Speichermedien. Die Hardwareschnittstellen zu den Datenträgern werden als Laufwerke bezeichnet. Betriebssysteme verwalten ihre Dateien mit Hilfe eines Dateisystems, in dem sie diese üblicherweise in hierarchisch aufgebauten Verzeichnissen organisieren und über eine Systemaufrufschnittstelle den Anwendungsprogrammen verfügbar machen. Die folgende Grafik zeigt in einem Schichtenmodell den groben Aufbau eines Betriebssystems:
Ein Systemaufruf kann immer eindeutig entweder der Prozessverwaltung oder dem Dateisystem zugeordnet werden. Beispielsweise gehört bei den folgenden beiden Systemaufrufen, unabhängig von ihrer konkreten Schreibweise in einem bestimmten Betriebssystem, der erste zur Prozessverwaltung und der zweite zum Dateisystem:
Jedes Laufwerk nimmt einen Teil des Dateisystems auf. Ein solcher Teil wird als physikalisches Dateisystem bezeichnet. Da es auf einem Rechner in der Regel mehrere Laufwerke gibt, stellt sich das Dateisystem eines Rechners als eine Sammlung physikalischer Dateisysteme dar. Wie die Anwendungsprogramme eines Rechners auf die Dateien dieser physikalischen Dateisysteme zugreifen können, wird vom jeweiligen Betriebssystem geregelt. Bei den Windows-Systemen beispielsweise wird jedes Laufwerk durch einen Buchstaben, dem ein Doppelpunkt folgt, bezeichnet. Anwendungsprogramme greifen dann auf eine bestimmte Datei mit einem absoluten Pfadnamen zu, dem die Laufwerksbezeichnung vorausgeht. Beispielsweise benennt
eine Datei mit dem Pfadnamen \Users\Meier\Progs\Java\Abc.java, die zu einem physikalischen Dateisystem gehört, das einem Laufwerk namens c: zugeordnet worden ist. Im Gegensatz dazu stellen die Unix- und Linux-Betriebssysteme den Anwendungsprogrammen eine zusammenhängende, nicht durch Laufwerke aufgeteilte Sicht auf das Dateiesystem zur Verfügung. Das erreichen sie durch eine (logische) Zusammenfassung einiger oder aller physikalischen Dateisysteme eines Rechners zu einem logischen Dateisystem. Nur dieses wird den Anwendungsprogrammen verfügbar gemacht.
Die Zusammenfassung von physikalischen Dateisystemen zu einem logischen wird Mounting genannt und funktioniert folgendermaßen: Beim Hochfahren des Rechners gibt es nur physikalische Dateisysteme. Dann wird in einem ersten Schritt eines dieser physikalischen Dateisysteme ausgezeichnet und zum logischen Dateisystem erklärt. Nur auf dieses logische Dateisystem können die Anwendungsprogramme vorerst zugreifen. Allerdings werden danach Schritt für Schritt weitere der physikalischen Dateisysteme in das jetzt vorhandene logische eingebunden. Dies geschieht, indem ein leeres Verzeichnis des bisherigen logischen Dateisystems mit der Wurzel des aufzunehmenden physikalischen Dateisystems identifiziert wird. Gegebenenfalls müssen solche leeren Verzeichnisse erst angelegt werden.
Die folgenden Grafiken sollen das Vorgehen beim Mounting verdeutlichen. Gestartet werden soll mit den folgenden drei (stilisierten) Dateisystemen, wobei die Rahmen um die Verzeichnishierarchien Laufwerke symbolisieren sollen:
Ein logisches Dateisystem ist noch nicht vorhanden, so dass die Anwendungsprogramme in diesem Stadium noch auf keine Datei in irgendeinem dieser Dateisysteme zugreifen können. Jetzt wird in einem ersten Schritt eines dieser drei physikalischen Dateisysteme zum logischen erklärt. Im Beispiel soll es das erste von links sein.
Anwendungsprogramme können jetzt auf die Dateien des logischen Dateisystems zugreifen, auf die der beiden physikalischen immer noch nicht. In einem zweiten Schritt wird ein leeres Verzeichnis des logischen Dateisystems, es soll das in der Grafik schwarz markierte sein, mit der Wurzel eines weiteren physikalischen Dateisystems identifiziert, wodurch dieses anschaulich in das logische Dateisystem eingebunden wird. Im Beispiel wird von links nach rechts verfahren.
Dieser Vorgang wird für das letzte der drei physikalischen Dateisysteme wiederholt, wobei als Einbindestelle irgendein leeres Verzeichnis des bisherigen logischen Dateisystems dienen kann. Es entsteht ein einziges logisches Dateisystem, das alle drei physikalischen enthält.
Für dieses Mounting gibt es einen mount()-Systemaufruf und als Benutzerschnittstelle ein entsprechendes (Shell-)Kommando.
In vernetzten Rechnerumgebungen ist es naheliegend, mit Dateien zu arbeiten, die nicht zum lokalen Dateisystem gehören. Eine einfache Möglichkeit dazu bietet der FTP-Dienst. Eine Anwendung auf einem Rechner A holt mit dem FTP eine Datei vom Rechner B, arbeitet mit ihr und schickt sie, falls sie verändert worden ist, zum Rechner B zurück. Eine Alternative zu diesem Vorgehen besteht darin, Anwendungsprogramme auf Dateien eines anderen Rechners so zugreifen zu lassen, als wären es Dateien des lokalen Dateisystems. Diese Alternative wird als Netzwerkdateisystem bezeichnet.
Üblicherweise wird dazu ein Client/Server-System eingerichtet, bei dem ein Server einen Teil seines Dateisystems Anwendungen auf anderen Rechnern zur Verfügung stellt. Man spricht von einer Freigabe von Teilen des Dateisystems. Die Clients bieten den lokalen Anwendungen eine Systemaufrufschnittstelle zu dem freigegebenen Teil des Server-Dateisystems an, die so beschaffen ist wie die Schnittstelle zu ihrem lokalen Dateisystem. Das heißt, dass die Anwendungen ferne Dateien, deren Ablageort sie gar nicht kennen, so benutzen, als gehörten sie zum eigenen Dateisystem. Das nennt man einen transparenten Dateizugriff. Dabei erscheint den Anwendungen das Dateisystem, das sie verfügbar haben, wie ein einzelnes, kohärentes System. Mitte der achziger Jahre des vorigen Jahrhunderts wurden mit dem Network File System (NFS) und dem Message Server Block Protocol (SMB) erste Netzwerkdateisysteme auf den Markt gebracht. Wegen ihrer sehr grundlegenden Funktionalität sind sie die Basis vieler verteilter Anwendungen.
Das Network File System (NFS) wurde 1985 von der Firma Sun Microsystems (heute Oracle) für Unix-Systeme vorgestellt und danach auf nahezu alle Betriebssysteme portiert. Mit NFS wurde das Mounting von physikalischen Dateisystemen auf einen Betrieb in einem Netzwerk verallgemeinert. In ein lokales logisches Dateisystem kann ein fernes, von einem Server freigegebenes Verzeichnis mit all seinen Unterverzeichnissen eingebunden werden. Das Mounting wird damit zu einem Internet-Anwendungsdienst und gehört als Protokoll in die Schicht 7 des ISO/OSI-Referenzmodells.
NFS folgt diesem Referenzmodell und verwendet zur Datendarstellung in der ISO/OSI-Schicht 6 ein Protokoll namens External Data Representation (XDR), das unter anderem die Darstellung von Zeichen, Integer- und Floatzahlen festlegt. Als Protokoll für die Kommunikationssteuerung, also für die ISO/OSI-Schicht 5, werden Remote Procedure Calls (RPC) eingesetzt. Ursprünglich war der Mount-Dienst als Datagram Service (UDP) entwickelt worden, wird jedoch heute überwiegend als Stream Service (TCP) betrieben.
Ein NFS-Server, üblicherweise durch ein Programm namens mountd realisiert, gibt Verzeichnisse seines Dateisystems durch einen Eintrag in eine Konfigurationsdatei frei. Man sagt dazu, er exportiere diese Verzeichnisse, die von NFS-Clients mit dem mount()-Systemaufruf in ihr logisches Dateisystem eingebunden werden können.
In lokalen Rechnernetzen ist es üblich, auf jedem der Rechner sowohl einen Server als auch einen Client zu starten. Dabei verändert die Installation von NFS das Betriebssystem des jeweiligen Rechners, denn es fügt dem lokalen Dateisystem ein sogenanntes virtuelles Dateisystem (Virtual File System, VFS) hinzu. Auf der Seite eines NFS-Clients gelangen alle an das Dateisystem gerichteten Systemaufrufe an dieses virtuelle Dateisystem, das dann entscheidet, ob der Aufruf dem lokalen Dateisystem übergeben oder in eine Nachricht an den Server verpackt werden muss. Die folgende Grafik veranschaulicht den Informationsfluss von einer Anwendung auf der Seite eines Clients zu dem Dateisystem auf der Serverseite:
Das virtuelle Dateisystem kann aufgrund der beim Mounting angefallenen Informationen feststellen, ob eine von einer Anwendung angesprochene Datei zum lokalen oder zu einem Serververzeichnis gehört, denn durch das Mounting werden Verzeichnisse identifiziert.
Da bei einem Einsatz von NFS eine Anwendung auf einem bestimmten Rechner auf das Dateisystem eines anderen Rechners zugreift, müssen Zugriffsrechte wie zum Beispiel die Benutzerkennung (User Identity, UID) geprüft werden. Für die damit verbundene Benutzerverwaltung in lokalen Netzen wurde als Ergänzung zu NFS eigens ein Werkzeug namens Network Information Service (NIS) entwickelt.
Mit NFS vergleichbar ist das Server Message Block Protocol (SMB). Es handelt sich um eine Technik von IBM und Microsoft für Windows-Rechner, die dazu dient, Verzeichnisse eines fernen Dateisystems samt deren Unterverzeichnisse lokal als zusätzliches Laufwerk, es heißt dann Netzlaufwerk, verfügbar zu machen. Anfänglich wurden interne Microsoft-Protokolle eingesetzt, inzwischen sind die Internetprotokolle gebräuchlich. Wie bei NFS gibt der unter Windows betriebene SMB-Server ein physikalisches Dateisystem frei, während der Client unter Windows ein Laufwerk emuliert, das genau die Verzeichnisse enthält, die zu dem vom Server freigegebenen physikalischen Dateisystem gehören.
NFS steht auch auf Windows-Servern zur Verfügung, wodurch Unix/Linux-Systeme Zugang zu deren Dateien erhalten können, allerdings wird in gemischten Umgebungen meist SMB auf der Seite von Windows und die Samba-Software auf der Unixseite verwendet. Samba, der Name soll auf SMB hinweisen, ist ein Open-Source-Produkt für Unix/Linux-Rechner, mit dem SMB-Clients unter Windows auf Unix/Linux-Dateisysteme so zugreifen können, als wären es Windows-Server. Die folgende Grafik zeigt den Zusammenhang: