婚庆公司网站建设方案,做外贸女装有哪些网站有哪些,注册公司后每年要交什么费用,网站搭建设计 是什么概述
在某次故障回溯中#xff0c;发现引发集群故障#xff0c;slow io#xff0c;pg stuck的罪魁祸首竟是做了一次ceph pg repair $pgid。然而ceph pg repair作为使用频率极高的#xff0c;用来修复pg不一致的常用手段#xff0c;平时可能很少注意其使用规范和可能带来的…概述
在某次故障回溯中发现引发集群故障slow iopg stuck的罪魁祸首竟是做了一次ceph pg repair $pgid。然而ceph pg repair作为使用频率极高的用来修复pg不一致的常用手段平时可能很少注意其使用规范和可能带来的影响更不会想到会引起业务阻塞。
产生原因
一般我们在集群中出现activeinconsistent等状态的pg时会想到用ceph pg repair方式根据pg log进行权威的pg 选择然后进行副本恢复。包括正常在社区搜索处理不一致不完整的pg修复攻略都会出现类似“先 repair试试看”等类似方法。然而作为在线业务的运维保障人员我们需要知道一个操作的各个阶段的运行机制以及潜在风险。 当集群出现不一致时往往pg是由deep-scrub与scrub扫描出来
deep-scrub
deep scrub本身是一种扫描检测机制其过程会遍历目标osd上所有的object并进行校验和匹配。因为ceph同时为了满足强一致性所有副本写完再返回又为了提高性能写日志因此可能会存在最终实际object出现写错和不一致的情况这种情况下deep scrub可以帮助发现潜在数据风险提高数据可靠性。但其动作本身有会消耗大量的计算和io资源会导致集群的性能大打折扣在某些对性能有要求的集群中会set nodeep-scrub flag不关闭普通的scrub也就是依然存在元数据校验并不意味着关闭后集群数据没有任何校验只是可靠性下降。 ceph本身的op队列中deep-scrub的op priority 只有5即队列中不会占据大量client op。 总得来说就是两点1.开启deep-scrub会占用存储io增加硬盘io压力降低存储性能 2.ceph本身deep-scrub的op priority并不高。
ceph pg repair
查看ceph pg repair源码其本质是会对指定的pg先进行一次deep scrub然而由ceph pg repair发起的deep scrub与ceph本身osd发起的deep-scrub并不同其op priority会被设置成120也就是说在deep scrub本身影响集群性能的但没有引起阻塞的情况下这次特殊的deep scrub很有可能会导致放大对集群性能osd io的影响。 实际故障情况是集群存在某个慢盘写入时出现不一致然后进行pg repair时该硬盘直接利用率达到100%延迟达到秒级从而使该osd上的pg io全部阻塞卡死最终引起业务故障。
规范
虽然pg repair有导致osd io阻塞的风险但我们依然非常依赖其进行pg 不一致问题的修复只要正确理解上述问题后规范操作即可。即 需要先用kvstore tool判断排除掉rocksdb问题以及检查集群本身的慢盘必须在将问题osd停止并out出集群后再进行repair而不是盲目直接进行repair。