XX局点OceanStor 5800 V3发生内存资源使用率过载告警

发布时间:  2015-10-10 浏览次数:  207 下载次数:  0
问题描述
业务中断,OceanStor 5800 V3发生内存资源使用率过载告警
告警信息
处理过程

1、分析日志,阵列该告警期间收到了来自主机的IO超时消息”ABTS”。阵列日志中存在“IO time out”的情况,并且部分IO超时时间达到27秒(如图中日志11772行)。

阵列发生IO超时窗口与主机告警的时间窗口一致,可以确定是由于存储阵列IO超时导致。
说明:为避免影响性能,存储阵列日志记录没有跟踪每个IO。目前只会对严重超时(27秒以上)的IO打印日志。
2、进一步分析存储IO超时原因,通过详细分析日志发现,用于缓存SSD数据的cache配额(quota)耗尽。新来的IO将挂链等待申请cache资源,这部分等待时间计入了IO时间中,导致了业务主机IO超时,下图中的obj type (0) 指SSD。cache配额(quota)耗尽同时触发了过载控制模块的告警。


说明:每一个cache分区(cache patition)都为SSD Tier专属划分一块区域用于缓存写向SSD Tier的数据。该区的大小称为配额(quota),其默认大小是512MB。当系统处于回写状态时,主机下发到存储的业务数据,都会先缓存到这个区域后再告知主机IO写成功。缓存到该区域的主机数据会在适当的时刻下刷到SSD盘上。
这块区域就好比是一个蓄水池。主机业务数据即是蓄水池中的水。当蓄水池满了后,就会限制或关闭水龙头,减小或不允许继续往水池中放水(缓存主机写IO)。水就只能在水龙头中等待(IO挂起)。蓄水池快满时,需要及时将水泄掉(下刷到SSD Tier中)。
此外为了保护蓄水池(cache配额)空间,存储阵列设计了流控机制(过载控制)。当蓄水池水位上涨过快时,过载控制就会起作用,限制水龙头流量(限制主机IO的缓存速度),并发出告警。
3、查询存储配置信息,发现系统两个disk domain都有SSD TIER (如下图红圈所示) 。用于承载主机IO业务的LUN都在这两个disk domain里创建。

4、综合以上信息,引起阵列IO超时原因是:大量业务数据刷向SSD Tier时,耗尽了该Tier分配的cache资源(该部分资源可配置)。
5、通过命令修改SSD Tier的cache资源配置,就可以解决上述问题。

根因
系统为SSD盘分配的默认cache页面配额较小,如果cache刷盘不及时,当局点SSD盘业务压力较大时前端IO申请不到区页面配额超时。
解决方案

步骤1:使用SSH工具(如Xshell 5及以上版本,PuTTY 0.63及以上版本,SecureCRT 6.7及以上版本等工具)连接到存储设备的管理网口,登录账号为admin(默认密码为Admin@storage),进入CLI环境。

步骤2:在CLI环境下执行以下命令进入developer模式。
change user_mode current_mode user_mode=developer进入Developer模式;
步骤3:在该模式下执行命令change disk_domain_possessed general disk_domain_id=0 tier_type=ssd possess_type=page possess_number=131072。
注2:红色参数需要使用实际的disk domain id替代。
注3:possess_number代表cache页面数,系统内部通过该参数动态调整刷盘水位,不用修改。

建议与总结
1、在OceanStor 5800 V3的V300R002C10SPC100版本,Cache模块为SSD分配资源较少,如果cache刷盘不及时,容易被洪峰IO流塞满,会出现刷盘速率跟不上写入速率,从而导致前端IO申请不到cache资源,出发过载告警,进而出现IO超时导致了主机业务超时。

END