Gelegentlich liest der NFS-Client Daten aus NFS-Exporten nicht synchron, z. B. wenn sie von einem anderen NFS-Client geschrieben wurden. Nachdem NFS-Client A beispielsweise eine Datei mit „echo hallo> /NFS_mountpoint/testfile“ geschrieben hat, kann NFS-Client B die Datei mit „No such file“ nicht lesen oder kann lesen, aber der Inhalt der Datei könnte alt sein.
NFS-Clients cachen verschiedene NFS-Daten. RFC 1813 für die NFSv3-Spezifikation sagt:
Clients can perform caching in varied manner.
und sagt auch:
The NFS version 3 protocol does not define a policy for caching on the client or server. In particular, there is no support for strict cache consistency between a client and server, nor between different clients. Therefore this is designed behavior of Linux NFS client.
Daher ist dies ein beabsichtigtes Verhalten des Linux-NFS-Clients. Deaktivieren/überspringen Sie das NFS-Client-Caching, indem Sie die NFS-Client-Mount-Optionen konfigurieren, oder lesen/schreiben Sie die Daten mit O_DIRECT /O_SYNC .
Um alle Caches für den NFS-Client zu deaktivieren, fügen Sie „sync ” für die Einhängeoption, z. B.
# mount -t nfs -o vers=3,sync NFS_Server:/NFS_Export/ /NFS_MountpointHinweis :Diese Option kann zu Leistungseinbußen führen. Testen Sie diese Option sorgfältig auf Ihrem Testsystem, bevor Sie sie auf einem Produktionssystem anwenden.
Um das Caching von Verzeichniseinträgen durch den NFS-Client zu deaktivieren, fügen Sie „noac,lookupcache=none hinzu ” für die Mount-Option, wie im folgenden Beispiel:
# mount -t nfs -o vers=3,noac,lookupcache=none NFS_Server:/NFS_Export/ /NFS_MountpointHinweis :Es gibt Unterschiede zwischen noac und actimeo=0. actimeo=0 kann Zuordnungsänderungen zwischenspeichern, noac jedoch nicht. Somit ist noac sicherer als actimeo=0, kann sich aber auf die Performance auswirken. Es ist auch in Ordnung, beide Optionen zu setzen, um dies weiter einzuschränken.