s3fs 将 Amazon S3 存储桶挂载为 linux 中的本地目录有多稳定?对于高需求的生产环境是否推荐/稳定?
有没有更好/类似的解决方案?
更新:使用 EBS 并通过 NFS 将其挂载到所有其他 AMI 会更好吗?
这里有一篇关于 s3fs 的好文章,在阅读后我求助于 EBS Share。
它强调了使用 s3fs 时的一些重要注意事项,即与 S3 的固有限制有关:
因此,s3fs 是否可行取决于您存储的内容。如果您要存储照片,您想要写入整个文件或读取整个文件永远不会增量更改文件,那么它很好,尽管有人可能会问,如果您正在这样做,那么为什么不使用 S3 API 直接?
如果您谈论的是应用程序数据(例如数据库文件,日志文件),您想在其中进行小的增量更改,那么它绝对不会 - S3 Just 无法以这种方式工作,您无法增量更改文件。
上面提到的文章确实谈到了一个类似的应用程序 - s3backer - 它通过在 S3 上实现虚拟文件系统来解决性能问题。这解决了性能问题,但它本身也有一些问题:
我求助于从 EC2 实例共享的 EBS Mounted Drived。但是您应该知道,虽然性能最高的选项有一个大问题 EBS Mounted NFS Share 有其自身的问题 - 单点故障;如果共享 EBS 卷的机器出现故障,那么您将失去访问该共享的所有机器的访问权限。
这是我能够承受的风险,也是我最终选择的选择。我希望这有帮助。
这是一个老问题,所以我将分享我在过去一年中使用 S3FS 的经验。
最初,它有许多错误和内存泄漏(我有一个 cron-job 每 2 小时重新启动一次),但在最新版本 1.73 中它非常稳定。
S3FS 最好的一点是您无需担心的事情减少了,并免费获得了一些性能优势。
大多数 S3 请求将是 PUT (~5%) 和 GET (~95%)。如果您不需要任何后期处理(例如缩略图生成)。如果您不需要任何后处理,则不应首先访问您的 Web 服务器并直接上传到 S3(使用 CORS)。
假设您正在访问服务器可能意味着您需要对图像进行一些后期处理。使用 S3 API,您将上传到服务器,然后上传到 S3。如果用户想要裁剪,你需要从 S3 重新下载,然后重新上传到服务器,裁剪然后上传到 S3。启用 S3FS 和本地缓存后,此编排会为您处理并保存从 S3 下载文件。
在缓存方面,如果您要缓存到 EC2 上的临时驱动器,您将获得随之而来的性能优势,并且可以清除缓存而无需担心任何事情。除非您的磁盘空间用完,否则您应该没有理由清除缓存。这使得搜索和过滤等遍历操作变得更加容易。
我希望它拥有的一件事是与 S3(RSync 风格)完全同步。这将使其成为 DropBox 或 S3 的 Google Drive 的企业版,但无需应对随之而来的配额和费用。