Linux 读取磁盘缓存和 NFS

Jan*_*nek 4 linux nfs kernel disk-cache

我对读取磁盘缓存对通过 NFS 访问文件的影响感兴趣。假设我在 NFS 上有一个文件。我从 linux 主机“A”访问它(做“cat myfile”)。如果有足够的 RAM,文件最终会出现在磁盘缓存中。现在我从主机“B”修改该文件。主机“A”上的操作系统如何知道它必须使缓存的那部分无效?是否有来自 NFS 的回调?或者磁盘缓存很快过期?

use*_*985 7

Linux NFS FAQ 的A8有一个解释。

总结:由客户端轮询服务器以请求更改(通过检查文件属性以查看自上次客户端检查以来它们是否已更改)。客户通常会定期执行此操作,但在打开文件时也会执行此操作。它们还会在关闭时刷新任何写入。这意味着只要您确保没有其他客户端打开文件而一个客户端保持打开以进行写入,您就会获得预期的结果。

这种行为通常可以使用挂载选项进行配置,例如,如果您希望以牺牲性能为代价获得更强的缓存一致性。例如,请参见 Linux 客户端上的“man nfs”。