在我的 NAS 上,我导出一个文件系统:
/mnt/datastore *(rw,sync,no_subtree_check,all_squash,fsid=0)
作为/mnt/datastore/
基于 FUSE 的一组磁盘串联的挂载点。
此导出目录中有一个子目录,/mnt/datastore/dev/
我在其中存储了所有我忙于开发的源代码树。我有一个专用的虚拟机用于开发,因此我想在此虚拟机上安装此导出。出于安全考虑,我只想安装子目录,mnt/datastore/dev/
这样当我搞砸时,就不会抹去我所有的电影和电视剧集。
我尝试过的:
我在 NAS 上创建了一个新的导出:
/mnt/datastore/dev *(rw,sync,no_subtree_check,all_squash,fsid=0)
并将其安装在 fstab 中的 dev box 上:
IP_OF_NAS:/mnt/datastore/dev /mnt/dev_directory nfs rsize=8912,wsize=8912,timeo=14,intr 0 0
这没有按预期工作:它安装正常,但我看到了内容/mnt/datastore/
,不是 /mnt/datastore/dev/
这违背了本次演习的目的。
答案1
替换no_subtree_check
为subtree_check
。确保fsid
不与父导出冲突。
该subtree_check
选项告知 NFS 服务器在检查其导出的任何操作时考虑文件系统上的路径。这通常是在沿着位于单个文件系统上的树导出目录时需要的。如果没有此选项,NFS 服务器将从与保存客户端 NFS 命令所针对的路径的文件系统匹配的第一个导出记录来处理请求。
答案2
我认为这里接受的答案不正确。用户的问题是他们对根目录和子目录导出都使用了 fsid=0。fsid=0 是为 NFS 导出层次结构的根目录保留的。目前尚不清楚 subtree_check 在此上下文中是否必要或可取,并且它将对性能产生负面影响。