为什么越来越多的企业选择RustFS作为对象存储?

如果你这两年在自托管对象存储里折腾,大概率在 MinIO、Ceph、SeaweedFS 之间反复横跳。某天技术群里有人甩了句"试了下 RustFS,4KB 小对象吞吐比 MinIO 快两倍多",你第一反应大概是:RustFS 是个啥?是不是又一个换皮 MinIO?

这篇就给完全没听过它的人,把来龙去脉讲清楚:它是什么、能做什么、数字怎么样、亮点和短板分别在哪里、怎么上手、以及圈子里为什么突然都在聊它。

一、RustFS 到底是什么

先把"对象存储"这个前提捋一遍。和块存储(直接给磁盘卷)、文件存储(目录树 + 文件)不同,对象存储把数据存成"对象":每个对象有一个全局唯一的 key、一段二进制数据、以及一组键值对元数据。你通过 HTTP API 按 key 读写,不用挂载文件系统,也不用管块设备。Amazon S3 把这个模型做成了事实标准,于是"兼容 S3 API"就等价于"能用 aws-cli、rclone、各类 SDK 和备份工具直接对接"。

RustFS 是一个开源的、兼容 S3 API 的对象存储服务,用 Rust 语言实现,采用 Apache 2.0 许可证,最终交付是一个静态链接的单二进制文件。它站的位置和 MinIO 几乎重合:都是"自己在家或机房里跑一套类 S3"的轻量选手,而不是 Ceph 那种需要专职团队运维的分布式全家桶。

也就是说,如果你已经熟悉 MinIO 的玩法,RustFS 的迁移成本接近于零------它的卖点之一就是"你的 S3 工具链照常工作"。

二、它能干什么:核心能力清单

一个对象存储值不值得用,先看 API 面覆盖到哪。RustFS 目前覆盖的是 S3 的 data-plane 和部分 control-plane 能力:

  • 基础读写:PUT / GET / DELETE / HEAD,按 bucket + key 寻址。
  • 大文件分片上传:multipart upload,单对象可以超过单次请求上限,适合 GB 级备份和镜像。
  • 预签名 URLpresigned URL 让你可以把临时可读或可写的链接发给外部,不用暴露密钥,做临时下载、上传回调很顺手。
  • 版本控制与生命周期:对象多版本、按前缀或天数过期删除,做备份保留策略和数据湖分层都需要。
  • 纠删码(Erasure Coding):数据切成 N 份、再算 M 份校验,分散到不同盘或节点。坏掉几块盘,数据仍能重建,这是对象存储抗磁盘故障的底层机制。
  • 分布式模式:加节点就能横向扩容量和吞吐,不用推倒重来换架构。

落到场景上,它被拿去当:备份目标盘、数据湖 / lakehouse 的存储底座、AI 训练的数据集仓库、容器镜像或 Helm chart 仓库、静态网站托管、以及日志归档。这些场景的共同点是"海量对象 + HTTP 访问",正好踩在对象存储的甜区。

三、结果如何:数字和边界

光说能力没用,得看跑分。下面是几个公开的、有边界的说明,别当成无脑结论:

小对象吞吐。在厂商自己的同机对比里(同一台机器、4KB 对象、并发一致),RustFS 的 PUT 吞吐大约是 MinIO 的 2.3 倍。

部署体积与常驻内存。单二进制约 93 MB(同类 Go 实现约 320 MB)。空闲内存稳定压在 100 MB 以内,没有 JVM 要调堆,也没有 etcd 要保活。对边缘节点和轻量 VM 来说,"拖一个 90 兆的文件就能跑"是个实打实的差别。

也要说清短板 。在 100 KiB--1 MiB 这个区间的 GET 请求,RustFS 目前仍落后于 MinIO,项目自己的报告里也没回避这一点。

四、几个让运维省心的地方

抛开跑分,真正让团队把它放进选型清单的,往往是这几条结构性原因。

许可证。RustFS 用 Apache 2.0------无 copyleft、无源码公开义务。你可以把它嵌进闭源产品、做二次开发、闭源部署,没有协议层面的商业风险。对照的是 MinIO 在 2021 年从 Apache 2.0 切到 AGPLv3:只要你改了代码并作为网络服务对外提供,就得公开源码。对有私有集成、做专有存储产品的公司,这是实打实的法律摩擦。

Rust 带来的内存安全与无 GC。对象存储是长驻进程,两类最隐蔽的故障源是内存错误和 GC 停顿。C/C++ 有内存安全的历史包袱,Go 有高负载下不可预测的 GC 停顿。Rust 在编译期就堵住了一大类的内存安全问题,意味着"缓冲区溢出类 CVE"在语言层面就少了一块;对运维侧,同样负载下内存抖动更小,OOM kill 概率更低,半夜告警也少一截。

单二进制、少依赖。没有 JVM、没有外部元数据库、没有一堆 sidecar。拷过去、起进程,就完了。部署脚本和 CI 里的"它到底还依赖什么"清单短一大截。

五、和几个老面孔比,它站哪里

把几个常被一起对比的选项摆出来,各自适合不同的人:

  • vs MinIO:最大的分叉点是许可证(Apache 2.0 vs AGPLv3)。性能上小对象 RustFS 更猛,但 100KiB--1MiB 区间 MinIO 仍领先;两者部署都轻,迁移成本极低。
  • vs Ceph:Ceph 是全家桶,能力广、上限高,但需要专职团队和一套运维体系。RustFS 是"够用就好"的轻量替代,不适合已经重度依赖 RADOS / RBD 的生态。
  • vs AWS S3(托管):托管服务省心、有 24/7 SLA,代价是按量付费和锁定。RustFS 适合想自己掌控数据、对成本敏感、有能力运维的团队。

六、上手:四步跑起来

别只看对比,动手最快。一个最小可用路径:

bash 复制代码
# 1) 单节点起一个 RustFS 实例
docker run -d --name rustfs \
  -p 9000:9000 -p 9001:9001 \
  -e MINIO_ROOT_USER=admin \
  -e MINIO_ROOT_PASSWORD=changeme \
  rustfs/rustfs
bash 复制代码
# 2) 把现有 rclone 远程直接指向它,配置零改动
rclone lsd rustfs: --dump headers

# 3) 用 s3-tests 验收真实 S3 兼容率(别只看宣传页的 100%)
S3_ENDPOINT=http://localhost:9000 \
S3_ACCESS_KEY=admin S3_SECRET_KEY=changeme \
python s3tests/s3tests.py

按这个顺序推进:先 docker run 起单节点,用 rclone 迁一个小桶过去;再跑 s3-tests 的 data-plane 用例,记下真实通过率;然后把读流量切过去观察一周延迟,稳定后再切写;真要上量,参考官方文档加节点横向扩展,别一上来就堆机器。

七、行业关注度:star 之外的信号

RustFS 在 GitHub 上突破 30,000 star,从开源算起不到 400 天。star 数字本身不是采用理由,但它背后有几条值得读的信号:一是"轻量自托管 S3"这个需求一直没被很好满足------MinIO 转 AGPL 之后,很多企业突然在找可闭源商用的替代品;二是 Rust 重写基础设施这股浪潮,在这类长驻、高并发的服务上确实有说服力;三是第三方技术博客和社区讨论开始把它和 MinIO 并列对比,说明它进了"备选清单"而不是"玩具"。

需要泼的冷水是:star 不等于生产采用。真正衡量它行不行的,是你自己 workloads 上的跑分、踩坑时搜不搜得到答案、以及出问题有没有人响应。这些要用前面那套 s3-tests 加真实流量灰度来验证,而不是看趋势图。

收尾:给你一个决策清单

如果你正在选型,按这个顺序自检:

  1. 是否需要自托管、掌控数据、对成本敏感?否 → 直接看托管 S3。
  2. 是否担心 AGPL 带来的商业风险?是 → Apache 2.0 的 RustFS 比 MinIO 省一层法务。
  3. 主要负载是大批小对象写入、数据湖、备份?是 → 值得测一版。

仓库在这里:github.com/rustfs/rust... 。先把第六节的 docker run 做了,比看十篇对比文都实在。

相关推荐
Conan在掘金1 小时前
鸿蒙 7.0 空间音频引擎:AudioSpatializationManager 空间渲染——立体声场根因
后端
会编程的吕洞宾1 小时前
Spring Boot 虚拟线程实战:从原理到生产环境
java·后端·spring
Conan在掘金1 小时前
鸿蒙 7.0 超丝滑方舟引擎:springMotion 物理弹簧动画——真实回弹手感根因
后端
程序员cxuan1 小时前
Codex 接入 DeepSeek-V4-Flash,丝滑的一批
人工智能·后端·程序员
黑桃小柒71 小时前
Prompt 工程的“断舍离“:如何用更少的词让 AI Agent 更聪明
java·后端·spring
Conan在掘金1 小时前
鸿蒙 7.0 星河互联:分布式设备发现 + 跨设备拖放——碰一碰精准分享根因
后端
chenzhou__2 小时前
独立游戏开发日志 ①:从信号博弈到涂色对战——一次玩法重构始
笔记·后端·学习·unity·go·独立游戏
CodeSheep2 小时前
hvv员工家属爆料:老公22年入职的,普通员工,老是被误以为高薪多奖金,实际上还没配股,暂时钱没存多少,我倒是很心疼他工作辛苦。
前端·后端·程序员