cephrgw lifecycle理解

相关lc链接:rgw:lifecycle功能理解_ceph rgw lifecycle-CSDN博客

相关gc链接:RGW 的GC深入解析与调优-腾讯云开发者社区-腾讯云

每个rgw实例有rgw_lc_max_worker个worker (默认为3)来做lifecycle

复制代码
RGWLC::LCWorker::entry()
	-> RGWLC::process() // 1天只执行1次,(如果rgw_lc_debug_interval>0,只要超过了该时间,就视为没有执行过,会继续执行)
		-> l.lock_exclusive()
		-> cls_rgw_lc_get_head() // 获取对象head,拿到marker
		-> cls_rgw_lc_get_entry() // 获取当前omap entry的状态
		-> cls_rgw_lc_get_next_entry() // 获取下一个omap entry
		-> cls_rgw_lc_set_entry() // 设置entry 状态
		-> cls_rgw_lc_put_head() // 设置head的marker
		-> l.unlock()
		-> bucket_lc_process() // 处理lifecycle 任务
			-> ol.get_obj() // 会借助LCObjLister去list objects, 然后将符合条件的bucket包装成对应的LCOpRule放入workpool,进而有worker来处理
			-> op_rule.process() // worker会调用注册的process函数,LCOpRule::process调用LCOpAction->process对于当前版本过期删实际会调用LCOpAction_CurrentExpiration::process()
				-> remove_expired_obj() 
					-> del_op.delete_obj() // 实际会抽象一个删除cephrgw object的类RGWRados::Object::Delete完成对象的删除流程,因为对象的删除是一个多阶段的流程,里面会涉及标记对象状态,同时将对象记录到default.rgw.log中的gc.x对象队列中
						-> store->set_olh() // 处理.rgw.buckets.index 的状态
							-> bucket_index_link_olh() // 更新.rgw.buckets.index中对象索引的状态,确保业务不可见
		-> bucket_lc_post()

如果是空查每次有1写3读,耗时约4ms,每个worker大概的IO流程是:

1,lock_exclusive 写lc.x,获取lock,成功(这个不知道算写还是算读?看代码是WriteOP)

2,cls_rgw_lc_get_head 获取对象的head,成功

3,cls_rgw_lc_get_entry 获取entry,成功,但是为empty

4,unlock (这个算写还是读?)

如果是有任务,但是已在进行中,每次有1写3读,耗时约4ms,每个worker大概的IO流程是:

1,lock_exclusive 写lc.x,获取lock,成功

2,cls_rgw_lc_get_head 获取对象的head,成功

3,cls_rgw_lc_get_entry 获取entry,因为entry的状态是processing

4,unlock

如果lc.x有bucket任务,而且没有人执行过这个,大概4写2读,每个worker大概的IO流程是:

1,lock_exclusive 写lc.x,获取lock,成功

2,cls_rgw_lc_get_head 获取对象的head,成功

3,cls_rgw_lc_get_entry 获取entry,成功

4,cls_rgw_lc_set_entry 设置为processing,成功

5,cls_rgw_lc_put_head 设置marker,成功

6,bucket_lc_process 开始处理bucket

7,unlock

相关推荐
斯普信专业组9 小时前
Ceph异地数据同步之-RBD异地同步复制(下)
linux·服务器·ceph
小马爱打代码12 小时前
Kubernetes 中部署 Ceph,构建高可用分布式存储服务
分布式·ceph·kubernetes
斯普信专业组3 天前
Ceph与Bacula运维实战:数据迁移与备份配置优化指南
运维·ceph·github
野猪佩挤11 天前
Ceph集群2025(Squid版)导出高可用NFS集群(上集)
java·服务器·ceph
不死鸟.亚历山大.狼崽子21 天前
Ceph(1):分布式存储技术简介
ceph
不死鸟.亚历山大.狼崽子22 天前
Ceph(2):Ceph简介
ceph
深度Linux1 个月前
深入探讨Ceph:分布式存储架构的未来
分布式·ceph·架构·c/c++
斯普信专业组1 个月前
基于Rook的Ceph云原生存储部署与实践指南(下)
ceph
斯普信专业组1 个月前
基于Rook的Ceph云原生存储部署与实践指南(上)
ceph
大新新大浩浩2 个月前
k8s环境中的rook-ceph的osd报Permission denied无法正常运行问题的处理方式
java·ceph·kubernetes