文件修改滞后

c0d*_*tic 1 nfs

我们遇到了一个奇怪的问题,从 NFS 客户端创建/删除文件需要很长时间才能传播到其他客户端。

我们在客户端上的安装选项是:

defaults,rsize=32768,wsize=32768,intr,noatime,cto
Run Code Online (Sandbox Code Playgroud)

出口有:

*(rw,sync,no_root_squash,no_wdelay)
Run Code Online (Sandbox Code Playgroud)

我们通过在一个客户端上执行以下操作来验证这一点:

watch -n0.1 stat foofile
Run Code Online (Sandbox Code Playgroud)

在另一个客户端上,我们触摸 foofile(或 rm it)。修改需要 1 秒以上才能传播出去。

cto 和 no_wdelay 是我们最近添加的选项,以查看它们是否解决了问题(它们没有)。我们还能看什么?

Tom*_*ime 5

我不会直接回答你的问题。

NFS 客户端不能保证非常快地看到更新。是的,您可以调整参数来控制延迟,但结果会导致客户端上的缓存变差(因此性能很差)。

通常,当我发现自己需要 NFS 客户端来更快地查看更改时,我会后退一步并问:“好吧,我真正想在这里实现什么?” 通常我会意识到有一些更高级别的抽象可以让我以非常不同的方式解决相同的问题。例如,有时我意识到我试图将 NFS 文件用作穷人的 RPC 或锁定机制。有更好的方法来做这些事情。

NFS 适用于访问特定目录的单个客户端。除此之外,如果您遇到问题并打算使用 NFS 修复它,那么您会遇到两个问题。

我喜欢 NFS,但它在我尝试使用它的地方受到限制。