暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

告别 MinIO 开源 S3 对象存储黑马 RustFS Beta 部署实战

原创 shunwahⓂ️ 2026-05-04
401

RustFS Beta 版 Docker 部署与运维实战:从零搭建高性能 S3 兼容对象存储。附 rc 客户端完整命令与避坑指南。

作者: ShunWah
公众号: "shunwah星辰数智社"主理人。

持有认证: OceanBase、MySQL、OpenGauss、崖山、金仓KingBase、KaiwuDB、 亚信AntDBCA、翰高、GBase、Galaxybase、Neo4j 、NebulaGraph、东方通TongTech、TiDB等多项权威认证。

获奖经历: 崖山YashanDB YVP、浪潮KaiwuDB MVP、墨天轮 MVP、金仓社区KVA、TiDB社区MVA、NebulaGraph社区之星、IFClub星珩联盟·智库星系技术专家、ITPUB 技术专家,社区版主及布道师。在OceanBase&墨天轮征文大赛、OpenGauss、TiDB、YashanDB、Kingbase、KWDB、Navicat 征文等赛事中多次斩获一、二、三等奖,原创技术文章常年被墨天轮、CSDN、ITPUB 等平台首页推荐。

RustFS Beta版Docker部署与运维实战.png

前言

2025 年 7 月正式开源以来,RustFS 依托 Rust 语言与生俱来的内存安全极致高性能特性,搭配 Apache 2.0 商业友好开源协议,一跃成为全球对象存储赛道增速最快的新锐开源项目。

截至 Beta 版本正式发布,RustFS 社区数据亮眼:累计斩获 26.5k Star1.1k Fork,全球贡献者突破 130 位;DockerHub 官方镜像拉取量突破 220 万,8 次登顶 GitHub Trending、40+ 次霸榜 GitHub Rust 分区趋势榜。项目历经 2850+ 次 Git 代码提交99 个 Alpha 内测版本持续打磨,Beta 版的落地,标志着 RustFS 在构建高性能、高可靠、高安全分布式对象存储体系的进程中,迈出了里程碑式的关键一步。

站在运维视角,Beta 版本的到来具备极强落地价值:更规范稳定的 S3 API、全覆盖的企业级特性、更成熟的生产环境适配与容错能力。本文立足运维实战视角,以 Docker 容器化部署为主线,串联环境准备、镜像部署、服务验证、命令行运维、Web 控制台管理全流程,搭配可直接复刻的实操命令、服务性能校验、典型运维场景避坑指南,帮助大家快速落地 RustFS Beta 版生产可用架构。

image.png

注:图片参考自 RustFS 官方文档

一、为什么选择 RustFS?

1.1 行业背景:对象存储的「MinIO 替代」浪潮

对象存储领域标杆项目 MinIO 近年迎来多次战略与授权策略重大调整:开源许可证由宽松协议转向约束极强的 AGPL 协议、删减核心原生管理功能、停止官方二进制包直接分发等一系列变动,让全球海量企业开发者、运维团队迫切寻求真正商业无风险、开源友好的平替方案。

与此同时,AI 大模型时代全面来临,对象存储早已跳出传统冷备份归档的定位,升级为大模型训练、推理算力集群的核心底层基础设施。传统 IO 架构存在调度冗余、延迟偏高的短板,难以承载 GPU 集群间超高并发、超大带宽的数据吞吐需求;而 RustFS 依托 Rust 无 GC 运行机制,深度融合 RDMA 高速传输协议,从底层架构上彻底消解传统存储的性能瓶颈。

1.2 RustFS 的核心竞争力

从协议安全、架构性能、运维适配多维度对比,RustFS 相比传统对象存储具备不可替代的运维与业务价值:

维度 特性 运维价值
协议 Apache 2.0 无 AGPL 商用授权风险,企业可自由二次开发、私有化部署
安全 Rust 内存安全 从语言底层杜绝空指针、缓冲区溢出等 C/C++ 架构常见漏洞
性能 无 GC,零成本抽象 4KB 小文件 OPS 达 MinIO 的 2.3 倍,P99 访问延迟大幅优化
轻量 二进制约 90MB 镜像体积小、容器启动极速、服务器资源占用极低
S3 兼容 100% S3 API 兼容 业务代码零改造迁移,无缝对接 AWS SDK、mc 客户端等全生态工具

支持开放表格式.png

注:图片参考自 RustFS 官方文档

1.3 RustFS 架构设计:去中心化与高性能的基石

RustFS 是一款高性能、兼容 AWS S3 API 的对象存储系统,其核心设计目标可概括为四个词:简洁、轻量、可扩展、去中心化。对象可以是文档、视频、PDF 文件或任何非结构化数据,而 RustFS 则为存储、访问和管理这些数据提供了灵活高效的解决方案。

从架构层面看,RustFS 采用了去中心化的点对点(P2P)架构——集群中的所有节点地位完全平等,不存在主从或领导者选举机制。这一设计带来了两个关键运维价值:

  • 部署极简:无需复杂的元数据节点配置,一条命令即可启动一个节点,数条命令即可组成分布式网格。
  • 消除元数据瓶颈:传统集中式元数据管理容易成为性能瓶颈,而 RustFS 将元数据分散在每个节点的本地存储中,通过一致性哈希和纠删码实现数据分布与高可用。

下图展示了 RustFS 的基本架构(分布式网格使用多个节点协同工作,节点间通过网络通信):

image.png

注:图片参考自 RustFS 官方文档

值得强调的是,RustFS 在设计之初便从 MinIO 优雅且可扩展的架构中汲取了灵感,采用了类似的设计理念——在不牺牲功能的前提下,优先考虑简单性和可靠性。我们认可 MinIO 在推广 S3 协议、为对象存储架构设定高标准方面所做的重大贡献。与此同时,RustFS 通过 Rust 语言的内存安全特性与去中心化架构,进一步降低了运维复杂度,为生产环境提供了一种真正轻量、无厂商锁定的开源选择。

二、Beta 版本企业级功能概览

RustFS Beta 版补齐全栈企业级能力矩阵,贴合生产运维核心诉求,按模块分类如下:

存储层:存储桶与对象全生命周期管理、对象版本控制与对象锁机制、分布式纠删码(EC)、大文件分片上传、数据校验和与文件完整性自动验证。

安全层:IAM 用户/用户组/权限策略/服务账号全体系、OIDC 身份集成、KMS 密钥托管、SSE-S3/SSE-KMS/SSE-C 多模式服务端加密、STS 临时凭证分发、mTLS 双向认证、全链路安全审计日志。

可观测性:事件消息通知机制、OpenTelemetry(OTEL)全链路可观测支持、集群容量智能统计、节点健康实时监测、专属命令行客户端 rc、MinIO 一键无缝迁移工具。

高可用:分布式多机多盘集群部署、节点自愈/在线扩容/节点退役/数据自动再平衡、原生支持 Helm Chart 与 Operator 云原生编排。

datalakearchitecture.Cc_htHYl.png

注:图片参考自 RustFS 官方文档

三、部署前环境准备

3.1 硬件与系统要求

区分测试环境与生产环境配置标准,适配不同业务负载场景:

需求项 测试环境 生产环境
CPU 双核及以上 4 核及以上(推荐 Xeon E3 / AMD EPYC)
内存 ≥ 512MB ≥ 8GB(推荐 16GB 以上)
磁盘 普通 SSD NVMe SSD(推荐三星 PM9A1 / Intel P4510)
网络 千兆网卡 万兆网卡 + RDMA(RoCE v2)
操作系统 Ubuntu 18.04+ / CentOS 7+ Ubuntu 22.04 / Rocky 9+ / openEuler 22.03+

coldbackupsolution.DjzZBFbN.png

注:图片参考自 RustFS 官方文档

运维最佳实践:建议将 RustFS 数据目录单独挂载至独立 NVMe 分区,严禁使用 NFS 等网络文件系统,避免网络延迟与一致性问题引发服务性能抖动、数据异常。

3.2 Docker 环境安装与验证

一键安装 Docker(Ubuntu/CentOS/openEuler 通用)

(此处保留一键安装脚本位置,可自行补全官方yum/apt安装脚本)

验证 Docker 版本(要求 ≥ 20.10.0)

docker version
[root@openeuler-server ~]# docker --version
Docker version 20.10.24, build 297e128
[root@openeuler-server ~]#

image.png

验证 Docker-Compose 版本

[root@openeuler-server rustfs]# docker-compose --version
Docker Compose version v2.20.0
[root@openeuler-server rustfs]#

image.png

验证 Docker 服务运行状态

systemctl status docker
[root@openeuler-server ~]# systemctl status docker
● docker.service - Docker Application Container Engine
     Loaded: loaded (/etc/systemd/system/docker.service; enabled; vendor preset: disa>
     Active: active (running) since Wed 2026-04-22 09:51:59 CST; 1 week 0 days ago
       Docs: https://docs.docker.com
   Main PID: 142054 (dockerd)
      Tasks: 59 (limit: 201965)
     Memory: 256.8M
     CGroup: /system.slice/docker.service
             ├─ 142054 /usr/bin/dockerd --default-ulimit nofile=65536:65536
             ├─ 142067 containerd --config /var/run/docker/containerd/containerd.toml>
             ├─ 147500 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 5>
             ├─ 147506 /usr/bin/docker-proxy -proto tcp -host-port :: -host-port 5432 ->
             └─ 147524 /usr/bin/containerd-shim-runc-v2 -namespace moby -id 91b8b6200>

image.png

查看 Docker 详细信息

docker info
[root@openeuler-server ~]# docker info
Client:
 Context:    default
 Debug Mode: false

Server:
 Containers: 3
  Running: 1
  Paused: 0
  Stopped: 2
 Images: 9
 Server Version: 20.10.24
 Storage Driver: overlay2
  Backing Filesystem: extfs
  Supports d_type: true
  Native Overlay Diff: true
  userxattr: false
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Cgroup Version: 1
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: io.containerd.runc.v2 io.containerd.runtime.v1.linux runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 2806fc1057397dbaeefbea0e4e17bddfbd388f38
 runc version: v1.1.5-0-gf19387a6
 init version: de40ad0
 Security Options:
  seccomp
   Profile: default
 Kernel Version: 5.10.0-295.0.0.198.oe2203sp4.x86_64
 Operating System: openEuler 22.03 (LTS-SP4)
 OSType: linux
 Architecture: x86_64
 CPUs: 8
 Total Memory: 30.85GiB
 Name: openeuler-server
 ID: WJRD:5GZB:SZKQ:DFM7:CA7W:G7CB:66UB:7CEE:CR6V:WSSL:FQEI:KDSL
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 Registry: https://index.docker.io/v1/
 Labels:
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Registry Mirrors:
  https://mirorer.dockerproxy.com/
  https://docker.1ms.run/
  https://docker.mirrors.sjtug.sjtu.edu.cn/
 Live Restore Enabled: false
 Product License: Community Engine

[root@openeuler-server ~]#

image.png

⚠️ 避坑提示:若执行 docker info 提示「Cannot connect to the Docker daemon」,需先执行 systemctl start docker 启动 Docker 守护进程。

3.3 网络端口规划

规划核心服务端口,匹配安全组与防火墙放行策略:

端口 用途 安全组策略
9000 S3 API 核心服务端口 内网全开放,外网按需定向放行
9001 Web 可视化控制台端口 仅内网开放,或通过堡垒机访问
5000 可选管理端口 严格仅内网开放,禁止外网暴露

防火墙开放端口(firewalld)

[root@openeuler-server ~]# firewall-cmd --add-port=9000/tcp --permanent
success
[root@openeuler-server ~]# firewall-cmd --add-port=9001/tcp --permanent
success
[root@openeuler-server ~]# firewall-cmd --reload
success
[root@openeuler-server ~]#

image.png

3.4 官方镜像与版本获取地址

RustFS 官方下载页面:

https://rustfs.com/download/?platform=docker

image.png

GitHub Beta 版 Releases 发布页:

https://github.com/rustfs/rustfs/releases

image.png

官方最新版安装包标识:

rustfs-linux-aarch64-musl-latest.zip

image.png

四、Docker 部署:三步快速搭建

4.1 第一步:拉取 RustFS 官方镜像

# 拉取官方最新镜像 docker pull rustfs/rustfs:latest

镜像拉取完成后验证本地镜像:

docker images | grep rustfs/rustfs
[root@openeuler-server rustfs]# docker images | grep rustfs/rustfs
rustfs/rustfs                                   latest                   2f80060ad36f   4 days ago     283MB
[root@openeuler-server rustfs]# 
[root@openeuler-server rustfs]#

image.png

4.2 第二步:创建数据目录并配置权限

# 批量创建数据存储与日志目录 mkdir -p /data/rustfs/{data,logs} # 适配容器运行用户权限授权 chown -R 10001:10001 /data/rustfs/data /data/rustfs/logs
[root@openeuler-server ~]# mkdir -p /data/rustfs/{data,logs}
[root@openeuler-server ~]# chown -R 10001:10001 /data/rustfs/data /data/rustfs/logs
[root@openeuler-server ~]#

image.png

⚠️ 避坑提示:这是部署最常见故障点。RustFS 容器默认以非 root 用户 UID 10001 运行,若宿主机目录权限不匹配,容器会因无写入权限启动失败,必须执行 chown 授权

4.3 第三步:启动 RustFS 容器

进入部署工作目录:

[root@openeuler-server ~]# cd /data/rustfs
[root@openeuler-server rustfs]# ls
data  logs
[root@openeuler-server rustfs]#

image.png

方式一:单条命令快速启动(适配测试环境)

docker run -d \ --name rustfs \ --restart unless-stopped \ -p 9000:9000 \ -p 9001:9001 \ -v /data/rustfs/data:/data \ -v /data/rustfs/logs:/logs \ -e RUSTFS_ADMIN_USER=rustfsadmin \ -e RUSTFS_ADMIN_PASSWORD=ChangeMe@2026 \ rustfs/rustfs:latest
[root@openeuler-server rustfs]# docker run -d \
>   --name rustfs \
>   --restart unless-stopped \
>   -p 9000:9000 \
>   -p 9001:9001 \
>   -v /data/rustfs/data:/data \
>   -v /data/rustfs/logs:/logs \
>   -e RUSTFS_ADMIN_USER=rustfsadmin \
>   -e RUSTFS_ADMIN_PASSWORD=ChangeMe@2026 \
>   rustfs/rustfs:latest
Unable to find image 'rustfs/rustfs:latest' locally
latest: Pulling from rustfs/rustfs
6a0ac1617861: Already exists 
c13539b44371: Downloading  2.108MB/6.421MB
6cec935cf31b: Download complete 
180083302739: Downloading  1.617MB/92.24MB
901fdb4c557e: Download complete 
4f4fb700ef54: Download complete 
5acd9a29ed05: Download complete

image.png

查看容器运行状态

docker ps
[root@openeuler-server rustfs]# docker ps
CONTAINER ID   IMAGE                  COMMAND                  CREATED      STATUS      PORTS                                                           NAMES
ce62512d08ba   rustfs/rustfs:latest   "/entrypoint.sh rust…"   3 days ago   Up 3 days   0.0.0.0:9000-9001->9000-9001/tcp, :::9000-9001->9000-9001/tcp   rustfs
[root@openeuler-server rustfs]#

image.png

实时查看容器日志

docker logs -f rustfs
[root@openeuler-server rustfs]# docker logs -f rustfs
Initializing data directories: /data
Initializing log directory: /logs
Starting: /usr/bin/rustfs  /data

image.png

停止临时容器,切换生产部署方案

[root@openeuler-server rustfs]# docker stop rustfs
rustfs
[root@openeuler-server rustfs]# docker ps 
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

image.png

方式二:Docker Compose 部署(推荐生产环境)

进入部署目录,编写编排配置文件:

[root@openeuler-server ~]# cd /data/rustfs
[root@openeuler-server rustfs]# vim docker-compose.yml
[root@openeuler-server rustfs]#

image.png

docker-compose.yml 完整配置

version: "3.9" services: rustfs: image: rustfs/rustfs:latest container_name: rustfs restart: unless-stopped ports: - "9000:9000" - "9001:9001" environment: - RUSTFS_ADDRESS=0.0.0.0:9000 - RUSTFS_CONSOLE_ADDRESS=0.0.0.0:9001 - RUSTFS_CONSOLE_ENABLE=true - RUSTFS_ACCESS_KEY=rustfsadmin - RUSTFS_SECRET_KEY=rustfsadmin - RUSTFS_UNSAFE_BYPASS_DISK_CHECK=true volumes: - /data/rustfs/data:/data healthcheck: test: ["CMD", "sh", "-c", "curl -f http://127.0.0.1:9000/health"] interval: 30s timeout: 10s retries: 3 start_period: 40s

image.png

后台启动 Compose 服务

docker-compose up -d
[root@openeuler-server rustfs]# docker-compose up -d
[+] Running 2/2
 ✔ Network rustfs_default  Created                                                    0.2s 
 ✔ Container rustfs        Started                                                    0.5s 
[root@openeuler-server rustfs]#

image.png

Compose 核心参数运维详解

参数 说明 生产环境建议
--restart unless-stopped 容器异常退出自动重启 生产环境必须配置
-p 9000:9000 S3 API 服务端口映射 内网全开,外网按需放行
-p 9001:9001 Web 控制台端口映射 仅内网访问,杜绝外网暴露
-v /data/rustfs/data:/data 数据持久化挂载 强制挂载 NVMe 独立分区
RUSTFS_ADMIN_USER 管理员用户名 严禁使用默认值,自定义复杂账号
RUSTFS_ADMIN_PASSWORD 管理员密码 采用大小写+数字+特殊符号强密码
healthcheck 容器健康自检机制 生产必配,自动剔除异常实例
deploy.resources 硬件资源配额限制 防止服务抢占服务器全部资源
logging 容器日志轮转策略 配置日志切割,避免磁盘占满

五、部署验证与功能测试

5.1 容器运行状态校验

docker ps -a --filter name=rustfs
[root@openeuler-server rustfs]# docker ps -a --filter name=rustfs
CONTAINER ID   IMAGE                  COMMAND                  CREATED          STATUS                    PORTS                                                           NAMES
899c2f0b42eb   rustfs/rustfs:latest   "/entrypoint.sh rust…"   36 seconds ago   Up 35 seconds (healthy)   0.0.0.0:9000-9001->9000-9001/tcp, :::9000-9001->9000-9001/tcp   rustfs
[root@openeuler-server rustfs]#

image.png

5.2 查看容器启动日志

docker logs -f rustfs
[root@openeuler-server rustfs]# docker logs -f rustfs
Initializing data directories: /data
Initializing log directory: /logs
Starting: /usr/bin/rustfs  /data

image.png

5.3 查看容器资源占用

docker stats rustfs --no-stream
[root@openeuler-server rustfs]# docker stats rustfs --no-stream
CONTAINER ID   NAME      CPU %     MEM USAGE / LIMIT   MEM %     NET I/O          BLOCK I/O        PIDS
899c2f0b42eb   rustfs    0.00%     23.8MiB / 8GiB      0.29%     8.9kB / 2.56kB   991kB / 16.4kB   20
[root@openeuler-server rustfs]#

image.png

5.4 API 健康接口校验

curl -s http://localhost:9000/health
[root@openeuler-server rustfs]# curl -s http://localhost:9000/health
{"details":{"iam":{"ready":true,"status":"connected"},"storage":{"ready":true,"status":"connected"}},"ready":true,"service":"rustfs-endpoint","status":"ok","timestamp":"2026-05-03T02:29:05.414571158Z[Etc/Unknown]","version":"1.0.0-beta.1"}[root@openeuler-server rustfs]# 
[root@openeuler-server rustfs]#

image.png

预期返回包含 status":"ok" 及版本信息,代表服务 API 就绪。

5.5 访问 Web 可视化控制台

浏览器访问地址:

http://<服务器IP>:9001/rustfs/console/auth/login/

登录账号密码:

  • 用户名:rustfsadmin
  • 密码:ChangeMe@2026

image.png

登录后主界面集成存储桶管理、文件在线浏览、IAM 用户权限、集群监控仪表盘等核心模块,支持可视化创建存储桶、文件上传预览、权限配置,可直观验证服务业务可用性。

image.png

六、命令行工具 rc、mc 运维实战

6.1 初始下载报错问题复盘

下载 minio-mc 404 报错

[root@openeuler-server rustfs]# wget https://gitee.com/mirrors/minio-mc/releases/download/RELEASE.2025-08-13T08-35-41Z/mc.linux-amd64
--2026-05-03 12:19:28--  https://gitee.com/mirrors/minio-mc/releases/download/RELEASE.2025-08-13T08-35-41Z/mc.linux-amd64
正在解析主机 gitee.com (gitee.com)... 180.76.199.13
正在连接 gitee.com (gitee.com)|180.76.199.13|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 404 Not Found
2026-05-03 12:19:28 错误 404:Not Found。

[root@openeuler-server rustfs]#

image.png

下载 rustfs-rc 网络超时报错

[root@openeuler-server rustfs]# wget https://github.com/rustfs/cli/releases/latest/download/rc-linux-amd64
--2026-05-03 12:21:02--  https://github.com/rustfs/cli/releases/latest/download/rc-linux-amd64
正在解析主机 github.com (github.com)... 20.205.243.166
正在连接 github.com (github.com)|20.205.243.166|:443... 失败:Connection timed out。
重试中。

--2026-05-03 12:21:10--  (尝试次数: 2)  https://github.com/rustfs/cli/releases/latest/download/rc-linux-amd64
正在连接 github.com (github.com)|20.205.243.166|:443... 失败:Connection timed out。
重试中。

image.png

6.2 rc 客户端标准安装(Linux 宿主机通用)

重要规范:RustFS 官方客户端 rc 禁止在容器内用 brew 安装,容器无依赖环境,必须在宿主机安装二进制包,为生产运维标准做法。

6.2.1 官方 CLI 项目与版本页

CLI 项目地址:

https://github.com/rustfs/cli

image.png

Releases 版本下载页:

https://github.com/rustfs/cli/releases

image.png

6.2.2 下载官方指定版本二进制包

[root@openeuler-server rustfs]# curl -LO  https://github.com/rustfs/cli/releases/download/v0.1.13/rustfs-cli-linux-amd64-v0.1.13.tar.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100 8531k  100 8531k    0     0  24495      0  0:05:56  0:05:56 --:--:-- 19967
[root@openeuler-server rustfs]#

image.png

6.2.3 解压二进制包

[root@openeuler-server rustfs]# ls
data  docker-compose.yml  logs  rustfs-cli-linux-amd64-v0.1.13.tar.gz
[root@openeuler-server rustfs]# tar -xvf rustfs-cli-linux-amd64-v0.1.13.tar.gz 
rc
[root@openeuler-server rustfs]# ls
data  docker-compose.yml  logs  rc  rustfs-cli-linux-amd64-v0.1.13.tar.gz
[root@openeuler-server rustfs]#

image.png

6.2.4 授权并移入系统全局 PATH

[root@openeuler-server rustfs]# chmod +x rc
[root@openeuler-server rustfs]# mv rc /usr/local/bin/
[root@openeuler-server rustfs]#

image.png

6.2.5 验证 rc 安装版本

[root@openeuler-server rustfs]# rc --version
rc 0.1.13
[root@openeuler-server rustfs]#

image.png

6.3 配置 rc 连接 RustFS 实例

错误配置与问题排查

[root@openeuler-server rustfs]# rc alias set rustfs http://localhost:9000 Admin StrongPass123!
✓ Alias 'rustfs' configured successfully.
[root@openeuler-server rustfs]# 
[root@openeuler-server rustfs]# rc ls rustfs/
✗ Failed to list buckets: Network error: service error
[root@openeuler-server rustfs]# 
[root@openeuler-server rustfs]# rc alias remove rustfs
✓ Alias 'rustfs' removed successfully.
[root@openeuler-server rustfs]#

image.png

故障原因:自定义 AK/SK 未通过容器环境变量生效,容器默认管理员账号:

  • Access Key: rustfsadmin
  • Secret Key: ChangeMe@2026

重启容器重载配置

[root@openeuler-server rustfs]# docker-compose up -d
[+] Running 2/2
 ✔ Network rustfs_default  Created                                                    0.2s 
 ✔ Container rustfs        Started                                                    0.4s 
[root@openeuler-server rustfs]#

image.png

重新正确配置别名连接

[root@openeuler-server rustfs]# rc alias remove rustfs
✓ Alias 'rustfs' removed successfully.
[root@openeuler-server rustfs]# rc alias set rustfs http://127.0.0.1:9000 rustfsadmin ChangeMe@2026
✓ Alias 'rustfs' configured successfully.
[root@openeuler-server rustfs]#

image.png

适配 Compose 配置账号连接:

[root@openeuler-server rustfs]# rc alias set rustfs http://127.0.0.1:9000 rustfsadmin rustfsadmin
✓ Alias 'rustfs' configured successfully.
[root@openeuler-server rustfs]#

image.png

6.4 rc 高频运维实操命令

查看所有存储桶

[root@openeuler-server rustfs]# rc ls rustfs/
[root@openeuler-server rustfs]#

image.png

创建业务存储桶

[root@openeuler-server rustfs]# rc mb rustfs/iot-data
✓ Bucket 'rustfs/iot-data' created successfully.
[root@openeuler-server rustfs]#

image.png

本地文件上传至对象存储

[root@openeuler-server rustfs]# rc cp /var/log/messages rustfs/iot-data/
/var/log/messages -> rustfs/iot-data/messages (1.34 MiB)
[root@openeuler-server rustfs]#

image.png

查看对象详细元数据

[root@openeuler-server rustfs]# rc stat rustfs/iot-data/messages
Name      : messages
Date      : 2026-05-03 15:06:11 UTC
Size      : 1405462 bytes
Size      : 1.34 MiB
ETag      : a693759deeb02fcb87bf5ad12576488d
Type      : file
Metadata  : 
Content-Type : application/octet-stream
[root@openeuler-server rustfs]#

image.png

配置存储桶生命周期(30天自动过期)

[root@openeuler-server rustfs]# rc ilm rule add rustfs/iot-data --expiry-days 30 --prefix log/
✓ Lifecycle rule 'rule-abf10059' added successfully.
[root@openeuler-server rustfs]#

image.png

查看集群整体信息

[root@openeuler-server rustfs]# rc admin info cluster rustfs
Cluster Information  (online)

  Deployment ID: unknown
  Region:        us-east-1
  Servers:       1
  Disks:         1 (1 online)
  Storage:       12.37 GiB / 92.85 GiB (13%)
  Buckets:       1
  Objects:       1

  Backend:       Erasure
  EC Parity:     0
[root@openeuler-server rustfs]#

image.png

查看磁盘分区使用状态

[root@openeuler-server rustfs]# rc admin info disk rustfs
Disk List (1 disks)

● /data (pool:0 set:0 disk:0)
    12.37 GiB / 92.85 GiB (13%)
[root@openeuler-server rustfs]#

image.png

运维说明:rc 命令语法与 MinIO mc 高度同源,alias、mb、cp、ls、rm、ilm 等命令可无缝迁移,学习成本极低。

创建本地测试文件

[root@openeuler-server rustfs]# echo "Hello RustFS Beta 物联网对象存储!" > /tmp/upload-test.txt
[root@openeuler-server rustfs]#

image.png

测试文件上传至存储桶

[root@openeuler-server rustfs]# rc cp /tmp/upload-test.txt rustfs/iot-data/
/tmp/upload-test.txt -> rustfs/iot-data/upload-test.txt (43 B)
[root@openeuler-server rustfs]#

image.png

列举存储桶内所有对象

[root@openeuler-server rustfs]# rc ls rustfs/iot-data/
[2026-05-03 15:06:11]   1.34 MiB messages
[2026-05-03 15:16:17]       43 B upload-test.txt
[root@openeuler-server rustfs]#

image.png

从对象存储下载文件到本地

[root@openeuler-server rustfs]# rc cp rustfs/iot-data/upload-test.txt /tmp/downloaded.txt
rustfs/iot-data/upload-test.txt -> /tmp/downloaded.txt (43 B)
[root@openeuler-server rustfs]#

image.png

校验下载文件内容一致性

[root@openeuler-server rustfs]# cat /tmp/downloaded.txt
Hello RustFS Beta 物联网对象存储!
[root@openeuler-server rustfs]#

image.png

查看集群节点服务状态

[root@openeuler-server rustfs]# rc admin info server rustfs
Server List (1 servers)

● 0.0.0.0:9000 [2026-04-28T23:15:59Z@v1.0.0-beta.1]
    Uptime: 21m | Disks: 1
[root@openeuler-server rustfs]#

image.png

七、Web 控制台可视化运维

7.1 存储桶列表访问

http://172.20.2.121:9001/rustfs/console/browser/

image.png

7.2 进入 iot-data 存储桶对象列表

http://172.20.2.121:9001/rustfs/console/browser/?bucket=iot-data

image.png

7.3 在线预览对象内容

image.png

7.4 控制台下载对象文件

image.png

下载文件内容校验:

iot-data 桶 upload-test.txt 对象
Hello RustFS Beta 物联网对象存储!

image.png

7.5 存储桶基础配置管理

image.png

7.6 存储桶访问策略配置(公有/私有/自定义)

image.png

7.7 集群运行状态总览

image.png

总结

RustFS Beta 版本的发布,标志着这款基于 Rust 语言构建的分布式对象存储系统已从早期的快速迭代阶段迈入稳定化、企业级可用阶段。我通过本次测试站在运维与架构视角,核心价值可归纳为四大维度:

  1. 部署层面:轻量 | 二进制约 90MB | 启动快、资源占用低。配合 Docker Compose 可快速搭建生产级单节点实例。通过 Helm Chart 和 Operator 可平滑扩展至 Kubernetes 分布式集群。

  2. 性能层面:基于 Rust 语言的无 GC 架构与零成本抽象,RustFS 在 4KB 小对象场景下 OPS 达到 MinIO 的 2.3 倍,内存占用更低。在 AI 训练、大数据湖等高并发场景下具有显著优势。

  3. 运维层面:Beta 版本补齐了 mTLS、KMS、OTEL、安全审计等企业级运维功能,结合健康检查、日志轮转、事件通知、资源限制等 Docker 原生能力,可构建完整的可观测性与安全管理体系。

  4. 生态层面:Apache 2.0 协议消除了商用顾虑,100% S3 兼容性确保与现有 S3 生态工具(mc、s3cmd、AWS SDK 等)无缝对接,迁移成本极低。

诚然,RustFS 仍处于 Beta 阶段,距离正式 GA 版本还有一段路要走。但对于正在寻找 MinIO 替代方案、关注开源合规与长期成本控制的团队而言,现在就是深入评估 RustFS 的最佳时机。同时欢迎开发者 Star、Fork 项目、提交代码 PR,共同共建这款增速领跑全球的开源高性能对象存储项目。

作者注

  • 本文所有操作及测试均基于 openEuler 22.03 (LTS-SP4) 操作系统与 Docker 20.10.24 环境完成,核心围绕 RustFS Beta 版(v1.0.0-beta.1)的 Docker 部署、Compose 编排、rc 客户端运维及 S3 兼容性验证展开。
  • 请注意,RustFS 仍处于 Beta 阶段,版本迭代较快,文中涉及的配置参数、环境变量、命令行输出等可能随后续版本更新发生变化。请在生产环境部署前,务必以 RustFS 官方文档 及 GitHub 仓库的最新说明为准。
  • 以上仅为个人实践与运维经验总结,不代表任何组织或社区的官方观点。文中提到的技术架构、功能特性、测试案例等,仅供参考。
最后修改时间:2026-05-06 09:51:40
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论