当前位置: 首页 > 面试题库 >

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

蒲昊
2023-03-14
问题内容

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

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

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


问题答案:

在s3fs上有一篇不错的文章,阅读后我求助于EBS Share。

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

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

因此,这取决于您存储的内容s3fs是否可行。如果您要存储照片,例如要在其中写入整个文件或读取整个文件的位置,而从不增量更改文件,那么它就可以了,尽管有人会问,如果要这样做,那么为什么不只使用S3直接使用API​​?

如果您要在应用数据上(例如数据库文件,日志文件)进行小的增量更改,那么它绝对不是-S3 Just不能那样工作,您无法增量更改文件。

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

  • 由于写入延迟而造成数据损坏的高风险
  • 太小的块大小(例如,默认为4K)会增加大量额外成本(例如,具有4K块存储容量的50GB,130美元)
  • 太大的块大小会增加大量的数据传输和存储费用。
  • 内存使用可能会令人望而却步:默认情况下,它会缓存1000个块。
    使用默认的4K块大小不是问题,但是大多数用户
    可能会希望增加块大小。

我求助于EC2实例共享的EBS安装驱动器。但是您应该知道,尽管性能最高的选项有一个大问题,但EBS挂载NFS共享有其自身的问题-
单点故障;如果共享EBS卷的计算机出现故障,则您将失去所有访问共享的计算机的访问权限。

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



 类似资料:
  • 目前,我正在尝试将一个文件上载到AmazonS3存储桶,我对此进行了一些研究,发现如果文件足够大,类TransferManager会将文件拆分为小块,然后使用多个线程并行上载。现在在应用程序中,我们正在创建一个AmazonS3客户端实例(在应用程序开始时创建的一个bean),并使用该AmazonS3客户端为用户上传文件所需的每个文件创建TransferManager类实例,文件上传完成后(由Tra

  • 我知道如何使用中的选项将本地目录装载为卷,即。 但是,我希望能够指定上述指令(将本地装载为Dockerfile中容器中的)。 我曾尝试在中使用,但这似乎不起作用:然后我可以使用从容器内访问,但是,在容器运行期间和之后,容器对的写入更改不会反映在中。

  • 早些时候,我的文件上载到存储文件夹中。但是现在我想在s3存储桶上上传图像。如何迁移s3存储桶上现有的本地数据? 我在这里找到了脚本https://www.stefanwienert.de/blog/2018/11/05/active-storage-migrate-between-providers-from-local-to-amazon/但是得到了一个错误 为活动存储调用私有方法打开 那么,我

  • 我有一个要求,我需要上传文件到谷歌云存储(他拥有并完全维护它)桶。 这个谷歌云存储桶是由我的客户创建的。 我是谷歌云的新手,有亚马逊S3的经验。我在服务器上运行SSI,以将事务数据加载到平面文件。 我为谷歌云创建了一个示例帐户,并安装了谷歌SDK。我可以通过gsutil手动上传文件。 我的问题是 > 我应该如何建议我的客户共享凭据? 我如何连接到谷歌云存储与提供凭据独立? 如何通过以上两个步骤将文

  • 我们有一些terraform配置,我们使用s3作为后端。我们有多个AWS帐户,每个环境一个。 在所有的环境和跨多个地区的情况下,我们有不同的选择 我不确定在不必在旧状态桶上运行destroy并在新状态桶上应用的情况下,实现这一点的最佳方法是什么。 我能想到的几个选项如下,但我不确定它们是否正确。 重命名s3桶:我明白这是不可能的(还是?) 移动s3桶:重命名的解决方案如这里所述。不确定这种方法是否

  • 这个标题听起来像是重复的,但我找不到我这个问题的答案。 我想在本地计算机上克隆一个git存储库。但是,当我尝试使用shell执行此操作时,我会得到一个错误。大多数文件都被签出了,但由于某种原因,其中一个图像文件引起了麻烦,我得到了错误“致命:无法签出工作树”和“警告:克隆成功,但签出失败”。所以我现在所做的是从github下载repo文件作为一个zip文件,并将它们解压缩到我的本地目录中。所以现在