对象生命周期管理
使用 MinIO 对象生命周期管理创建基于时间或日期的对象自动转换或过期的规则。对于对象转换,MinIO 会自动将对象移动到配置的远程存储层。对于对象过期,MinIO 会自动删除对象。
为了与从 S3 迁移工作负载和生命周期规则到 MinIO 保持兼容性,MinIO 的行为和语法源自 S3 生命周期。例如,您可以导出 S3 生命周期管理规则并将其导入到 MinIO 中,反之亦然。MinIO 使用 JSON 来描述生命周期管理规则,并且可能需要在导入 S3 生命周期规则的过程中进行 XML 的转换。
对象转换(“分层”)
MinIO 支持创建对象转换生命周期管理规则,其中 MinIO 可以自动将对象移动到远程存储“层”。MinIO 支持以下任何远程层目标
MinIO 对象转换支持诸如将私有或公有云基础设施中的 MinIO 集群中的陈旧数据移动到低成本私有或公有云存储解决方案之类的用例。目录对象(即名称以 /
结尾的 0 字节对象)**不会**进行分层。MinIO 管理在无需任何额外的应用程序端逻辑的情况下动态检索分层对象。
使用 mc ilm tier add
命令创建远程目标,以便将数据分层到该目标。然后,您可以使用 mc ilm rule add --transition-days
命令在指定的天数后将对象转换到该层。
RELEASE.2022-11-10T18-20-21Z 版本中的新功能。
您可以使用 mc ls
对存储桶或存储桶前缀进行验证,以验证对象的层级状态。输出包括每个对象的存储层。
$ mc ls play/mybucket
[2022-11-08 11:30:24 PST] 52MB STANDARD log-data.csv
[2022-11-09 12:20:18 PST] 120MB WARM event-2022-11-09.mp4
STANDARD
标记存储在 MinIO 部署中的对象。WARM
标记存储在具有匹配名称的远程层中的对象。
重要
MinIO 对象转换支持围绕将较旧或陈旧数据移动到成本优化的远程存储层(如云存储或高密度 HDD 存储)的成本节约策略。
MinIO 对象转换**不**提供备份和恢复功能。在 MinIO 中发生数据丢失的情况下,您不能使用远程层作为恢复源。
对远程数据的独占访问
MinIO *需要* 对远程存储层上的已转换数据拥有独占访问权限。“热” MinIO 源上的对象元数据与“温/冷”远程层上的对象数据紧密关联。如果没有访问远程存储的权限,MinIO 无法检索对象数据,并且远程存储也无法用于恢复源上的丢失元数据。
所有对已转换对象的访问*必须*通过 MinIO 进行,并且只能通过 S3 API 操作。手动修改已转换对象 - 无论是“热” MinIO 层上的元数据*还是*远程“温/冷”层上的对象数据 - 都可能导致该对象数据丢失。
MinIO 会忽略远程存储桶或存储桶前缀中任何未由 MinIO 部署明确管理的对象。自动转换和透明对象检索依赖于以下假设
远程存储上的对象不会被外部修改、迁移或删除。
远程存储桶上没有生命周期管理规则(例如,转换或过期)。
MinIO 将所有已转换的对象存储在远程存储桶或资源中,并使用唯一的每个部署的前缀值。此值并非旨在支持从后端识别源部署。MinIO 在配置远程目标时支持一个额外的可选人性化前缀,这可能有助于与诊断、维护或灾难恢复相关的操作。
对于包含其他数据的远程存储层(包括来自其他 MinIO 部署的已转换对象),MinIO 建议指定此可选前缀。本教程包含设置此前缀的必要语法。
远程数据可用性
MinIO 分层行为取决于远程存储在请求时立即(毫秒到秒)返回对象。因此,MinIO *无法*支持需要重新水化、等待时间或人工干预的远程存储。
MinIO 为每个已转换的对象创建元数据,以标识其在远程存储上的位置。应用程序无法独立于 MinIO 轻松识别和访问已转换的对象。因此,已转换数据的可用性取决于与擦除编码和分布式部署拓扑结构为 MinIO 部署上的所有对象提供的相同核心保护。使用对象转换不会提供任何额外的业务连续性或灾难恢复优势。
需要 BC/DR 保护的工作负载应实施 MinIO 服务器端复制。复制确保对象保留在远程复制站点上,以便您可以在发生部分或全部数据丢失时从远程站点重新同步。有关使用复制在发生部分或全部数据丢失后恢复的更完整文档,请参阅 重新同步(灾难恢复)。
版本化存储桶
对于 版本化存储桶 上的转换规则,MinIO 采用 S3 行为。具体来说,默认情况下,MinIO 会将转换操作应用于*当前*对象版本。
要转换非当前对象版本,请在创建转换规则时指定 --noncurrent-transition-days
和 --noncurrent-transition-tier
选项。
对象过期
MinIO 生命周期管理支持使存储桶中的对象过期。对象“过期”涉及对对象执行 DELETE
操作。例如,您可以创建一条生命周期管理规则,使任何超过 365 天的对象过期。
使用 mc ilm rule add --expire-days
在指定的天数后使对象过期。
对于配置了 复制 的存储桶,MinIO 不会复制生命周期管理过期规则删除的对象。有关更多信息,请参阅 删除操作的复制。
版本化存储桶
对于 版本化存储桶 上的过期规则,MinIO 采用 S3 行为。MinIO 对版本化存储桶有一些默认行为
MinIO 通过创建
DeleteMarker
将过期选项仅应用于*当前*对象版本,这与版本化删除的正常情况相同。要使非当前对象版本过期,请在创建过期规则时指定
--noncurrent-expire-days
选项。MinIO 不会使
DeleteMarkers
过期,*即使*该对象的任何其他版本都不存在。要使删除标记在该对象没有剩余版本时过期,请在创建过期规则时指定
--expire-delete-marker
选项。MinIO 版本更改: RELEASE.2024-05-01T01-11-10Z
MinIO 支持使对象的全部版本过期,其中最新版本是删除标记,*包括使删除标记过期*,但仅限于使用 JSON。使用
mc ilm rule import
添加 JSON 规则。例如,要使已删除对象的全部版本在对象删除 10 天后过期,请使用以下 JSON
<DelMarkerObjectExpiration> <Days> 10 </Days> </DelMarkerObjectExpiration>
要使*所有*不具有删除标记的对象版本在指定的天数后过期,请将
--expire-all-object-versions
标志与--expire-days
标志一起使用。这允许在指定天数过去后永久删除对象。MinIO 版本更改: RELEASE.2024-05-01T01-11-10Z
此标志仅适用于**不**具有删除标记的对象。
生命周期管理对象扫描程序
MinIO 使用内置的 扫描程序 主动检查对象是否符合所有已配置的生命周期管理规则。
扫描程序是一个低优先级进程,它会让位于高 I/O 工作负载,以防止规则计时触发的性能峰值。因此,扫描程序可能要到*超过*生命周期规则期限后才会检测到对象是否符合已配置的转换或过期生命周期规则。