大数跨境

这个平替 MinIO 的国产开源项目,狂揽 3.2 万 Star!

这个平替 MinIO 的国产开源项目,狂揽 3.2 万 Star! GitHubDaily
2026-09-17
5

最近,开源圈子又热闹了起来。对象存储领域的顶流 MinIO,直接删除了 Dockerhub 上的镜像仓库,那可是一个拉取次数超 10 亿的仓库。

MinIO 最近几年风波不断:修改许可证、移出 web 控制台功能、停止二进制分发、归档开源仓库,这下直接删库了。

是否会有下一个开源 MinIO 出现,成为众多 MinIO 用户的平替选择?

目前看,RustFS 大有可能。RustFS 是用 Rust 语言编写的对象存储系统,同样开源,恰巧诞生于 MinIO 开源政策变紧的这几年。

据悉,RustFS 团队都在国内,算是国内团队打造的一个全球顶尖开源项目。

从 RustFS 的官网看:GitHub Stars 超过 32k;Dockerhub 镜像拉取次数超过 1000万,全球装机量超过 270 万,同时还加入了英伟达的全球加速器计划。

一个非 AI 项目,能在短时间内获得这么高 Stars,也算是有两把刷子。

GitHub:https://github.com/rustfs/rustfs

RustFS:国产开源黑马

虽然 RustFS 是以 FS 结尾,但是它却是一个对象存储项目。RustFS 官方的定位是:用 Rust 编写的高性能分布式对象存储系统,S3 兼容,是 MinIO 的完全平替,以商业友好的 Apache 2.0 许可证发布 。

当初只有一个 README,被很多人喷是假开源,但是官方在 2025 年 7 月,突然官宣开源,放出了完整的代码,然后就从 alpha、beta、rc,再到近期的 GA。说实话,完整走过这个版本发布周期的产品确实少见。

来看看 RustFS 到底有什么功能。

1)数据管理

这部分是 RustFS 的核心,和标准的对象存储(MinIO、AWS S3)一样,因为都是遵循 S3 标准做。具体包括存储桶、对象、桶复制、桶配额、大文件分片上传等。

其中包含一个关键的 EC(纠删码)。这是所有对象存储实现数据高可靠和存储高效率的关键。通俗来讲,就是将上传的对象分成多个分片,包含数据分片和校验分片。

这些分片会根据算法均匀的分布在不同的磁盘上。只要丢失的数据分片不超过校验片的数量,就会通过算法准确算出丢失的数据。

比如一个 2+2 配置的场景,其中 2 个数据片,2 个校验片,总共有 4 个磁盘,如果其中一个磁盘由于故障坏掉了,那么服务、数据依旧可用,再损失一块磁盘,服务、数据依旧可以用,但是这个时候就达到了临界点,要是再掉一块磁盘,就一切都不可用了。

这就是纠删码的原理,通过纠删码提高了数据的可靠性。当然,代价就是存储效率了。EC 不同,存储效率也不同。同样是 4 块磁盘的前提下,2 + 2 的配置,存储效率是 50%;3 + 1 的配置,存储效率就提高到了 75%。

如果将故障的磁盘摘出掉,换上一块新的磁盘,RustFS 就会通过算法恢复出这块磁盘上的数据,这个是自愈功能。

RustFS 官方提供了一个 EC 最佳配置的计算器,输入磁盘数、节点数,就可以推荐 EC 的最佳配置。

 RustFS EC 计算器

2)多池扩容

存储系统经常遇到的一个问题就是扩容。RustFS 在扩容上稍有不同,不是简单的添加一块磁盘就可以。

由于 EC 的存在,RustFS 的扩容需要扩容集群和初始化集群的 EC 保持一致,否则数据会出问题。

这个扩容称之为池扩容,当初始化集群的容量不够时,再添加一个池到整个集群,可以添加多个池,线性增加整个存储容量。

比如,给一个初始化为单机四盘的集群(Pool 0)再加一个同样的集群(Pool 1),添加完之后可以在 web 控制台上看到两个池的信息。

如果两个池之间的数据不平衡,可以在再平衡页面的右上角 ,点击 开始再平衡 ,让两个池之间的数据达到平衡,确保对应的磁盘的消耗是同等的。这是保护磁盘,延长磁盘使用寿命的一种手段。

 RustFS 数据再平衡页面

如果某个池对应的磁盘需要下线,可以使用存储池退役功能,将某个池的数据先转移到另外一个池,然后将这个池整体下线。

image-20260915210903371 RustFS 存储池退役界面

这就是 RustFS 的池管理功能:池扩容、数据再平衡、池退役。

3)数据分层

对冷热数据进行分层是降低存储成本的重要手段。RustFS 支持多种数据分层端点,配合生命周期管理规则,就可以把冷数据存储到目标端点。

image-20260915210952214

4)安全合规

RustFS 使用 IAM 管理不同用户的权限;支持 OIDC 2.0,可以将符合此框架的 SSO 直接接入 RustFS,比如 KeyCloak、GitLab 等;还有 KMS 集成、SSE、mTLS、安全审计等。

 RustFS SSE 配置页面

6)可观测性

RustFS 内置了对于 OTEL 的支持,官方也给出了 OTEL 的配置,直接用 docker 就能够拉起 grafana、prometheus、loki 等服务。

docker compose up -d

RustFS 内置了多个仪表盘,登录 Grafana  即可查看:

7)集群管理

控制台的运行状态页面 ,可以查看 RustFS 集群的状态,包括节点、磁盘的信息,存储桶和对象的统计等。

image-20260915211654818 RustFS 集群管理页面

快速上手

RustFS 提供了多种安装方式,二进制、Docker 以及 Helm Chart 和 Operator。

image-20260915212121020

直接下载最新版本的安装包

wget https://github.com/rustfs/rustfs/releases/download/1.0.0-rc.6/rustfs_1.0.0.rc.6_amd64.deb

安装:

dpkg -i rustfs_1.0.0.rc.6_amd64.deb 

修改配置文件,默认在 /etc/default/rustfs 中:

RUSTFS_ACCESS_KEY=rustfs@testRUSTFS_SECRET_KEY=rustfs@testRUSTFS_VOLUMES="/data/rustfs/ga/snsd"RUSTFS_ADDRESS=":9000"RUSTFS_CONSOLE_ADDRESS=":9001"RUSTFS_CONSOLE_ENABLE=trueRUSTFS_OBS_LOGGER_LEVEL=errorRUSTFS_OBS_LOG_DIRECTORY="/var/log/rustfs/"

RustFS 有三种拓扑安装方式:单机单盘、单机多盘以及多机多盘 。单机单盘是一台服务器上只有一个数据盘;单机多盘是一台服务器多个数据盘;多机多盘式是多台服务器多个磁盘。通过配置文件中的 RUSTFS_VOLUMES 来区分:

# 单机单盘RUSTFS_VOLUMES="/data/rustfs"
# 单机多盘RUSTFS_VOLUMES="/data/rustfs{1...N}"
# 多机多盘RUSTFS_VOLUMES="http://rustfs-node{1...N}:9000/data/rustfs{1...4}"

前面的配置文件是一个单机单盘。文件配置完毕以后,启动 RustFS 服务:

systemctl start rustfs

使用 http://ip:9001 登录 web 控制台:

左侧导航栏是 RustFS 完整的控制台功能,可以对存储桶、对象、池、IAM、KMS 等进行管理。相比 MinIO 社区版的控制台界面,RustFS 的是比较丰富的。

image-20260915212226417 MinIO 开源版控制台

从 MinIO 迁移到 RustFS

为了减少从 MinIO 到 RustFS 的迁移阻碍,RustFS 兼容了 MinIO 的数据格式(大部分数据格式),如果只是迁移存储桶和对象,直接把 MinIO 的数据盘指定给 RustFS,就能够完整整个数据的迁移。

假如 MinIO 的数据盘为 MINIO_VOLUMES="/data",里面有一些存储桶和对象:test1,52 个对象;test2,48 个对象,test3,31 个对象,总计 3 个存储桶 131 个对象。

image-20260915212618781

修改 RustFS 服务器的配置,将 MinIO 的数据盘给 RustFS,RUSTFS_VOLUMES="/data" ,然后重启 RustFS 服务即可:

image-20260915212703001

RustFS 正确读取了 MinIO 数据盘上的存储桶和对象数据。

写在最后

开源对象存储领域除了 RustFS,还有 Ceph、SeaweedFS、Garage。

虽然 RustFS 开源仅一年获得的 GitHub Star 就已经超越了开源多年的 Ceph、逼近 SeaweedFS。

但是将来的发展还需要跟这些产品做竞争,产品力才是真正的竞争力 。

正式版的发布对 RustFS 来说才是真正考验的开始,会有越来越多的用户将 RustFS 用于生产环境,用户各种场景,也会源源不断产生各种问题,就看 RustFS 团队如何应对了。

GitHub 项目地址:https://github.com/rustfs/rustfs

今天的分享到此结束,感谢大家抽空阅读,我们下期再见,Respect!

【声明】内容源于网络
0
0
GitHubDaily
专注于分享 GitHub 上知名的 Python、Java、Web、AI、数据分析等多个领域的优质学习资源、开源项目及开发者工具,为 GitHub 开发者提供优质编程资讯。
内容 1486
粉丝 0
GitHubDaily 专注于分享 GitHub 上知名的 Python、Java、Web、AI、数据分析等多个领域的优质学习资源、开源项目及开发者工具,为 GitHub 开发者提供优质编程资讯。
总阅读8.0k
粉丝0
内容1.5k