【Docker】搭建一款高性能、100% 兼容 S3 的开源分布式对象存储系统 - RustFS
前言
本教程基于飞牛系统 fnOS 0.9.35 的 Docker Compose 功能进行搭建。
简介
RustFS 是一款基于 Rust 语言开发的高性能分布式对象存储系统,定位为企业级存储解决方案,尤其适合 AI/ML、大数据、边缘计算等场景。以下是其核心特点的简要介绍:
技术特性与架构
分布式架构与弹性扩展
采用去中心化的分布式网格设计,节点间无主从角色划分,通过纠删码技术(如 8+4 配置)实现数据冗余,支持动态扩展至 EB 级存储容量。存储池可横向扩展,新节点加入时自动进行负载均衡,确保数据均匀分布。
极致性能优化
零 GC 设计:Rust 语言的内存安全特性消除了运行时垃圾回收(GC)带来的延迟抖动,实测在 4K 随机读写场景下 IOPS 达 1580K,比 MinIO 提升 42%。
异步 I/O 与零拷贝:深度集成 Linux 的
io_uring 接口,减少系统调用开销,大文件顺序写吞吐量可达 98.4GB/s,P99 延迟低至 0.78ms。元数据引擎革新:自研基于 LSM-Tree 的元数据存储,将随机写转换为顺序写,大幅提升海量小文件处理效率,写入性能比 MinIO 翻倍。
安全与合规性
加密与访问控制:集成 RustyVault 提供端到端加密,支持 WORM(一次写入多次读取)模式,满足金融、政务等场景的不可篡改需求。
国产化适配:通过麒麟、统信等国产操作系统认证,支持鲲鹏、海光等芯片,符合信创要求。
功能与生态
协议兼容性
100% 兼容 S3 协议,可无缝对接现有云原生工具链(如 Kubernetes、Spark),支持与 AWS S3、阿里云 OSS 等多云存储互通。
企业级功能
版本控制与审计:自动为每个对象版本分配唯一标识符,支持通过 API 或控制台管理历史版本;提供操作日志审计功能。
高可用性与灾难恢复:数据多副本(支持同步 / 异步复制)和跨云部署能力,确保故障恢复时间(RTO)低于 2 分钟,数据持久性达 99.999999999%(11 个 9)。
轻量化与易部署
单节点二进制文件小于 100MB,支持 Docker 容器化部署和 Kubernetes 编排,适配边缘设备(如树莓派)和信创硬件。通过简单的
docker run命令即可快速启动服务,控制台默认地址为http://localhost:9000。
应用场景
AI/ML 训练:针对海量小文件优化,AI 训练集群吞吐提升 28%,GPU 利用率从 55% 提升至 92%。
边缘计算:ARM 版支持工业设备日志实时存储,结合数据压缩技术节省 60% 传输带宽。
金融与合规存储:WORM 模式和审计日志满足等保 2.0 要求,某银行案例显示跨区域容灾 RPO 小于 5 分钟。
开源与社区
RustFS 采用 Apache 2.0 协议开源,代码完全透明且无商业限制,适合企业二次开发。截至 2025 年 10 月,GitHub 仓库已吸引超 1.5k 星标,并获得多家科技公司和开发者社区的贡献支持。官方提供详尽的文档和在线沙箱,方便用户快速上手。
与 MinIO 的对比
相较于 MinIO,RustFS 在性能(尤其小文件场景)、内存占用(减少 67%)、国产化适配等方面表现突出,且避免了 AGPL 协议的限制。不过,MinIO 生态更成熟,企业级功能(如多站点复制)更完善,而 RustFS 目前处于快速发展期,部分高级特性(如智能分层存储)仍在开发中。
部署
打开Docker管理器,选择「Compose」,点击右上角「新增项目」。

在创建项目窗口中填写「项目名称」和选择数据存放「路径」,然后选择「创建docker-compose.yml」,将下列代码根据自己实际情况修改后复制粘贴进去。
version: "3.8" services: rustfs: image: rustfs/rustfs:latest container_name: rustfs ports: - "9010:9000" # S3 API 对外端口 - "9011:9001" # 控制台对外端口 environment: - RUSTFS_CONSOLE_ENABLE=true # CORS 设置,控制台与 S3 API 都放开来源 - RUSTFS_CORS_ALLOWED_ORIGINS=* - RUSTFS_CONSOLE_CORS_ALLOWED_ORIGINS=* # 访问密钥(生产环境请修改为强密码) - RUSTFS_ACCESS_KEY=rustfsadmin - RUSTFS_SECRET_KEY=p@ssw0rd # 日志级别 - RUSTFS_LOG_LEVEL=info volumes: # 存储数据卷 - ./data:/data # 日志目录 - ./data/logs:/app/logs勾选「创建项目后立即启动」,最后点击「确定」。

等待构建完成,然后在浏览器中输入IP:Port访问。

使用
请参照官方文档 RustFS Doc(https://docs.rustfs.com/zh/)
- 感谢你赐予我前进的力量


