由于相同的文件句柄,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挂载成功。 然后我卸载了。

然后,我输出/ etc / exports(no nfs export)中的条目,并执行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?

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