解决挂载问题 - Amazon Elastic File System

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

解决挂载问题

接下来,您可以找到有关解决EFS文件系统挂载问题的信息。

在 Windows 实例上挂载文件系统失败

在微软 Windows 上的亚马逊EC2实例上挂载文件系统失败。

要采取的操作

请勿将亚马逊EFS与 Windows EC2 实例配合使用,因为这不受支持。

服务器拒绝访问

文件系统挂载失败,并显示以下消息:

/efs mount.nfs4: access denied by server while mounting 127.0.0.1:/

如果您的NFS客户机无权装载文件系统,则可能会出现此问题。

要采取的操作

如果您尝试使用挂载文件系统IAM,请确保在挂载命令中使用该-o iam选项。这会告诉EFS挂载助手将您的凭据传递给EFS挂载目标。如果您仍然没有访问权限,请检查您的文件系统策略和身份策略,确保没有适用于您的连接的DENY条款,并且至少有一个ALLOW条款适用于该连接。有关更多信息,请参阅 IAM使用控制文件系统数据访问权限创建文件系统策略

自动挂载失败,并且实例没有响应

如果在实例上自动挂载文件系统,并且未声明 _netdev 选项,则可能会出现该问题。如果_netdev缺失,您的EC2实例可能会停止响应。出现该结果是因为,需要在计算实例启动其网络后初始化网络文件系统。

要采取的操作

如果出现此问题,请联系 Supp AWS ort。

在 /etc/fstab 中装载多个 Amazon EFS 文件系统失败

对于使用 systemd init 系统且有两个或更多 Amazon EFS 条目的实例/etc/fstab,有时可能无法装入其中部分或全部条目。在这种情况下,dmesg 输出显示类似于以下内容的一行或多行。

NFS: nfs4_discover_server_trunking unhandled error -512. Exiting with error EIO
要采取的操作

在这种情况下,我们建议您在 /etc/systemd/system/mount-nfs-sequentially.service 中创建新的 systemd 服务文件。文件中包含的代码取决于您是手动挂载文件系统还是使用 Amazon EFS 挂载助手。

  • 如果要手动装载文件系统,则该ExecStart命令必须指向网络文件系统 (NFS4)。在此文件中包含以下代码:

    [Unit] Description=Workaround for mounting NFS file systems sequentially at boot time After=remote-fs.target [Service] Type=oneshot ExecStart=/bin/mount -avt nfs4 RemainAfterExit=yes [Install] WantedBy=multi-user.target
  • 如果您使用的是 Amazon EFS 挂载助手,则ExecStart命令必须指NFS4向EFS而不是使用传输层安全 (TLS)。在此文件中包含以下代码:

    [Unit] Description=Workaround for mounting NFS file systems sequentially at boot time After=remote-fs.target [Service] Type=oneshot ExecStart=/bin/mount -avt efs RemainAfterExit=yes [Install] WantedBy=multi-user.target

创建此文件后,运行以下两个命令:

  1. sudo systemctl daemon-reload

  2. sudo systemctl enable mount-nfs-sequentially.service

然后重启您的 Amazon EC2 实例。将按需挂载文件系统,通常在一秒内。

挂载命令失败,并显示“错误的 fs 类型”错误消息

挂载命令失败,并显示如下错误消息。

mount: wrong fs type, bad option, bad superblock on 10.1.25.30:/, missing codepage or helper program, or other error (for several filesystems (e.g. nfs, cifs) you might need a /sbin/mount.<type> helper program) In some cases useful info is found in syslog - try dmesg | tail or so.
要采取的操作

如果收到该消息,请安装 nfs-utils(或 Ubuntu 上的 nfs-common)软件包。有关更多信息,请参阅 安装NFS客户端

挂载命令失败,并显示“不正确的挂载选项”错误消息

挂载命令失败,并显示如下错误消息。

mount.nfs: an incorrect mount option was specified
要采取的操作

此错误消息很可能意味着你的 Linux 发行版不支持网络文件系统版本 4.0 和 4.1 (NFSv4)。要确认是否属于这种情况,您可以运行以下命令。

$ grep CONFIG_NFS_V4_1 /boot/config*

如果返回上述命令# CONFIG_NFS_V4_1 is not set,则表示您的 Linux 发行版不支持 NFSv4 .1。有关支持 NFSv4 .1 的亚马逊弹性计算云 (AmazonAMIs) 的亚马逊系统映像 (EC2) 列表,请参阅NFS支持

使用接入点挂载失败

使用接入点进行挂载时,挂载命令失败,并显示以下错误消息:

mount.nfs4: mounting access_point failed, reason given by server: No such file or directory
要采取的操作

此错误消息表明指定的EFS路径不存在。确保您提供接入点根目录的所有权和权限。EFS如果没有这些信息,将无法创建根目录。有关更多信息,请参阅 使用 Amazon EFS 接入点

如果您未指定任何根目录的所有权和权限,并且根目录尚不存在,则EFS不会创建根目录。发生这种情况时,使用接入点挂载文件系统的任何尝试都将失败。

在创建文件系统后文件系统挂载立即失败

为域名服务 (DNS) 记录创建装载目标后,最多可能需要 90 秒才能在中完全传播。 AWS 区域

要采取的操作

如果您以编程方式创建和挂载文件系统(例如使用 AWS CloudFormation 模板),我们建议您实现等待条件。

文件系统挂载挂起,然后失败,并显示超时错误

文件系统挂载命令挂起一两分钟,然后失败,并显示超时错误。下面的代码显示了一个示例。

$ sudo mount -t nfs -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport mount-target-ip:/ mnt [2+ minute wait here] mount.nfs: Connection timed out $ 

要采取的操作

之所以出现此错误,可能是因为 Amazon EC2 实例或挂载目标安全组配置不正确。确保挂载目标安全组具有允许从该EC2安全组进行NFS访问的入站规则。有关更多信息,请参阅 创建安全组

请验证您所指定的挂载目标 IP 地址是否有效。如果指定的 IP 地址不正确,并且在该 IP 地址中没有任何其他内容以拒绝挂载,则可能会遇到该问题。

NFS使用DNS名称装载文件系统失败

尝试使用NFS客户端(不使用客户amazon-efs-utils端)使用文件系统DNS名称装载文件系统失败,如以下示例所示:

$ sudo mount -t nfs -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport file-system-id.efs.aws-region.amazonaws.com:/ mnt mount.nfs: Failed to resolve server file-system-id.efs.aws-region.amazonaws.com: Name or service not known. $ 

要采取的操作

检查您的VPC配置。如果您使用的是自定义VPC,请确保DNS设置已启用。有关更多信息,请参阅《Amazon VPC 用户指南》VPC中的您的DNS属性。此外,文件系统和挂载目标DNS名称无法从其存在VPC位置之外进行解析。

mount命令中使用文件系统的DNS名称挂载文件系统之前,必须执行以下操作:

  • 确保在 Amazon EC2 实例所在的可用区中有一个 Amazon EFS 挂载目标。

  • 确保有与 Amazon EC2 实例VPC相同的挂载目标。否则,您不能对其他EFS挂载目标使用DNS名称解析VPC。有关更多信息,请参阅 从其他EFS服务器挂载文件系统 AWS 账户 或 VPC

  • 在VPC配置为使用亚马逊提供的DNS服务器的亚马逊内连接您的亚马逊EC2实例。有关更多信息,请参阅《亚马逊VPC用户指南》VPC中的 Amaz on 中的DHCP选项集

  • 确保连接的 Amazon VPC EC2 实例的 Amazon 已启用DNS主机名。有关更多信息,请参阅《Amazon VPC 用户指南VPC中的DNS属性

文件系统挂载失败,并显示错误“nfs 未响应”

Amazon EFS 文件系统在与"nfs: server_name still not responding"发生传输控制协议 (TCP) 重新连接事件时失败。

要采取的操作

使用noresvport装载选项确保在重新建立网络连接时NFS客户端使用新的TCP源端口。这样做有助于确保在网络恢复事件后具有不间断的可用性。

挂载目标生命周期状态停滞

挂载目标生命周期停滞在正在创建正在删除状态。

要采取的操作

重试 CreateMountTargetDeleteMountTarget 调用。

挂载目标生命周期状态显示错误

挂载目标生命周期状态显示为错误

要采取的操作

如果虚拟私有云 (DNS) 的托管区域相互冲突,Amazon 将EFS无法为新的文件系统挂载目标创建必要的域名系统 (VPC) 记录。Amazon EFS 无法在客户拥有的托管区域内创建新记录。如果您需要维护具有冲突efs.<region>.amazonaws.com.rproxy.goskope.comDNS范围的托管区域,请单独创建托管区域VPC。有关DNS注意事项的更多信息VPC,请参阅您的DNS属性VPC

要解决此问题,请从中删除冲突efs.<region>.amazonaws.com的主机,VPC然后重新创建装载目标。有关删除挂载目标的更多信息,请参阅管理挂载目标

挂载没有响应

Amazon EFS 挂载似乎没有响应。例如,ls 等命令挂起。

要采取的操作

如果另一个应用程序正在将大量数据写入文件系统,则可能会出现该错误。在该操作完成前,可能会阻止对正在被写入的文件的访问。一般来说,尝试访问正在被写入的文件的任何命令或应用程序均可能会显示为挂起状态。例如,ls 命令可能会在访问正在被写入的文件时挂起。出现该结果是因为,某些 Linux 发行版在 ls 命令中使用别名,以便检索文件属性以及列出目录内容。

要解决此问题,请验证是否有其他应用程序正在向 Amazon EFS 挂载写入文件,并且该应用程序处于 Uninterruptible sleep (D) 状态,如以下示例所示:

$ ps aux | grep large_io.py root 33253 0.5 0.0 126652 5020 pts/3 D+ 18:22 0:00 python large_io.py /efs/large_file

在已验证确属这种情况之后,您可以通过等待其他写入操作完成或通过实施一种变通解决办法来解决问题。在 ls 示例中,您可以直接使用 /bin/ls 命令,而不是使用别名。这样做可以继续执行命令,而不会在写入的文件处挂起。通常,如果写入数据的应用程序可能会定期强制执行数据刷新(可能使用 fsync(2)),这样做可能有助于提高文件系统对其他应用程序的响应能力。但是,在应用程序写入数据时,这种改善可能会牺牲性能。

挂载的客户端断开连接

挂载到 Amazon EFS 文件系统的客户端偶尔会由于多种原因而断开连接。NFS客户端设计为在出现中断时自动重新连接,以最大限度地减少例行断开连接对应用程序性能和可用性的影响。在大多数情况下,客户端会在几秒钟内以透明的方式重新连接。

但是,旧版 Linux 内核(v5.4 及更低版本)中包含的NFS客户端软件包含一种行为,这种行为会导致NFS客户端在断开连接时尝试在同TCP一个源端口上重新连接。此行为不符合 TCPRFC,并且可能阻止这些客户端快速重新建立与其NFS服务器(在本例中为EFS文件系统)的连接。

要解决此问题,我们强烈建议您使用 Amazon EFS 挂载帮助程序来挂载您的EFS文件系统。EFS挂载助手使用针对 Amazon EFS 文件系统进行了优化的挂载设置。有关EFS客户端和挂载帮助程序的更多信息,请参见安装亚马逊EFS客户端

如果您无法使用EFS挂载助手,我们强烈建议您使用noresvportNFS挂载选项,该选项指示NFS客户端使用新的TCP源端口重新建立连接,以避免出现此问题。有关更多信息,请参阅 推荐的NFS挂载设置

对新挂载的文件系统的操作返回“坏文件句柄”错误

针对新挂载的文件系统执行的操作返回 bad file handle 错误。

如果 Amazon EC2 实例使用指定 IP 地址连接到一个文件系统和一个挂载目标,然后删除该文件系统和挂载目标,则会发生此错误。如果您使用相同的挂载目标 IP 地址创建新的文件系统和挂载目标以连接到该 Amazon EC2 实例,则可能会出现此问题。

要采取的操作

您可以通过卸载文件系统,然后在 Ama EC2 zon 实例上重新挂载文件系统来解决此错误。有关卸载 Amazon EFS 文件系统的更多信息,请参阅卸载文件系统

卸载文件系统失败

如果文件系统繁忙,则无法将其卸载。

要采取的操作

您可以通过以下方法解决该问题:

  • 使用延迟卸载 umount -l,它会在运行时将文件系统从文件系统层次结构中分离出来,然后在文件系统不再忙碌时立即清理对文件系统的所有引用。

  • 等待所有读取和写入操作完成,然后再次尝试执行 umount 命令。

  • 使用 umount -f 命令强制卸载。

    警告

    强制卸载将会中断当前为文件系统执行的任何数据读取或写入操作。有关使用此选项的更多信息和指导,请参阅卸载手册页