MinIO(三)对象生命周期及存储桶版本

2,308 阅读9分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

对象生命周期

  • 将对象从MinIO过渡到S3
  • 将对象从MinIO过渡到GCS
  • 将对象从MinIO过渡到Azure
  • 自动对象过期

本文只关注最后一点“自动对象过期”,可从存储桶版本控制中设置对象保留期让其按时自动过期

存储桶版本控制

对象锁定

MinIO 对象锁定(“对象保留”)强制实施一次写入多次读取 (WORM) 不可变性,以保护受版本控制的对象不被删除。MinIO 支持基于持续时间的对象保留无限期合法保留

  • 为存储桶启用对象锁定时,该存储桶可以存储受保护的对象。但此设置不会自动保护您放入存储桶的对象。如果您要自动保护放入存储桶的对象版本,则可配置默认保留期限。除非您在创建对象时为其明确指定了不同的保留模式和保留期限,否则默认设置将应用于放入存储桶的所有新对象。
  • 只能在创建存储桶时启用
  • 启用对象锁定后,会自动为该存储桶启用版本控制
  • 启用对象锁定后,无法为该存储桶禁用对象锁定或暂停版本控制
  • 版本控制下,过期文件会打上删除标识

基于持续时间的对象保留(Retention Period)

  • 保留模式

    • Governance mode(治理模式)

      用户无法覆盖或删除对象版本或更改其锁定设置,除非他们具有特殊权限。使用治理模式,可以保护对象不被大多数用户删除,但仍可以授予某些用户更改保留设置或删除对象(如有必要)的权限。还可以使用治理模式在创建合规性模式保留期之前测试保留期设置。

    • Compliance mode(合规模式)

      任何用户(包括 AWS 账户中的根用户)都无法覆盖或删除受保护的对象版本。当对象在合规模式下锁定时,其保留模式无法更改,其保留期也无法缩短。合规性模式有助于确保在保留期内无法覆盖或删除对象版本

  • 保留期

    可在固定的时间内保护对象版本。

    适用于各个对象版本。

法定保留(Legal hold)

法定保留与保留期限相似,依法保留可防止对象版本被覆盖或删除。

但是,法定保留没有关联的保留期,在删除之前一直有效。任何拥有权限的用户都可以自由实施和删除法定保留。

依法保留与保留期限无关。只要包含对象的存储桶已启用对象锁定,您便可实施和删除依法保留,无论指定的对象版本是否已设置保留期限。对对象版本实施依法保留不会影响该对象版本的保留模式或保留期限。

例如,如果您对某一对象版本实施依法保留,同时该对象版本也受保留期限保护。如果保留期限过期,该对象不会失去其 WORM 保护。依法保留将继续保护该对象,直至授权用户明确将其删除。与之相似,如果您在对象版本的保留期限生效时删除依法保留,该对象版本将一直受保护,直至保留期限过期。

删除标记

Amazon S3 中的删除标记是用于受版本控制的对象(已在简单 DELETE 请求中命名)的占位符(或标记)。因为对象位于已启用版本控制的存储桶中,所以不能删除该对象。但是,删除标记可以使 Amazon S3 的行为类似于它已被删除。

与任何其他对象一样,删除标记同样有键名 (键) 和版本 ID。但是,删除标记在以下方面与其他对象不同:

  • 没有关联的数据。

  • 没有关联的访问控制列表 (ACL) 值。

  • 由于删除标记不包含数据,因此 GET 请求检索不到任何内容;该操作会引发 404 错误。

  • 可在删除标记上使用的唯一操作是 Amazon S3 API DELETE 调用。为此,您必须使用具有适当权限的 AWS Identity and Access Management (IAM) 用户或角色来发出 DELETE 请求。

删除标记将累积对 Amazon S3 中的存储的名义费用。删除标记的存储大小等于删除标记键名的大小。键名是 Unicode 字符序列。对于名称中的每个字符,UTF-8 编码将 1 到 4 字节的存储添加到存储桶。

有关键名称的更多信息,请参阅 创建对象键名称。有关将删除标记删除的信息,请参阅 管理删除标记

仅 Amazon S3 可以创建删除标记,且当您在已启用版本控制或已暂停版本控制的存储桶的对象上发送 DELETE Object 请求时执行此操作。在 DELETE 请求中指定的对象实际上不会删除。而是使删除标记成为对象的当前版本。该对象的键名(键)将成为删除标记的键。如果您尝试获取对象,而其当前版本为删除标记,则 Amazon S3 的响应如下:

  • 404 (Object not found) 错误

  • 响应标头,x-amz-delete-marker: true

站点复制

站点复制将多个独立的 MinIO 部署配置为称为对等站点的副本群集。

复制端点的两侧使用相同的硬件。尽管可能会执行类似的硬件,但引入异构硬件配置文件会引入复杂性并减慢问题识别的速度。

复制前最多只有一个站点中有数据

可同步:

  • 创建、修改和删除存储桶和对象,包括

  • 创建和删除 IAM 用户、组、策略以及与用户或组的策略映射(适用于 LDAP 用户或组)

  • 为可从本地凭据验证的会话令牌创建安全令牌服务 (STS) 凭据root

  • 创建和删除服务帐户(用户拥有的帐户除外)root

站点复制为所有复制站点上的所有新存储桶和现有存储桶启用存储桶版本控制

不可同步:

存储桶复制

存储桶复制与站点复制不同,并且与站点复制互斥。

  • 存储桶复制在存储桶级别同步数据,例如存储桶前缀路径和对象。

    您可以随时配置存储桶复制,并且远程 MinIO 部署可能具有复制目标存储桶上的预先存在数据。

  • 站点复制扩展了存储桶复制,以包括 IAM、安全令牌、服务账户和存储桶级配置。

    站点复制通常在最初部署 MinIO 对等站点时进行配置。在初始配置时,只有一个站点可以容纳任何存储桶或对象。

MinIO 服务器端存储桶复制是一种自动存储桶级配置,用于在源存储桶和目标存储桶之间同步对象。MinIO 服务器端复制要求源存储桶和目标存储桶是两个单独的 MinIO 集群。

对于存储桶的每次写入操作,MinIO 都会检查存储所有已配置复制规则,并应用具有最高配置优先级的匹配规则。MinIO 同步新对象对象突变,例如新对象版本或对象元数据的更改。这包括元数据操作,例如启用或修改对象锁定或保留设置。

mc replicate add --remote-bucket "arn:minio:replication::myminio:bucket-replication" --replicate "delete,delete-marker,existing-objects" myminio-bucketReplication/bucket-replication

以下策略提供用于将复制的数据同步部署中的权限

可以通过以下任一方式进行复制:

  • 主动-被动符合条件的对象从源存储桶复制到远程存储桶。远程存储桶上的任何更改都不会复制回去。
  • 主动-主动对任一存储桶的合格对象的更改将双向复制到另一个存储桶。
  • 多站点主动-主动对为存储桶复制设置的任何存储桶上符合条件的对象的更改将回复到所有其他存储桶。

MinIO 支持复制删除操作,其中 MinIO 同步删除特定对象版本和新的删除标记。删除操作复制使用与所有其他复制操作相同的复制过程。

MinIO 仅复制显式客户端驱动的删除操作。MinIO不会复制由于生命周期管理过期规则而删除的对象。

对于删除标记复制,MinIO 在删除操作创建删除标记后开始复制过程。MinIO 使用元数据字段来跟踪删除标记复制状态。在主动-主动复制配置中,如果两个集群同时为一个对象创建删除标记,或者如果一个或两个集群在复制事件同步之前已关闭,MinIO 可能会生成重复的删除标记。X-Minio-Replication-DeleteMarker-Status

为了复制特定对象版本的删除,MinIO 将对象版本标记为 ,直到复制完成。远程目标删除该对象版本后,MinIO 将删除源上的对象。虽然此过程可确保近乎同步的版本删除,但它可能会导致列出操作在初始删除操作后返回对象版本。MinIO 使用 跟踪删除版本复制状态。PENDINGX-Minio-Replication-Delete-Status

MinIO 需要显式启用版本化删除和删除标记复制。使用 mc 复制添加 --复制字段指定两者或其中之一,并分别启用版本化删除和删除标记复制。要启用这两个字符串,请使用逗号分隔符 指定这两个字符串。deletedelete-markerdelete,delete-marker