从同一个服务器创build两个nfs共享,但是挂载时,都指向相同的目录

我有一组需要两个NFS共享的服务器,一些服务器需要访问其中一个共享,并且所有的服务器都需要访问另一个。 NFS服务器是Ubuntu 12.04,其他的是13.04这是我在nfs服务器上的导出

/u0/logshare/ 172.1.1.0/24(rw,fsid=0,insecure,no_subtree_check,async) /vmail1/ 172.1.1.64/27(rw,fsid=0,no_subtree_check,async,anonuid=2000,anongid=2000) 172.1.1.36(rw,fsid=0,no_subtree_check,async,anonuid=2000,anongid=2000) 

这两个都在不同的分区上,logshare是ext4,而vmail是xfs,不知道是否可以相关。

以下是客户端服务器上的fstab中的内容

  172.1.1.15:/vmail1 /vmail1 nfs hard,intr,auto 0 0 172.1.1.15:/u0/logshare /logshare nfs hard,intr,auto 0 0 

但这是我重新启动后得到的

 172.1.1.15:/u0/logshare 4.1G 158M 3.8G 4% /logshare 172.1.1.15:/vmail1 4.1G 158M 3.8G 4% /vmail1 

它只是安装了两次logshare。 如果我颠倒导出的顺序,那么它会挂载两次vmail。 这是怎么回事? 我一直在做日志,但没有看到有关nfs的任何错误

Showmount -e显示了这一点
/ vmail1 172.1.1.35,172.1.1.64 / 27 / u0 / logshare 172.1.1.0/24

和两个坐骑的内容是相同的

你应该开始说这是一个NFSv4服务器。

问题出在你的/etc/exports文件中。 您正在用fsid=0标志声明两个资源。 那不对。

阅读exports(5)的细节,但基本上:

 For NFSv4, there is a distinguished filesystem which is the root of all exported filesystem. This is specified with fsid=root or fsid=0 both of which mean exactly the same thing. 

也就是说你只能声明一个根。

通常的做法(尽pipe别人可能有不同的做法)是为你打算导出的资源创build专用LV(根据需要设置格式, ext4xfs ,…),并将它们mount在受控的目录结构下。 例如:

 /var/exports/foo /var/exports/bar /var/exports/baz 

然后,将这些资源mount/srv/nfsv4/ ,结果如下所示:

 # tree /srv/nfsv4/ /srv/nfsv4/ ├── bar ├── baz └── foo 

这样,你声明/srv/nfsv4你的fsid=0并导出你认为合适的其余资源。

请注意,在fsid=0应用了访问限制(通过IP或sec模式select),因此即使满足特定资源的要求,不满足fsid=0的要求的客户端也将无法安装资源。