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

aro*_*rod 67 linux amazon-s3 s3fs

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

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

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

rea*_*ers 91

这里有一篇关于s3fs的好文章,在阅读之后我使用了EBS Share.

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

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

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

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

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

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

我使用了EC2实例共享的EBS Mounted Drived.但是你应该知道,虽然性能最高的选项有一个大问题但EBS Mounted NFS Share有其自身的问题 - 单点故障; 如果共享EBS卷的计算机出现故障,则您将无法访问访问该共享的所有计算机.

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


ale*_*emb 18

这是一个老问题所以我将在过去的一年中与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的企业版,但无需与其附带的配额和费用竞争.