Amazon EFS 尝试列出其中的文件时挂起

Joh*_*Doe 5 nfs amazon-web-services amazon-efs

在 Amazon EFS 挂载点内执行 ls 时,它会挂起。

AWS 上的 EFS 故障排除部分有关 AWS EFS 故障排除的

提到以下内容:

安装没有响应

Amazon EFS 装载似乎没有响应。例如,像 lshang 这样的命令。

采取的行动

如果另一个应用程序正在向文件系统写入大量数据,则可能会发生此错误。在操作完成之前,对正在写入的文件的访问可能会被阻止。通常,任何尝试访问正在写入的文件的命令或应用程序都可能会挂起。例如,ls 命令在到达正在写入的文件时可能会挂起。这是因为某些 Linux 发行版给 ls 命令起了别名,以便除了列出目录内容之外还可以检索文件属性。

要解决此问题,请验证另一个应用程序是否正在将文件写入 Amazon EFS 挂载,并且它处于不间断睡眠 (D) 状态,如下例所示:

$ ps 辅助| grep large_io.py

根 33253 0.5 0.0 126652 5020 点/3 D+ 18:22 0:00 python large_io.py /efs/large_file

验证情况确实如此后,您可以通过等待其他写入操作完成或实施解决方法来解决该问题。在 ls 的示例中,您可以直接使用 /bin/ls 命令,而不是别名,这将允许命令继续执行,而不会挂在正在写入的文件上。一般来说,如果写入数据的应用程序可以强制定期刷新数据(也许通过使用 fsync(2)),这可能有助于提高文件系统对其他应用程序的响应能力。但是,这种改进可能会以牺牲应用程序写入数据时的性能为代价。

所以我验证了一下是否有东西写入其中,但唯一出现的是

根 43556 0.0 0.0 124356 756 点/6 D+ 19:15 0:00 ls --color=auto /efs/

根 43558 0.0 0.0 112664 972 点/3 S+ 19:16 0:00 grep --color=auto efs

因此据我所知,没有任何内容被写入 EFS。我还可以调查其他原因吗?

我还尝试将 EFS 安装在单独的计算机上以进行验证,我还在不同可用区中的另一台计算机上测试了该可用区中的另一个安装点,并看到了相同的行为。

更新:

lsof 显示:

nfsv4.1-s 113422根cwd DIR 202,1 4096 128 /

nfsv4.1-s 113422根rtd DIR 202,1 4096 128 /

nfsv4.1-s 113422 txt cwd 未知 /proc/113422/exe

卸载时该信息会消失,安装后会重新出现。

小智 1

鉴于之前的所有信息,很难确切地说出到底发生了什么。但是,您需要 Amazon EFS 装载才能工作,因此:

\n\n

您的lsof结果显示 /proc 文件系统中可能存在伪文件。在某个时刻,该进程丢失了其可执行文件,我怀疑它正在尝试继续运行。当您卸载时,它会消失,因为 lsof 命令无法看到该卷,而当您重新安装该命令时,它会再次看到丢失的可执行文件。这可能是消耗资源的过程。当您运行ps命令时,您是否看到进程 113422?由于您没有报告另一个应用程序正在运行,因此您可以尝试终止该进程。

\n\n

首先,我会运行ps -aux查看所有正在运行的进程,包括后台进程,并查看是否可以找到进程 113422。如果是,它正在运行什么?(或者认为它正在运行。)如果您觉得停止该进程很舒服,那么运行kill -9 113422并完全停止它。

\n\n

重试 ls 命令,它应该可以正常运行。也可以/bin/ls直接使用命令。事实上,由于你有这么多小文件,我\xe2\x80\x99d建议只使用这种方法,这样系统就不会\xe2\x80\x99挂起等待文件。

\n\n

至于性能,从您的评论看来,您选择 EFS 是因为文件系统大小不受限制,因此 EBS 可能不是一个选项,尽管它可以提供更好的性能。每种类型都有其优点和缺点。但是,如果您不断遇到问题,也许重新考虑文件系统决策会有所帮助。

\n