小编给大家分享一下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类有什么用”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!