我有四台计算机,在其中两台(假设是 n1 和 n2)上我安装了 NFS4 服务器并导出:
/export 10.0.0.0/16(rw,fsid=0,no_subtree_check,async,insecure,no_root_squash)
/export/home 10.0.0.0/16(rw,fsid=0,no_subtree_check,async,insecure,no_root_squash)
现在,n1 和 n2 都具有相同的配置,我可以在我的任何一台计算机上(在 /home/n1 和 /home/n2 中)安装和卸载这些资源而不会出现错误,但我只能访问来自 n1 的资源。当我尝试ls
从 n2 访问目录时,出现错误:“过时的 NFS 文件句柄”。
我的网络运行正常,没有防火墙,它们都具有相同的配置和相同的 Ubuntu 10.04 服务器版本。
在客户端机器上的日志中我收到此错误:
[585039.584017] NFS: server 10.0.1.4 error: fileid changed
[585039.584019] fsid 0:16: expected fileid 0x1ba54e2, got 0x3f20001
我已经在服务器上检查过了,0x3f20001 是/export
目录的 id,而 0x1ba54e2 是/export/home
。
我的 fstab 如下所示:
10.0.1.4:/home /home/n2 nfs4 _netdev,auto 0 0
IP 10.0.1.4 属于 n2 主机。
任何想法?
答案1
每次导出的 fsid 都应该不同,并且在配置中将其设置为 0。
您应该尝试为每个服务器上的每个导出设置不同的 fsid。
答案2
看起来是 fstab 中的错误绑定问题。之前我在设置它时不小心在 n2 上的 fstab 中交换了 src 和 dest,然后/home/n2
我移动了一些主目录并将此绑定更改为正确的绑定。但可能我没有重新挂载它(我一定是忘记这样做了)。
我尝试更新软件包,重启后我发现它/export/home
是空的,所有数据都在/home/n2
n2 上。所以我再次将其移动到/export/home
,一切正常。
因此我猜测 NFS 在导出与其他目录绑定的目录时遇到了问题。