S3存储桶在EC2实例上随机卸载

4
我的公司目前正在使用来自AWS的S3fs和Ec2。我们已经将s3存储桶挂载到Ec2实例上,但是在一段时间后(例如一周),有些存储桶会自行卸载,导致我们的服务器实例几乎无法使用。错误信息为“Transport endpoint not connected”。
S3fs版本:1.61源代码构建
FUSE版本:2.84.1源代码构建
操作系统:Linux,Ubuntu 11.04
是否有一种安全机制可以防止(或至少检测)这些问题?

更多细节:操作系统版本?s3fs库版本?挂载选项?为什么使用s3fs而不是EBS存储? - Anatoly
我们遇到了同样的问题。目前我们的理论是与负载有关。我们正在测试s3fs作为应用服务器共享资产的共享文件系统,并且在负载测试期间注意到了这些错误。如果我发现更多信息,我会更新的。 - tsykoduk
1
运行s3fs --version Amazon Simple Storage Service 文件系统 1.61 pkg-config --modversion fuse 2.8.6我不得不手动构建这两个版本。 今天我能够来回传输数万个文件。我正在让它在我们的测试服务器上运行,然而这看起来很好,因为之前的版本会在持续io 20或30分钟后失败。 - tsykoduk
2个回答

1
很有见地。我没有想到这一点。但是这里有三个预防措施我们可以采取:
1)创建一个自动挂载,以便在EC2非常不可能宕机时,S3会在EC2通过/etc/fstab回来时重新挂载
2)或者,如果您喜欢,使用cron创建第二个自动挂载:
echo "/usr/bin/s3fs [s3 bucket name] [mountpoint path] -o allow_other" >> automount-s3
sudo mv automount-s3 /usr/sbin
sudo chown root:ubuntu /usr/sbin/automount-s3
sudo chmod +x /usr/sbin/automount-s3

crontab -e

添加这一行

@reboot /usr/sbin/automount-s3

3)我还会创建另一个小时级别的cron来检查S3是否仍然已挂载——这可以通过检查EC2路径中是否存在虚拟文件来完成。如果文件不存在,则cron将通过调用"/usr/bin/s3fs -o allow_other [S3 bucket名称] [挂载点路径]"进行手动挂载。最好触发一封电子邮件发送给管理员并在系统中记录此操作。


1

s3fs 是一个不错的想法,但请记住,即使对 s3 的调用可能有点内部化(或者说“在他们的网络上”),你仍然是在通过 HTTP 挂载文件系统。从长远来看,这是不稳定的。

也许您可以重新表达您的问题,询问替代方案,并分享您使用任何类型的(我猜测)共享网络文件系统所要实现的目标。我能理解它的吸引力,但是在 Amazon EC2 中,人们通常采用“无共享”的方法,应该避免任何额外的与网络相关的东西,以便更容易地回收实例等。

很乐意扩展我的答案。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接