

有一支团队在 2026 年 3 月把一个跑了多年的生产对象存储从 MinIO 迁到了 RustFS,数据量 12.4TB、4700 万个对象,单周末切完。他们公开了迁移前后在同一套硬件上的实测数字。我把它拆开看,不是想证明谁赢,而是想弄明白:对一个已经在用 MinIO 的团队,换成 RustFS 到底改了什么、收益落在哪、代价又是什么。结论先放这------写路径和运维开销的改善是真金白银,协议层面几乎零改动。
起点:一套跑得好好的 MinIO 为什么要动
他们从 2020 年就在用 MinIO,单二进制、S3 兼容、CI 产物和 ML 模型仓库都挂在上面。触发迁移的不是它"坏了",而是两件事叠加:一是新业务线要做托管服务、要把对象存储嵌进去,法务对 AGPLv3 的传染性亮了红灯;二是 2026 年 1 月一次批量写入里,Go 的 GC 停顿把 checkpoint 写入的重试逻辑拖超时,作业失败。单看都不是事故,但加在一起,让人重新评估"存储引擎的语言Runtime"这件事。
RustFS 进入视野,是因为它同样单二进制、同样 S3 兼容、Apache 2.0 许可、用 Rust 写没有 GC 停顿。对这支团队来说,迁移的卖点不是"换个牌子",是"同样的运维模型,不同的底层语言,更宽松的许可"。
迁移路径:标准 S3-to-S3,先全量再增量
拓扑是 4 节点 MinIO(纠删码 4+2)迁到 4 节点 RustFS,硬件完全对齐:32 vCPU / 64GB / NVMe,节点间 25Gbps。RustFS 这边用同一套纠删码布局,把节点端点写进同一个 RUSTFS_VOLUMES 就能拉起分布式:
bash
export RUSTFS_ACCESS_KEY="rustfstest"
export RUSTFS_SECRET_KEY="a-strong-secret-you-set"
export RUSTFS_VOLUMES="http://rustfs-node{1...4}:9000/data/rustfs{1...4}/mnmd"
export RUSTFS_ADDRESS=":9000"
export RUSTFS_CONSOLE_ENABLE=true
rustfs server /data
数据搬迁走标准 S3 到 S3 的同步。社区里常见的两条路:一条是 rclone 配两个 S3 remote 直接 sync;另一条是 MinIO 的 mc mirror,先 --watch 做全量,再追增量,最后只读窗口切流。一个中性提醒:切换前务必先 mc diff 校验两端对象一致,并保留 MinIO 侧只读副本一段时间作为回滚兜底,不要一刀切。

实测数字:写路径和运维开销改善明显
同一套硬件、同一样本,迁移前后对照(来源:该团队公开的 12TB 迁移报告):

- PUT 吞吐(4KB 对象) :2.88 MiB/s → 6.1 MiB/s,约 +112%;
- P99 写延迟(4KB) :330 ms → 77 ms,约 −77%;
- 空载常驻内存 :约 300 MB → 约 95 MB,约 −68%;
- 二进制体积 :320 MB → 93 MB,约 −71%;
- 许可证 :AGPLv3 → Apache 2.0,法务那道红线直接消除。
这几个数字的方向很一致:Rust 没有 GC 停顿、内存自管,写密集和小对象场景的延迟与常驻开销都下来了。对一个写多、对象多的 AI 训练/CI 场景,这套收益是实打实能感知的。
读路径我得说句公道话:官方 beta.10 基准里,RustFS 在小对象(1KiB--16KiB)和大于 4MiB 的大对象段已经反超 MinIO,但 100KiB--1MiB 中段 MinIO 暂时还占优,读优化仍在持续进行。所以如果你的负载是"读多写少 + 中段尺寸为主",别只看上面的 PUT 数字,自己用真实样本扫一遍再下结论。
切流与回滚:把风险关进窗口里
他们实际做法是:周五夜里先全量同步,周末业务低峰做只读窗口,把写入切到 RustFS,MinIO 保留只读副本。切完后用 mc diff 跑一致性校验,观察一个业务周期无异常再下线旧集群。整个过程没有"停服大迁移",是渐进式切流。
一个值得记下的边界:MinIO 的 mc、AWS CLI、各语言 SDK 这套工具链在 RustFS 侧基本零改动复用------S3 兼容的真价值在这里才显出来,存量代码不用重写,运维习惯不用重学。
收尾:你也能照做的迁移清单
如果你在评估从 MinIO 迁到 RustFS,按这个顺序来:
- 先在等价硬件起一套 RustFS(用上面的
RUSTFS_VOLUMES展开写法拉起分布式),用s3-tests验一遍兼容性,把失败项记下来; rclone或mc mirror --watch做全量 + 增量同步,期间业务照常跑 MinIO;- 选低峰窗口切只读、校验
mc diff一致,保留旧集群只读副本做回滚; - 用
warp对你的典型对象尺寸扫一遍 PUT/GET,存好基线再决定全量切换。
RustFS 把"Rust 写存储、S3 兼容、Apache 2.0"三件事捏到一起,对已经被 AGPL 许可或 GC 停顿卡住的团队,是个低摩擦的替代路线。仓库在这:https://github.com/rustfs/rustfs 。先按上面四步验一遍,比看十篇对比稿都实在。
以下是深入学习 RustFS 的推荐资源:RustFS
官方文档: RustFS 官方文档- 提供架构、安装指南和 API 参考。
GitHub 仓库: GitHub 仓库 - 获取源代码、提交问题或贡献代码。
社区支持: GitHub Discussions- 与开发者交流经验和解决方案。
意见反馈:GitHub Issues