两个相同的 NFS 共享,但只有一个会给出 Stale 文件句柄错误
Posted
技术标签:
【中文标题】两个相同的 NFS 共享,但只有一个会给出 Stale 文件句柄错误【英文标题】:Two identical NFS shares, but only one of the two gives Stale file handle errors 【发布时间】:2020-03-04 13:09:11 【问题描述】:我有一个 Linux (raspbian) 服务器:
$ 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
实在想不通
错误的根源是什么,最重要的是 我可以从中找出两者之间的区别。我愿意接受进一步调查的建议或解答我的疑问。提前感谢您提供任何有用的意见!
【问题讨论】:
您是否刷新了导出exportfs -ra
?
@KamilCuk 是的,我做到了。我还重新启动了两台服务器。
【参考方案1】:
我终于找到了解决办法,就是在exports中显式添加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 感到困惑。
【讨论】:
以上是关于两个相同的 NFS 共享,但只有一个会给出 Stale 文件句柄错误的主要内容,如果未能解决你的问题,请参考以下文章