PowerScale:OneFS:NFS 客户端设置的最佳实践
Summary: 本文介绍使用 Network File System (NFS) 协议连接到 PowerScale 群集时客户端设置和装载选项的最佳实践和建议,适用于所有受支持的 OneFS 版本。
Symptoms
OneFS:网络文件系统 (NFS) 客户端设置的最佳做法
Cause
支持的协议版本
PowerScale OneFS 目前支持网络文件系统 (NFS) 版本 3 和 4。不支持 NFS 版本 2。
NFSv3
NFS 版本 3 是当今使用最广泛的 NFS 协议版本,被认为是最广泛的客户端和文件管理器采用率。以下是此版本的一些关键组件:
- 无状态 - 如果客户端具有请求文件等的正确信息,那么它在技术上不需要建立新会话。这允许通过动态 IP 池在 OneFS 节点之间进行简单的故障切换。
- 用户和组信息以数字形式显示 - 客户端和服务器通过数字标识符传达用户信息,允许同一用户在客户端和服务器之间以不同的名称出现。
- 文件锁定在带外 - NFS 版本 3 使用名为 NLM 的帮助程序协议来执行锁定。这要求客户端响应来自服务器的 RPC 消息,以确认锁定已授予。
- 可以基于 TCP 或 UDP 运行 - 此版本的协议可以基于 UDP(而非 TCP)运行,将丢失和重新传输的处理留给软件(而非操作系统)。Dell Technologies 始终建议使用 TCP。
NFSv4
NFS 版本 4 是 NFS 协议的最新主要版本,采用率在不断上升。 以下是 v3 和 v4 之间的一些主要区别。
- 有状态 - NFSv4 使用会话来处理通信,因此客户端和服务器都必须跟踪会话状态以继续通信。
- 在 OneFS 8.X 之前,这意味着 NFSv4 客户端需要 PowerScale 上的静态 IP 池,否则可能会遇到问题。
- 用户和组信息以字符串形式显示 - 客户端和服务器都必须解析存储的数字信息的名称。服务器必须查找要显示的名称,而客户端必须将这些名称重新映射到其末端上的数字。
- 文件锁定在带内 - 版本 4 不再使用单独的协议进行文件锁定,而是使其成为一种与 OPEN、CREATES 或 WRITES 复合的调用类型。
- 复合调用 - 版本 4 可以将一系列调用打包到一个数据包中,允许服务器处理所有调用并在最后进行应答。这用于减少常见操作中涉及的调用次数。
- 仅支持 TCP - NFS 版本 4 已将丢失和重新传输留给底层操作系统来处理。
NFSv4.1 及更高版本
NFSv4.1 和 v4.2 从 OneFS 版本 9.3 开始提供。
以下是 9.3 的官方版本信息:
PowerScale OneFS 信息中心
Resolution
装载选项
虽然 Dell Technologies 对装载选项没有硬性要求,但 Dell Technologies 针对客户端的连接方式提出了一些建议。Dell Technologies 尚未提供特定的装载字符串,因为用于定义这些选项的语法因所使用的作系统而异。您必须遵循发行版维护商文档,了解特定的装载语法。
PowerScale 支持还建议将以下白皮书作为使用 PowerScale 进行 NFS 客户端配置的主要参考,其中包括有关 wsize/rize、属性高速缓存等的推荐选项:
PowerScale OneFS NFS 设计注意事项和最佳实践
https://infohub.delltechnologies.com/en-us/t/powerscale-onefs-nfs-design-considerations-and-best-practices-3/
读取和写入大小 (rsize / wsize)
关于“wsize/rsize 选项”,PowerScale 支持建议“wsize”和“rsize”至少为 128K,这基于我们的本机数据块大小。
但是,对于大多数现代 Linux 发行版,PowerScale 支持实际上建议不要显式配置设置(即,不要在客户端装载选项中指定读/写大小),而是让客户端重新协商调整。现代 Linux 发行版支持高达 1 MB 的 NFS 读/写数据块大小,并将自动与 PowerScale NFS 服务器协商最佳数据块大小。协商值非常适合大多数正确配置的高性能、低延迟网络。例外情况是,除非您的应用程序或供应商特别需要较小的大小。
未显式设置时,NFS 客户端将使用 PowerScale NFS 服务器 FSINFO 数据,如 PowerScale 群集上配置的 NFS 导出中所定义。
PowerScale 提供的默认设置如下所示:
NFSv3: 512KB writes / 1MB readsNFSv4: 1MB writes/ 1MB reads
有关“rsize”和“wsize”的更多详细信息,请参阅以下白皮书的第 12 页和第 19 页:
PowerScale OneFS NFS 设计注意事项和最佳实践
https://infohub.delltechnologies.com/en-us/t/powerscale-onefs-nfs-design-considerations-and-best-practices-3/
定义重试和超时
虽然 PowerScale 通常会快速响应客户端通信,但在节点断电或断开网络连接期间,其 IP 地址可能需要几秒钟才能移至正常工作的节点,因此正确定义的超时和重试值非常重要。通常情况下,PowerScale 建议将超时值定义为 60 秒以应对最糟糕的故障切换场景,并设置为在报告故障之前重试两次。
软装载与硬装载
硬装载会导致客户端在超时或出错时无限期地重试其操作。这可确保在 PowerScale 群集将 IP 地址从一个节点移动到另一个节点的情况下,客户端不会断开该装载。而软装载会出错并使装载过期,需要重新装载才能在 IP 地址移动后恢复访问。
允许中断
默认情况下,大多数客户端不允许您中断输入/输出或 I/O 等待,这意味着您不能使用 ctrl+c 要在群集停止响应时结束等待过程,包括 interrupt 装载选项允许这些信号正常传递。
本地锁定与远程锁定
装载 NFS 导出时,您可以指定客户端是在本地生成其锁定,还是在群集上使用锁定协调器生成。大多数客户端默认采用远程锁定,当多个客户端访问同一目录时,这通常是最佳选项,但是,当客户端不需要共享对其正在使用的目录的访问权限时,执行本地锁定可能会带来性能方面的好处。此外,某些数据库和软件会要求您使用本地锁定,因为它们有自己的协调器。
属性缓存 (ac/noac)
关于“活动缓存超时”,这被视为客户端行为。因此,PowerScale 支持部门不会针对这些设置提出建议,因为这取决于您的需求。但是,客户可以在以下白皮书的第 22 页上找到有关这些设置的一些常规指导:
PowerScale OneFS NFS 设计注意事项和最佳实践
https://infohub.delltechnologies.com/en-us/t/powerscale-onefs-nfs-design-considerations-and-best-practices-3/
根据上面的第 22 页:
属性缓存 (ac/noac)
使用 noac 装载选项实现多个客户端之间的属性缓存一致性。几乎每个文件系统作都会检查文件属性信息。客户端会将此信息缓存一段时间,以减少网络和服务器负载。当 NOAC 生效时,将禁用客户端的文件属性缓存,因此必须检查文件属性的每个作都将被强制返回到服务器。此外,noac 选项强制应用程序写入变为同步,以便客户端在打开文件时看到对文件的更改,但代价是需要执行许多额外的网络作。默认情况下,在装载 NFS 时启用属性缓存。启用属性缓存以提高属性检查性能并减少 NFS作延迟。
NFSv3 与 NFSv4 的性能比较
根据实验室测试,PowerScale 支持在最新的受支持的 OneFS 版本中,不同版本的 NFS 之间没有发现任何明显的性能差异。
Additional Information
要查看特定 NFS 导出的 wsize/rsize 值,您可以在任何 PowerScale 节点上运行以下命令:
# isi nfs exports ls -v --zone <zone name>
或者,要检查特定导出 ID,客户可以运行以下命令:
# isi nfs export view <export id>
示例:
Read Transfer Max Size: 1.00M Read Transfer Size: 128.00k Write Transfer Max Size: 1.00M Write Transfer Size: 512.00k