我有一组需要两个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(根据需要设置格式, ext4 , xfs ,…),并将它们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的要求的客户端也将无法安装资源。