
现象
客户的私有云平台每周周末会在一个固定的时间(通常是上午 11点,也有可能是其他的固定时间点)收到 qbd io delay IO 或是 SLOW IO
告警,并且具有如下规律:
- 总是在周末的某个固定时间点开始
- 所有存储节点的 RAID 虚拟盘都受到影响
- 只有 RAID 卡的虚拟盘受到影响,SSD 或其他不受 RAID 卡管理的盘的性能未受影响
- IOPS 和带宽没有明显变化,但写延迟无故增大
原理
一致性校验(Consistency Check)
LSI RAID 卡有一个一致性检查(Consistency Check,以下简称 cc)机制,会对 RAID 1、5、6、10、50、60 类型的RAID 逻辑盘的镜像数据和校验数据的正确性进行校验。如果是 RAID 1,则会对镜像数据的一致性进行校验,对于 RAID5,则会对校验数据进行校验。
CC 执行计划
默认情况下,会每隔168小时(一周)执行一次,起始时间是每周六的凌晨3:00(此时间为控制器时间,对应的服务器时间是 11:00),执行方式是并行地对所有的RAID 逻辑盘进行检查。
CC 对磁盘性能的影响
影响时间
当启用 CC 后,RAID 控制器会在指定的控制器时间开始执行
CC。由于控制器时间与本地时间并不一致,甚至控制器之间的时间也有可能存在差异,因此在制定或查询具体执行时间时,需要考虑控制器时间与本地时间的差异。
CC 执行的持续时间(影响时间)不是一个固定值,取决于客户 RAID 组的大小、RAID 类型和后端磁盘数量,但一般能达到 2-10 小时
影响程度
从网上的资料可以了解 CC 和 PR 对磁盘性能的影响程度非常显著:
https://www.percona.com/blog/2008/03/05/raid-system-performance-surprises/

https://www.diskinternals.com/raid-recovery/raid-consistency-check/

https://www.gillware.com/raid-data-recovery/common-raid-performance-killers-
consistency-checks/

CC 期间,受影响的磁盘的写 I/O 延迟会达到秒级甚至10秒左右,磁盘的 util% 可以达到 60-80% 左右。
确认 I/O 写延迟增大是否确实为 CC 或 PR 导致
要确认怀疑的 I/O 性能异常是否为 CC 所导致,需要结合前面现象中列出的特点来判断,即:
-
是否总是在<周末>的<固定时间>点开始
supervisor 日志显示的 center 异常退出的时间点是否集中在周六周日。
qingstor mysql 或 zookeeper 或 center 异常的时间点是否均为周六周日。 -
是否 <所有存储节点的 RAID 虚拟盘>都受到影响
-
是否只有< RAID 卡的虚拟盘>受到影响,而 <不受 RAID 卡管理的盘 的性能未受影响>
-
确认问题发生期间是否正在进行 CC 或 PR
StorCLI 工具下载与安装
由于【 2023-03-06 较新的 RAID 卡(固件)不再支持 MegaCLI 导致 MegaCLI 查询 RAID 卡信息时触发 RAID 卡重置
】,生产环境禁止使用 MegaCLI,需要使用 StorCLI 替代
缓解措施
一旦启用 CC 或 PR,则其对磁盘性能的影响无法避免,目前只能考虑采取以下几种方式去缓解:
- 调整 CC 的执行时间到业务闲时
- 调整 CC 的执行间隔,比如从一周一次拉长到 2-3 周一次
- 调整 CC 的执行强度,比如从默认的 30% 调整到 5-15%
- 将 RAID 卡的 cc 校验从并行改为串行
- 调整 PR 的执行时间到业务闲时
- 调整 PR 的执行间隔,比如一周一次拉长到 2-3 周一次
- 调整 PR 的比例
需要注意的是,调整 CC 或 PR 执行强度会拉长影响时间,且只能减m少 I/O 写延迟增大的频率与次数,并不能做到彻底避免。
以下 storcli 命令中,涉及到 /cx 均表示对第 X+1 个 RAID 卡进行操作,比如:/c0 为第一个 RAID 卡
调整 CC 执行方式为串行执行
storcli /c0 set cc=seq
调整 CC 执行时间
storcli /c0 set cc starttime="yyyy/mm/dd hh"
需要注意,仅当启用 CC 时,才可以调整 CC 执行时间,否则是无法调整的
调整 CC执行间隔
storcli /c0 set cc delay=336
调整 CC 执行强度
storcli /c0 set ccrate=10
调整 PR 执行间隔
storcli /c0 set pr delay=336
调整 PR 执行时间
storcli /c0 set pr starttime="yyyy/mm/dd hh"
调整 PR 执行强度
storcli /c0 set prrate=10
调整以上全部
storcli /c0 set cc=seq delay=336 starttime="2023/03/18 03"
storcli /c0 set ccrate=10
storcli /c0 set pr starttime="2023/03/18 03" delay=336
storcli /c0 set prrate=10
常用操作
查询 RAID 卡控制器时间
storcli /c0 showtime
查询 LD 信息
storcli /c0/vall show
CC 相关
查询 CC 执行计划和执行状态
storcli /c0 show cc
查询 LD CC 执行状态
storcli /c0/v0 show cc
暂停 LD CC
storcli /c0/v0 pause cc
停止 LD CC
storcli /c0/v0 stop cc
禁用 CC
storcli /c0 set cc=off
继续 LD CC
storcli /c0/v0 resume cc
PR 相关
PR 是整个 RAID 卡级别的,因此所有命令都只针对 RAID 卡,而不是 LD
查询 PR
storcli /c0 show pr
暂停 PR
storcli /c0 pause pr
停止 PR
storcli /c0 stop pr
禁用 PR
storcli /c0 set pr=off
继续 PR
storcli /c0 resume cc
952

被折叠的 条评论
为什么被折叠?



