7.10. bucket 生命周期


作为存储管理员,您可以使用存储桶生命周期配置来管理对象,以便它们在整个生命周期中有效地存储。例如,您可以根据您的用例,将对象转换为更昂贵的存储类、存档甚至删除它们。

RADOS 网关支持 S3 API 对象到期,以利用为一组 bucket 对象定义的规则。每个规则都有一个前缀,用于选择对象,以及若干天,对象不可用。

注意

radosgw-admin lc reshard 命令在 Red Hat Ceph Storage 3.3 中已弃用,Red Hat Ceph Storage 4 及更新的版本中不被支持。

7.10.1. 创建生命周期管理策略

您可以使用标准 S3 操作来管理存储桶生命周期策略配置,而不是使用 FQDN -admin 命令。RADOS 网关仅支持将部分 Amazon S3 API 策略语言应用到 bucket。生命周期配置包含一组 bucket 对象定义的一个或多个规则。

先决条件

  • 正在运行的红帽存储集群。
  • 安装 Ceph 对象网关.
  • Ceph 对象网关节点的根级别访问权限.
  • S3 存储桶被创建。
  • 创建的用户具有访问权限的 S3 用户。
  • 访问安装了 AWS CLI 软件包的 Ceph 对象网关客户端。

流程

  1. 为生命周期配置创建 JSON 文件:

    示例

    [user@client ~]$ vi lifecycle.json

  2. 在文件中添加特定的生命周期配置规则:

    示例

    {
    	"Rules": [
            {
    		    "Filter": {
    			    "Prefix": "images/"
    		    },
    		    "Status": "Enabled",
    		    "Expiration": {
    			    "Days": 1
    		    },
    		    "ID": "ImageExpiration"
    	    }
        ]
    }

    生命周期配置示例在 images 目录中过期对象,这些对象超过 1 天。

  3. 在存储桶上设置生命周期配置:

    语法

    aws --endpoint-url=RADOSGW_ENDPOINT_URL:PORT s3api put-bucket-lifecycle-configuration --bucket BUCKET_NAME --lifecycle-configuration file://PATH_TO_LIFECYCLE_CONFIGURATION_FILE/LIFECYCLE_CONFIGURATION_FILE.json

    示例

    [user@client ~]$ aws --endpoint-url=http://host01:80 s3api put-bucket-lifecycle-configuration --bucket testbucket --lifecycle-configuration file://lifecycle.json

    在这个示例中,生命周期.json 文件存在于当前目录中。

验证

  • 检索存储桶的生命周期配置:

    语法

    aws --endpoint-url=RADOSGW_ENDPOINT_URL:PORT s3api get-bucket-lifecycle-configuration --bucket BUCKET_NAME

    示例

    [user@client ~]$ aws --endpoint-url=http://host01:80 s3api get-bucket-lifecycle-configuration --bucket testbucket
    {
    	"Rules": [
            {
    		    "Expiration": {
    			    "Days": 1
    		    },
    		    "ID": "ImageExpiration",
    		    "Filter": {
    			    "Prefix": "images/"
    		    },
    		    "Status": "Enabled"
    	    }
        ]
    }

  • 可选:在 Ceph 对象网关节点中,登录 Cephadm shell 并检索存储桶生命周期配置:

    语法

    radosgw-admin lc get --bucket=BUCKET_NAME

    示例

    [ceph: root@host01 /]# radosgw-admin lc get --bucket=testbucket
    {
    	"prefix_map": {
    		"images/": {
    			"status": true,
    			"dm_expiration": false,
    			"expiration": 1,
    			"noncur_expiration": 0,
    			"mp_expiration": 0,
    			"transitions": {},
    			"noncur_transitions": {}
    		}
    	},
    	"rule_map": [
            {
    		"id": "ImageExpiration",
    		"rule": {
    			"id": "ImageExpiration",
    			"prefix": "",
    			"status": "Enabled",
    			"expiration": {
    				"days": "1",
    				"date": ""
    			},
    			"mp_expiration": {
    				"days": "",
    				"date": ""
    			},
    			"filter": {
    				"prefix": "images/",
    				"obj_tags": {
    					"tagset": {}
    				}
    			},
    			"transitions": {},
    			"noncur_transitions": {},
    			"dm_expiration": false
    		}
    	}
      ]
    }

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

关于红帽文档

Legal Notice

Theme

© 2026 Red Hat
返回顶部