开源协议:Apache-2.0
GitHub Stars:26.5K+(开源半年即突破20K,史上增长最快的分布式对象存储项目)
核心定位:基于Rust的新一代高性能S3兼容分布式对象存储系统
一、项目概述
RustFS 是一款用Rust语言编写的高性能分布式对象存储系统,它将MinIO的简洁易用与Rust的内存安全和极致性能完美结合,提供完整的S3 API兼容性,支持与MinIO、Ceph等平台的无缝迁移与共存。该项目于2025年7月正式开源,开源首月即狂揽7000+ Star,登顶GitHub Trending榜首,半年内Star数突破20,000,成为国产开源存储领域现象级项目。
RustFS的核心使命是为数据湖、AI和大数据工作负载提供极致性能的对象存储解决方案。与MinIO不同,RustFS采用宽松的Apache 2.0协议,无遥测数据上传,确保数据主权合规,特别适合对数据安全和性能有极高要求的企业场景。
二、核心特性解读
2.1 极致性能
RustFS基于Rust语言构建,充分利用Rust的零成本抽象和内存安全保证:
- 4KB小对象场景:性能比MinIO快2.3倍
- 高吞吐大文件:优化的I/O调度与零拷贝路径
- 低延迟:无GC停顿,响应时间稳定可预测
- 资源效率:相同负载下内存占用更低
2.2 完整S3兼容
| S3功能 | 支持状态 | 说明 |
|---|---|---|
| S3核心功能 | ✅ 已支持 | 完整的S3 API兼容 |
| 上传/下载 | ✅ 已支持 | 分片上传、断点续传 |
| 版本控制 | ✅ 已支持 | 对象版本管理 |
| 日志记录 | ✅ 已支持 | 访问日志审计 |
| 事件通知 | ✅ 已支持 | Webhook/SQS通知 |
| Bucket复制 | ✅ 已支持 | 跨站点数据同步 |
| Bitrot保护 | ✅ 已支持 | 数据完整性校验 |
| 多租户 | ✅ 已支持 | 租户隔离与权限控制 |
| 生命周期管理 | 🚧 测试中 | 自动数据归档/删除 |
| 分布式模式 | 🚧 测试中 | 多节点集群部署 |
2.3 OpenStack Swift API支持
- 原生支持Swift协议
- 集成Keystone认证(X-Auth-Token)
- 兼容现有OpenStack基础设施
2.4 数据主权与合规
| 维度 | RustFS | MinIO |
|---|---|---|
| 开源协议 | Apache 2.0(宽松) | AGPL v3(限制性强) |
| 遥测数据 | 零遥测,无数据上传 | 存在遥测数据收集 |
| 合规性 | GDPR/CCPA/APPI合规 | 存在跨境数据风险 |
| 商业使用 | 无IP污染风险 | AGPL"毒丸条款"风险 |
2.5 强大的管理控制台
RustFS提供功能丰富的Web管理控制台(TypeScript编写,3.5万行代码),支持:
- Bucket创建与管理
- 用户与权限配置
- 数据监控与审计
- 可视化存储分析
2.6 云原生部署支持
- Kubernetes Helm Charts:一键部署到K8s集群
- Docker/Podman:容器化部署
- 可观测性:集成Prometheus + Grafana + Jaeger监控栈
三、性能对比
3.1 压测环境
| 参数 | 配置 |
|---|---|
| CPU | 2核 Intel Xeon (Sapphire Rapids) Platinum 8475B |
| 内存 | 4GB |
| 网络 | 15Gbps |
| 磁盘 | 40GB x 4(IOPS 3800/盘) |
3.2 RustFS vs MinIO vs Ceph
| 对比维度 | RustFS | MinIO | Ceph |
|---|---|---|---|
| 编程语言 | Rust(内存安全) | Go(GC停顿) | C++(复杂运维) |
| 小对象性能 | 极优(2.3x MinIO) | 良好 | 一般 |
| 部署复杂度 | 极简 | 简单 | 复杂 |
| S3兼容性 | 100% | 100% | 通过RADOS Gateway |
| 开源协议 | Apache 2.0 | AGPL v3 | LGPL |
| 边缘/IoT | 强支持 | 一般 | 不适合 |
| 管理控制台 | 功能强大 | 基础 | 需第三方 |
| 社区活跃度 | 极高(增速最快) | 高 | 高 |
四、部署指南
4.1 一键脚本安装(最简单)
curl -O https://rustfs.com/install_rustfs.sh && bash install_rustfs.sh
4.2 Docker快速部署(推荐)
单节点模式:
# 创建数据和日志目录
mkdir -p data logs
# 设置目录权限(RustFS容器以UID 10001运行)
chown -R 10001:10001 data logs
# 启动RustFS容器
docker run -d \
-p 9000:9000 \
-p 9001:9001 \
-v $(pwd)/data:/data \
-v $(pwd)/logs:/logs \
rustfs/rustfs:latest
启动后:
http://localhost:9000→ S3 API端点http://localhost:9001→ Web管理控制台
使用Docker Compose(含监控栈):
# 克隆仓库
git clone https://github.com/rustfs/rustfs.git
cd rustfs
# 启动完整服务栈(含Prometheus/Grafana/Jaeger)
docker compose --profile observability up -d
4.3 Podman部署
mkdir -p data logs
podman run -d \
-p 9000:9000 \
-p 9001:9001 \
-v $(pwd)/data:/data:Z,U \
-v $(pwd)/logs:/logs:Z,U \
rustfs/rustfs:latest
4.4 Kubernetes部署(Helm)
# 添加RustFS Helm仓库
helm repo add rustfs https://rustfs.github.io/rustfs
# 安装RustFS
helm install rustfs rustfs/rustfs --namespace rustfs --create-namespace
4.5 从源码构建(高级用户)
# 克隆仓库
git clone https://github.com/rustfs/rustfs.git
cd rustfs
# 构建多架构镜像
./docker-buildx.sh --build-arg RELEASE=latest
# 或使用Make
make docker-buildx
五、快速上手实战
5.1 访问管理控制台
启动RustFS后,在浏览器中打开 http://localhost:9001,使用默认凭据登录:
- 用户名:
rustfsadmin - 密码:
rustfsadmin
5.2 使用AWS CLI操作
# 配置AWS CLI
aws configure set aws_access_key_id rustfsadmin
aws configure set aws_secret_access_key rustfsadmin
aws configure set default.region us-east-1
# 创建Bucket
aws --endpoint-url http://localhost:9000 s3 mb s3://my-bucket
# 上传文件
aws --endpoint-url http://localhost:9000 s3 cp ./myfile.txt s3://my-bucket/
# 下载文件
aws --endpoint-url http://localhost:9000 s3 cp s3://my-bucket/myfile.txt ./downloaded.txt
# 列出所有Bucket
aws --endpoint-url http://localhost:9000 s3 ls
5.3 使用S3 SDK(Python示例)
import boto3
# 创建S3客户端
s3 = boto3.client(
's3',
endpoint_url='http://localhost:9000',
aws_access_key_id='rustfsadmin',
aws_secret_access_key='rustfsadmin',
region_name='us-east-1'
)
# 创建Bucket
s3.create_bucket(Bucket='my-data-lake')
# 上传对象
s3.put_object(Bucket='my-data-lake', Key='data/report.csv', Body=open('report.csv', 'rb'))
# 列出对象
response = s3.list_objects_v2(Bucket='my-data-lake')
for obj in response.get('Contents', []):
print(obj['Key'], obj['Size'])
5.4 配置Webhook事件通知
docker run -d --name rustfs \
-p 9000:9000 \
-e RUSTFS_NOTIFY_ENABLE=true \
-e RUSTFS_NOTIFY_WEBHOOK_ENABLE_PRIMARY=on \
-e RUSTFS_NOTIFY_WEBHOOK_ENDPOINT_PRIMARY=http://your-server:3020/webhook \
-e RUSTFS_NOTIFY_WEBHOOK_QUEUE_DIR_PRIMARY=/tmp/rustfs-events \
rustfs/rustfs:latest
5.5 启用TLS加密
# 准备证书目录
mkdir -p certs
chown -R 10001:10001 certs
# 将证书文件放入certs目录后启动
docker run -d \
-p 9000:9000 -p 9001:9001 \
-v $(pwd)/data:/data \
-v $(pwd)/logs:/logs \
-v $(pwd)/certs:/opt/tls \
-e RUSTFS_TLS_PATH=/opt/tls \
rustfs/rustfs:latest
六、应用场景
| 场景 | 解决方案 | 价值 |
|---|---|---|
| AI数据湖 | 替代MinIO作为模型训练数据存储 | 小对象性能提升2.3倍 |
| 边缘存储 | 部署在边缘网关进行数据缓存 | 轻量级、低资源占用 |
| 企业网盘 | S3兼容的私有文件存储 | Apache 2.0无协议风险 |
| 备份归档 | 大规模数据备份与生命周期管理 | Bitrot保护确保数据完整 |
| 容器镜像仓库 | 作为Harbor/Registry后端存储 | 高吞吐、低延迟 |
| OpenStack集成 | Swift API兼容替代Swift后端 | Keystone认证无缝对接 |
七、社区与生态
- 官方网站:https://rustfs.com
- GitHub仓库:https://github.com/rustfs/rustfs
- 中文文档:README_ZH.md
- 架构文档:ARCHITECTURE.md
- 安全公告:SECURITY.md
- 贡献指南:CONTRIBUTING.md
- Docker镜像:Docker Hub - rustfs/rustfs
- Helm Charts:rustfs/rustfs
八、总结
RustFS作为2025年GitHub上增长最快的开源分布式对象存储项目,凭借其Rust极致性能、100% S3兼容、Apache 2.0宽松协议、零遥测数据主权四大核心优势,正在成为MinIO的有力替代者和企业级对象存储的新选择。
无论是AI数据湖、边缘计算、企业网盘还是OpenStack集成,RustFS都提供了成熟且高性能的解决方案。对于关注数据主权、协议合规和极致性能的团队来说,RustFS是目前最值得关注的国产开源存储项目。
立即体验:访问 https://github.com/rustfs/rustfs 获取源码,或执行
curl -O https://rustfs.com/install_rustfs.sh && bash install_rustfs.sh一键安装。