NFS中的mount应用

网络 网络管理
下面我们主要介绍一下NFS中的mount的内容。内容包含的比较全面,也比较细致,希望对大家有所帮助。

在NFS的设置中,我们常会接触到mount的使用。那么对于mount的操作我们应该如何进行呢?为了在同时出现多个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. 服务器上的目录结构

图 1. 服务器上的目录结构

在这个场景中,需要在客户机中执行以下 mount:

◆一个 NFSv4 mount:装载 NFSv4 伪树(Fileset1 和 Fileset2).NFSv4 伪树特性允许 NFSv4 客户机在伪树中对所有导出的项仅执行一个 mount 操作.

◆两个 NFSv3 mount:装载 Tools 和 Docs.

◆一个 NFSv3 mount:装载 Binaries.

使用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装载工具的过程中的一些设计决策.#p#

设计实现细节

我们先看一下通用NFS装载系统的基础架构.通用NFS装载工具从内部向服务器发送一个请求,要求访问所有导出项.

图 2. 通用NFS装载工具请求访问所有导出项

图 2. 通用NFS装载工具请求访问所有导出项

收到服务器的回复之后,将执行清单 1 中的算法:

清单 1. 通用NFS装载工具的算法

Start

Create temporary directories for all versions.

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

security flavors 是一个由逗号分隔的安全方法列表(sys、krb5 和 krb5i 等).在装载点的 read/write 操作期间将用到这些方法.这个列表用于匹配服务器支持的安全方法.此外,随后在该装载点下发生系统调用时也用到该列表.相应的导出项的NFS版本也可以使用类似的机制.

当所有内部装载完成时,将使用 UnionFS 合并所有内部目录,如清单 2 所示.

清单 2. 使用 UnionFS 合并所有内部目录

mount -t unionfs -o dirs=<temp_dir1>[:<temp_dir2>...] none <mount-point>

还记得 前一个场景吗?在前面的场景中,客户机上有一个针对 v4 伪树的 NFSv4 装载,两个针对 Tools and Docs 的 NFSv3 装载,一个针对 Binaries 的 NFSv3 装载,并且我们使用通用NFS装载工具 —gennfsmount <NFS server> <mountpoint>— 将它们合并到一个装载中.在这个例子中,将创建以下临时目录:

◆/tmp/NFSv4

◆/tmp/NFSv3/Tools

◆/tmp/NFSv3/Docs

◆/tmp/NFSv2/Binaries

然后使用 unionfs 合并它们,如清单 3 所示:

清单 3. 使用 unionfs 进行合并

mount -t unionfs -o dirs=/tmp/NFSv4:/tmp/NFSv3:/tmp/NFSv2 none /mnt

这会生成以下目录结构:

图 3. unionfs 生成的目录结构

图 3. unionfs 生成的目录结构

接下来,我们看看如何使用这个系统.#p#

tips:

UnionFS

UnionFS 是针对 Linux和 FreeBSD 的文件系统服务,它允许透明地覆盖独立的文件系统(即分支)的文件和目录以构成一个连贯的文件系统,从而实现统一装载文件系统.对于具有相同路径的目录的内容,将出现在生成的文件系统的一个合并目录中.针对 Linux 的 UnionFS 有两个版本:

◆Version 1.x 是独立的,可以作为模块构建.

◆Version 2.x 是***的;它经过重新设计和实现,并且是 Andrew Morton 的 Linux -mm 树的一部分(因此它应该出现在主资源树中).

使用这个系统

在这个场景中,NFS 服务器导出属于不同NFS版本的不同项.不过在客户机上仅执行一个装载:通用NFS装载.图 4 显示了服务器导出的项.

图 4. 在服务器上导出的项

图 4. 在服务器上导出的项

在这里,服务器导出 5 个属于不同NFS版本的NFS项.nfs4_A 和 nfs4_B 构成一个 NFSv4 伪树(/nfs4_A 和 /nfs4_A/nfs4_B).其余的是版本 2 和 3 的NFS导出项.

图 5 显示了服务器上的文件.

图 5 显示了服务器上的文件

图 5. 服务器上的文件

在这个场景中,仅需使用一个装载操作,客户机就可以访问不同装载目录下的文件.不过,在这个系统中,用户使用一个装载操作就可以在一个目录结构中访问所有这些文件.

图 6 显示了使用通用NFS装载工具后的客户机输出:

图 6. 通用NFS装载工具的输出

图 6. 通用NFS装载工具的输出

如您所见,图 6 显示了由通用NFS装载工具执行的多个内部装载./mnt 目录合并了所有NFS装载.

结束语

至此,我们已经演示了通用NFS装载工具的架构和机制.这个工具不仅为NFS服务器上的文件提供更容易的单点访问,而且为NFS空间提供更加紧凑的视图,因此它是NFS客户机的好帮手.

责任编辑:佟健 来源: IT实验室
相关推荐

2010-08-02 17:05:23

NFS服务器

2010-08-03 11:07:34

NFSVMware快照

2010-07-28 14:23:40

NAS NFS

2010-08-05 13:54:36

NFS协议

2010-08-02 17:30:47

Linux NFS

2010-08-03 09:53:50

Linux NFS

2010-08-04 17:21:11

Linux NFS

2010-08-03 11:36:00

NAS NFS

2023-12-26 12:10:13

2010-07-28 15:21:00

NFSSolaris

2010-07-28 16:07:30

NFS协议pNFS

2010-06-24 17:11:01

Linux chkco

2010-08-06 13:12:55

NFS服务器

2010-08-06 12:37:28

VMwareNFS

2010-08-05 15:54:20

NFSUNIX

2010-07-27 10:38:02

NFS ServerNFS Client

2009-12-25 09:46:33

Fedora nfs

2010-07-05 09:38:47

LinuxNFS

2023-08-05 12:58:51

RPC协议服务端

2021-07-28 10:10:57

K8SMount PVCPod
点赞
收藏

51CTO技术栈公众号