Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

Der Schreib- und Lesevorgang bei NFS

&pagelevel(4)&pagelevel

Der Schreibvorgang

Die Geschwindigkeit, mit der eine Applikation ihre Schreibvorgänge durchführen kann, wird an der Zeitdauer gemessen, die gebraucht wird, bis sich die Daten auf einem sicheren Datenträger, d.h. normalerweise auf einer Festplatte befinden.

Die NFS-Protokollversion 2 verwendete den sogenannten synchronen Schreibmodus (synchronous write). Dieses Verfahren besteht darin, dass eine Applikation auf einem Client einen Schreibvorgang in seinen lokalen NFS-Cache im Hauptspeicher schreibt und diesen an den jeweiligen Server weiterleitet. Hierbei wird jeder Schreibzugriff der Applikation in einen Schreibzugriff auf den NFS-Server ungesetzt. Der Server empfängt die Schreibwünsche und führt diese auf seiner Festplatte aus. Anschließend meldet er dem Client die Ausführung, damit der Client die Daten aus seinem Cache löschen und die Applikation den Schreibvorgang positiv abschließen kann. Meldet der Server nach einer bestimmten Zeit nicht die Erledigung, so überträgt der Client die Daten aus dem Cache einfach noch einmal.

Die NFS-Protokollversion 3 verwendet den sogenannten asynchronen Schreibmodus (safe asynchronous write). Hier werden wie bei der NFS-Protokollversion 2 die Schreibzugriffe auf dem Client im Cache gespeichert und zum Server übertragen. Der Server kann aber dem Client sofort eine Empfangsbestätigung zurückgeben, ohne den Schreibzugriff tatsächlich ausführen zu müssen. Für die Applikation auf dem Client gilt dies als erfolgter Schreibvorgang, so dass diese weiterarbeiten kann. Die Daten verbleiben zur Sicherheit zunächst im NFS-Cache des Clients. Der Server kann mehrere Schreibvorgänge von verschiedenen Clients in seinem Cache sammeln und anschließend gemeinsam als eine Schreibvorgang effizient auf die Festplatte schreiben. Später wird vom NFS-System des Clients eine Abfrage zur Bestätigung des Schreibvorgangs verlangt (commit). Dabei wird nicht für jeden Schreibvorgang eine eigene Bestätigung benötigt. Sobald die Daten auf der Festplatte stehen, wird diese Abfrage vom Server positiv beantwortet. Der Client bzw. die Applikation kann eine Datei schließen und die entsprechenden NFS-Pakete aus dem Cache löschen, sobald dafür eine entsprechende Bestätigung vorliegt (close-to-open). Hat der Server ein Problem, so kann der Client die Aufträge aus seinem Cache nochmals übertragen bzw., wenn das Problem nicht lösbar ist (beispielsweise nicht genug Speicherplatz vorhanden ist), kann eine entsprechende Fehlermeldung der Applikation erzwungen werden, bevor diese beendet bzw. die Datei geschlossen werden kann.

Lesevorgang

Die Lesegeschwindigkeit wird als Zeitraum definiert, den eine Applikation warten muss, bis diese mit den gewünschten Daten versorgt werden kann. Dabei werden von den NFS-Protokollversionen 2 und 3 die gleichen Verfahren verwendet. Diese bestehen zum einen aus einer Pufferung von Lesedaten im Hauptspeicher des jeweiligen Clients und zum anderen in einem speziellen Leseverfahren, das vorausschauend mehr Daten in den Cache liest, als eigentlich benötig werden (read ahead). Damit soll versucht werden, den nächsten Lesezugriff der Applikation vielleicht bereits mit erledigen zu können.