本发明属于服务器技术领域,尤其涉及一种基于服务器bmc通道切换失败的解决方法及系统。
背景技术:
在服务器实际应用端,inspur5280m5机型用的一款i2cswitchpca9548出现了bmc概率性切换通道失败的问题,在bmc写完通道地址字后驱动返回错误码,可能是没有得到正确的ack响应,再次读取该通道寄存器,发现内容为将要切换的通道,但是芯片想再次切换为其他通道时驱动依然返回错误码,切换操作均是在i2cstop条件产生之后才开始进行。
但是,bmc通道切换失败会导致硬盘无法正常监控,影响用户的正常使用,而且造成不良的客户对产品的投诉。
技术实现要素:
针对现有技术中的缺陷,本发明提供了一种基于服务器bmc通道切换失败的解决方法,旨在解决现有技术bmc通道切换失败会导致硬盘无法正常监控,影响用户的正常使用的问题。
本发明所提供的技术方案是:一种基于服务器bmc通道切换失败的解决方法,所述方法包括下述步骤:
当bmc轮询初始化动作完成后,接收i2c切换开关反馈的通道切换失败的指令;
当接收到所述i2c切换开关反馈的通道切换失败的指令后,启动对所述i2c切换开关的轮询机制,控制向所述i2c切换开关发送bmc通道切换命令;
在轮询过程中,判断所述bmc通道切换是否成功,当切换成功时,则判定通道切换失败故障解决,当切换仍然失败,则判定所述i2c切换开关硬件故障。
作为一种改进的方案,所述当bmc轮询初始化动作完成后,接收i2c切换开关反馈的通道切换失败的指令的之后;所述当接收到所述i2c切换开关反馈的通道切换失败的指令后,启动对所述i2c切换开关的轮询机制,控制向所述i2c切换开关发送bmc通道切换命令的步骤之前还包括下述步骤:
向所述i2c切换开关发送工作状态采集指令;
接收所述i2c切换开关反馈的返回值,并对所述返回值进行解析,所述返回值为-1或0;
当所述i2c切换开关反馈返回值为-1时,则判定所述i2c切换开关处于异常工作状态,所述i2c切换开关出现硬件故障,控制不执行后续的轮询动作;
当所述i2c切换开关反馈返回值为0时,则判定所述i2c切换开关处于正常工作状态,并继续执行所述当接收到所述i2c切换开关反馈的通道切换失败的指令后,启动对所述i2c切换开关的轮询机制,控制向所述i2c切换开关发送bmc通道切换命令的步骤。
作为一种改进的方案,所述bmc轮询初始化动作包括下述步骤:
通过ssh登录bmc;
当bmc登录成功后,控制停掉看门狗机制和ipmimain进程;
获取硬盘背板上所有硬盘信息;
对获取到的所述硬盘背板上所有的硬盘信息进行解析,获取可识别的数据帧。
作为一种改进的方案,所述当bmc登录成功后,控制停掉看门狗机制和ipmimain进程的步骤之后;所述获取硬盘背板上所有硬盘信息的步骤之前还包括下述步骤:
通过预先配置的命令,控制切换进入所述i2c开关的channel10通道上;
对所述i2c开关的channel10通道下的所有设备地址进行扫描,获取硬盘上cpld的地址。
作为一种改进的方案,所述对获取到的所述硬盘背板上所有的硬盘信息进行解析,获取可识别的数据帧的步骤之后,所述当bmc轮询初始化动作完成后,接收i2c切换开关反馈的通道切换失败的指令的步骤之前还包括下述步骤:
发送启动命令,控制恢复所述bmc的正常运行。
本发明的另一目的在于提供一种基于服务器bmc通道切换失败的解决系统,所述系统包括:
切换失败的指令接收模块,用于当bmc轮询初始化动作完成后,接收i2c切换开关反馈的通道切换失败的指令;
轮询控制模块,用于当接收到所述i2c切换开关反馈的通道切换失败的指令后,启动对所述i2c切换开关的轮询机制,控制向所述i2c切换开关发送bmc通道切换命令;
切换判断模块,用于在轮询过程中,判断所述bmc通道切换是否成功;
第一判定模块,用于当切换成功时,则判定通道切换失败故障解决;
第二判定模块,用于当切换仍然失败,则判定所述i2c切换开关硬件故障。
作为一种改进的方案,所述系统还包括:
工作状态采集指令发送模块,用于向所述i2c切换开关发送工作状态采集指令;
返回值接收解析模块,用于接收所述i2c切换开关反馈的返回值,并对所述返回值进行解析,所述返回值为-1或0;
第三判定模块,用于当所述i2c切换开关反馈返回值为-1时,则判定所述i2c切换开关处于异常工作状态,所述i2c切换开关出现硬件故障,控制不执行后续的轮询动作;
第四判定模块,用于当所述i2c切换开关反馈返回值为0时,则判定所述i2c切换开关处于正常工作状态,并继续执行所述当接收到所述i2c切换开关反馈的通道切换失败的指令后,启动对所述i2c切换开关的轮询机制,控制向所述i2c切换开关发送bmc通道切换命令的步骤。
作为一种改进的方案,所述系统还包括:
轮询初始化动作模块,用于控制执行bmc轮询初始化动作;
其中,所述轮询初始化动作模块包括:
bmc登录模块,用于通过ssh登录bmc;
关停模块,用于当bmc登录成功后,控制停掉看门狗机制和ipmimain进程;
硬盘信息获取模块,用于获取硬盘背板上所有硬盘信息;
硬盘信息解析模块,用于对获取到的所述硬盘背板上所有的硬盘信息进行解析,获取可识别的数据帧。
作为一种改进的方案,所述轮询初始化动作模块还包括:
通道切换模块,用于通过预先配置的命令,控制切换进入所述i2c开关的channel10通道上;
地址获取模块,用于对所述i2c开关的channel10通道下的所有设备地址进行扫描,获取硬盘上cpld的地址。
作为一种改进的方案,所述轮询初始化动作模块还包括:
bmc恢复运行控制模块,用于发送启动命令,控制恢复所述bmc的正常运行。
在本发明实施例中,当bmc轮询初始化动作完成后,接收i2c切换开关反馈的通道切换失败的指令;当接收到所述i2c切换开关反馈的通道切换失败的指令后,启动对所述i2c切换开关的轮询机制,控制向所述i2c切换开关发送bmc通道切换命令;在轮询过程中,判断所述bmc通道切换是否成功,当切换成功时,则判定通道切换失败故障解决,当切换仍然失败,则判定所述i2c切换开关硬件故障,从而解决了bmc通道切换失败会导致硬盘无法正常监控,服务器频繁关机造成业迁移的问题,为用户提供较大便利,也提高用户对服务器产品使用的满意度。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍。在所有附图中,类似的元件或部分一般由类似的附图标记标识。附图中,各元件或部分并不一定按照实际的比例绘制。
图1是本发明提供的基于服务器bmc通道切换失败的解决方法的实现流程图;
图2是本发明提供的控制执行bmc轮询初始化动作的实现流程图;
图3是本发明提供的基于服务器bmc通道切换失败的解决系统的结构框图;
图4是本发明提供的轮询初始化动作模块的结构框图。
具体实施方式
下面将结合附图对本发明技术方案的实施例进行详细的描述。以下实施例仅用于更加清楚地说明本发明的、技术方案,因此只作为示例,而不能以此来限制本发明的保护范围。
图1是本发明提供的基于服务器bmc通道切换失败的解决方法的实现流程图,其具体包括下述步骤:
在步骤s101中,当bmc轮询初始化动作完成后,接收i2c切换开关反馈的通道切换失败的指令;
在步骤s102中,当接收到所述i2c切换开关反馈的通道切换失败的指令后,启动对所述i2c切换开关的轮询机制,控制向所述i2c切换开关发送bmc通道切换命令;
在步骤s103中,在轮询过程中,判断所述bmc通道切换是否成功,当切换成功时,则判定通道切换失败故障解决,当切换仍然失败,则判定所述i2c切换开关硬件故障。
在该实施例中,该轮询机制中包含轮询的基本内容均如常规的机制,例如轮询的时间间隔、轮询次数以及轮询的指令发送格式等,其中,该轮询次数可以根据实际的情况进行设置,本发明可以设置三次,三次后切换仍然失败,这判定i2c切换开关硬件故障。
在本发明实施例中,当bmc轮询初始化动作完成后,接收i2c切换开关反馈的通道切换失败的指令的之后;所述当接收到所述i2c切换开关反馈的通道切换失败的指令后,启动对所述i2c切换开关的轮询机制,控制向所述i2c切换开关发送bmc通道切换命令的步骤之前还包括下述步骤:
(1)向所述i2c切换开关发送工作状态采集指令;
(2)接收所述i2c切换开关反馈的返回值,并对所述返回值进行解析,所述返回值为-1或0;
(3)当所述i2c切换开关反馈返回值为-1时,则判定所述i2c切换开关处于异常工作状态,所述i2c切换开关出现硬件故障,控制不执行后续的轮询动作;
(4)当所述i2c切换开关反馈返回值为0时,则判定所述i2c切换开关处于正常工作状态,并继续执行所述当接收到所述i2c切换开关反馈的通道切换失败的指令后,启动对所述i2c切换开关的轮询机制,控制向所述i2c切换开关发送bmc通道切换命令的步骤。
该实施例的设置是为确定i2c切换开关为正常状态,如果自身已经出现故障,则不需要执行后续的步骤即可。
在本发明实施例中,在上述步骤s101之前还需要执行控制执行bmc轮询初始化动作的步骤,其中,如图2所示,控制执行bmc轮询初始化动作包括下述步骤:
在步骤s201中,通过ssh登录bmc;
该登录bmc的ssh命令为:
sshsysadmin@100.2.76.127,密码为superuser;
如果在登录过程中出现提示“ssh:connecttohost100.2.76.127port22:connectionrefused”,则发送如下命令开启ssh服务后重试:
ipmitool-h100.2.76.127-uadmin-padmin-ilanplusraw0x320x6a0x200x000x000x000x010x460x460x460x460x460x460x460x460x460x460x460x460x460x460x460x460x000xff0xff0xff0xff0x160x000x000x000x580x020x000x000xff0x00。
在步骤s202中,当bmc登录成功后,控制停掉看门狗机制和ipmimain进程;
其中,服务器启用了看门狗机制,为防止在操作的过程中bmc重启,需要通过如下命令停掉看门狗的监控:
/etc/init.d/watchdogapp.shstop。
在步骤s203中,获取硬盘背板上所有硬盘信息;
因bmc正常运行的过程中会不断切换switch及通过i2c访问cpld中硬盘相关信息,为了防止对手动测试产生影响,需要通过如下命令停止掉bmc的ipmimain进程:
/etc/init.d/ipmistackstop。
在步骤s204中,对获取到的所述硬盘背板上所有的硬盘信息进行解析,获取可识别的数据帧。
其中,根据bmc与背板cpld之间的交互协议,解析出来的获取到的数据帧如下:
66//version
04//portnum
03//hdd0
07//hdd1
07//hdd2
87//hdd3
00//hdd4
00//hdd5
00//hdd6
00//hdd7
00//hdd8
00//hdd9
00//hdd10
00//hdd11
00//hdd12
00//hdd13
00//hdd14
00//hdd15
00//hdd16
00//hdd17
00//hdd18
00//hdd19
00//hdd20
00//hdd21
00//hdd22
00//hdd23
00//hdd24
fe//temp。
在该实施例中,所述当bmc登录成功后,控制停掉看门狗机制和ipmimain进程的步骤之后;所述获取硬盘背板上所有硬盘信息的步骤之前还包括下述步骤:
(1)通过预先配置的命令,控制切换进入所述i2c开关的channel10通道上;
硬盘的监控接在bmc的i2c6上,且通过一个i2c切换开关(地址为0xe0)连接各硬盘背板,如果需要读取第一块前置背板上面的所有硬盘的相关信息,则需要通过如下命令切换到该i2c切换开关的channel0上:
i2c-test-b6-s0x70-w-d0x01。
(2)对所述i2c开关的channel10通道下的所有设备地址进行扫描,获取硬盘上cpld的地址;
该扫描的实现命令为:i2c-test-b6–scan。
图3示出了本发明提供的基于服务器bmc通道切换失败的解决系统的结构框图,为了便于说明,图中仅给出了与本发明实施例相关的部分。
基于服务器bmc通道切换失败的解决系统包括:
切换失败的指令接收模块11,用于当bmc轮询初始化动作完成后,接收i2c切换开关反馈的通道切换失败的指令;
轮询控制模块12,用于当接收到所述i2c切换开关反馈的通道切换失败的指令后,启动对所述i2c切换开关的轮询机制,控制向所述i2c切换开关发送bmc通道切换命令;
切换判断模块13,用于在轮询过程中,判断所述bmc通道切换是否成功;
第一判定模块14,用于当切换成功时,则判定通道切换失败故障解决;
第二判定模块15,用于当切换仍然失败,则判定所述i2c切换开关硬件故障。
在该实施例中,所述系统还包括:
工作状态采集指令发送模块16,用于向所述i2c切换开关发送工作状态采集指令;
返回值接收解析模块17,用于接收所述i2c切换开关反馈的返回值,并对所述返回值进行解析,所述返回值为-1或0;
第三判定模块18,用于当所述i2c切换开关反馈返回值为-1时,则判定所述i2c切换开关处于异常工作状态,所述i2c切换开关出现硬件故障,控制不执行后续的轮询动作;
第四判定模块19,用于当所述i2c切换开关反馈返回值为0时,则判定所述i2c切换开关处于正常工作状态,并继续执行所述当接收到所述i2c切换开关反馈的通道切换失败的指令后,启动对所述i2c切换开关的轮询机制,控制向所述i2c切换开关发送bmc通道切换命令的步骤。
在本发明实施例中,所述系统还包括:
轮询初始化动作模块20,用于控制执行bmc轮询初始化动作;
其中,如图4所示,所述轮询初始化动作模块20包括:
bmc登录模块21,用于通过ssh登录bmc;
关停模块22,用于当bmc登录成功后,控制停掉看门狗机制和ipmimain进程;
硬盘信息获取模块23,用于获取硬盘背板上所有硬盘信息;
硬盘信息解析模块24,用于对获取到的所述硬盘背板上所有的硬盘信息进行解析,获取可识别的数据帧。
如图4所示,所述轮询初始化动作模块20还包括:
通道切换模块25,用于通过预先配置的命令,控制切换进入所述i2c开关的channel10通道上;
地址获取模块26,用于对所述i2c开关的channel10通道下的所有设备地址进行扫描,获取硬盘上cpld的地址。
结合图4所示,所述轮询初始化动作模块20还包括:
bmc恢复运行控制模块27,用于发送启动命令,控制恢复所述bmc的正常运行。
其中,上述各个模块的功能如上述方法实施例所记载,在此不再赘述。
在本发明实施例中,上述各个模块的功能如上述方法实施例所记载,在此不再赘述。
在本发明实施例中,当bmc轮询初始化动作完成后,接收i2c切换开关反馈的通道切换失败的指令;当接收到所述i2c切换开关反馈的通道切换失败的指令后,启动对所述i2c切换开关的轮询机制,控制向所述i2c切换开关发送bmc通道切换命令;在轮询过程中,判断所述bmc通道切换是否成功,当切换成功时,则判定通道切换失败故障解决,当切换仍然失败,则判定所述i2c切换开关硬件故障,从而解决了bmc通道切换失败会导致硬盘无法正常监控,服务器频繁关机造成业迁移的问题,为用户提供较大便利,也提高用户对服务器产品使用的满意度。
以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。