NFS显示目录中的文件,但无法打开或统计

我正在使用Linux(内核2.6.32上的Debian Squeeze)机器的networking,使用NFS(v3)共享文件。 客户端A上运行的进程会在文件服务器Z上通过NFS创build一个文件,然后在A完成运行(刷新输出并closures文件)后,客户端B将尝试访问该文件。 99.9%的时间没有这个方法的问题。

问题是客户端B很less尝试读取时会抛出错误,指出文件不存在。 起皱的是,当在包含目录上做“ls”或readdir时,B总是显示文件。 但是,当试图打开,甚至调用文件的“统计”不存在的错误被抛出。

还有一些要点:

  • 这些文件只能在单个客户端上写入一次,但可以被许多不同的客户端(WORM)多次读取。 这些文件也不会在这个过程中被删除。
  • 当出现错误时,他们只会影响一些客户(随机)。 其他客户端可以打开和阅读文件没有问题。 此外,当问题发生时,往往会反复发生。 重新启动文件服务器并重新安装在客户端似乎消除了这个问题
  • 该文件可以在足够的时间后被读取。 可能在几秒到十分钟之间。 有时它会在包含目录的readdir后立即消失,有时不会。
  • 我最初怀疑这是一个NFS属性caching一致性问题。 所以我重新启用了noac选项。 这个问题继续出现(除了慢慢地)。
  • 只有在繁重的NFSstream量时,才会出现这个问题,当大量的大文件正在创build,写入和读取。
  • 在客户端或服务器端的任何syslog或dmesg中都不会显示任何问题。

我强烈怀疑这是某种types的NFScaching一致性问题。 但我无法弄清楚究竟是什么原因或可能的解决办法。 除非我误解了NFS手册,否则这种types的行为应该通过接近开放的caching一致性来排除。 有没有其他人有经验,这个问题的NFS文件存在的“readdir”系统调用,但不存在“统计”系统调用? 任何有识之士将不胜感激。 谢谢。