我观察到 EFS 检测到文件已被重新创建(即删除然后再次创建)的延迟非常大。
在这个简单的测试示例中,我有一个文件在大约 5 秒后被删除并重新创建。我有两个 EC2 实例安装到同一个 EFS:
EC2-1:负责读取文件
EC2-2:负责删除和创建文件。
我看到的问题是,当 EC2-2 删除该文件时,EC2-1 正确更新说它不再存在。EC2-2 大约 5 秒后重新创建该文件。EC2-1 未检测到文件已返回另外 25 到 30 秒。
现在,如果我在重新创建后(例如和 LS 命令)在 EC2-1 上的文件系统上运行某种查询,它会立即更新以说明文件已创建。
需要明确的是,我可以直观地看到文件在创建后立即在 EC2-1 FS 上创建,只需运行 LS。它以编程方式阅读它失败了。在我的测试用例中,我有一个 Node.js 脚本,它实际上只是每秒调用一次 readFileSync()。我还在 Python 中进行了相同的测试,以得出这是一个 EFS 问题。
如果我在 EC2-2 上运行相同的脚本,会看到预期的结果,即文件丢失一秒钟,然后在重新创建后立即可用。因此,在执行删除和创建的实例上阅读此内容可以按预期工作。
好像 EFS 根本没有检测到文件删除/重新创建。
两个 EC2 虚拟机上的操作系统都是 Ubuntu Server 18.04。在“通用”和“高 I/O”类型的新 EFS 上进行了测试。
感谢@kofemann 向我指出了该
noac
选项,我能够了解文件系统属性缓存并找到下面的帖子,该帖子很好地总结了这些选项。https://forums.aws.amazon.com/thread.jspa?threadID=245354