欢迎来到威聚,大家如果有需要哪个项目编译好的软件但无法自己下载可以进入项目推荐页面告诉我,我上传到网盘供大家下载使用!
威扬盘搜

RustFS

运维 Rust Apache-2.0 Rust 人工编写 推荐 ★5 中等

更新于 2026-09-18 17:49:32

它是什么

RustFS 是一个用 Rust 写的 S3 兼容分布式对象存储,目标很明确:做 MinIO 的替代品,但换成 Apache-2.0 许可 + Rust 内核。

官方自己的定位描述是:结合 MinIO 的简洁性和 Rust 的内存安全与原生性能,面向数据湖、AI 和大数据负载,并且强调「无遥测、无 AGPL 传染、可商用」。

为什么这两年涨得这么快

三个点叠在一起:

  1. 许可:MinIO 是 AGPLv3,嵌入商业产品或做托管服务时法务要反复评估;RustFS 用 Apache-2.0,这个差异对商业团队是决定性的。
  2. 无遥测:README 明确强调不做跨域数据外发,并列举 GDPR / CCPA / APPI 合规。
  3. Rust:无 GC 停顿、无内存泄漏风险,对「存储这种长期常驻进程」是实打实的好处。

客观说,它的对比表(Console 更强、边缘更轻、兼容性更全)是官方口径,读的时候要当宣传材料看,实际差异靠自己的场景验证。

功能与成熟度

官方用 ✅ Available(已发布并有 CI 门禁)和 🧪 Preview(需开关或有边界条件)区分,这点比很多项目诚实。关键能力:

  • 已可用:S3 核心读写、单机与分布式模式、版本控制、Object Lock (WORM)、服务端加密、RustFS KMS、生命周期 ILM 与远程 S3 分层、桶复制、站点复制、桶配额、S3 Select、事件通知、审计日志、IAM/策略、OIDC/SSO、OpenStack Keystone 认证与 Swift API、多租户、Web 控制台、K8s Helm Chart、Bitrot 保护、修复与扫描器、Pool 扩容/退役、FTPS/WebDAV
  • 🧪 Preview:S3 Tables(Iceberg REST Catalog)、MinIO 磁盘格式兼容

几个必须知道的细节:

  • KMS:生产只支持 Vault(KV2 / Transit)和 AWS KMS;Local / Static 后端仅用于开发测试,别上生产。
  • Swift API / SFTP 是 opt-in 编译特性(--features swift / --features sftp / full),默认二进制里没有。FTPS 和 WebDAV 默认构建里就带。
  • MinIO 兼容:磁盘格式兼容藏在 rio-v2 feature 后面、不在默认构建里,而且 MinIO 加密过的对象 RustFS 读不了,不能假设「换个二进制就能接管旧盘」。

迁移与扩容的硬约束(最容易踩的地方)

  • 单节点单盘(SNSD)只能当独立的本地路径用:不能原地扩容,也不能作为 Pool 加进集群。想扩成多盘,只能新建部署、走 S3 接口把数据搬过去。
  • Pool 扩容规则沿用 MinIO:已有 Pool 的 endpoint 和 Erasure Set 宽度不能改,扩容只能追加新 Pool;省略号写法要求每个 Pool 参数都含省略号,且至少展开到两个盘 endpoint。
  • 自动 parity 选择与 MinIO 不同,扩容前建议先看官方的 pool layout 兼容与回归测试文档。
  • S3 API 的覆盖程度以仓库里的 S3 compatibility matrix 为准;「S3 兼容」从来不是全量,用自己的客户端实测。

部署

1. 一键脚本

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

2. Docker(最常用):9000 是 S3 API,9001 是控制台。

mkdir -p data logs
chown -R 10001:10001 data logs
docker run -d -p 9000:9000 -p 9001:9001 \
  -v $(pwd)/data:/data -v $(pwd)/logs:/logs rustfs/rustfs:latest

容器以非 root 用户 10001:10001 运行,所有 bind mount 的目录(data / logs / TLS 证书目录)都必须先 chown,否则启动就 permission denied——这是新手第一个坎。用 podman 可以加 :Z,U 让它帮你处理属主。

3. 源码构建:./docker-buildx.sh 支持 linux/amd64 + arm64 多架构,或用 make docker-buildx。macOS 上交叉编译 Linux 会因默认 ulimit -n 256 报 ProcessFdQuotaExceeded,先 ulimit -n 4096。

4. Helm:K8s 部署看 charts.rustfs.com。

5. Nix flake:除二进制外还导出 NixOS module 和 S3 客户端 rc,凭据通过 accessKeyFile / secretKeyFile 注入,不会落进 Nix store——Nix 用户可以用得很干净。

6. x-cmd:x rustfs 直接跑,x env use rustfs 装到全局。

访问方式:控制台 http://localhost:9001,默认账号 rustfsadmin / rustfsadmin——第一件事就是改掉。HTTPS 需要按文档单独配 TLS。

事件通知的一个坑

自 1.0.0-beta.11 起有出站连接策略:私网或容器网段的 webhook 端点(Docker Compose 服务名、host.docker.internal、RFC1918 地址)默认被拦,必须在 RUSTFS_OUTBOUND_ALLOW_ORIGINS 里精确列出来,只填 scheme://host:port,不带 path。另外队列目录默认 /opt/rustfs/events,要保证运行用户可写;..._SKIP_TLS_VERIFY_PRIMARY 会跳过证书校验(MITM 风险 + 启动告警),私有 CA 请用 ..._CLIENT_CA_PRIMARY。

适用场景

  • 自建 S3 存备份、日志、模型权重、训练数据集
  • AI / 大数据:数据湖、Iceberg(S3 Tables 已能跑 PyIceberg / DuckDB,其它引擎是有边界声明的)
  • 希望规避 AGPL 的商业产品内嵌对象存储、或做托管服务
  • 边缘 / IoT 单机节点(轻量、单文件、单盘也能跑)
  • 云原生栈:官方 compose 里直接带 Prometheus + Grafana + Jaeger,可观测性开箱能用

上手评价与风险提示

  • 功能矩阵铺得很开:复制、ILM、KMS、OIDC、审计、控制台、Helm 一应俱全,不像一个半成品。
  • 但项目很年轻(2023 年 11 月建仓),1.0 才刚落地。生产使用务必先做 PoC:跑通自家 SDK、生命周期策略、复制、故障恢复和扩容演练。
  • 性能对比图只是参考:官方是在 2 核 / 4GB / 15Gbps / 4×40GB 盘上压的,自己硬件上必须复测。
  • 文档质量不错:docs/operations/ 下有扫描器调优、drive timeout 调优、KMS 后端安全属性等运维向文档,上线前值得读一遍。
  • 无论如何,异地备份和冗余演练不能省——对象存储是数据的最后一道防线,不要拿新项目赌数据。

二开与集成建议

  1. Swift / SFTP 要自己编:默认二进制不含,需要 --features swift / --features sftp,做编译期定制时记得进 CI。
  2. 观测直接复用官方 compose:Prometheus / Grafana / Jaeger 都配好了,比自建 dashboard 省事。
  3. KMS 选型:生产用 Vault 或 AWS KMS,Local / Static 只当本地开发便利。
  4. 事件驱动架构:用通知 + 审计日志接自己的 pipeline(对象落地触发推理、ETL 等),注意上面的出站白名单配置。
  5. NixOS 部署:用导出的 services.rustfs module,凭据走 runtime file(sops-nix / agenix),避免密钥进 store。
  6. 拓扑规划一次到位:因为 SNSD 不可原地扩容、Pool 宽度不可变,集群拓扑最好在 PoC 阶段就按 3 年容量规划好。

一句话总结

Apache-2.0 + Rust 的 MinIO 替代品,功能矩阵已经铺得很开(复制、ILM、KMS、OIDC、控制台、Helm 全都在),许可优势对商业场景是实打实的;但 1.0 尚新、MinIO 磁盘格式兼容仍是 Preview,把它当「值得投入 PoC 的下一代自建 S3」而不是「无痛替换」。

按更新时间依次阅读