1、简介

1.1 介绍

    对于 存储 来说,容量 当然是 越大越好了,最好 可以 无限 写入(哈哈,哪有 那么 好的 事);但是 我们 可以 删除 老旧 无用的数据,不过 总不能 时时刻刻 的手动 删除 数据吧;我们 可以 根据 一定的规则 删除 老旧的数据,此时 就可以 设置 对象 生命周期规则,制定 数据 删除 规则,对于 客户来说,集群 好像 就可以 无限量 写入了(哈哈哈,所以 后端 才是 真实的,但是 删除 数据 有风险,谨慎操作哦!!!)
    

1.2 前提 条件

    你要 设置 对象 生命 周期,说明 你的 集群 已经 在 正常 使用了,对象 网关 服务 正常 对外 提供服务
    

2、服务端 配置

    不管 进行 什么 配置,你都需要 对你的 服务进程 进行 相关 的配置吧,ceph 对象网关 生命周期 也是一样的道理,需要 对 提供 对象 网关 服务的
    
    

## 配置 设置
# vim /etc/ceph/ceph.conf
    ...
    ## 运行的时间段
    rgw_lifecycle_work_time = "00:00-24:00"

    ## 时间 间隔
    rgw_lc_debug_interval = "10" 
    ...

## 重启 对象网关 服务
# systemctl restart ceph-radosgw.target

    
    

3、s3 browser 设置 生命周期(Windows 客户端)

    通过 s3 browser 客户端 软件(这个 暂时 不想 详细描述,后期 编写 文章 单独 介绍)
ceph rgw lifecycle 配置( ceph 对象存储 对象生命周期 配置)
    

4、设置 生命周期(Linux 客户端)

4.1 安装 boto3

    安装 boto3,也可以 安装 boto;(但是本文 的 后续 脚本 是 根据 boto3 编写的,boto 需要的 自己 写写喽,差别不大,或者 联系我哦,免费 帮助!!!)
    

# pip install boto3

    

4.3 配置 脚本(python)

# cat rgw_lifecycle_set.py
#!/usr/bin/env python2.7
#-*- coding: utf-8 -*.

import boto3
from botocore.client import Config
import datetime

## 根据 对象 网关 用户 信息 
aws_access_key_id = 'XXX'
aws_secret_access_key = 'XXX'

## 需要 设置 规则 的 bucket
bucket_name = 'XXX'

# aws2
s3 = boto3.client('s3', region_name=None,
                  use_ssl=False,
                  ## url 根据 实际 情况 配置
                  endpoint_url='{http://ceph.com}',
                  aws_access_key_id=aws_access_key_id,
                  aws_secret_access_key=aws_secret_access_key,
                  config=Config(s3={'addressing_style': 'path'}))

print s3.put_bucket_lifecycle( 
    Bucket=bucket_name, 
    LifecycleConfiguration={
        'Rules': [
            {
                'Status': 'Enabled', 
                'Prefix': '/', 
                'Expiration': 
                    {
                        'Days': 1
                    }, 
                'ID': '79m9n5aucsjb1nqi1687nzcbelqdkli3qwbtgzsm7n4nkfv6'
            }
        ], 
    }
)
print s3.get_bucket_lifecycle(Bucket=bucket_name)