在自己的机器上复现 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

相关推荐
caoerzhong8 小时前
JeeWMS 开源仓库管理系统 GPL-3.0 合规指南:Java WMS 二次开发前必须弄清的授权边界
java·开发语言·开源·vue
河南三丰环保设备有限公司8 小时前
炼油设备技术学习难度大吗
开源
探索云原生10 小时前
KubeClipper 1.7.0 发布:Operation 优化与 Kubernetes 1.37 支持
linux·docker·云原生·kubernetes·go
m4Rk_12 小时前
【论文阅读】Agent 记忆机制(67):MemPO——用记忆级信用分配训练 Agent 主动管理长程上下文
论文阅读·人工智能·学习·开源·github
hoaxxcj12 小时前
DeepSeek Harness 本地部署与第三方插件排障实录:从 fetch failed 到 preset not found
人工智能·windows·开源·ai agent·deepseek
parksben13 小时前
OpenSider:让浏览器驱动 Agent
开源·github·agent
程序员老赵13 小时前
Docker 部署填鸭表单完整教程:搭建私有化问卷与表单收集平台
前端·docker·开源
Rudon滨海渔村13 小时前
免费开源的Web版windows画图软件 - 简单画画 - js Paint
开源·画图·ms·画画
mmsx14 小时前
MapLibre 实战 11|用户说"我的地块丢了":一个 sealed class 图层模型,和四个让我重构三版的坑
android·前端·开源
MrSYJ14 小时前
Veth pair 细讲
docker·云原生·容器