s3fs将Amazon S3存储桶挂载为本地目录的稳定性如何

时间:2012-05-29 14:27:19

标签: linux amazon-s3 s3fs

s3fs在Amazon中将Amazon S3存储桶挂载为本地目录的稳定性如何?对于高需求的生产环境,它是推荐/稳定的吗?

有没有更好/类似的解决方案?

更新:使用EBS并通过NFS将其挂载到所有其他AMI会更好吗?

2 个答案:

答案 0 :(得分:88)

There's a good article on s3fs here,在阅读后我使用了EBS股票。

它强调了使用s3fs时的一些重要注意事项,即与S3的固有限制有关:

  • 没有文件可以超过5GB
  • 您无法部分更新文件,因此更改单个字节将重新上传整个文件。
  • 对许多小文件的操作非常有效(毕竟每个文件都是一个单独的S3对象)但是大文件的效率非常低
  • 虽然S3支持部分/分块下载,但s3fs没有利用这一点,所以如果你只想读取1GB文件的一个字节,你就必须下载整个GB。

因此,它取决于您存储的是否s3fs是一个可行的选项。如果你要存储说,照片,你想写一个整个文件或读取整个文件永远不会逐步更改文件,那么它很好,虽然你可能会问,如果你这样做,那么为什么不只是使用S3的API直接?

如果您正在谈论您想要进行小增量更改的应用数据(比如数据库文件,日志记录文件)那么它肯定没有 - S3只是不能以这种方式工作您无法逐步更改文件

上面提到的文章确实谈到了类似的应用程序 - s3backer - 通过在S3上实现虚拟文件系统来解决性能问题。这解决了性能问题,但本身也存在一些问题:

  • 由于写入延迟导致数据损坏的风险很高
  • 太小的块大小(例如,4K默认值)可能会显着增加 额外费用(例如,50GB,带有4K块存储空间的130美元)
  • 过大的块大小可以增加重要的数据传输和存储 费用。
  • 内存使用率可能过高:默认情况下,它会缓存1000个块 使用默认的4K块大小不是问题,但大多数用户是 可能会想要增加块大小。

我使用了EC2实例共享的EBS Mounted Drived。但你应该知道,尽管性能最佳,但它有一个大问题 EBS安装的NFS共享有其自身的问题 - 单点故障;如果共享EBS卷的计算机出现故障,则您将无法访问访问该共享的所有计算机。

这是我能够忍受的风险,也是我最终选择的选项。我希望这会有所帮助。

答案 1 :(得分:17)

这是一个老问题,所以我将在过去的一年中与S3FS分享我的经验。

最初,它有一些错误和内存泄漏(我有一个cron-job每2小时重启一次)但是最新版本1.73它非常稳定。

关于S3FS最好的事情是你可以少担心一些事情并免费获得一些性能优势。

您的大多数S3请求将是PUT(~5%)和GET(~95%)。如果您不需要任何后处理(例如缩略图生成)。如果您不需要任何后期处理,则不应该首先访问您的Web服务器并直接上传到S3(使用CORS)。

假设你正在点击服务器可能意味着你需要对图像进行一些后期处理。使用S3 API,您将上传到服务器,然后上传到S3。如果用户想要裁剪,则需要再次从S3下载,然后重新上传到服务器,裁剪然后上传到S3。启用S​​3FS和本地缓存后,此业务流程将为您完成,并从S3保存下载文件。

在缓存方面,如果您正在缓存EC2上的短暂驱动器,您将获得带来的性能优势,并且可以清除缓存而无需担心任何问题。除非磁盘空间不足,否则您没有理由清除缓存。这使得遍历搜索和过滤等操作变得更加容易。

我希望它有一件事是与S3完全同步(RSync风格)。这将使其成为DropBox或Google Drive for S3的企业版,但无需与其附带的配额和费用竞争。