我观察到EFS中存在很大的延迟,检测到文件已经被重新创建,即删除,然后再次创建。
在这个简单的测试示例中,我有一个文件在大约5秒后被删除并重新创建。我有两个EC2实例挂载到同一个EFS:
EC2-1:负责读取文件
EC2-2:负责删除和创建文件。
我看到的问题是,当EC2-2删除文件时,EC2-1将正确地更新,说明它不再存在。大约5秒后,EC2-2重新创建文件.EC2-1没有检测到文件已经返回了25到30秒.
现在,如果我在重新创建(比如和LS命令)之后对EC2-1上的文件系统运行某种查询,那么它就会立即更新,说文件已经创建了。
为了清楚起见,我直观地看到文件在创建后立即在EC2-1FS上创建,只需运行LS即可。它以编程方式读取它却失败了。在我的测试用例中,我有一个Node.js脚本,它实际上每秒钟只调用readFileSync()。我还用Python进行了同样的测试,得出结论这是一个EFS问题。
如果我在EC2-2上运行相同的脚本,会看到预期的结果,即文件丢失了一秒钟,然后在重新创建后立即可用。因此,在执行delete和create的实例上读取它,就会像预期的那样工作。
这就好像EFS根本没有检测到文件删除/重新创建一样。
操作系统在EC2 VM上都是UbuntuServer18.04,在“通用”和“高I/O”类型的新EFS上进行了测试。
发布于 2020-07-24 21:52:37
由于@kofemann向我指出了noac选项,我得以了解文件系统属性缓存,并找到下面的帖子,很好地总结了这些选项。
https://serverfault.com/questions/1026640
复制相似问题