一句话定位:RustFS 是面向 AI 时代、从零原生打造的高性能分布式对象存储,100% 兼容 S3 API,Apache 2.0 协议,底层用 Rust 构建,可作为 MinIO 的 drop-in 替代方案。
目录
1. 问题背景:容量不够了,加盘还是加池
2. volumes 语法基础:位置参数与省略号
3. 单节点多盘与省略号展开
4. 多池扩容:空格分隔的端点组
5. 落地注记
6. 总结与下一步
1. 问题背景:容量不够了,加盘还是加池
RustFS 跑了一阵,最常被问到的一类问题是"怎么扩容"。但扩容有两个意思:同机加几块盘(单节点多盘),还是跨机器加一组新节点(多池 / 分布式)。这两种写法都落在同一个入口——volumes——区别只是你往里填的是本地路径、还是带省略号展开的一串端点。把这套语法摸清,扩容时不用每次翻文档。下面的写法与解析规则都对照官方 CLI 参考核对过。
2. volumes 语法基础:位置参数与省略号
卷通过位置参数(或RUSTFS_VOLUMES环境变量)传入,以空格分隔。核心是{N...M}省略号展开:
# 位置参数写法 rustfs server /data/rustfs{0...3} # 等价的环境变量写法(Docker / 编排里更常用) export RUSTFS_VOLUMES="/data/rustfs{0...3}" rustfs server解析规则有三条硬约束,写错集群起不来:
- 范围格式
{N...M},N与M是十进制或十六进制正整数,且M必须大于N。
- 单个标记可以包含多个范围(例如主机范围 + 磁盘范围),所有组合都会展开。
- 单个范围最多展开为10000个条目。
Docker 镜像默认卷是
/data,不显式写 volumes 也能起,但生产环境建议把布局写清楚。几种常见写法一键对照:
3. 单节点多盘与省略号展开
单节点、多块盘是最常见的起步形态。一行省略号把四块盘都声明出来:
# 展开为 /data/rustfs0 /data/rustfs1 /data/rustfs2 /data/rustfs3 rustfs server /data/rustfs{0...3}挂载目录要让容器内的运行用户可读写。RustFS 官方镜像以非 root 身份运行,宿主目录先
chown再起容器更省事:sudo chown -R 10001:10001 /data/rustfs0 /data/rustfs1 /data/rustfs2 /data/rustfs3多节点分布式只是把路径换成带主机范围的端点,省略号同时展开主机和磁盘:
# 4 节点 × 4 盘:跨主机和跨盘双范围同时展开 rustfs server http://node{1...4}:9000/data/rustfs{0...3}4. 多池扩容:空格分隔的端点组
"池"在 RustFS 里就是一组独立的卷声明。多个池用空格分隔——每一个空格分隔的项,形成一个独立的展开组:
# 两个池:前 4 节点一组,后 4 节点一组 rustfs server http://node{1...4}:9000/data/rustfs{0...3} \ http://node{5...8}:9000/data/rustfs{0...3}走环境变量时把同样的字符串写进
RUSTFS_VOLUMES即可:export RUSTFS_VOLUMES="http://node{1...4}:9000/data/rustfs{0...3} http://node{5...8}:9000/data/rustfs{0...3}" rustfs server容量告警时先判断走哪条路:同机有空槽就加盘,跨机器才加池。
5. 落地注记
- 池布局在启动时确定:多池是"声明式"的,规划阶段就把所有池写进 volumes。已运行的单节点若要转成多池 / 分布式,需要先备份数据、按官方指引全新起集群再导入——直接往运行中的单节点追加节点不在支持范围内(官方讨论区已说明单节点与分布式数据布局不兼容)。
- 多节点凭据要显式:集群凭据全用默认值时,必须显式设置
RUSTFS_RPC_SECRET,否则节点间 RPC 验证会出问题。
- EC 容错范围:节点在纠删码容错数量内宕机,集群照常服务;换盘重启后自愈会自动重建。具体能扛几台,取决于你的 EC data/parity 配比。
- 版本边界:写作时 RustFS 最新标签是
1.0.0-rc.1(2026 年 8 月 8 日发布),仍处 RC 阶段。volumes 语法在启动期生效,与版本成熟度无关,但生产落地前固定镜像标签、先在预演集群验证更稳妥。 6. 总结与下一步
扩容写法可以很短:
1.单节点加盘→ 改大
{N...M}范围或追加本地路径,注意M > N、单范围不超 10000。2.跨机器加池→ 用空格再写一个端点组,每组各自展开。
3.运行中集群要变布局→ 先备份,全新起集群再导入,不要原地追加节点。
验证展开是否符合预期,直接看启动日志里的 volumes 解析,或用
rustfs info --all --json核对生效配置:docker exec rustfs rustfs info --all --json | grep -i volumesRustFS 的源码与 issue 都在 GitHub 上:https://github.com/rustfs/rustfs,volumes 与分布式相关的语法随版本更新,落地前以官方文档当前版本为准。
以下是深入学习 RustFS 的推荐资源:RustFS
官方文档: RustFS 官方文档- 提供架构、安装指南和 API 参考。
GitHub 仓库: GitHub 仓库 - 获取源代码、提交问题或贡献代码。
社区支持: GitHub Discussions- 与开发者交流经验和解决方案。
意见反馈:GitHub Issues