在自己的机器上复现 RustFS 性能基准:warp 压测实操

2026-07-17 RustFS 发了 1.0.0-beta.10,官方 warp 压测里 PUT 在 4MiB 对象上跑出 2.85× 于 MinIO。我看到这种数字第一反应是:我的机器能复现吗?还是只在 Azure 那套 4 节点 × 4 盘、32000 IOPS 的 NVMe 配置上才成立?这篇就讲怎么在你自己机器上把这套基准跑出来,以及哪些数字你能信、哪些得打折。

先把官方的测试环境摊开

复现前先对齐条件,不然数字没法比。beta.10 的压测环境是:

  • 4 节点 × 4 盘,每盘 300GB,单盘 32000 IOPS,Ubuntu 24.04,8 vCPU / 16GB RAM,跑在 Azure 上;
  • 用 MinIO 开源的 warp 工具,11 个对象尺寸、64 并发客户端、每轮跑 5 分钟,覆盖 GET / PUT / Mixed 三个阶段;
  • 对比对象是 MinIO RELEASE.2026-06-06,RustFS 是 1.0.0-beta.10(git tag 一致可查)。

一个中性提醒:绝对吞吐高度依赖磁盘 IOPS 和网络。你本地若是单盘 SATA 或云盘,绝对数值会低一大截,但 RustFS 相对 MinIO 的趋势通常能复现------这篇关心的是趋势,不是把官方数字当 SLA。

起一套最小可压测的 RustFS

单节点多盘(SNSD)就够跑出相对差异。注意 beta.10 起已经废弃 rustfsadmin 硬编码默认口令,必须显式设置访问密钥:

bash 复制代码
export RUSTFS_ACCESS_KEY="rustfstest"
export RUSTFS_SECRET_KEY="a-strong-secret-you-set"   # beta.10 起必须显式设置
export RUSTFS_VOLUMES="http://localhost:9000/data/rustfs{1...4}/mnmd"
export RUSTFS_ADDRESS=":9000"
rustfs server /data

如果你手上有 4 台机器,把上面 localhost 换成 rustfs-node{1...4} 就是分布式布局,和官方拓扑对齐。起完用 rc 探一下活:

bash 复制代码
rc alias set local http://localhost:9000 rustfstest rustfstest
rc mb local/bench
rc ls local

用 warp 把 PUT / GET / Mixed 三轮跑出来

warp 是 MinIO 家的开源压测工具,对 RustFS 同样适用(S3 兼容的好处就在这)。三个最实用的子命令:

bash 复制代码
warp put --host=http://localhost:9000 \
  --access-key=rustfstest --secret-key=rustfstest \
  --objects=10000 --obj.size=4KiB --concurrent=64 --duration=5m

warp get --host=http://localhost:9000 \
  --access-key=rustfstest --secret-key=rustfstest \
  --objects=10000 --obj.size=1MiB --concurrent=64 --duration=5m

warp mixed --host=http://localhost:9000 \
  --access-key=rustfstest --secret-key=rustfstest \
  --objects=10000 --obj.size=4MiB --concurrent=64 --duration=5m

跑完 warp 会给出各尺寸的 obj/s 和延迟。把不同 --obj.size 串起来,就能画出你机器上的「尺寸---吞吐」曲线。

读数字要诚实:PUT 全胜,GET 有区间

官方 beta.10 的 PUT 结果是 RustFS 在全部 11 个尺寸上胜出,4MiB 那档达到 2.85×。但 GET 不能一口咬定「RustFS 更快」------这张表才是完整的真相:

  • 小对象(1KiB--16KiB)和大于 4MiB 的大对象,RustFS 反超;
  • 100KiB--1MiB 中段 MinIO 暂时占优,其中 1MiB GET RustFS 只有 MinIO 的约 0.23×(差距最大)。

所以如果你的负载是「读多写少 + 中段尺寸为主」,别只看上面的 PUT 数字,自己用真实样本扫一遍再下结论。这也是为什么我强调要在你自己的机器上跑------官方曲线是 Azure 那套硬件的,你的硬件会平移、但形状大体不变。

收尾:你也能照做的复现清单

想验证 RustFS 的吞吐宣称,按这个顺序:

  1. 用上面的 RUSTFS_VOLUMES 展开写法起一套分布式(或单节点多盘),用 rc 确认能建桶列桶;
  2. warp put/get/mixed 各跑一遍,尺寸至少覆盖 4KiB / 1MiB / 4MiB 三档;
  3. 同期起一套同硬件 MinIO(同样 4×4 盘、同样 warp 参数)做对照,算出每档的比值;
  4. 重点看 PUT 是否全面领先、GET 中段是否仍落后,把比值存成基线再决定全量切换。

RustFS 把「Rust 写存储、S3 兼容、Apache 2.0」三件事捏到一起,性能故事的可信度不靠口号,靠你能不能在自己的机器上复现。仓库在这:https://github.com/rustfs/rustfs 。先照上面四步走一遍,比看十篇对比稿都实在。

以下是深入学习 RustFS 的推荐资源:RustFS

官方文档: RustFS 官方文档 - 提供架构、安装指南和 API 参考。

GitHub 仓库: GitHub 仓库 - 获取源代码、提交问题或贡献代码。

社区支持: GitHub Discussions - 与开发者交流经验和解决方案。

意见反馈:GitHub Issues

相关推荐
a1117761 小时前
模仿刀剑神域风格 作品集网页
前端·开源
a1117761 小时前
Elemental Sandbox(元素沙盒)-Three.js 游戏技能特效
前端·开源
小小龙学IT1 小时前
Dear ImGui 开源即时模式 GUI 库深度解析
c++·ui·开源
网安小学生(兼顾数据库版)1 小时前
Mend SCA 实操指南:使用 Mend CLI 进行开源组件安全扫描
安全·开源
niyesd3 小时前
Kubernetes Pod 管理
云原生·容器·kubernetes
小小龙学IT3 小时前
Abseil 开源 C++ 公共库深度解析:从 SwissTable 到 Status 的 Google 工程实践
c++·开源
高卧怡怡3 小时前
Kubernetes的控制器实验
云原生·容器·kubernetes
孔明click334 小时前
不想写代码,但想要集成一个登录页面?Sa-Token-Quick-Login 帮你实现!
java·sa-token·开源·springboot·登录·权限·权限认证
腾讯数据架构师4 小时前
摩尔线程 GPU 怎么接入 Kubernetes 跑 DeepSeek?CubeStudio 摩尔线程(MUSA)适配实操
人工智能·云原生·容器·kubernetes·开源·mlops·maas