温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

RGW S3 GC类有什么用

发布时间:2021-12-18 16:41:27 来源:亿速云 阅读:144 作者:小新 栏目:云计算

小编给大家分享一下RGW S3 GC类有什么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

RGW S3 GC类的主要功能是提供垃圾收集器的功能。用于异步删除对象。

一、RGW S3 GC核心类关系图

RGW S3 GC类有什么用

二、RGW S3 GC核心数据类关系图

RGW S3 GC类有什么用

三、RGW S3 GC主要处理函数解析。

1、RGWGC初始化操作。

RGWGC::initialize()

|__设置cct和store类对象

|__从配置文件中得到gc最大对象个数,即:rgw_gc_max_objs

|__根据gc最大对象个数生成obj_names数组且初始化该数组的内容为gc.0-rgw_gc_max_objs

2、RGWGC终止操作。

RGWGC::finalize()

|__删除obj_names数组

3、添加chain。

RGWGC::add_chain()

|__cls_rgw_gc_set_entry()

     |__rgw_cls_gc_set_entry()

          |__gc_update_entry()

               |__gc_omap_get()

                    |__cls_cxx_map_get_val()          以名字为key,得到Ceph集群中已经保存的cls_rgw_gc_obj_info信息(CEPH_OSD_OP_OMAPGETVALSBYKEYS)

               |__get_time_key()                         得到time key

               |__gc_omap_remove()

                    |__cls_cxx_map_remove_key()     删除指定time key的值(CEPH_OSD_OMAPRMKEYS)

               |__gc_omap_set()                        

                    |__cls_cxx_map_set_val()          以名字为key,设置cls_rgw_gc_obj_info信息到Ceph集群(CEPH_OSD_OP_OMAPSETVALS)

               |__get_time_key()                         得到time key

               |__gc_omap_set()                         以time为key,设置cls_rgw_gc_obj_info信息到Ceph集群(CEPH_OSD_OP_OMAPSETVALS)

4、发送chain。

RGWGC::send_chain()

|__RGWGC::add_chain()

|__RGWGC::tag_index()

|__RGWRados::gc_operate()

5、更新chain。

RGWGC::defer_chain()

|__cls_rgw_gc_defer_entry()

     |__rgw_cls_gc_defer_entry()

          |__gc_defer_entry()

               |__gc_omap_get()                    以名字为key,得到cls_rgw_gc_obj_info信息

               |__gc_update_entry()               以cls_rgw_gc_obj_info和更新的expiration_secs为参数,更新Ceph集群中的以名字和time为key的cls_rgw_gc_obj_info信息

|__RGWGC::tag_index()

|__RGWRados::gc_operate()

6、删除chain。

RGWGC::remove()

|__cls_rgw_gc_remove()

     |__rgw_cls_gc_remove()

          |__gc_remove()

               |__gc_omap_get()                    以名字为key,得到cls_rgw_gc_obj_info信息

               |__get_time_key()                    得到time key

               |__gc_omap_remove()               删除以time为key的cls_rgw_gc_obj_info信息

               |__gc_omap_remove()               删除以名字为key的cls_rgw_gc_obj_info信息

|__RGWRados::gc_operate()

7、列出chain。

RGWGC::list()

|__cls_rgw_gc_list()

     |__rgw_cls_gc_list()

          |__gc_list_entries()

               |__gc_iterate_entries()

                    |__prepend_index_prefix()          得到以time为key的key

                    |__cls_cxx_map_get_vals()          得到以time为key的所有cls_rgw_gc_obj_info信息

                    |__gc_record_decode()                解析得到cls_rgw_gc_obj_info信息

                    |__gc_list_cb()                              将得到的cls_rgw_gc_obj_info信息插入到列表中

8、处理chain。

RGWGC::process()

|__cls_rgw_gc_list()                                   得到obj_names[i]对应的所有cls_rgw_gc_obj_info信息

|__遍历cls_rgw_gc_obj_info信息中所有的cls_rgw_obj,调用cls_refcount_put()

     |__cls_rc_refcount_put()

          |__read_refcount()                         得到对象对应的引用计数

          |__obj_refcount::refs.erase()          减小对象的引用计数

          |__对于引用计数为零,则调用cls_cxx_remove()     从Ceph集群中删除对象(CEPH_OSD_OP_DELETE)

          |__对于引用计数非零,则调用set_refcount()           更新对象的引用计数

9、RGWGC处理线程主函数。

RGWGC::GCWorker::entry()

|__RGWGC::process()

以上是“RGW S3 GC类有什么用”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

rgw
AI