如何禁用NFS客户端缓存?

时间:2017-12-25 10:40:14

标签: nfs

我遇到NFS客户端文件缓存问题。客户端读取之前几分钟从服务器中删除的文件。

我的两台服务器都是CentOS 6.5(内核:2.6.32-431.el6.x86_64)

我使用服务器A作为NFS服务器,/ etc / exports写为:

/path/folder 192.168.1.20(rw,no_root_squash,no_all_squash,sync)

服务器B用作客户端,挂载选项为:

nfsstat -m

/mnt/folder from 192.168.1.7:/path/folder
Flags:  rw,sync,relatime,vers=4,rsize=1048576,wsize=1048576,namlen=255,acregmin=0,acregmax=0,acdirmin=0,acdirmax=0,hard,noac,nosharecache,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=192.168.1.20,minorversion=0,lookupcache=none,local_lock=none,addr=192.168.1.7

如您所见," lookupcache = none,noac"选项已经用于禁用缓存,但似乎不起作用......

我做了以下步骤:

  1. 从服务器A
  2. 创建一个简单的文本文件
  3. 通过cmd" cat"从服务器B打印文件,然后就可以了
  4. 从服务器A中删除文件
  5. 等几分钟,然后从服务器B打印文件,它仍在那里!
  6. 但是,如果我这样做的话,那就是" ls"当时从服务器B,文件不在输出中。不一致的状态可能会持续几分钟。
  7. 我认为我已经检查了所有NFS挂载选项......但无法找到解决方案。 我错过了还有其他选择吗?或许问题不在于NFS?

    任何想法都将受到赞赏:)

1 个答案:

答案 0 :(得分:0)

我已经测试了您使用以下参数给出的相同步骤。它的工作完美。我在客户端安装中添加了另一个参数“ fg”。

sudo mount -t nfs -o fg,noac,lookupcache=none XXX.XX.XX.XX:/var/shared/ /mnt/nfs/fuse-shared/