简介
Hammerspace支持NFS协议的多个版本,包括目前最新的NFSv4.2,而且支持多种性能选项,包括pNFS(并行NFS)和nconnect。
Nconnect是NFS的一种挂载选项,允许客户端使用多个并行TCP连接与NFS存储通信 - 多路复用。如果不启用nconnect,客户端和NFS存储之间的所有通信都只是共享单个TCP连接,这会限制吞吐量。
pNFS(并行NFS)最初是在NFSv4.1中引入的,但不幸的是,当时存在严重缺陷,影响了性能。pNFSv4.2解决了这些问题,并以高效且可扩展的方式提供了非凡的性能。
pNFS将元数据和数据通信分开,并允许在客户端和一个或多个存储设备之间使用多条路径,从而提高性能和可扩展性。pNFS可以与nconnect结合使用,以获得多路复用和多路径的优势。
本文介绍了如何使用pNFSv4.2和nconnect挂载Hammerspace的NFS共享并验证其是否起作用。有关pNFS的更多信息,请访问“为什么pNFS现在比以往任何时候都更重要?NFS-SSD(以太网直连SSD)如何改变游戏规则”
nconnect挂载选项
NFS的挂载选项:nconnect大约五年前在Linux内核v5.3中首次亮相,它可以与NFSv2、3和4.x一起使用,调用方式如下:
mount -o nconnect=<value>
“value” 表示客户端将在其自身和NFS服务器之间建立的连接数,是一个介于1 到16之间的数字(包括1和16)。
《NFS挂载启用或不启用nconnect选项的比较》
这很简单,但有几个细节需要注意:
Nconnect通过由单个源和目标IP地址表示的一条路径提供多个并行TCP连接,这是一种多路复用形式。它不会将流量分散到多个IP地址或接口上,这被称为多路径。
更多连接(例如,在所有场景下使用nconnect=16)不一定能提供最佳性能。需要进行测试以确定特定环境的最佳值。
Nconnect仅在客户端首次挂载特定NFS服务器IP/NFS版本组合时生效,所选的nconnect值适用于从客户端到具有相同NFS版本的该NFS服务器IP的所有后续挂载。除非在第一次挂载时指定,否则假定nconnect=1。这意味着在指定或更改nconnect值之前,必须卸载使用特定NFS版本的客户端到服务器的所有连接。
提示:
首次挂载到IP地址时未指定nconnect选项,以及在使用nconnect挂载之前未卸载到IP地址的所有连接是nconnect无法按预期工作的最常见原因。
并行NFSv4.2和灵活文件布局(Flexible File Layout)
NFSv4.2(在RFC7862中定义)包含一组对NFSv4.1的扩展功能,这些新功能都是可选的,意味着NFS客户端和服务器可以启用部分、全部或不启用其中的任何一项。
Nconnect可实现并行性,但它适用于单个IP端点,例如单个NFS服务器上的单个接口。它不支持对单个存储系统或多个存储系统上的多个接口进行多路径处理,将pNFSv4.2添加到组合中则可实现这种额外的并行性。
pNFS使用“布局”概念将文件的位置传达给客户端,然后客户端直接与目标存储通信以读取和写入文件。有多种布局类型旨在适应块存储、文件存储和对象存储。
Hammerspace使用具有灵活文件(又名Flex Files)布局类型的pNFSv4.2。灵活文件布局使pNFS能够使用任何NFSv3服务器作为存储位置,而无需专有控制协议。 pNFS的这种实现完全基于标准,高性能,可扩展。在Hammerspace,我们将其称为超大规模NAS架构(Hyperscale NAS)。
灵活文件布局支持存储设备多路径,其中元数据服务器(例如Hammerspace的Anvil)将向请求的pNFSv4.2客户端提供存储设备的网络地址列表。此列表可以表示单个NFS服务器上的多个接口,也可以表示共享对同一后端存储的访问权限的多个NFS服务器上的多个接口。这使客户端能够将多个请求并行地分到多个网络路径上,充分利用可用带宽并提供弹性。
请注意,Hammerspace会智能地将多个请求分散到多个IP上,以最大限度地利用NFS服务器的缓存,但每个请求都使用单个IP源/目标。
《NFS与pNFS的比较》
pNFSv4.2和nconnect组合效果
如介绍中所述,pNFSv4.2可以与nconnect组合使用,提供了多路复用和多路径的优势,为在高负载环境中提供了高带宽。
《pNFSv4.2和nconnect组合的优势》
验证pNFSv4.2和nconnect组合
以下步骤和屏幕截图展示了在Hammerspace上创建共享,然后在Linux客户端使用NFSv4.2挂载以及验证nconnect操作的基本过程。
在Hammerspace上创建共享
1. 登录Hammerspace图形界面,转到“共享”选项卡,然后单击“创建共享”
2. 在共享详细信息选项卡上,填写共享名称(示例中为vol1),然后单击“创建”。NFS导出路径字段将自动填充以匹配:
3. 新共享将出现在共享列表中:
在Linux客户端使用NFSv4.2挂载共享
由于NFSv4.2包含一组可选的NFSv4.1功能扩展,因此并非每个客户端都包含所需的支持包。Hammerspace在硬件和软件兼容性列表中列出了Linux内核列表。当客户端尝试使用NFSv4.2挂载Hammerspace共享时,Hammerspace将验证客户端是否合格。如果不合格,客户端将被重定向以使用NFSv3。对于某些内核,可以使用旁路挂载选项来绕过内核检查,有关此内容的详细信息,请参阅Hammerspace管理员指南。
1. 在“共享”选项卡右侧的“操作”部分中,在新的“vol1”共享上,单击眼睛图标以查看共享的详细信息。
2. 显示所有共享的协议和版本以及挂载选项,单击NFSv4.2浮动IP行之一上的复制图标,可将挂载详细信息复制到剪贴板。
3. 在Linux客户端上,创建挂载目录。
Mkdir /mnt/vol1
4. 使用Hammerspace元数据服务器(Anvil)的IP地址将导出的目录挂载到 NFS中。无需明确指定NFS版本。客户端和服务器都将自动使用支持的最高版 - 在本例中为v4.2。nconnect选项也在此处指定,在本例中值为4。请记住,您可以粘贴之前复制到剪贴板的源路径以节省一些输入时间。
mount -o nconnect=4 10.200.76.100:/vol1 /mnt/vol1
5. 要验证导出是否按预期挂载,请运行mount命令并grep以查找使用的IP地址。您应该会看到指定的4.2版本和nconnect值。
mount -o nconnect=4 10.200.76.100:/vol1 /mnt/vol1
验证nconnect操作
挂载后,用一个简单测试验证nconnect是否正常工作。
1. 首先将大于nconnect值的文件数量(当前nconnect值为4)复制到挂载目录中:
cp /mnt/data/r* /mnt/vol1
ls -l /mnt/vol1
2. 复制文件后,立即使用如下所示的ss命令,使用grep过滤挂载的IP地址和 NFS协议。如果nconnect正常工作,您将看到与nconnect值相对应的连接数量 - 在此示例中为4。这些连接会根据需要关闭并重新打开,因此如果文件复制和运行ss -t之间存在较长的延迟,您可能会看到比nconnect值更少的连接数,这是正常的。
ss -t | grep 10.200.76.100
结论
pNFS和nconnect无论是单独使用还是一起使用,都是最大化NFS下性能和效率的宝贵工具。使用带有Flex Files布局的pNFSv4.2,Hammerspace可将专有并行文件系统的性能与优势带入企业标准的Linux环境中,无论它们是在本地还是云中部署。