Skip to content

认识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 现在有两条硬伤你得知道:

  1. 大文件顺序读还打不过 MinIO。2025 年中的一次社区压测(GitHub Issue #73,4 节点集群、20MiB 对象)显示:MinIO 约 53 Gbps 吞吐 / 24ms 首字节,RustFS 约 23 Gbps / 260ms。写入性能两者接近,差距集中在特定大文件读模式上,官方已把它列进 roadmap。
  2. 成熟度时间还不够。MinIO 从 2014 年就在生产环境跑,Stack Overflow 上问题成堆、文档成山、有商业 SLA。RustFS 从 2023 年才起步,1.0.0 是今天才发的。大规模集群、超高压场景的稳定性,还需要更多真实时间来验证。

我的建议:新项目、中小规模、信创场景、小对象密集、或者被 AGPL 卡住脖子的——现在就可以认真评估。核心业务、PB 级存量、零容错、要厂商背书的——先压测、先灰度、先演练故障恢复,别拿核心数据赌一个刚满月的 1.0。

初体验:一条 Docker 命令跑起来

想亲手摸一下,最快就是 Docker。官方文档给出的标准姿势:

bash
# 拉镜像
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(uid 10001)运行,挂目录前先 chown -R 10001:10001 /path/to/dir
  • 上生产前:用多节点架构、开 TLS、配日志轮转、定备份策略。

多节点也简单,每个节点上跑(Docker 默认 bridge 网络不支持多节点,要 --network host):

bash
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 文件:

bash
git clone https://github.com/rustfs/rustfs.git
cd rustfs
docker compose --profile observability up -d

K8s 用户直接 helm install 或上 Operator,官方文档都有。想深抠就看 docs.rustfs.com,觉得有意思的话顺手给 rustfs/rustfs 点个 Star——167 个贡献者里,下一个可能就是你。

入门别贪多:先把它当成"免费用、不用改代码、还能原地换掉 MinIO 的 S3"来用。等吃透了纠删码拓扑和池编排,再谈替换核心存储。

进阶

更多开源技术干货和学习资料,关注公众号「遇码」,领取专属福利。

遇码MeetCoding 开源技术社区