在 NFS 导出中仅挂载子目录

在 NFS 导出中仅挂载子目录

在我的 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_checksubtree_check。确保fsid不与父导出冲突。

subtree_check选项告知 NFS 服务器在检查其导出的任何操作时考虑文件系统上的路径。这通常是在沿着位于单个文件系统上的树导出目录时需要的。如果没有此选项,NFS 服务器将从与保存客户端 NFS 命令所针对的路径的文件系统匹配的第一个导出记录来处理请求。

答案2

我认为这里接受的答案不正确。用户的问题是他们对根目录和子目录导出都使用了 fsid=0。fsid=0 是为 NFS 导出层次结构的根目录保留的。目前尚不清楚 subtree_check 在此上下文中是否必要或可取,并且它将对性能产生负面影响。

相关内容