首页 / 开源热榜 / RustFS / 使用教程

RustFS 1.0.0 教程:用 Docker 验证 S3 兼容与持久化

更新于 2026-09-23 · 约 12 分钟

RustFS 是 Apache-2.0 的对象存储服务器。第一次测试的目标很具体:容器能用非 root 身份写盘,你正在使用的 S3 客户端能完成基础操作,重启后对象仍可读取。先把这些跑通,再测试复制、KMS 或集群。

版本选择:稳定版 1.0.0 发布于 2026-09-16。1.0.1-preview.9 发布更晚,但仍标为预发布;生产评估先固定 1.0.0。

1. 准备非 root 挂载目录

mkdir -p data logs
sudo chown -R 10001:10001 data logs
ls -ld data logs

官方镜像使用 UID/GID 10001。数据、日志和启用 TLS 后的证书目录都要按此准备,否则容器可能因 permission denied 退出。

2. 固定镜像并限制暴露范围

docker pull rustfs/rustfs:1.0.0
docker run -d --name rustfs-test \
-p 127.0.0.1:9000:9000 \
-p 127.0.0.1:9001:9001 \
-v "$PWD/data:/data" \
-v "$PWD/logs:/logs" \
rustfs/rustfs:1.0.0

示例只绑定本机。正式环境要按官方配置设置独立管理员凭证、TLS、网络访问控制和审计,不要把管理控制台裸露到公网。

3. 用实际 S3 客户端跑基础操作

不要只看控制台页面。用业务真正使用的 SDK 或 CLI,完成建桶、上传、下载、列举、删除和校验和;再测试较大对象的分段上传。把请求、状态码、ETag 和对象哈希写进测试记录。

sha256sum sample.bin
# 使用你的 S3 客户端上传到本地 9000 端口
# 下载到另一个目录后再次运行 sha256sum

4. 重启后检查持久化

docker restart rustfs-test
docker logs --tail 100 rustfs-test

重启后重新列举和下载对象,确认目录挂载、权限和元数据都正常。故障恢复测试还应覆盖磁盘只读、空间不足、进程中止和节点丢失;单次正常重启不能证明集群可恢复。

5. 分开验证加密和出站通知

Local 与 Static KMS 只适合开发测试,生产使用官方支持的 Vault 或 AWS KMS 后端,并演练密钥不可用和轮换。Webhook 对私网地址也执行出站 allowlist;不要为了图省事开启跳过 TLS 校验。

6. 迁移前做 API 清单

列出应用用到的签名版本、分段上传、版本控制、生命周期、通知、对象锁、IAM 和错误码,再逐项测试。MinIO 磁盘兼容仍是 Preview,且官方说明 MinIO 加密对象不可读,所以迁移应经 S3 API 复制并保留回滚。

与 MinIO 对比

两者都提供 S3 兼容对象存储。RustFS 用 Rust、Apache-2.0,并继续提供版本化二进制和镜像;MinIO 社区仓库采用 AGPLv3,已于 2026-04-25 归档,README 说明社区版改为仅源码分发。现有 MinIO 用户应先列出实际 API 和运维依赖,再做双写、校验与回滚测试,不能因接口名称相同直接替换数据盘。

验证状态:本轮只核对官方 README、Cargo workspace、CHANGELOG、许可证和 Releases。没有下载镜像、启动节点、创建桶、写入对象,也没有测试 SDK 兼容、复制、KMS、故障恢复或性能。

这里仅补原教程没有展开的事实和边界。安装命令与操作步骤仍以前文为准。

原教程未展开的系统信息

核心功能

  • 多协议对象访问

    核心 S3 API 已标为 Available,并提供 Swift、WebDAV、FTPS 与可选 SFTP;具体操作仍应按官方兼容矩阵逐项验证。

  • 数据保护与复制

    支持版本控制、bitrot 防护、对象锁、桶复制、站点复制、扫描和修复;生产采用前要演练节点故障、磁盘故障和恢复。

  • 加密与身份

    提供服务端加密、RustFS KMS、IAM/Policy、OIDC/SSO 和 Keystone。官方说明 Local、Static KMS 只用于开发测试,生产应使用 Vault 或 AWS KMS。

  • 容器与 Kubernetes 部署

    官方提供二进制、Docker、Compose 和 Helm 路径;容器以 UID/GID 10001 运行,数据、日志和证书挂载必须具备相应权限。

架构与数据流

RustFS 对外提供 S3 等协议和控制台,内部用 Rust workspace 实现 IAM、加密、纠删存储、复制、扫描修复、事件通知与审计。单机与分布式共用服务入口。Docker 默认把 9000 暴露给 API、9001 暴露给控制台;数据和日志挂载由非 root 用户写入。出站通知受到 allowlist 控制,私网 webhook 也要显式允许。

常见问题

RustFS 现在应该用 1.0.0 还是 1.0.1-preview.9?

生产评估应从稳定的 1.0.0 开始。1.0.1-preview.9 是预发布版本,适合验证即将到来的修复,不应在没有回滚方案时替换稳定环境。

RustFS 可以直接读取 MinIO 的数据盘吗?

不要这样假设。官方把 MinIO 磁盘兼容列为 Preview,并明确说 MinIO 加密对象不可读取。迁移应通过 S3 API 复制、校验对象和元数据,并保留源端回滚。

RustFS Docker 为什么会报目录无权限?

官方镜像以 UID/GID 10001 的非 root 用户运行。绑定的数据、日志和 TLS 证书目录必须允许该用户读写,或按文档显式使用合适的宿主 UID/GID。

RustFS 写着 S3 compatible,是否代表所有 S3 工具都无需测试?

不代表。应按实际工具测试签名、分段上传、版本、生命周期、通知、对象锁和错误码。官方状态表和兼容矩阵比笼统的兼容口号更有参考价值。