Ocasionalmente, el cliente NFS no lee los datos de las exportaciones NFS de forma sincrónica, como cuando fue escrito por otro cliente NFS. Por ejemplo, después de que NFS Client A escribe un archivo con "echo hello> /NFS_mountpoint/testfile", NFS Client B no puede leer el archivo con "No such file", o puede leer pero el contenido del archivo podría ser antiguo.
Los clientes NFS almacenan en caché varios datos NFS. RFC 1813 para la especificación NFSv3 dice:
Clients can perform caching in varied manner.
y tambien dice:
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.
Por lo tanto, este es el comportamiento diseñado del cliente Linux NFS. Deshabilite/omita el almacenamiento en caché del cliente NFS configurando las opciones de montaje del cliente NFS, o lea/escriba los datos con O_DIRECT /O_SYNC .
Para deshabilitar todos los cachés para el cliente NFS, agregue "sincronizar ” para opción de montaje, ej.
# mount -t nfs -o vers=3,sync NFS_Server:/NFS_Export/ /NFS_MountpointNota :Esta opción puede provocar una degradación del rendimiento. Pruebe esta opción cuidadosamente en su sistema de prueba antes de aplicarla en un sistema de producción.
Para deshabilitar el almacenamiento en caché de las entradas del directorio por parte del cliente NFS, agregue “noac,lookupcache=none ” para la opción de montaje, como en el siguiente ejemplo:
# mount -t nfs -o vers=3,noac,lookupcache=none NFS_Server:/NFS_Export/ /NFS_MountpointNota :Hay diferencias entre noac y actimeo=0. actimeo=0 puede almacenar en caché los cambios de atribución, pero noac no. Por lo tanto, noac es más seguro que actimeo=0; sin embargo, puede tener un impacto en el rendimiento. También está bien establecer ambas opciones, para restringir aún más esto.