两个相同的NFS共享,但两个中只有一个共享给Stale文件处理错误

时间:2020-03-04 13:09:11

标签: linux nfs

我有一个Linux(树莓派)服务器:

$ uname -a
Linux hester 4.19.97-v7l+ #1294 SMP Thu Jan 30 13:21:14 GMT 2020 armv7l GNU/Linux

具有两个具有相同用户/组/权限的目录:

$ ls -ld /mnt/storage/gitea/ /mnt/storage/hester/
drwxr-xr-x 2 nobody nogroup 26 Mar  2 10:20 /mnt/storage/gitea/
drwxr-xr-x 3 nobody nogroup 21 Feb 21 11:26 /mnt/storage/hester/

这两个目录在导出文件中以相同的参数导出:

$ cat /etc/exports
/mnt/storage/hester     192.168.1.15(rw,sync,no_subtree_check)
/mnt/storage/gitea      192.168.1.15(rw,sync,no_subtree_check)

在另一台机器上(导出文件中提到的192.168.1.15),我成功安装了两者:

$ mount /mnt/storage/gitea/
$ echo $?
0
$ mount /mnt/storage/hester/
$ echo $?
0

但是现在发生了奇怪的事情:

$ ls -l /mnt/storage/
ls: cannot access '/mnt/storage/gitea': Stale file handle
total 0
d????????? ? ?      ?        ?            ? gitea
drwxr-xr-x 3 nobody nogroup 21 Feb 21 11:26 hester

我真的不知道

  • 错误的根源是什么
  • 我可以在两者之间寻找差异。

我愿意接受进一步调查的建议或对我的疑惑的答案。预先感谢您提供任何有用的输入!

1 个答案:

答案 0 :(得分:0)

我终于找到了解决方案,该解决方案是在导出中显式添加一个fsid选项:

$ cat /etc/exports
/mnt/storage/hester     192.168.1.15(rw,sync,fsid=20,no_subtree_check)
/mnt/storage/gitea      192.168.1.15(rw,sync,fsid=21,no_subtree_check)

我不能完全确定为什么这样做。从手册页中可以看到“ NFS必须能够识别其导出的每个文件系统。通常,它将使用UUID作为文件系统(如果文件系统有这种东西)或持有该文件系统的设备的设备号(如果文件系统存储在设备上)。

这两个挂载点都在同一文件系统上,因此根据手册页,它们应该具有相同的fsid,但这会导致导出相同的目录,因此我认为这意味着每个 export 需要有一个单独的fsid。

另一个注意事项:/ mnt / storage是RAID3上的XFS文件系统,因此这也可能使NFS对设备的UUID感到困惑。