我在AWS中使用EFS。我的设置包括同一个AZ中的2个EC2实例(一个FreeBSD 9.3和一个CentOS 7) - 都安装了一个EFS卷(比如说,在/ data / efs)
我在以下两个实例上都运行了以下代码。所有文件都在/ data / efs -
中for x in xrange(100):
try:
os.link(socket.get_hostname(), 'file')
break
except OSError as e:
if e.errno == 17:
# Other host is yet to unlink
time.sleep(1)
else:
raise
<do_something>
os.unlink('file')
总是(无论在主机上启动脚本的顺序如何),linux主机都会在某个时刻获得控制权。完成&#34;做某事&#34;先是100次。发布,FreeBSD实例需要一段时间(最多1分钟)开始&#34;做某事&#34;试。
FreeBSD主持人等待,运行&#39; ls&#39;在主持人上没有显示条目&#39;文件&#39;在/ home / efs但是上面的os.link()调用失败了。但是如果我运行os.stat()(第一次运行它来检查链接数),FreeBSD主机启动&#34;做某事&#34;再一次。
os.stat()在NFS场景中真正做了什么?它会强制重新计票吗?