我认为我了解 NFS4 之前的导出工作方式,特别是导出点的命名空间。
(即在服务器上导出 /mnt/blah,在客户端上使用 mount server:/mnt/blah /my/mnt/point)
然而,我很难理解 NFS4 导出。
到目前为止我所能够收集到的信息是,您可以通过用 fsid=0 标记来导出“根”,然后在客户端通过将其引用为“/”来导入。
(即服务器上的 exportfs -o fsid=0 /mnt/blah,在客户端上安装服务器:/)
但是,之后就变得有点奇怪了。从我玩过的情况来看,似乎我无法导出 /mnt/blah 下的任何内容。例如,除非服务器上存在 /mnt/blah/home/user1,否则尝试从客户端挂载时,exportfs /home/user1 会失败。
如果是这种情况,服务器上的 exportfs /mnt/blah/subdir1 和客户端上的 mount server:/subdir1 以及直接跳过 exportfs 并挂载您想要的 /mnt/blah 的任何子目录之间有什么区别?
为什么你需要导出除根之外的任何内容?无论如何,它们都在同一个命名空间中。
答案1
这样做的目的是添加一个抽象层,为您提供更大的灵活性;您可以在服务器上移动内容,而不必重新配置所有客户端来反映新路径。
/mnt/blah
例如,你可以通过将内容绑定到 blah 内部来将其导出到外部
mount --bind /home /mnt/blah/home