一种服务器的自动重启的方法、系统及存储介质与流程

文档序号:18939690发布日期:2019-10-23 01:03阅读:327来源:国知局
一种服务器的自动重启的方法、系统及存储介质与流程

本发明涉及服务器技术领域,特别是涉及一种服务器的自动重启的方法、系统及存储介质。



背景技术:

bios(basicinputoutputsystem,基本输入输出系统)在post(power-on-self-test,上电自检)阶段,会执行系统的初始化,硬件自检等操作,执行完毕之后再把控制权交给操作系统。有的时候因为环境因素,或者硬件本身的问题,会有一定概率导致bios停滞在某个阶段,不继续往下运行,导致系统宕机,这种问题通常在重置系统之后会消失,因此,在传统方案中,bmc(baseboardmanagementcontroller,基板管理控制器)会对bios的启动设置一个timeout的时间。即,如果超过了这个时间bios仍然没有启动结束,bmc便会重启系统。

但是,对于bios启动时的某些进程而言,例如部件自检等进程,在每次启动时,其所需的耗时未必是一样的。例如进程a在当天第一次启动时花了10秒,在第二次启动时却花了15秒,这就使得timeout的数值不容易设定。设定地较低时,经常会出现误重启的情况,即由于一个或多个启动进程启动耗时较长,导致总时长超出了设定的timeout,引起了误重启。timeout设定地较大时,如果出现服务器宕机的情况,即出现了确实需要重启的情况,又需要经过长时间的等待,才能重启服务器,不利于服务器的稳定运行。

综上所述,如何更加快速地进行服务器的重启,又不容易产生误重启的情况,是目前本领域技术人员急需解决的技术问题。



技术实现要素:

本发明的目的是提供一种服务器的自动重启的方法、系统及存储介质,可以更加快速地进行服务器的重启,又不容易产生误重启的情况。

为解决上述技术问题,本发明提供如下技术方案:

一种服务器的自动重启的方法,应用于bmc中,包括:

获取所述服务器主板的目标端口输出的表示bios当前的启动进程的数值;

当根据获取的所述数值确定出bios当前的启动进程为第i启动进程,且持续时长超过了对应于所述第i启动进程的预设第i时长阈值时,向重启控制器输出重启指令,以使所述重启控制器接收到所述重启指令之后对所述服务器进行重启;其中,所述i为正整数。

优选的,所述获取所述服务器主板的目标端口输出的表示bios当前的启动进程的数值,包括:

通过lpc总线获取所述服务器主板的目标端口输出的表示bios当前的启动进程的数值。

优选的,bios的每一个启动进程所对应的时长阈值均为相同的目标时长阈值;

所述当根据获取的所述数值确定出bios当前的启动进程为第i启动进程,且持续时长超过了对应于所述第i启动进程的预设第i时长阈值时,向重启控制器输出重启指令,包括:

当获取的所述数值为第一默认数值时,确定第1启动进程未开始;

当获取的所述数值跳变为第i数值时,确定出bios当前的启动进程为第i启动进程,并控制计时器从零开始计时,且当所述计时器计时的持续时长超过了所述目标时长阈值时,向重启控制器输出重启指令;

当获取的所述数值跳变为第二默认数值时,确定出bios的各启动进程均执行完毕并且关闭所述计时器的计时。

优选的,所述向重启控制器输出重启指令,包括:

向cpld输出重启指令。

优选的,在所述向重启控制器输出重启指令之后,还包括:

记录下输出所述重启指令时bios所处于的启动进程。

一种服务器的自动重启的系统,应用于bmc中,包括:

数值获取模块,用于获取所述服务器主板的目标端口输出的表示bios当前的启动进程的数值;

重启指令发送模块,用于当根据获取的所述数值确定出bios当前的启动进程为第i启动进程,且持续时长超过了对应于所述第i启动进程的预设第i时长阈值时,向重启控制器输出重启指令,以使所述重启控制器接收到所述重启指令之后对所述服务器进行重启;其中,所述i为正整数。

优选的,所述数值获取模块,具体用于:

通过lpc总线获取所述服务器主板的目标端口输出的表示bios当前的启动进程的数值。

优选的,bios的每一个启动进程所对应的时长阈值均为相同的目标时长阈值;

所述重启指令发送模块,具体用于:

当获取的所述数值为第一默认数值时,确定第1启动进程未开始;

当获取的所述数值跳变为第i数值时,确定出bios当前的启动进程为第i启动进程,并控制计时器从零开始计时,且当所述计时器计时的持续时长超过了所述目标时长阈值时,向重启控制器输出重启指令;

当获取的所述数值跳变为第二默认数值时,确定出bios的各启动进程均执行完毕并且关闭所述计时器的计时。

优选的,还包括:

记录模块,用于记录下输出所述重启指令时bios所处于的启动进程。

一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项所述的服务器的自动重启的方法的步骤。

本申请的方案中,并不是设定一个总时长阈值,而是针对bios启动时的不同阶段,分别配置时长阈值。具体的,bios可以获取服务器主板的目标端口输出的表示bios当前的启动进程的数值,当根据获取的数值确定出bios当前的启动进程为第i启动进程,且持续时长超过了对应于第i启动进程的预设第i时长阈值时,向重启控制器输出重启指令。可以看出,当bios在执行第i启动进程时如果出现停滞的情况,只要持续时长超过了第i时长阈值时,便可以立即重启,不需要等待至传统方案中的总时长timeout才能重启,因此实现了服务器的快速重启,又不容易引起误重启的情况。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明中一种服务器的自动重启的方法的实施流程图;

图2为本发明中一种服务器的自动重启的系统的结构示意图。

具体实施方式

本发明的核心是提供一种服务器的自动重启的方法,实现了服务器的快速重启,又不容易引起误重启的情况。

为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

请参考图1,图1为本发明中一种服务器的自动重启的方法的实施流程图,该服务器的自动重启的方法应用于bmc中,包括以下步骤:

步骤s101:获取服务器主板的目标端口输出的表示bios当前的启动进程的数值。

本申请需要将bmc与服务器主板的目标端口连接,从而bmc可以获取到目标端口的数值,目标端口指的是其数值能够反映出bios的启动进程的端口,通常,bmc可以与服务器主板的lpc总线连接,获取80端口的数值,即该种实施方式中,步骤s101可以具体为:通过lpc总线获取服务器主板的目标端口输出的表示bios当前的启动进程的数值。该种实施方式中的目标端口便为80端口。当然,在其他具体场合中,也可以存在其他的连接方式,只要使得bmc能够获取到表示bios当前的启动进程的数值即可,并不影响本发明的实施。

步骤s102:当根据获取的数值确定出bios当前的启动进程为第i启动进程,且持续时长超过了对应于第i启动进程的预设第i时长阈值时,向重启控制器输出重启指令,以使重启控制器接收到重启指令之后对服务器进行重启;其中,i为正整数。

biospost阶段会有多个进程,在bios处于不同的进程时,目标端口的数值会不同,因此bmc可以根据获取到的数值的变化,确定出bios的启动进程的变化。第i启动进程可以是bios完整的启动进程中的任意一个进程。

对于第i启动进程而言,当bmc根据获取的数值确定出bios进入到该启动进程时,便会进行计时,如果持续时长超过了对应于第i启动进程的预设第i时长阈值时,说明bios停滞在第i启动进程中,服务器需要重启,bmc便会向重启控制器输出重启指令。

重启控制器指的是用来控制服务器的上电以及下电的相关器件,通常,服务器采用cpld(complexprogrammablelogicdevice,复杂可编程逻辑器件)进行上下电的控制,因此通常可以将bmc与cpld连接,即步骤s102中描述的向重启控制器输出重启指令通常具体为:向cpld输出重启指令。当然,在其他具体场合中,当服务器并非采用cpld而是采用其他类型的器件进行上下电的控制时,则本申请描述的重启控制器便可以相适应地调整。

可以理解的是,由于在应用本申请的方案时,需要将bmc与重启控制器连接,因此,bmc需要预留有相关引脚,例如预留有gpiopin与cpld连接。

重启控制器接收到bmc发送的重启指令之后,便会立即对服务器进行重启。

本申请的方案中,并不是设定一个总时长阈值,而是针对bios启动时的不同阶段,分别配置时长阈值。具体的,bios可以获取服务器主板的目标端口输出的表示bios当前的启动进程的数值,当根据获取的数值确定出bios当前的启动进程为第i启动进程,且持续时长超过了对应于第i启动进程的预设第i时长阈值时,向重启控制器输出重启指令。可以看出,当bios在执行第i启动进程时如果出现停滞的情况,只要持续时长超过了第i时长阈值时,便可以立即重启,不需要等待至传统方案中的总时长timeout才能重启,因此实现了服务器的快速重启,又不容易引起误重启的情况。

在本发明的一种具体实施方式中,考虑到虽然可以为不同的启动进程配置不同大小的时长阈值,但是这样的方式较为复杂,会占用bmc更多的资源,并且,考虑到不同的启动进程所耗费的时长不会差的太多,因此,该种实施方式中,bios的每一个启动进程所对应的时长阈值均为相同的目标时长阈值。在该种实施方式中,步骤s102可以具体包括:

当获取的数值为第一默认数值时,确定第1启动进程未开始;

当获取的数值跳变为第i数值时,确定出bios当前的启动进程为第i启动进程,并控制计时器从零开始计时,且当计时器计时的持续时长超过了目标时长阈值时,向重启控制器输出重启指令;

当获取的数值跳变为第二默认数值时,确定出bios的各启动进程均执行完毕并且关闭计时器的计时。

便于描述,便以bmc通过lpc总线获取服务器主板的80端口输出的数值为例进行说明。当获取的数值为第一默认数值时,例如80端口的数值为ff时,可以确定第1启动进程未开始,即biospost中的第一个进程还未开始。当然,该例子中用ff表示第1启动进程未开始,在其他具体场合中,第一默认数值也可以设置为其他值,并不影响本发明的实施,后文中提及的fa,fb亦是如此,均可以采用其他取值。

当获取的数值跳变为第1数值,确定出bios当前的启动进程为第1启动进程,例如第1数值为fa,即bmc获取的数值从ff跳变为fa时,bmc可以确定bios当前在执行第1个启动进程,bmc便会控制计时器从零开始计时。如果计时器计时的持续时长超过了预设的目标时长阈值时,bmc便可以向重启控制器输出重启指令,目标时长阈值的具体取值也可以根据需要进行设定和调整。

在bios的第1个启动进程执行完毕之后,进入到第2个启动进程时,80端口的数值便会发生变化,例如从fa跳变为fb。因此,当bmc获取的数值从fa跳变为fb时,bmc可以确定bios当前在执行第2个启动进程,便会对计时器进行清零并且开始计时。相应的,如果计时器计时的持续时长超过了预设的目标时长阈值时,bmc便可以向重启控制器输出重启指令。

当最后一个启动进程执行完毕时,bmc获取的数值会跳变为第二默认数值时,bmc可以确定出bios的各启动进程均执行完毕,因此bmc可以关闭计时器的计时。第二默认数值的取值也可以根据实际情况进行设定。

在本发明的一种具体实施方式中,在bmc向重启控制器输出重启指令之后,还可以包括:记录下输出重启指令时bios所处于的启动进程。

该种实施方式中,由于bmc在输出重启指令之后,记录下输出重启指令时bios所处于的启动进程,有利于后续进行分析时,能够快速地定位出bios各个启动进程各自的故障率,进而可以针对性地对故障率较高的启动进程进行排查以及优化,提高服务器的稳定性。

相应于上面的方法实施例,本发明实施例还提供了一种服务器的自动重启的系统,可与上文相互对应参照。

该服务器的自动重启的系统应用于bmc中,可参阅图2,包括:

数值获取模块201,用于获取服务器主板的目标端口输出的表示bios当前的启动进程的数值;

重启指令发送模块202,用于当根据获取的数值确定出bios当前的启动进程为第i启动进程,且持续时长超过了对应于第i启动进程的预设第i时长阈值时,向重启控制器输出重启指令,以使重启控制器接收到重启指令之后对服务器进行重启;其中,i为正整数。

在本发明的一种具体实施方式中,数值获取模块201,具体用于:

通过lpc总线获取服务器主板的目标端口输出的表示bios当前的启动进程的数值。

在本发明的一种具体实施方式中,bios的每一个启动进程所对应的时长阈值均为相同的目标时长阈值;

重启指令发送模块202,具体用于:

当获取的数值为第一默认数值时,确定第1启动进程未开始;

当获取的数值跳变为第i数值时,确定出bios当前的启动进程为第i启动进程,并控制计时器从零开始计时,且当计时器计时的持续时长超过了目标时长阈值时,向重启控制器输出重启指令;

当获取的数值跳变为第二默认数值时,确定出bios的各启动进程均执行完毕并且关闭计时器的计时。

在本发明的一种具体实施方式中,还包括:

记录模块,用于记录下输出重启指令时bios所处于的启动进程。

相应于上面的方法和系统实施例,本发明实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述任一实施例中的服务器的自动重启的方法的步骤。这里所说的计算机可读存储介质包括随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质。

还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的技术方案及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1