

一个训练日志桶,三个月前的调试日志没人看了,却还在占着高性能 NVMe 的贵价空间。我见过不少团队靠手写 cron 脚本定期 mc rm 来清过期数据,结果脚本哪天挂了没人发现,磁盘悄悄被塞满。RustFS 把这类需求做成了原生的生命周期(Lifecycle)与分层(Tiering)能力:过期规则按桶配置,冷数据还能异步迁到便宜的远端存储,本地只留元数据继续服务读。这篇文章把规则写法、分层后端和几个边界讲清楚。
1. 问题背景:数据不是越老越该占贵价存储
数据增长越快,「按访问频率和成本协同优化」越不是锦上添花,而是硬需求。对象存储的成本大头往往在介质:NVMe 跑热数据、HDD 压冷数据、对象存储归档层更便宜。RustFS 的生命周期管理工具覆盖对象过期、版本控制、对象锁定等场景,而分层让对象按策略在存储类之间迁移------最常用的是按访问的时间和频率。
关键认知:分层是「把对象从本地迁到远端层」,但读请求仍走原桶和原对象键,对上层应用完全透明。应用不需要知道数据物理上在 NVMe 还是某朵云的对象桶里。
2. 生命周期:过期规则与 WORM 的边界
生命周期规则按存储桶配置,可以用对象键前缀和标签的任意组合做筛选。不写筛选条件就是整桶到期,也可以写多条规则做更细的行为:
- 对象过期:定义对象在磁盘上保留多久后删除,可以是具体天数。
- 版本化桶的过期:对非当前版本单独设过期规则,享受版本控制好处又不长期堆成本;也能建规则删掉「唯一剩余版本是删除标记」的对象。
- 与 WORM 锁定交互:处于锁定状态的对象会留在磁盘上,直到锁定过期或被显式解除;锁定解除后,正常的到期规则才会开始作用。
规则在功能和语法上兼容 AWS Lifecycle Management,还能以 JSON 格式导入已有的 AWS 到期规则------这点对从 AWS S3 迁过来的团队很友好,旧规则不用重写。
3. 分层:支持的远端后端
基于策略的对象分层,RustFS 官方文档列出的远端后端类型有这些(类型键 → 典型目标):

注意一个边界:层名必须大写,且不是 AWS 存储类 (INTELLIGENT_TIERING / GLACIER / DEEP_ARCHIVE 这类)。除非你真的注册了一个同名且验证过的 RustFS 层,否则别直接套 AWS 的类名。生命周期规则用注册好的大写层名(比如 COLDTIER)来引用目标。
4. 注册层 + 写转换规则
分层是异步的。RustFS 在本地保留对象元数据、把对象数据转到远端层,读请求仍经原桶键。注册一个指向另一套 RustFS 集群的冷层,用 rc 即可:
bash
rc bucket lifecycle tier add rustfs COLDTIER local \
--endpoint https://cold.rustfs.internal:9000 \
--access-key <目标 access key> \
--secret-key <目标 secret key> \
--bucket my-bucket --region us-east-1
rc bucket lifecycle rule add local/logs \
--prefix "app-logs/" \
--transition-days 30 \
--storage-class COLDTIER \
--expiry-days 365
控制台也行:左侧「Tiered Storage」→「Add Tier」,填大写层名、端点、凭证、目标桶。保存时 RustFS 会写、读、删一个小对象做连通性探测,端点、凭证、桶权限或后端配置不对就会保存失败------这是好事,能在写入前挡掉错误配置。

5. 几个必须记牢的边界
- 注册层不等于搬数据。一个层注册完只是「可用」,必须有生命周期规则引用它的名字,转换才会触发。
- 凭证要收窄。给目标层用的凭证只授权目标桶和前缀的 put/get/list/delete,别在截图、工单、日志里暴露 secret key。
- 分层是异步的 ,对象不会在到期那一刻瞬间消失在本地------它的元数据留在本地、数据在远端,召回归档按需做。需要把归档对象临时拉回本地时,用
rc bucket lifecycle restore指定天数即可。 - 跨云分层时走 TLS,生产环境别用明文端点。
6. 总结与下一步
生命周期管「什么时候删」,分层管「冷了搬去哪」。两者配合,你能用一条规则让 30 天前的日志自动降级到便宜介质、一年后自动清理,全程不对应用暴露细节。
下一步可以在测试桶先建一个 COLDTIER 指向本地另一套 RustFS(或 MinIO),写一条 7 天转层的小规则观察行为;确认无误再推广到真实日志桶。需要把数据从 AWS S3 迁过来,直接把现有 Lifecycle 规则的 JSON 导入就行。
以下是深入学习 RustFS 的推荐资源:RustFS
官方文档: RustFS 官方文档- 提供架构、安装指南和 API 参考。
GitHub 仓库: GitHub 仓库 - 获取源代码、提交问题或贡献代码。
社区支持: GitHub Discussions- 与开发者交流经验和解决方案。
意见反馈:GitHub Issues