网络文件系统(NFS)是一种使用广泛的分布式文件系统,可从远程客户端在服务器上执行文件操作。 服务器使用称为export的操作将其目录或文件系统提供给世界其他地方。 要访问这些目录,客户端mount导出的目录或文件系统安装到其本地目录层次结构中。 在安装目录中,客户端访问远程文件的方式就好像它们是本地存储在计算机上一样。 当前,NFS具有用于导出和安装目录或文件系统的三个可用版本:版本2、3和4。
在本文中,我们向您展示如何使用通用NFS挂载将所有现有NFS版本的导出和挂载合并到一个无缝机制中。 让我们考虑一个场景,其中服务器已导出所有三个版本的NFS的目录条目。 当前,为了使客户端访问所有这些条目,它必须将每个这些条目分别安装在不同的安装点。 尽管NFS版本4提供了一种伪树机制,该机制可以对所有NFSv4导出的条目进行一次装载,但是它仅适用于该版本创建的条目。 客户端必须单独安装版本2和3条目以及针对版本4的单个安装(如果存在伪树)。
通用NFS挂载实用程序本质上是mount命令的包装,使用户可以使用单个命令挂载来自特定服务器的所有可能的导出条目。 由于不希望对NFS服务器进行任何更改,因此该包装器在内部在客户端计算机上执行对用户透明的单独mount 。
考虑NFS服务器上的目录层次结构,如图1所示:
图1.服务器上的目录层次结构
在当前情况下,客户端计算机上需要以下mount :
- 一个NFSv4挂载:这将挂载NFSv4伪树( Fileset1和Fileset2 )。 NFSv4伪树功能允许NFSv4客户端仅对伪树中的所有导出条目执行一次
mount操作。 - 两个NFSv3挂载:这将挂载工具和文档。
- 一个NFSv3挂载:这将挂载Binaries。
使用通用的NFS安装实用程序,这些安装减少为单个安装。 这是命令:
gennfsmount <NFS server> <mountpoint>
使用通用NFS挂载的优点包括:
- 用户只需要执行一次装载操作即可访问服务器中的所有信息。 以前不支持此功能。
- 考虑一台服务器,该服务器导出版本2和3中的旧安装文件集以及版本4中的新文件集。客户端可以使用一个操作访问所有这些文件集并执行安装。
- 使用此通用实用程序可以增强在特定服务器上和特定导出目录/文件系统中搜索文件的能力。
- 因为该实用程序可以处理基于版本的NFS导出的自动隔离,所以它减少了用户管理这些不同安装点的工作。
- NFS管理员可以在服务器上保留旧的NFS版本导出,因为它们可以在单个
mount命令中与新版本的数据项一起使用。
使用automount实用程序可以获得类似的输出,但是需要配置管理费才能为所需的NFS挂载配置automount映射文件。 automount的hostmap功能声称可以从服务器mount所有导出的条目,而无需任何管理配置,但是在使用hostmap挂载NFSv4条目时已发现问题。 此外,此操作是针对/ etc / hosts文件中列出的所有服务器执行的。 没有一种解决方案可以在单个点上安装一台特定服务器的所有导出条目。
总的来说,通用的NFS挂载机制为用户带来了便利。 接下来,让我们看一下实现通用NFS挂载程序时的一些设计决策。
设计实施细节
让我们看一下通用NFS挂载系统的基本体系结构。 通用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是在挂载点下的read / write操作期间使用的安全方法(sys,krb5,krb5i等)的逗号分隔列表。 该列表用于匹配服务器支持的安全方法,并在此安装点下的后续系统调用期间使用该方法。 相应的导出条目的NFS版本可以采用类似的机制。
完成所有内部安装之后,使用UnionFS对这些内部目录进行统一,如清单2所示。
清单2.使用UnionFS统一内部目录
mount -t unionfs -o dirs=<temp_dir1>[:<temp_dir2>...] none <mount-point>
还记得以前的情景吗? 在客户端计算机上有一个用于v4伪树的NFSv4挂载/用于工具和文档的两个NFSv3挂载/一个用于Binaries的NFSv3挂载,我们使用了通用的NFS挂载gennfsmount <NFS server> <mountpoint> –将它们减少到一个坐骑。 现在,在这种情况下,将创建以下临时目录:
- / tmp / NFSv4
- / tmp / NFSv3 /工具
- / 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产生的层次结构
接下来,让我们看看如何使用该系统。
使用系统
在这种情况下,NFS服务器导出不同NFS版本的不同条目。 但是,在客户端,仅执行一个挂载:通用NFS挂载。 图4显示了服务器上的导出条目。
图4.在服务器上导出
在此,服务器导出五个具有不同NFS版本的NFS条目。 nfs4_A和nfs4_B形成NFSv4伪树( / nfs4_A和/ nfs4_A / nfs4_B )。 其余的是版本2和3 NFS导出。
图5显示了服务器上存在的文件。
图5.服务器上现有的文件
在当前情况下,所有这些文件都可以通过单独的安装操作在不同安装目录下的客户端使用。 但是,建议的系统使用户可以通过一次安装操作以单一层次结构访问所有这些文件。
图6显示了在常规NFS挂载后从客户端看到的场景:
图6.通用NFS安装的输出
如您所见,图6显示了由通用NFS挂载程序执行的多个内部挂载。 合并所有NFS挂载的目录是/ mnt。
摘要
我们已经向您展示了通用NFS挂载程序背后的体系结构和机制,该实用程序无疑将通过提供对NFS服务器上文件的更轻松的单点访问以及提供更统一的NFS视图来帮助NFS客户端。空间。
翻译自: https://www.ibm.com/developerworks/aix/library/l-generic-nfs-mount/index.html
文章介绍了通用NFS挂载工具,该工具通过将多个NFS版本的导出合并到单个挂载点,简化了客户端对服务器上文件的访问。通过使用UnionFS,通用NFS挂载可以将不同版本(如v2、v3、v4)的NFS导出目录统一成一个层次结构,从而提高用户体验。
4856

被折叠的 条评论
为什么被折叠?



