从同一台服务器创建两个 nfs 共享,但在挂载时,都指向同一目录

从同一台服务器创建两个 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

它只是挂载了两次日志共享。如果我反转导出的顺序,它就会挂载两次 vmail。发生了什么?我查看了日志,但没有看到任何与 nfs 相关的错误

Showmount -e 显示此
/vmail1 172.1.1.35,172.1.1.64/27 /u0/logshare 172.1.1.0/24

并且两个安装的内容相同

答案1

您应该开始说这是一个 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. 

即你只能声明根。

常见的做法(尽管其他人可能有不同的做法)是为您计划导出的资源创建专用的 LV(根据需要格式化,,,ext4... ),并将它们置于受控的目录结构下。例如:xfsmount

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

然后,mount将这些资源绑定到/srv/nfsv4/,结果如下:

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

这样,您可以根据需要声明/srv/nfsv4fsid=0导出其余资源。

请注意,中的访问限制(通过 IP 或sec选择的模式)适用fsid=0,因此不满足要求的客户端fsid=0将无法挂载资源,即使满足特定资源的要求。

相关内容