有个大客户反馈集群中有两个节点的阵列卡CC校验特别慢,导致了整个分布式存储业务的性能下降了,需要我们进行定位,最终是确认CC校验过程正常,没有什么异常,主要是客户的业务压力太大了,以及阵列卡驱动太老了,先介绍下CC校验
一致性(Consistency Check )校验功能说明:针对有冗余功能的RAID 1、RAID10,RAID控制卡可以对RAID组的硬盘数据进行一致性校验,对硬盘数据进行检验和计算,并与对应的冗余数据进行比较。如果发现有数据不一致的情况,会尝试做自动修复并保存错误信息。无任何异常时,CC校验的时长会与以下因素相关:
- 由于CC校验过程主要操作涉及硬盘读写,因此时长和硬盘自身的读写速度相关,进而也和CPU平台性能相关;
- 由于CC校验会涉及全部逻辑盘的数据,因此时长和逻辑盘容量以及对应存储的数据量相关;
- 由于CC校验会占用IO性能,因此和系统业务模型负载相关,在整体负载idle时达到最快,时长也会最短。
- 通过测试验证发现,较新的LSI阵列卡驱动会比老驱动的速度有很多提升
下面是具体的分析过程,CC校验还是比较正常的,主要是客户的驱动过老:
查看两份阵列卡日志未发现阵列卡自身的异常告警和报错,LSI阵列卡的CC校验周期为一周一次,会在周期第一天的凌晨3点开始,在4月1号以前两台服务器的CC校验时间从3点开始并于当天结束,时长在13-17小时左右。4月15号开始两台服务器的CC校验时长开始显著增加,增加至2-3天,至此校验时长的影响因素应当是常规因素,比如存储数据量的增多和业务压力的增大:
阵列卡日志在4/29号开始上报命令超时、逻辑盘降级并因此踢盘后重建的动作,与BMC日志相吻合,校验时长也达到了更久,且在日志末尾并未结束校验:
Unexpected sense消息对于阵列卡来说属于提示消息,意味着硬盘存在软件或链路层面的错误,通常是由于硬盘存在坏块或者满负载无法响应控制命令导致,尽管属于info级别消息无需关注,但是会导致此时阵列卡和硬盘的通信进入恶性循环,更多的命令retry和更高的硬盘负载,以下属于阵列卡故障指南关于unexpected sense的说明
PS:intel关于lsi卡的故障指南
https://www.intel.com/content/dam/support/us/en/documents/motherboards/server/sb/intel_raid_basic_troubleshooting_guide_v2_0.pdf
两台阵列卡日志上报的unexpected sense经过解析后都存在两种type,一类为6/29/00,一类为5/24/00,都不属于Medium error,咨询LSI阵列卡厂商确认只有medium error属于不可修复的硬件错误,阵列卡会提高这类消息的上报级别,且推荐更换硬盘或者链路。结合这两类unexpected sense上报时会随机存在各个逻辑盘和物理盘上,可以确认属于无需关注的软件层面info提示:
PS:scsi KCQS
https://www.cnblogs.com/liujx2019/p/12096477.html
发现客户驱动版本是好几年前的,于是内部验证了老版本和最新驱动版本在CC校验上的时长差异,可以达到几倍的差距,于是将结果告知客户并推荐升级驱动