我在NFS客户端属性缓存方面遇到了问题。我正在使用一些服务器,其中一个是NFS服务器,其他的是NFS客户端服务器。
所有服务器都是Debian(Linux的lenny,2.6.26-2-amd64),版本如下。
% dpkg -l | grep nfs
ii libnfsidmap2 0.20-1 An nfs idmapping library
ii nfs-common 1:1.1.2-6lenny1 NFS support files common to client and server
ii nfs-kernel-server 1:1.1.2-6lenny1 support for NFS kernel server
在NFS服务器中,/etc/exports文件的内容如下:/export-path 192.168.0.0/255.255.255.0(async,rw,no_subtree_check)
在 NFS 客户端中,/etc/fstab 内容如下所示:server:/export-path /mountpoint nfs rw,hard,intr,rsize=8192,async 0 0
如您所见,"async"选项用于多客户端访问性能。不过有时会导致虚假缓存错误。
由于我正在维护许多服务器(并且我没有更改挂载选项的强大权限),我不想修改/etc/exports或/etc/fstab。如果我有一个可以使用用户权限“清理”NFS客户端属性缓存的命令行工具,那就足够了。
请告诉我是否有这样的命令。
谢谢,
(添加)
我所说的“虚假缓存错误”,是指
% ls -l /data/1/kabe/foo
ls: cannot access /data/1/kabe/foo: No such file or directory
% ssh another-server 'touch /data/1/kabe/foo'
% ls -l /data/1/kabe/foo
ls: cannot access /data/1/kabe/foo: No such file or directory
有时会发生这样的情况。
问题不在于文件内容,而是文件属性(=dentries信息),因为NFS声称它保证开关一致性(Close-to-Open consistency)。
lookupcache=none
使我的git clone
时间从2.7秒增加到了20秒。 - Torsten Bronger