我有一个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
我真的无法计算
- 错误的来源是什么,最重要的是
- 在那里我可以找到两者之间的区别
我愿意接受进一步调查的建议或对我的疑虑的回答。提前感谢您的任何有用意见!
我终于找到了解决方案,即在导出中显式添加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,但这会导致导出相同的目录,因此我认为这意味着每个导出都需要有一个单独的fsid。
还有一点需要注意:/mnt/storage是RAID3上的XFS文件系统,因此这也可能使NFS对设备的UUID感到困惑。