NFS 概述

已完成

对于选择 HPC 存储解决方案的情况,有一些我们想要讨论的关键 NFS 概念。 使用 NFS 时的主要难点在于确定目标 HPC 存储环境是否需要特定于给定 NFS 版本的配置元素、网络连接或安全功能。 如果你将其中一些概念整合到选择条件,则在评估各种可用的解决方案时将会有所帮助。 将这些项纳入考虑范围至少可排除不适合你的 NFS 要求的内容,从而帮你节省时间。

NFS 注意事项

NFS 协议有两个主要版本:NFSv3 和 NFSv4.x(v4.1 和 v4.2)。 本模块不会介绍这两个版本之间的所有差异。 但是,我们在此处确定了与身份验证和授权相关的一些问题。 我们将不深入了解这两个协议的历史背景,也不深入探讨为何存在两个协议。 我们只是讲讲很多用户仍然正在其环境中运行 NFSv3。

首先,我们将介绍使用 NFSv3 的特定注意事项。

NFSv3 和组

NFSv3 是一种简单的文件系统协议,用于向 NFS 客户端和服务器传递 API 请求。 我们在前面提到,UID 表示用户,并且用户具有主要组 GID 关联。 我们还提到过,一名用户可能与大量的组关联。 出于 NFS 的目的,这些组分配被称作“辅助组”。 UID 和 GID 信息随请求一起传递,NFS 服务器将利用这些信息来确定合适的访问级别。

NFSv3 会限制其传递 GID 值的总数。 对于任何给定 UID,NFSv3 都仅支持传递 16 个辅助组。 如果以有意义的方式使用超过 16 个组分配(例如精细访问管理),你可能会受到此限制的影响。 NetApp 等 NAS 供应商已为 NFS 协议添加扩展,支持所有组映射的通信。 此扩展称为“扩展组”支持。 若要评估 HPC 存储并使用大量 GID 分配,则应验证建议的解决方案是否支持此功能。

NFSv3 和网络安全

NFSv3 在安全性方面也受到限制。 实际上,NFSv3 并没有许多安全功能。 例如,它不支持数据加密或 Kerberos 身份验证。 可在 NFSv3 环境中使用的主要机制涉及到使用导出规则和策略来限制对 NFS 服务器的网络级访问。 导出是 NFS 服务器用于向客户端公开特定目录的一种机制。 导出规则根据其 IP 网络地址配置为允许或禁止客户端。 你可在导出规则中定义主机条目(例如 1.1.1.1)或网络(例如 1.1.1.0/24),并允许或拒绝对导出功能的访问。 导出规则会被收集到与 NFS 服务器上的特定导出相关联的导出策略中。

NFSv3 和网络端口

NFSv3 的一项挑战是,它不会将一个标准 TCP 端口用于所有通信。 考虑到尽管存在标准端口(RPC = 111 且 NFS = 2049),但是其他用于装载导出项的端口都是随机分配的,这种端口灵活性使得通过 WAN 实现 NFSv3 访问具有挑战性。

只有当需要访问你的虚拟网络之外的网络,并且需要可阻止 TCP 端口的安全配置时,Azure 中的 NFSv3 网络连接才会成为挑战。 但无论在网络边缘配置了什么,选择提供导出策略配置的解决方案将有助于直接确定 NFS 解决方案。

挤压

显示根目录的客户端 NFS 流量被挤压到 65534 的关系图。

挤压 (squash) 是指 NFS 服务器能够强制使用特定 UID 访问文件或文件夹。 例如,管理员可能需要控制对特定已导出文件夹使用的具体 UID。 Linux NFS 服务器环境支持将根访问挤压到非根 UID。 NAS 产品支持根据传入客户端网络/地址和 UID 值进行特定挤压。 挤压的其中一个主要用途是确保通过远程连接进行非根访问。

如果打算复制 Azure 中的文件系统且预料也会出现此行为,请记住,并非所有解决方案都支持完全以这种方式进行挤压。

NFSv3 和加密

NFSv3 不支持数据加密。 它最初是为了在受信任的企业环境中使用而设计的。 离开受信任网络的流量必须通过网络加密解决方案进行加密。

NFSv3 和文件锁定

锁定是指客户端能够阻止其他客户端更新特定文件或文件的特定部分。 NFSv3 未自带锁定机制。 存在的锁定由称作网络锁定管理器 (NLM) 和网络状态监视器 (NSM) 的网络服务来执行。 这些服务器在客户端和服务上运行,并管理所有锁定交互。 这些服务器在 NFS 服务外部运行,并生成自己的网络协议流量。 这些锁定并不是必需的。 它们被称为“咨询锁定”。 系统会跟踪锁定,但不强制执行它们。 应用程序应处理争用和锁定问题。

NFSv4.x

NFSv4.x 向 NFS 引入了一些重要改进。 我们将重点介绍主要改进。

NFSv4 和 Kerberos

NFSv4 现完全支持使用 Kerberos 对用户进行身份验证和对所有 NFS 流量进行加密。 我们曾尝试将 Kerberos 与 NFSv3 集成,但是由于使用 NLM/NSM 和其他外部协议,仅加密了数据有效负载。

除非导出策略显式阻止,否则 NFSv3 中的所有访问都受信任。 使用 Kerberos,你现可基于受信任的计算机进行身份验证。

支持对所有 NFS 流量进行加密。 你可加密所有从 NFS 客户端到 NFS 服务器(而不只是在特定网络段上)的流量。

若要通过 Kerberos 使用身份验证和加密,需要部署 Kerberos 环境。

关键注意事项是并非所有与 NFSv4 兼容的服务都支持 Kerberos。 即使没有 Kerberos,你也仍然能够使用 NFSv4 的其他功能,但无法进行身份验证或加密数据。 选择解决方案时,请务必检查是否需要此功能以及选项是否支持 Kerberos。

NFSv4 和网络端口

与 NFSv3 相比,NFSv4 的一个优点在于,NFSv4 对所有流量使用单个 TCP 端口(端口 2049)。 如果 Azure 虚拟网络或数据中心内具有 NFSv4 环境,则在支持 NFSv4 时,可以更轻松地在防火墙之间提供访问权限。

NFSv4 和 ACL

假设你有一个文件或文件夹,你想为组 1 提供读/写访问权限,为组 2 提供只读访问权限,并向特定计算机帐户提供追加数据访问权限。 NFSv3 权限(模式位)无法满足这些要求,因为 v3 权限没有所需的粒度级别。

NFSv4 引入了访问控制列表 (ACL)。 每个文件/文件夹都可应用一个 ACL。 每个 ACL 包含一个或多个访问控制项 (ACE)。 这种方式与 Windows NTFS 管理员相似,因为 NTFS 遵循相同的模型。

如果环境使用 NFSv4 ACL,则需要确定最符合此要求的存储解决方案。

总结

我们简单介绍了 NFS 协议的注意事项。 我们讨论的项代表选择存储解决方案时要考虑的关键因素。

你需要评估当前环境以及组管理、网络和安全要求,从而确定合适的存储解决方案。

此表提供了基于上述讨论的比较结果:

功能 NFSv3 NFSv4
文件/文件夹权限 模式位 模式位和/或 ACL
加密 Kerberos
网络端口 TCP 或 UDP,需具备端口映射器 TCP 端口 2049
文件锁定 咨询 NLM 活动锁定支持

知识检查

1.

如果需要根据一系列组和用户来保护文件或文件夹,则可能需要考虑使用:

2.

如果你的应用程序需要 OS 级别的强制文件锁定,那么应该使用: