为了在同时出现多个 NFS 版本导出时有效地实现统一装载,您 具备一个 NFS 装载工具.了解通用 NFS 装载工具如何帮助减少多个 NFS 版本的处理,并简化这些版本的管理.本文描述通用 NFS 装载的概念,并且概括地介绍这个系统的优势及其应用.此外,本文还给出一些总体设计细节. 网络文件系统(Network File System,NFS)是一个常用的分布式文件系统,它使远程客户机能够在服务器上执行文件操作.通过使用 export 操作,服务器就使外部机器能够访问它的目录和文件系统.为了访问这些目录,客户机将导出的目录或文件系统 mount(装载)到它的本地目录结构中.在已装载的目录内部,客户机能够像访问本地文件一样访问远程文件.到目前为止,NFS 在导出和装载目录或文件系统方面支持 3 个版本:版本 2、3 和 4.
在本文中,我们演示如何使用通用 NFS 装载工具将所有现有的 NFS 版本的导出和装载合并到一个无缝的机制中.让我们考虑这样一个场景:服务器为 3 个版本的 NFS 导出目录项.目前,如果客户机要访问所有这些项,它 在不同的装载点分开装载每个项.尽管 NFS 版本 4 提供的伪树(pseudo-tree)机制能够一次装载所有 NFSv4 导出项,但它仅适用于由该版本生成的项.虽然版本 4 能够进行一次性装载(存在伪树时),但是客户机 分开装载版本 2 和 3 的项.
通用 NFS 装载工具实际上是 mount 命令的包装器,它使用户能够通过一个命令从特定服务器装载所有导出项. 改动 NFS 服务器不太好, 这个包装器在客户机(对用户是透明的)内部分别执行不同的 mount.
看看 NFS 服务器上的目录结构,如图 1 所示:
图 1. 服务器上的目录结构

在这个场景中,需要在客户机中执行以下 mount:
一个 NFSv4 mount:装载 NFSv4 伪树(Fileset1 和 Fileset2).NFSv4 伪树特性允许 NFSv4 客户机在伪树中对所有导出的项仅执行一个 mount 操作. 两个 NFSv3 mount:装载 Tools 和 Docs. 一个 NFSv3 mount:装载 Binaries.
拥有帝国一切,皆有可能。欢迎访问phome.net 使用 NFS 装载工具可以将这些装载合并为一个装载.使用命令:
gennfsmount <NFS server> <mountpoint>
|
使用通用 NFS 装载工具有以下优点:
用户仅需进行一次装载就能访问服务器上的所有信息;以前不支持这个功能. 假如有这样一个服务器,它不仅导出版本 2 和 3 的旧文件集,还导出版本 4 的新文件集.客户机能够通过一个操作访问所有这些文件集并执行安装. 使用这个通用工具改善了在特定服务器或特定导出目录/文件系统中的搜索. 这个工具能够自动隔离基于版本的 NFS 导出, 用户不再需要管理这些不同的装载点. NFS 管理员能够在服务器上保留旧的 NFS 版本导出, 仅需使用 mount 命令就可以像访问新版本数据项一样访问它们. 使用 automount 工具也能够获得类似的结果,但它需要管理员对 automount 进行许多配置才能获得所需的 NFS 装载.automount 的 hostmap 特性声称能够从服务器 mount 所有导出项,并且不需要管理员进行任何配置,但使用 hostmap 装载 NFSv4 项时会出现问题.另外,它对 /etc/hosts 文件中列出的所有服务器都进行操作.它不能在单个装载点上装载特定服务器导出的所有项.
总体而言,通用 NFS 装载机制是最方便的.接下来,我们看看在实现通用 NFS 装载工具的过程中的一些设计决策.
设计实现细节
我们先看一下通用 NFS 装载系统的基础架构.通用 NFS 装载工具从内部向服务器发送一个请求,要求访问所有导出项.
图 2. 通用 NFS 装载工具请求访问所有导出项

收到服务器的回复之后,将执行清单 1 中的算法:
清单 1. 通用 NFS 装载工具的算法
Start Create temporary directories for all versions.
拥有帝国一切,皆有可能。欢迎访问phome.net Initialize list of mount security flavors. Embed this list in each internal mount operation.
For each item in the export-list Do Mount internally for every NFSv2 and NFSv3 export Update internal log End for Mount internally only once for NFSv4 export. Update internal log Stop
|
|