s3fs将Amazon S3存储桶安装为本地目录的稳定性如何?

s3fs在Amazon S3中作为本地目录安装Amazon S3存储桶的稳定性如何? 对于高需求生产环境,build议/稳定?

有没有更好的/类似的解决scheme?

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

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

它突出了使用s3fs时的一些重要考虑,即与S3的固有限制有关:

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

因此,它取决于你存储的是否s3fs是一个可行的select。 如果你正在存储说,照片,你想写整个文件,或读整个文件永远不会增量更改文件,那么它很好,但有人可能会问,如果你这样做,那么为什么不使用S3的API直接?

如果你正在谈论的应用数据(如数据库文件,日志文件),你想做小的增量更改,那么它肯定没有 – S3只是不行,你不能增量更改文件。

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

  • 由于延迟写入,数据损坏的风险很高
  • 太小的块大小(例如,4K默认值)会增加显着的额外成本(例如,对于具有4K块存储的50GB为130美元)
  • 太大的块大小会增加显着的数据传输和存储费用。
  • 内存使用可能会被禁止:默认情况下,它caching1000块。
    使用默认的4K块大小不是问题,但大多数用户
    可能会想要增加块大小。

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

这是我能够忍受的风险,并且是我最终select的select。 我希望这有帮助。

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

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

关于S3FS最好的事情是你有一件事情要担心,并获得一些免费的性能优势。

大部分的S3请求将被PUT(〜5%)和GET(〜95%)。 如果你不需要任何后期处理(例如缩略图生成)。 如果你不需要任何后处理,你不应该首先打你的Web服务器,并直接上传到S3(使用CORS)。

假设你打到服务器可能意味着你需要做一些图像后处理。 使用S3 API,您将上传到服务器,然后上传到S3。 如果用户想裁剪,则需要从S3重新下载,然后重新上传到服务器,裁剪,然后上传到S3。 随着S3FS和本地caching打开,这个编排是照顾你,并保存从S3下载文件。

在caching方面,如果您正在cachingEC2上的临时驱动器,则可以获得性能优势,可以清除caching而无需担心任何操作。 除非磁盘空间不足,否则应该没有理由清除caching。 这使遍历操作(如search和过滤)更容易。

我唯一希望的是完全同步于S3(RSync风格)。 这将使其成为DropBox或Google Drive for S3的企业版本,但不必与其配额和费用相抗衡。