Py学习  »  Git

国产开源,又杀出一匹黑马,9次登顶GitHub!

极客之家 • 1 月前 • 188 次点击  

 

现在刷 GitHub Trending,榜上大部分都是AI相关的:大模型、Agent、MCP 工具,十个项目八个带 AI。基础设施类的项目想上一次榜,机会很小。

所以 RustFS 确实非常难得:一个做对象存储的基础软件,2025 年 7 月开源,一年时间 Star 数破3万,我写这篇文章的时候已经 3.2 万了。这期间它 9 次登上 GitHub Trending 总榜,50 多次拿下 Rust 语言榜第一。没沾 AI 概念的光,纯靠一个存储项目本身卷出来的,这在近两年的 GitHub 上真不多见了。

它为什么能火?

一半是对手送的,一半是自己打的。

对手送的这部分,关注过 MinIO 的应该都知道。2025 年 5 月,MinIO 社区版一刀砍掉 Web 控制台的管理功能,删了 11 万行代码,控制台只剩一个光秃秃的文件浏览器;到了 10 月,社区版的安装包和 Docker 镜像停发;12 月直接官宣进入维护模式,GitHub 仓库归档,新功能不做了,PR 也不收了。

MinIO 官方主力转去闭源收费的商业版 AIStor,用了这么多年的对象存储标杆,说不维护就不维护了,让很多企业和个人开发者急需寻找其他的开源平替,RustFS 在这个背景下迅速补上这块需求。

自己打的那部分,往下看。

RustFS 是什么

简单说,这是一个用 Rust 写的分布式对象存储,S3 兼容,Apache 2.0 协议,国内团队做的,定位也很直白:MinIO 的平替。从功能清单看,基本是照着 MinIO 一个一个对齐的。

官方公布的数据:Docker 镜像拉取超过 1000 万次,全球装机量 270 万,贡献者 160 多位。

官方的说法是,它是世界上增长最快的对象存储系统,一年从 0 涨到 3 万 Star,在对象存储这种慢热的基础软件品类里,确实不多见。

功能上能替代到什么程度

整体功能一览
整体功能一览

数据可靠性:纠删码、自愈、防篡改

存储最重要的还是数据别丢,这块 RustFS 给的东西挺全。

纠删码(EC):数据切成数据片加校验片,坏几块盘数据照样完整。达到同样的可靠性,纠删码的磁盘开销比传统三副本能省出一半左右,盘越多省得越多。

还有一种不容易发现的问题,硬盘用久了会有 bitrot,数据放在盘上慢慢坏掉,平时不读根本不知道。RustFS 有 bitrot 保护和后台自愈,巡检到坏数据会自动修复,不用等出事才发现。

还有对象锁(WORM)和版本控制。开了对象锁以后,锁定期内的数据改不了也删不掉,能防误操作,也能防勒索软件。

控制台:功能完整,免费

MinIO 砍掉的那个控制台,RustFS 这边是全功能免费给的。建桶、传文件、配权限、桶复制、生命周期管理、查看审计日志,界面上全能点。官方的说法是所有功能都可以在控制台操作,不用被逼着去背命令行。

对运维来说这个很重要,遇到问题打开网页就能处理,不用到处翻文档找命令。

协议支持:不止 S3

S3 是最基本的,完全兼容,AWS CLI、s3cmd、各语言的 S3 SDK,原来接 MinIO 的代码一行不用改。

除了 S3,还支持 WebDAV、Swift API、FTP 和 SFTP,另外还支持 MCP,这个下面单独说。

MCP:让 AI 直接操作存储

RustFS 官方单独做了一个 MCP Server,已开源。

传送门:https://github.com/rustfs/mcp

MCP 是现在 AI 应用对接外部工具的标准协议。这个服务的作用,是把存储操作包装成 AI 能直接调用的工具。装好之后,支持 MCP 的 AI 客户端就能直接操作 RustFS 里的数据:列出所有桶、查看桶里的文件、上传本地文件、读取或者下载文件、创建和删除桶,日常用得到的存储操作基本都覆盖了。

用法也不复杂,在客户端的 MCP 配置里填上 RustFS 的地址和密钥就行,官方给了二进制和 Docker 两种用法。配好以后,想让 AI 看看桶里有什么文件、把某个文件读出来分析,说一句话就可以,不用自己写代码去调 S3 接口。

安全和合规

IAM 权限做得比较细,用户、用户组、策略分层管,OIDC 单点登录支持 Keycloak、Authing、LDAP。

加密这块,KMS 能接 Vault 和 AWS KMS,服务端加密支持 SSE。审计日志也是内置的。

国产化方面也有动作,按官方资料,麒麟、统信这类国产操作系统都有适配,跑信创项目的可以关注一下。

运维和生态工具

命令行工具有自己的 rc,对标 MinIO 的 mc,用惯 mc 的切换过去没什么学习成本。

集群运维上,桶复制、站点复制、存储池扩容和退役、数据分层到远端 S3,都是现成的,事件通知支持 webhook,文件一上传就能触发下游流程。Kubernetes 环境有 Helm Chart 和 Operator,云原生那套部署方式拿来就用。

重点说说刚开源的 S3 Table

最近,RustFS 把 S3 Table 功能正式上线并且开源了。这个值得单独拎出来说,因为 MinIO 也有 S3 Table,但只放在商业版里卖。按 RustFS 官方的说法,企业要用 MinIO 的这项功能,得付十几万甚至几十万美金,现在 RustFS 把这个功能开源了,免费用。

S3 Table 是 AWS 先搞出来的东西,简单理解,就是让对象存储支持表格式,写进桶里的数据就是一张张能查的表,Spark、DuckDB 这些计算引擎连上来就能读写,不用自己再搭一套元数据服务。

RustFS S3 Table 架构图
RustFS S3 Table 架构图

RustFS 的做法是把 Apache Iceberg 的 REST Catalog 做进了存储内核,一个进程,一个 9000 端口,同时提供标准 S3 接口和 Iceberg REST Catalog 接口。Spark、DuckDB、PyIceberg 不用装任何插件,连上就能建表、写数据、查数据。数据文件由计算引擎走 S3 接口直接写进桶里,中间没有任何转发层,典型的存算分离。

用起来也不复杂,在控制台建桶的时候点一下启用表存储桶,这个桶就变成表桶了,命名空间和表都能在界面上管理,表的结构和快照都能看。

RustFS S3 Table 控制台界面
RustFS S3 Table 控制台界面
S3 Table 表详情
S3 Table 表详情

我照着官方文档里的 Spark 例子跑了一遍,配好地址和密钥,建命名空间、建表、写数据,跑完刷新控制台就能看到表,整个过程没什么卡点。官方文档里 PyIceberg 和 DuckDB 的例子也是现成的,想上手照抄就行。

有一点得说清楚,S3 Table 刚上线,官方自己也说还在持续迭代,我的建议是先在测试环境玩明白,再往生产上放。

顺带说一下,官方给 RustFS 的定位是面向 AI 数据中心的存储基础设施。除了 S3 Table,RDMA、DPU 卸载这类低延迟数据路径也在推进,官方还提到今年 4 月加入了 NVIDIA Inception 加速器,这些动作基本都是围绕 AI 场景做的。

MinIO 到 RustFS 的无缝切换

正在用 MinIO 的朋友,最关心的应该是切换成本高不高,我拆成代码、工具、数据三块来说。

1、代码这块不用动。 RustFS 兼容 S3,原来项目里用的 AWS SDK、各语言的 S3 SDK、MinIO 的 SDK,把连接地址和密钥换成 RustFS 的就能跑,业务代码基本不用改。个别边缘接口可能有差异,官方仓库里有 S3 兼容性清单,关键业务切之前可以对着查一遍。

2、工具也不用换。 AWS CLI、s3cmd 这些直接能用,连 MinIO 自家的 mc 都可以继续用,等用熟了想换成 RustFS 自己的 rc 也来得及。

3、数据迁移是最实际的问题,老数据还在 MinIO 里。 我的做法是用 mc mirror 或者 rclone 这类工具把桶里的数据同步到 RustFS,它们都支持 S3 到 S3 的拷贝,数据量大就分批跑。有一个点要注意,mc mirror 只搬对象的当前版本,如果桶开了版本控制、历史版本还要留着,得提前想好怎么处理。

迁移期间两套系统可以同时在线,新业务先写到 RustFS,老数据慢慢搬。等全部搬完,正式切流量之前再跑一次增量同步,把这期间 MinIO 上新改动的数据补齐,验证没问题,再把 MinIO 下线,这样整个过程对业务基本没有影响。

另外官方仓库里也提到,RustFS 支持和 MinIO、Ceph 这些 S3 兼容平台之间做迁移和共存,磁盘格式层面的兼容也在推进,目前还是预览阶段。等这块成熟以后,迁移的成本还会更低。

快速上手

安装确实简单,我装的时候就一条 Docker 命令:

docker run -d --name rustfs -p 9000:9000 -p 9001:9001 -v rustfs-data:/data rustfs/rustfs:latest

不想用 Docker 的话,Linux 上跑一下官方的一键脚本就行:

curl -O https://rustfs.com/install_rustfs.sh && bash install_rustfs.sh

RustFS 对运行环境没什么要求,Windows、macOS、Linux 都有对应的版本,安装方式也给得很全:源码编译、二进制包、Docker、Kubernetes 都可以。各系统的安装包在官方下载页都能找到:

https://rustfs.com.cn/download/server/

打开以后按自己的环境选就行。

如果服务是跑在 Kubernetes 上的,可以用官方的 Operator 来部署,多租户管理、存储池扩容这些都能自动化,云原生环境下比较省心。安装就两条命令:




    
helm repo add operator https://operator.rustfs.com
helm install operator operator/rustfs-operator

装完以后会起两个 pod,一个是 Operator 本身,一个是它自带的控制台。后面创建租户也简单,提交一个 Tenant 配置就行,比如指定 4 个节点、每个节点 4 块盘,剩下的调度、初始化、部署都交给 Operator 去做。更多细节可以看官方仓库:

https://github.com/rustfs/operator

起来以后,浏览器打开 http://localhost:9001 就是控制台,建桶、传文件、配权限,界面上点一点就完事,想玩 S3 Table,建桶的时候把启用表存储桶打开,然后接 Spark 或者 DuckDB 都可以。

写在最后

对象存储这个领域,已经很多年没有新玩家发展得这么快了。一年 3 万 Star,功能和 MinIO 基本对齐,控制台完整免费,S3 Table 这种别人收费的功能也开源了,协议还是 Apache 2.0,商用基本不用操心。

MinIO 停止维护之后,这个位置总要有人来填,从现在的功能完成度和社区势头来看,RustFS 是最接近的一个。不管你有没有替换的打算,都可以花点时间装一个试试。

开源地址

https://github.com/rustfs/rustfs

 

 

这个公众号长期分享实用开源项目。如果你不想逐篇翻阅历史文章,可以直接关注微信公众号“极客之家”,通过后台留言与我们互动交流。

图片

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/201156