本页介绍了在装载 NetApp Volumes 导出时会影响性能和行为的 Linux NFS 装载选项。您可以在运行 mount 命令时设置这些选项,也可以将它们添加到 /etc/fstab。
如需了解建议的设置顺序以及装载选项如何与内核并发和预读交互,请参阅优化 Linux NFS 客户端。
如需查看装载命令和导出访问权限示例,请参阅连接 NFS 客户端。
准备工作
在挂载 NetApp Volumes 之前,请先满足以下要求:
使用 Google Cloud 控制台装载说明中的装载命令,除非您的工作负载需要其他选项。
如果您使用槽表或会话槽设置来调整并发性,请在装载之前配置这些设置。如需了解详情,请参阅 Linux NFS 并发性。
在非生产环境中测试所有更改。挂载选项的效果可能会因工作负载、Linux 版本和网络延迟而异。
快速参考
下表简要列出了根据工作负载目标选择的常见装载选项:
| 目标 | 可考虑的选项 | 备注 |
|---|---|---|
| 通用 | 使用 Google Cloud 控制台安装说明 | 包含适合相应协议的默认值 |
| 单个虚拟机提供更高的吞吐量或 IOPS | nconnect=8 到 nconnect=16,调整 rsize 和 wsize |
先设置 slot 表;请参阅 Linux NFS 并发 |
| 数据库延迟时间更短 | rsize=262144、wsize=262144、hard、timeo=600、vers=4.1 |
针对您的特定应用进行测试 |
| 指定 NFS 版本 | vers=3 或 vers=4.1 |
Linux 默认装载可用的最高版本 |
| 不含咨询锁的 NFSv3 | vers=3,nolock |
如需有关防火墙和锁定管理器的指导,请参阅连接 NFS 客户端 |
| Kerberos NFSv4.1 | sec=krb5、krb5i 或 krb5p |
请勿与 nconnect 搭配使用 |
| 具有已知一致性权衡的读多写少型数据 | nocto,actimeo= |
高级;请先了解缓存行为 |
装载 NFSv3 时,请务必添加 tcp。虽然 Linux 默认使用 TCP 进行 NFS 流量传输,但明确添加 tcp 有助于确保装载进程使用 TCP 而不是 UDP。这有助于在多个系统尝试同时装载时提高性能。添加 noatime 以减少元数据操作。
推荐的装载配置文件
以下装载配置文件根据您的性能要求、协议版本和客户端规模提供了建议的选项。执行这些命令时,请将 VOLUME_IP 和 /export_path 替换为 Google Cloud 控制台中装载说明中的实际值。
配置文件 A:默认(控制台)
运行 Google Cloud 控制台中提供的挂载命令,无需进行任何更改。
方案 B:注重性能(单个 Linux 客户端)
NFSv3 示例,与性能基准测试配置保持一致:
sudo mount -t nfs -o hard,tcp,vers=3,rsize=262144,wsize=262144,nconnect=16 \ VOLUME_IP:/export_path /mnt/volume
基准使用 nconnect=16 和 64 KiB rsize 和 wsize。许多工作负载在 nconnect=8 时表现良好。请同时测试这两个值。
配置文件 C:使用显式版本的 NFSv4.1
sudo mount -t nfs -o vers=4.1,hard,rsize=262144,wsize=262144 \ VOLUME_IP:/export_path /mnt/volume
如需防止在卷上启用 NFSv4.2 时自动装载该卷,请指定 vers=4.1。如需了解详情,请参阅连接 NFS 客户端。
配置文件 D:适用于计算场的 NFSv3
如果您将大量客户端(例如数百个)连接到卷,请勿使用 nconnect,以免耗尽卷上可用的 TCP 会话。
sudo mount -t nfs -o vers=3,nolock,hard,tcp,rsize=262144,wsize=262144 \ VOLUME_IP:/export_path /mnt/volume
在 /etc/fstab 中持久保留
以下示例展示了 NFSv4.1 的 /etc/fstab 行:
VOLUME_IP:/export_path /mnt/volume nfs vers=4.1,hard,tcp,rsize=262144,wsize=262144,timeo=600,_netdev 0 0
使用 _netdev 选项,以便系统在装载之前等待网络连接。
nconnect
借助 nconnect 装载选项,您可以控制 NFS 客户端打开到同一存储端点(即卷 IP 地址)的 TCP 连接数量。每个连接可同时处理多个 NFS 操作,但不得超过设置的限制。增加连接数量可提高单个客户端的 I/O 并发性和吞吐量。
建议
配置 nconnect 装载选项时,请考虑以下建议:
测试
nconnect=8和nconnect=16。支持的值最大为 16。nconnect仅适用于专用高性能客户端。如果许多客户端(例如计算集群)连接到同一存储空间,请避免使用nconnect。首次装载到给定卷 IP 时,请为该客户端上的相应 IP 设置
nconnect值。即使后续装载到同一 IP 时指定了不同的值,也会使用相同的值。请先使用所选的nconnect值装载导出,或者对装载到相应 IP 的所有导出使用相同的选项。请注意,为一个卷 IP 设置
nconnect不会影响对其他卷 IP 的装载。在使用
nconnect之前,请验证您的 Linux 发行版是否支持该功能。
如需详细了解每个连接的 slot 限制,请参阅 Linux NFS 并发。
rsize 和 wsize
rsize 和 wsize 装载选项用于设置 NFS 读取和写入操作的最大传输大小。如果您省略这些参数,客户端和服务器会协商双方都支持的最大大小,在 Linux 客户端和 NetApp Volumes 上,该大小最大为 1 MiB。
建议
配置 rsize 和 wsize 装载选项时,请考虑以下建议:
测试
rsize=262144和wsize=262144(256 KiB),以针对对延迟时间敏感的应用调整吞吐量和延迟时间。请谨慎使用大于 256 KiB 的值,因为它们可能会增加某些工作负载的延迟时间或降低吞吐量;在部署之前,请先衡量性能。
对于 NFSv3 测试,请使用
rsize=65536和wsize=65536(64 KiB),因为这些值已在性能基准中使用了。
请注意,这些设置对随机工作负载的影响很小,因为随机工作负载通常使用比 rsize 和 wsize 更小的操作大小,而通过页面缓存进行的顺序 I/O 通常使用高达 rsize 和 wsize 的操作大小。
rsize 装载选项会影响预读行为。如需了解详情,请参阅 Linux NFS 预读。
协议版本
下表列出了 vers 选项值及其对应的协议版本:
| 选项 | 使用 |
|---|---|
vers=3 |
NFSv3 |
vers=4.1 |
NFSv4.1 |
vers=4.2 |
NFSv4.2 |
如果您未设置 vers,Linux mount 命令会使用客户端和卷支持的最高 NFS 版本。启用 NFSv4.1 的 Flex Unified、标准、高级和极速卷也支持 NFSv4.2。除非您指定 vers=4.1,否则可以装载 NFSv4.2。
如需详细了解 NFSv4.1 身份映射、Kerberos 和数字 ID,请参阅连接 NFS 客户端。
hard、timeo 和 retrans
hard、timeo 和 retrans 装载选项用于管理出现连接问题时的客户端行为和超时重试逻辑:
hard:重试 NFS 请求,直到成功为止。此选项通常用于确保生产工作负载的数据完整性。timeo:指定在重试请求之前的超时时间(以十分之一秒为单位)。面向数据库的工作负载通常使用timeo=600(60 秒)。retrans:指定重试次数。除非您的 Runbook 另有规定,否则 Google Cloud 控制台默认值通常就足够了。
NFSv3 nolock 选项
NFSv3 建议性锁定使用网络锁定管理器 (NLM),并且需要客户端 rpc.statd 和回调端口的防火墙规则。如果您不使用建议性锁定,请使用 nolock 进行装载,以避免锁定管理器流量。
NFSv4.1 在协议中通过端口 2049 实现锁定;客户端不需要单独的锁定管理器入站流量规则。
如需详细了解如何将咨询锁与 NFSv3 搭配使用,以及如何为 NFS 卷访问设置防火墙规则,请参阅连接 NFS 客户端。
使用 nocto 和 actimeo 实现缓存和一致性
NFS 客户端使用松散一致性模型。属性缓存计时器决定了客户端在联系服务器之前信任文件和目录元数据的时间长短。默认的“关闭时接近打开时”一致性 (cto) 会在您打开文件时刷新文件数据。
nocto:客户端不会在打开时强制执行服务器一致性。这样可以减少getattr调用,但会增加数据过时的风险。actimeo=N:将所有属性缓存计时器配置为N秒(acregmin、acregmax、acdirmin和acdirmax)。
在以下情况下,考虑使用 nocto 和更高的 actimeo 值:
单个写入者或通过其他途径接收更新的只读消费者。
大型静态数据集,例如 EDA 库、网页内容或渲染纹理(如果可以接受短暂的过时)。
在大多数情况下,请使用建议的 Linux 默认值进行属性缓存:
常规文件的时长下限和上限:
acregmin=3秒和acregmax=60秒目录最短和最长时间:
acdirmin=30秒和acdirmax=60秒
降低这些值会增加 NFS 服务器的负载,并可能降低性能。除非在您了解影响的非常特定的使用情形下,否则请避免使用 actimeo=0。
其他常见选项
以下是适用于 NFS 客户端的其他常见装载选项:
rw或ro:读写或只读装载。noatime:读取时不更新访问时间,因为这会减少元数据操作,是一种推荐的做法。sec=sys:AUTH_SYS,这是非 Kerberos 导出功能的默认值。_netdev:在fstab中使用此参数可在网络可用后进行装载。