认识RustFS —— 用Rust重写的S3对象存储,1.0正式版刚刚发布
先看一组让人血压升高的数字。
某能源央企原来用 50 台 x86 服务器跑 MinIO 集群,年维保费用高得离谱,还过不了信创国产化验收。换成 RustFS 之后,12 台鲲鹏服务器就撑起了原有业务,维保费用直降 80% 以上,顺顺利利通过验收。
再看看另一头:2021 年 MinIO 把许可证从 Apache 2.0 换成 AGPL v3。这一换,所有把对象存储嵌进自有产品里卖的厂商、所有做托管对象存储的云厂商、所有改过源码不想公开的公司,法务那边全亮了红灯。有人掏钱买商业授权,有人开始满世界找替代品。
一个存储系统的许可证变更,能让整个行业重新洗牌——这就是开源的权力游戏,也是 RustFS 存在的全部理由。
而就在今天,2026 年 9 月 16 日,RustFS 放出了 1.0.0 正式版(GA)。距离上一个候选版 1.0.0-rc.6(9 月 11 日)只隔了 5 天,最后这 5 天里合进了 190+ 个 PR。三年长跑,从 alpha 一路跌跌撞撞走到 GA,作者自己都说"GA 不是终点,是可靠性承诺兑现的起点"。
什么是 RustFS
RustFS 是一个用 Rust 从零重写的开源分布式对象存储系统,100% 兼容 Amazon S3 API,Apache 2.0 协议,主打 AI 数据中心、数据湖和海量非结构化数据场景。
如果你用过 AWS S3 或 MinIO,它的操作模型你完全不用学——同样的 SDK、同样的 mc 命令行、同样的集成姿势。官方 README 里那句 slogan 相当嚣张:
🚀 2.3x faster than MinIO for 4KB object payloads.
翻译成人话:在 4KB 小对象场景下,吞吐大约是 MinIO 的 2.3 倍。
几个硬指标(截至 2026 年 9 月 16 日):
- 最新版本:
1.0.0(GA,2026-09-16 发布),此前是1.0.0-rc.6(09-11)、rc.5(09-02)、rc.4(08-28)、rc.3(08-21)、rc.2(08-14)——一个多月憋了 6 个 RC,冲刺节奏很凶 - GitHub Star:3.2 万+,贡献者 167 人,提交 6700+ 次
- 许可证:Apache 2.0,永久开源(团队公开承诺过)
- 官宣全球实例数:270 万+
- 开发语言:Rust,编译期所有权检查,没有 GC
为什么是 Rust
这是 RustFS 最值得说的一点,也是它和 MinIO(Go 写的)、Ceph(C++ 写的)最本质的分野。
Go 有垃圾回收。负载一上来,GC 一跑就是 stop-the-world,延迟毫无征兆地抖一下——对存储这种"可靠性就是命"的系统,这种抖动是致命的。Rust 靠编译期的所有权规则管内存,没有 GC,就没有 GC 尖刺;缓冲区溢出、use-after-free、空指针解引用这些,编译器直接给你拦在发布之前。
有 Reddit 用户实测完两家的总结很传神:
"如果你有怪兽级 CPU,RustFS 和 MinIO 基本打平。但硬件一弱,RustFS 明显赢——这大概就是 Rust 的魔法吧。"
硬件越寒酸,RustFS 的优势越明显。 边缘设备、老服务器、便宜云主机,这套逻辑直接成立。
核心架构:四个平面撑起一个集群
官方把能力拆成七个"平面",理解起来其实就四层:
- 数据平面 —— 纠删码(RS/EC):Reed-Solomon 算法,可配 EC 8+4 这类拓扑,把 3 副本的冗余成本压到 1.2 左右,同时保证盘坏了能自愈。1.0.0 里大量工作就砸在这:MRF(修复记录框架)提交快照写入器、可持久重放的检查点、EC8+4 重启后的分片重建语义——全是"盘炸了怎么把数据捞回来"的硬功夫。
- 集群平面 —— MNMD 分布式部署:多节点多盘(Multi-Node Multi-Drive),无元数据中心节点,水平/垂直双向扩展,没有单点故障。这点跟 MinIO 的哲学一致——没有元数据协调者可以挂。
- 池平面 —— 动态编排:
rebalance()支持节点动态加入退出、数据自动重分布、扩容退役不中断业务。 - 访问平面 —— 多协议:S3 为核心,AWS SDK 原样可用,
mc等 MinIO 工具链直接复用。 - 信任平面 —— IAM/KMS:SSE-S3、SSE-C、SSE-KMS 服务端加密,可对接 HashiCorp Vault 管密钥,支持 TLS。
- 运维平面 —— 可观测:OpenTelemetry 链路追踪、Prometheus 指标、健康检查端点。
- 运行时平面 —— 云原生:Helm Chart 一键上 K8s,Operator 管租户和生命周期。
核心特点
- 4KB 小对象快 2.3 倍:官方口径,IoT 遥测、日志、缩略图库这类小文件海量场景收益最直接——小对象场景下单次操作开销占主导,Rust 的效率优势会成倍放大。
- Apache 2.0,商业友好:没有 copyleft,没有源码披露义务,想改想卖想闭源随你。这是它狙击 MinIO AGPL v3 的第一杀器。
- MinIO 原地替换(drop-in):官方支持直接换二进制或容器镜像完成原地迁移,桶元数据、对象标签、对象锁定、版本控制、桶复制、IAM、生命周期管理都能读,PB 级数据不用搬来搬去。
- 完整的 S3 能力矩阵:版本控制、WORM 合规、服务端加密、桶复制、生命周期与分层(ILM/Tiering)、纠删码——企业选型的 checklist 基本勾满。
- 无 GC 的延迟一致性:没有 stop-the-world,P99 延迟曲线比 Go 系平滑,弱硬件上优势尤其明显。
- 内存安全:编译期拦掉整类内存漏洞,对要过等保、过信创验收的场景是加分项。
- AI 与 Agent 原生:已加入 NVIDIA Inception 计划,正在做原生 RDMA 支持,并把纠删码和数据加密卸载到下一代 DPU;roadmap 上还有 GPU Direct Storage 和 WebDAV。1.0.0 的 CI 里甚至出现了 S3 Tables(Iceberg REST Catalog) 功能套件——它想当 AI 数据中心那块存储基石,野心不小。
- 可观测性留在本机:官方强调"no foreign logging",遥测和日志不出你的控制边界。这点对信创和合规场景其实很关键。
RustFS 不是"又一个 MinIO 克隆"。它是用 Rust 把 MinIO 的设计哲学重做一遍,顺手把许可证、GC 抖动和内存安全这三件事一起解决掉。
谁在用:真实案例,带硬数据
需要说明的是,RustFS 没有像商业厂商那样挂一墙客户 Logo,公开案例多来自社区、媒体和技术博主的一线记录——但数字都挺实在:
- 某能源央企(信创替代):原 50 台 x86 服务器跑 MinIO 集群,年维保费用极高且过不了信创验收。换 RustFS 后仅用 12 台鲲鹏服务器承载原有业务,硬件成本砍掉大半,维保费用下降 80% 以上,数据恢复速度明显提升,业务中断时间极短,顺利通过信创国产化验收。
- 某自动驾驶企业(AI 训练):用 RustFS 存 PB 级大模型训练数据,GPU 利用率从 50% 多提升到 90% 左右,训练周期大幅缩短。GPU 在那儿空转等数据,是 AI 训练最贵的浪费。
- 某自动化码头(边缘场景):5 台工业级边缘服务器组集群,替代原有 FC SAN + Windows 文件共享。结果:AGV 调度成功率 95% → 99.97%,数据同步延迟 32 秒 → 48ms,年故障停机 48 小时 → 1.2 小时,年维护成本 1200 万元 → 180 万元,存储利用率 42% → 89%。改造周期 60 天,累计业务中断不到 2 小时。
- 某电商成长型团队:30 人技术团队、1 名专职运维,日均订单数据 500GB,原 MinIO 高峰期卡顿。用 Operator 一键部署 3 节点集群,针对"写多读少"把分片调到 64MB,写入性能提升 40%。结果是 1 名运维即可维护,集群稳定运行 6 个月无故障,业务增长 3 倍(日均 500GB → 1.5TB)。
社区里还有第三方压测对比(A100 ×8、万兆网、3 节点集群)加载 100GB 训练数据:RustFS 8 分 23 秒,MinIO 12 分 47 秒,Ceph 21 分 15 秒。
但有句实话必须说
我向来不喜欢只讲好话。RustFS 现在有两条硬伤你得知道:
- 大文件顺序读还打不过 MinIO。2025 年中的一次社区压测(GitHub Issue #73,4 节点集群、20MiB 对象)显示:MinIO 约 53 Gbps 吞吐 / 24ms 首字节,RustFS 约 23 Gbps / 260ms。写入性能两者接近,差距集中在特定大文件读模式上,官方已把它列进 roadmap。
- 成熟度时间还不够。MinIO 从 2014 年就在生产环境跑,Stack Overflow 上问题成堆、文档成山、有商业 SLA。RustFS 从 2023 年才起步,1.0.0 是今天才发的。大规模集群、超高压场景的稳定性,还需要更多真实时间来验证。
我的建议:新项目、中小规模、信创场景、小对象密集、或者被 AGPL 卡住脖子的——现在就可以认真评估。核心业务、PB 级存量、零容错、要厂商背书的——先压测、先灰度、先演练故障恢复,别拿核心数据赌一个刚满月的 1.0。
初体验:一条 Docker 命令跑起来
想亲手摸一下,最快就是 Docker。官方文档给出的标准姿势:
# 拉镜像
docker pull rustfs/rustfs:latest
# 建个持久化卷,换容器数据不丢
docker volume create rustfs-data
# 起服务
docker run -d \
--name rustfs \
--restart unless-stopped \
-p 9000:9000 \
-p 9001:9001 \
-v rustfs-data:/data \
-e RUSTFS_ACCESS_KEY="<your-access-key>" \
-e RUSTFS_SECRET_KEY="<your-secret-key>" \
-e RUSTFS_ADDRESS=":9000" \
-e RUSTFS_CONSOLE_ADDRESS=":9001" \
-e RUSTFS_CONSOLE_ENABLE=true \
-e RUSTFS_OBS_LOGGER_LEVEL=error \
-e RUSTFS_OBS_LOG_DIRECTORY="/var/log/rustfs/" \
rustfs/rustfs:latest \
/data
# 验证一下
curl --fail http://localhost:9000/health几个新手必踩的坑,提前说:
- 9000 是 S3 API 端口,9001 是控制台端口。浏览器打开
http://localhost:9001,用上面设的 access key 登录。 - 别用
rustfsadmin这种默认值当密码。用openssl rand -base64 24生成一把强密钥。 - 挂宿主机目录会权限报错。容器以非 root 用户
rustfs(uid10001)运行,挂目录前先chown -R 10001:10001 /path/to/dir。 - 上生产前:用多节点架构、开 TLS、配日志轮转、定备份策略。
多节点也简单,每个节点上跑(Docker 默认 bridge 网络不支持多节点,要 --network host):
docker run -d \
--name rustfs \
--network host \
-v /mnt/rustfs/data:/data \
-e RUSTFS_ACCESS_KEY="<your-access-key>" \
-e RUSTFS_SECRET_KEY="<your-secret-key>" \
-e RUSTFS_ADDRESS=":9000" \
-e RUSTFS_CONSOLE_ADDRESS=":9001" \
-e RUSTFS_CONSOLE_ENABLE=true \
-e RUSTFS_VOLUMES="http://node{1...4}:9000/data/rustfs{0...3}" \
rustfs/rustfs:latest如果你想一步到位玩全套可观测(Grafana + Prometheus + OTel Collector + Jaeger),官方仓库里带了 compose 文件:
git clone https://github.com/rustfs/rustfs.git
cd rustfs
docker compose --profile observability up -dK8s 用户直接 helm install 或上 Operator,官方文档都有。想深抠就看 docs.rustfs.com,觉得有意思的话顺手给 rustfs/rustfs 点个 Star——167 个贡献者里,下一个可能就是你。
入门别贪多:先把它当成"免费用、不用改代码、还能原地换掉 MinIO 的 S3"来用。等吃透了纠删码拓扑和池编排,再谈替换核心存储。
进阶
更多开源技术干货和学习资料,关注公众号「遇码」,领取专属福利。
