Wie funktioniert der NFS-Lese-Cache unter Debian?

12

Ich plane, NFS zu verwenden, um viele kleine Dateien bereitzustellen. Sie werden sehr oft gelesen, daher ist das clientseitige Caching von entscheidender Bedeutung. Kommt NFS damit klar? Gibt es eine Möglichkeit, das clientseitige Caching auf irgendeine Weise zu erhöhen?

... oder soll ich mir eine andere Lösung ansehen? Die regelmäßige Synchronisierung mit rsync oder unisono ist keine Option, da die Dateien von Zeit zu Zeit auf der Clientseite geändert werden.

Ztyx
quelle

Antworten:

6

Erstens bietet NFS keine Cache-Kohärenz. Wenn Sie dies benötigen, müssen Sie sich umsehen, woanders.

Was NFS angibt, ist ein schwächeres Modell, das als nahezu offene Konsistenz bezeichnet wird. Das bedeutet, dass beim Schließen einer Datei alle fehlerhaften Daten auf den Server übertragen werden. Umgekehrt wird beim Öffnen einer Datei eine Attributprüfung durchgeführt, dh, wenn der Client Seiten aus dieser Datei zwischengespeichert hat, prüft er, ob diese Seiten noch gültig sind.

Obwohl dies nicht in der Spezifikation selbst enthalten ist, haben die meisten NFS-Clients ein sogenanntes Attribut-Cache-Timeout, dh wie alt die Attribute eines Verzeichnisses oder einer geöffneten Datei sein können, bevor der Client den Server kontaktiert, um sie erneut zu validieren. Unter Linux finden Sie unter actimeo = etc. Mount-Optionen. Höhere Werte ermöglichen eine aggressivere Zwischenspeicherung, erhöhen jedoch das Risiko, veraltete Daten zu verwenden, wenn ein anderer Client die Datei in der Zwischenzeit aktualisiert.

janneb
quelle
Danke für Ihre Antwort. Damit ich das richtig verstanden habe, enthält der clientseitige "Attribut-Cache" nur einen Cache für Datei / Verzeichnis-Attribute, d. H. Der Cache enthält keinen Dateiinhalt?
Ztyx
Ja, der Client speichert den Dateiinhalt im Seiten-Cache zwischen, genau wie bei einem lokalen Dateisystem. Die Attribute werden verwendet, um zu entscheiden, ob und wann der Inhalt der zwischengespeicherten Datei ungültig wird.
Janneb
Ah. Vielen Dank für die Beantwortung. Einen schönen Tag noch.
Ztyx
Wenn Sie "Seite" sagen, scheint dies zu bedeuten, dass Teile der Datei zwischengespeichert werden können und Teile der Datei möglicherweise nicht? Es ist kein Dateicache, oder? Es sind Unterteilungen der Datei, die zwischengespeichert werden können.
CMCDragonkai
@CMCDragonkai: Der Kernel verfolgt den Inhalt der zwischengespeicherten Dateien mit einer Seitengranularität (normalerweise 4 KB), sodass ein Teil einer Datei zwischengespeichert werden kann. Ich bin nicht sicher, wie genau die Cache-Ungültigmachung für NFS funktioniert. Ich schätze, dass nach dem Zeitlimit für den Attribut-Cache alle zwischengespeicherten Seiten, die zu dieser Datei gehören, gelöscht werden, wenn eine erneute Überprüfung des Servers fehlschlägt.
16.