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

2024-04-10

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

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

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


这里有一篇关于 s3fs 的好文章 http://www.turnkeylinux.org/blog/exploring-s3-based-filesystems-s3fs-and-s3backer,读完后我求助于 EBS Share。

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

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

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

如果您正在谈论应用程序数据(例如数据库文件、日志文件),您想要进行小的增量更改,那么它绝对不可以 - S3 只是无法以这种方式工作,您无法增量更改文件。

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

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

我求助于从 EC2 实例共享的 EBS 安装驱动器。但你应该知道,虽然这是性能最好的选项,但它有一个大问题 EBS挂载的NFS共享有其自身的问题——单点故障;如果共享 EBS 卷的计算机出现故障,那么您将失去对所有访问该共享的计算机的访问权限。

这是我能够承受的风险,也是我最终选择的选择。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

s3fs 将 Amazon S3 存储桶挂载为本地目录的稳定性如何 [关闭] 的相关文章

  • 如何在c linux中收听特定接口上的广播?

    我目前可以通过执行以下操作来收听我编写的简单广播服务器 仅广播 hello int fd socket PF INET SOCK DGRAM 0 struct sockaddr in addr memset addr 0 sizeof ad
  • 如何构建任务“gems:install”

    我正在将 Rails 应用程序部署到 Linux 服务器 并且缺少一些 rake 任务 包括 rake gems install 和 rake db 我正在运行来自 GEM 的 Rails 2 3 4 为什么是这样 我该如何解决 我可以以某
  • Fortran gfortran linux 中的“分段错误(核心转储)”错误

    我正在创建一个程序 该程序将分析目录中的文件 fits 然后它将在另一个目录中创建另一个文件 txt 它只是一个转换器 当我尝试执行该程序 编译正常 时 它给了我一条错误消息 程序收到信号 SIGSEGV 分段错误 无效的内存引用 此错误的
  • 监控子进程的内存使用情况

    我有一个 Linux 守护进程 它分叉几个子进程并监视它们是否崩溃 根据需要重新启动 如果父进程可以监视子进程的内存使用情况 以检测内存泄漏并在超出一定大小时重新启动子进程 那就太好了 我怎样才能做到这一点 您应该能够从 proc PID
  • 在 C++ linux 中将 STRINGS 写入串口

    我知道这个问题遍布互联网 但仍然没有任何东西能让我完全解决这个问题 我想用 C linux 将数据写入 Propeller 板的串行端口 从控制台获取输入时程序运行良好 但是当我向它写入字符串时总是返回 ERROR Invalid comm
  • Capistrano 3 部署无法连接到 GitHub - 权限被拒绝(公钥)

    我使用 Capistrano v3 和 capistrano symfony gem 设置了以下部署脚本 我正在使用 Ubuntu 14 4 部署到 AWS EC2 实例 我正在连接从 AWS 下载的 pem 文件 我的deploy rb中
  • 无法在 Perl 中找到 DBI.pm 模块

    我使用的是 CentOS 并且已经安装了 Perl 5 20 并且默认情况下存在 Perl 5 10 我正在使用 Perl 5 20 版本来执行 Perl 代码 我尝试使用 DBI 模块并收到此错误 root localhost perl
  • Amazon S3 - 一个对象的多个键

    我有一个 S3 存储桶 其中包含超过 1 亿个对象 每个对象像往常一样都有一个唯一的密钥 我想知道是否有办法为其中一些对象分配另一个键 像这样的东西 键1 gt 对象1 键2 gt 对象2 Key3 gt Object2 我想添加这个 我在
  • Python 脚本作为 Linux 服务/守护进程

    Hallo 我试图让 python 脚本作为服务 守护进程 在 ubuntu linux 上运行 网络上存在多种解决方案 例如 http pypi python org pypi python daemon http pypi python
  • 如何从 PROC 获取有关子进程的信息

    我正在尝试编写一个以几个进程作为参数的程序 然后父进程执行每个子进程并打印出一些相关的统计信息 示例 generate ls l 将生成一个程序 打印出有关 ls l 的一些统计信息 特别是其系统时间 用户时间和上下文切换次数 我不想使用
  • 使用 Boto3 以字符串形式打开 S3 对象

    我知道使用 Boto 2 可以使用以下命令将 S3 对象作为字符串打开 get contents as string http boto readthedocs org en latest ref file html highlight c
  • vagrant ssh -c 并在连接关闭后保持后台进程运行

    我正在编写一个脚本来启动和后台流浪机器内的进程 似乎每次脚本结束和 ssh 会话结束时 后台进程也会结束 这是我正在运行的命令 vagrant ssh c cd vagrant src nohup python hello py gt he
  • Linux 上的 RTLD_LOCAL 和dynamic_cast

    我们有一个由应用程序中的一些共享库构成的插件 我们需要在应用程序运行时更新它 出于性能原因 我们在卸载旧插件之前加载并开始使用新插件 并且只有当所有线程都使用旧插件完成后 我们才卸载它 由于新插件和旧插件的库具有相同的符号 我们dlopen
  • 嵌入式linux编写AT命令

    我在向 GSM 模块写入 AT 命令时遇到问题 当我使用 minicom b 115200 D dev ttySP0 term vt100 时它工作完美 但我不知道如何在 C 代码中做同样的事情 我没有收到任何错误 但模块对命令没有反应 有
  • Raspberry 交叉编译 - 执行程序以“分段错误”结束

    我有一个自己编写的程序 我想从我的 x86 机器上为 Raspberry Pi 构建它 我正在使用 eclipse 生成的 makefile 并且无法更改此内容 我已经阅读了 CC for raspi 的教程 Hackaday 链接 htt
  • S3 选择检索 CSV 中的标头

    我尝试使用以下代码从存储在 S 存储桶中的 CSV 中获取记录子集 s3 boto3 client s3 bucket bucket file name file sql stmt SELECT S FROM s3object S LIMI
  • C:如果文件描述符被删除,阻塞读取应该返回

    我正在以阻塞的方式从设备 文件描述符中读取 可能会发生这样的情况 在不同的线程中 设备被关闭并且文件描述符被删除 不幸的是 读取没有返回或注意到并且一直阻塞 作为一种解决方法 我可以使用 select 作为超时来执行 while 循环 如果
  • Rails API ActiveStorage:获取公共 URL 以显示来自 AWS S3 存储桶的图像?

    我设置了 Rails 5 2 API 并遵循了有关如何将图像附加到模型对象的文档 这一切都工作正常 我遇到的问题是我想在 JSON 对象中返回附件的公共 URL 以便我可以使用该 URL 作为源 img 并让它显示 谢谢 我的develop
  • 使用 inotify 的正确方法是什么?

    我想使用inotifyLinux 上的机制 我希望我的应用程序知道文件何时aaa被改变了 您能给我提供一个如何做到这一点的示例吗 文档 来自监视文件系统活动 inotify https developer ibm com tutorials
  • 配置:错误:无法运行C编译的程序

    我正在尝试使用 Debian Wheezy 操作系统在我的 Raspberry Pi 上安装不同的软件 当我运行尝试配置软件时 我尝试安装我得到此输出 checking for C compiler default output file

随机推荐