Print
知

某局点X100001232P05版本osd断言导致业务中断

1天前 发表

问题描述

某局点X100001232P05版本osd断言导致业务中断

过程分析

 

(1)查看集群告警,集群中多个OSD异常,提示osd断言,后台pg状态也异常,导致业务中断

 

(2)当前集群数据池采用4+2冗余策略,即最多同时异常2个非同节点OSD,从handy告警来看,多个OSD震荡,所以集群不可用原因是多个OSD异常。

(3)查看OSD日志,OSD异常原因是断言,日志如下:

 

 

(4)该断言为集群老版本bug,在cache pool的场景,如果有类似如下操作,则会产生断言:

4.1 业务写入一个大小为600KB的文件(假设大小为600KB),并且成功下刷到数据池

4.2 业务将该文件truncate到0KB,但是还没有同步到数据池

4.3 业务对此文件写入1-2MB,0-1M没有任何数据

4.4将该文件再次truncate到1M

4.5将该文件下刷到数据池,由于0-1M没有任何数据,数据池该文件大小不会有任何修改(600KB)

4.6此时读取超过600KB大小的请求就会断言

(5)多个OSD异常原因是,该断言会导致主OSD断言,当前主OSD断言后,pg所在的主OSD变化,新的主OSD继续断言,从而导致多个OSD异常,业务中断。

解决方法

(1)临时恢复方案是重启异常节点的主机;

(2)离线升级到最新版本,并安装最新补丁。