由于相同的文件句柄,nfs 挂载失败

由于相同的文件句柄,nfs 挂载失败

在 /etc/exports 中:

/tmp/test    *(rw)

/dev/sda1(ext4 文件系统)安装在/tmp/test

挂载 nfs 命令:

mount -o vers=3 $HOST:/tmp/test $NFS_DIR

(其中 HOST 是 nfs 服务器的 IP,NFS_DIR 是客户端上的本地挂载点)

第一次,nfs mount 成功。然后我卸载了。

然后我命令 /etc/exports(无 nfs 导出)中的条目,然后执行exportfs -r

然后我取消注释 /etc/exports 中的 /tmp/test 条目(与之前相同),然后exportfs -r再次执行

然后我使用相同的命令挂载 nfs 共享。但这次挂载会挂起并超时。

然而,当我检查 nfs 日志时,我得到了这个:

/tmp and /tmp/test have same filehandle for *, using first
qword_eol: fflush failed: errno 22 (Invalid argument)
Cannot export /tmp, possibly unsupported filesystem or fsid= required" 

关于 export /tmp 的错误是有道理的,因为它是 tmpfs。

但是为什么 /tmp 和 /tmp/test 具有相同的文件句柄?

我知道问题是由于 /tmp 和 /tmp/test 具有相同的文件句柄而引起的,因此 nfs 返回第一个文件句柄,即 /tmp。我想要导出的是 /tmp/test (ext4 fs),而不是 /tmp (tmpfs)。

重新启动 rpc.mountd 即可解决该问题。

  1. 为什么 /tmp /tmp/test 获得相同的文件句柄?
  2. 为什么重新启动 rpc.mountd 可以解决问题?
  3. 如何在不重新启动 rpc.mounts 的情况下解决此问题?

答案1

看来这是 nfs-utils 本身的 bug。这个 bug 在 1.3.3 版本中得到了修复。我也尝试使用 nfs-utls 1.3.2,但问题仍然存在。使用 nfs-utils 1.3.3 可以修复此问题。

相关内容