我对读取磁盘缓存对通过 NFS 访问文件的影响很感兴趣。假设我在 NFS 上有一个文件。我从 Linux 主机“A”访问它(执行“cat myfile”)。如果有足够的 RAM,文件最终会进入磁盘缓存。现在我从主机“B”修改该文件。主机“A”上的操作系统如何知道它必须使缓存的这一部分无效?是否有来自 NFS 的回调?或者磁盘缓存很快就会过期?
答案1
答案 A8Linux NFS 常见问题解答有一个解释。
总结:客户端负责轮询服务器以请求更改(通过检查文件属性来查看它们自上次客户端检查以来是否已更改)。客户端通常定期执行此操作,但也会在打开文件时执行此操作。它们还会在关闭时刷新所有写入。这意味着,只要您确保在一个客户端保持文件打开以进行写入时没有其他客户端打开文件,您就会获得预期的结果。
此行为通常可使用挂载选项进行配置,例如,如果您希望以牺牲性能为代价获得更强的缓存一致性。例如,请参阅 Linux 客户端上的“man nfs”。