更新时间:2023-12-07 GMT+08:00

容器使用SCSI类型云硬盘偶现IO卡住

问题描述

容器使用SCSI类型的云硬盘存储,在CentOS节点上创建和删除容器触发磁盘频繁挂载卸载的场景,有概率会出现系统盘读写瞬时冲高,然后系统卡住的问题,影响节点正常工作。

出现该问题时,可在dmesg日志中观察到:

Attached SCSI disk
task jdb2/xxx blocked for more than 120 seconds.

如下图红框所示:

问题原理

BUS 0上热插PCI设备后,Linux内核会多次遍历挂载在BUS 0上的所有PCI-Bridge,且PCI-Bridge在被更新期间无法正常工作。在此期间,若设备使用的PCI-Bridge被更新,由于内核缺陷,该设备会认为PCI-Bridge异常,设备进入故障模式进而无法正常工作。如果此时前端正要写PCI配置空间让后端处理磁盘IO,那么这个写配置空间操作就可能会被剔除,导致后端接收不到通知去处理IO环上的新增请求,最终表现为前端IO卡住。

该问题由linux内核缺陷引起,详见Linux发行版缺陷列表:https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=51c48b310183ab6ba5419edfc6a8de889cc04521

影响范围

对CentOS Linux内核3.10.0-1127.el7之前的版本有影响。

解决方法

通过重置节点将内核升级至高版本。