建议的 NFS 挂载选项 - Amazon Elastic File System
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

建议的 NFS 挂载选项

我们建议在 Linux 上使用以下挂载选项值:

  • noresvport – 告知 NFS 客户端在重新建立网络连接时,使用新的非特权传输控制协议(TCP)源端口。旧版 Linux 内核(版本 v5.4 及更低版本)中包含的 NFS 客户端软件包含一种行为,该行为会导致 NFS 客户端在断开连接时尝试在同一 TCP 源端口上重新连接。此行为不符合 TCP RFC 要求,并且可能会阻止这些客户端快速重新建立与 EFS 文件系统的连接。

    使用 noresvport 选项有助于确保 NFS 客户端以透明的方式重新连接到您的 EFS 文件系统,从而在网络恢复事件后重新连接时保持不间断的可用性。

    重要

    我们强烈建议您使用 noresvport 挂载选项来帮助确保 EFS 文件系统在重新连接或网络恢复事件后保持不间断的可用性。

    考虑使用 EFS 挂载帮助程序挂载您的文件系统。EFS 挂载帮助程序使用针对 Amazon EFS 文件系统优化了的 NFS 挂载选项。

  • rsize=1048576 – 设置 NFS 客户端对每个网络 READ 请求可以接收的最大数据字节数。在从 EFS 文件系统上的文件读取数据时应用此值。我们建议您尽可能使用最大的大小(最多 1048576),以避免性能下降。

  • wsize=1048576 – 设置 NFS 客户端对每个网络 WRITE 请求可以发送的最大数据字节数。在将数据写入到 EFS 文件系统上的文件时应用此值。我们建议您尽可能使用最大的大小(最多 1048576),以避免性能下降。

  • hard – 设置 NFS 客户端在 NFS 请求超时之后的恢复行为,以便 NFS 请求在服务器回复之前无限次重试。建议您使用硬挂载选项 (hard) 以确保数据完整性。如果您使用 soft 挂载,请将 timeo 参数至少设置为 150 分秒(15 秒)。这样做可尽量减少源自软挂载的数据损坏风险。

  • timeo=600 – 将超时值设置为 600 分秒(60 秒),这是 NFS 客户端在重试 NFS 请求之前等待响应的时间。如果您必须更改超时参数 (timeo),我们建议您使用至少为 150 的值,这相当于 15 秒。这样做有助于避免性能下降。

  • retrans=2 – 将 NFS 客户端重试请求的次数设置为 2,超过此次数之后将尝试进一步的恢复操作。

  • _netdev/etc/fstab 中存在此选项时,将阻止客户端尝试挂载 EFS 文件系统,直到启用了网络。

  • nofail – 如果需要启动您的 EC2 实例而不考虑挂载的 EFS 文件系统状态,请将 nofail 选项添加到 /etc/fstab 文件的文件系统条目中。

如果您不使用前面的默认值,请注意以下事项:

  • 一般而言,避免设置任何其他不同于默认值的挂载选项,这会导致性能降低和其他问题。例如,更改读或写缓冲区大小或禁用属性缓存会导致性能下降。

  • Amazon EFS 会忽略源端口。如果您更改 Amazon EFS 源端口,则不会有任何影响。

  • Amazon EFS 不支持 nconnect 挂载选项。

  • Amazon EFS 不支持任何 Kerberos 安全变体。例如,下面的挂载命令将失败。

    $ mount -t nfs4 -o krb5p <DNS_NAME>:/ /efs/
  • 我们建议您使用其 DNS 名称挂载文件系统。此名称解析为与您 Amazon EC2 实例位于相同可用区中的 Amazon EFS 挂载目标的 IP 地址。如果您在与 Amazon EC2 实例不同的可用区中使用挂载目标,则会对跨可用区发送的数据收取标准 EC2 费用。可能还会面临更高的文件系统操作延迟。

  • 有关更多挂载选项和默认设置的详细说明,请参阅 Linux 文档中的 man fstabman nfs 页面。