掌桥专利:专业的专利平台
掌桥专利
首页

获取开机日志的方法及装置、传输开机日志的方法

文献发布时间:2024-01-17 01:14:25


获取开机日志的方法及装置、传输开机日志的方法

技术领域

本申请涉及数据传输技术领域,具体而言,涉及一种获取开机日志的方法及装置、传输开机日志的方法。

背景技术

基本输入输出系统(Basic Input Output System,BIOS)开机日志是服务器开机过程中,从服务器上电开机到操作系统(Operating System,OS)启动之前用于记录开机状态的日志信息,开机日志中包含中央处理器(Central Processing Unit,CPU)、内存设备、和输入输出(Input Output,I/O)设备初始化过程的信息与结果,驱动加载的信息,以及BIOS开发者自定义功能模块信息。因此,BIOS开机日志对服务器运维、对于服务器的状态监控,以及错误诊断分析具有重要意义。然而相关技术中,通过更新固件和复现服务器的异常现象的方法获取开机日志,因此,存在需要进行多次复现操作导致的浪费资源,和因无法复现异常现象导致的收集不到有效开机日志的问题。

针对上述的问题,目前尚未提出有效的解决方案。

发明内容

本申请实施例提供了一种获取开机日志的方法及装置、传输开机日志的方法,以至少解决由于相关技术通过重启服务器、更新固件以及复现异常现象等操作收集开机日志造成的收集开机日志的效率低和时间长的技术问题。

根据本申请实施例的一个方面,提供了一种获取开机日志的方法,包括:确定目标设备的运行状态,其中运行状态包括:运行正常和运行异常;如果运行状态为运行正常,从目标设备的基板管理控制BMC系统中的第一目标内存设备中获取开机日志,其中,第一目标内存设备为易失性内存设备,开机日志为目标设备在开机过程中的全部日志;如果运行状态为运行异常,从目标设备中的第二目标内存设备中获取开机日志,其中,第二目标内存设备为目标设备中的非易失性内存设备。

可选地,接收智能平台管理接口IPMI命令,响应于IPMI命令,启动计时程序并开始计时,其中,计时的时长为预设时长;在预设时长内检测第一目标内存设备,得到检测结果,依据检测结果确定目标设备的运行状态。

可选地,依据检测结果确定目标设备的运行状态,包括:如果检测结果指示第一目标内存设备在预设时长中接收到开机日志,确定目标设备的运行状态为运行正常;如果检测结果指示第一目标内存设备在预设时长中未接收到开机日志,确定目标设备的运行状态为运行异常。

可选地,获取开机日志的方法还包括:在检测到第一目标内存设备在预设时长中接收到开机日志之后,停止计时并重置计时程序。

可选地,从目标设备中的第二目标内存设备中获取开机日志,包括:在第二目标内存设备中确定用于存储开机日志的第二目标区域; 通过扩展接口对第二目标区域进行转储,得到开机日志。

可选地,在目标设备中确定用于存储开机日志的第二目标区域,包括:接收第二目标区域的首地址和数据容量,其中,数据容量为的第二目标区域存储数据的最大数据量;根据首地址和数据容量确定第二目标区域的末地址;将第二目标内存设备中从首地址到末地址的空间确定为第二目标区域。

可选地,从目标设备的BMC系统中的第一目标内存设备中获取开机日志,包括: 从第一目标内存设备中确定目标存储区域,其中,目标存储区域为预先约定的专用于存储开机日志的存储区域;从目标存储区域读取开机日志。

可选地,从目标设备的BMC系统中的第一目标内存设备中获取开机日志之后,方法还包括: 将开机日志转存在第三目标内存设备,其中,第三目标内存设备为BMC系统中的非易失性存储设备。

根据本申请实施例的另一个方面,提供了一种传输开机日志的方法,包括:确定第二目标区域,其中,第二目标区域用于存储开机日志,开机日志为目标设备在开机过程中的全部日志;根据在预设时长内写入第二目标区域的开机日志中的日志的类型确定目标设备的运行状态,其中,运行状态包括运行正常和运行异常;以与运行状态对应的方法传输开机日志。

可选地,确定第二目标区域,包括:确定第二目标区域的首地址和第二目标区域的数据容量,其中,数据容量为的第二目标区域存储数据的最大数据量;根据首地址和数据容量确定第二目标区域的末地址;将第二目标内存设备中从首地址到末地址的空间确定为第二目标区域。

可选地,在确定第二目标区域之后,传输开机日志的方法包括:通过IPMI命令将首地址和数据容量发送给目标设备中的BMC系统。

可选地,根据在预设时长内写入第二目标区域的开机日志中的日志的类型确定目标设备的运行状态,包括:读取在预设时长内写入第二目标区域的开机日志,并确定开机日志中每条日志的类型;如果开机日志中不存在目标类型的日志,确定目标设备的运行状态为运行异常,其中,目标类型的日志为指示目标设备完成自检的日志;如果开机日志中存在目标类型的日志,确定目标设备的运行状态为运行正常。

可选地,以与运行状态对应的方法传输开机日志,包括:如果目标设备的运行状态为运行正常,在确定第二目标区域写入目标类型的日志后,在目标设备的BMC系统中确定第一目标内存设备,其中,第一目标内存设备为易失性内存设备;通过直接内存读取DMA的方式将开机日志写入第一目标内存设备。

可选地,在目标设备的BMC系统中确定第一目标内存设备,包括:确定通过外围组件快速互连PCIe链路与目标设备进行数据传输的多个易失性内存设备;将多个易失性内存设备中与BMC系统进行数据通信的易失性内存设备确定为第一目标内存设备。

可选地,开机日志通过以下方法写入第二目标内存设备:确定第一待写入开机日志的字节数量,并根据首地址和字节数量确定新地址,其中,第一待写入开机日志为开机日志中当前待写入第二目标区域的日志,新地址为第一待写入开机日志写入第二目标区域后第二待写入开机日志写入第二目标区域的起始地址,第二待写入开机日志为第一待写入开机日志的下一条日志;比较新地址与末地址,得到比较结果;如果新地址大于末地址,拒绝将第一待写入开机日志写入第二目标区域;如果新地址小于或者等于末地址,允许将第一待写入开机日志写入第二目标区域。

可选地,传输开机日志的方法还包括:将第二目标区域的读取对象由目标设备的基本输入输出系统BIOS和目标设备的操作系统修改为目标设备的BIOS。

根据本申请实施例的另一个方面,还提供了一种服务器,在于,包括:BMC、BIOS模块和内存设备,其中,内存设备,用于存储服务器的开机日志;BIOS模块,用于在服务器正常运行时,将内存设备中的开机日志传输到BMC;BMC,用于在服务器异常运行时,从内存设备中转储开机日志。

可选地,BIOS模块,还用于以DMA的方式将开机日志发送到BMC。

可选地,BMC,还用于通过扩展接口从内存设备中获取开机日志,并将开机日志保存在BMC的非易失性存储设备中。

根据本申请实施例的另一个方面,还提供了一种传输开机日志的方法,包括:确定第一目标内存设备,其中,第一目标内存设备为目标设备的管理系统中的易失性内存设备;接收启动命令,依据启动命令启动计时程序,其中,计时程序用于控制目标设备以预设时长进行计时;根据计时程序的运行结果确定目标设备的运行状态,其中,运行状态包括运行正常和运行异常;以与运行状态对应的方法传输开机日志,其中,开机日志为目标设备在开机过程中的全部日志。

根据本申请实施例的另一个方面,还提供了一种获取开机日志的装置,包括:确定模块,用于确定目标设备的运行状态,其中运行状态包括:运行正常和运行异常;第一获取模块,用于在运行状态为运行正常时,从目标设备的基板管理控制BMC系统中的第一目标内存设备中获取开机日志,其中,第一目标内存设备为易失性内存设备,开机日志为目标设备在开机过程中的全部日志;第二获取模块,用于在运行状态为运行异常时,从目标设备中的第二目标内存设备中获取开机日志,其中,第二目标内存设备为目标设备中的非易失性内存设备。

根据本申请实施例的另一个方面,还提供了一种非易失性存储介质,非易失性存储介质中存储有计算机程序,其中,该非易失性存储介质所在设备通过运行计算机程序执行上述的获取开机日志的方法和传输开机日志的方法。

根据本申请实施例的另一个方面,还提供了一种电子设备,包括存储器和处理器,存储器中存储有计算机程序,处理器被设置为通过计算机程序执行上述的获取开机日志的方法和传输开机日志的方法。

在本申请实施例中,采用确定目标设备的运行状态,其中运行状态包括:运行正常和运行异常;如果运行状态为运行正常,从目标设备的基板管理控制BMC系统中的第一目标内存设备中获取开机日志,其中,第一目标内存设备为易失性内存设备,开机日志为目标设备在开机过程中的全部日志;如果运行状态为运行异常,从目标设备中的第二目标内存设备中获取开机日志,其中,第二目标内存设备为目标设备中的非易失性内存设备的方式,通过在服务器的内存条中确定固定内存空间,将开机日志存储在固定内存空间内;将服务器开机过程中的日志全部存储在固定内存空间,达到了能够获取服务器开机过程的全部日志的目的;通过针对服务器的不同运行状态提供不同的开机日志传输方法,达到了在服务器运行异常时,无需进行复现操作即可获取记录了运行异常时的开机日志的目的,达到了节约资源、减少获取开机日志的时间的目的,从而实现了提高对服务器进行问题分析的效率的技术效果,进而解决了由于相关技术通过重启服务器、更新固件以及复现异常现象等操作收集开机日志造成的收集开机日志的效率低和时间长技术问题。

附图说明

此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:

图1是根据本申请实施例的获取开机日志的方法的流程图;

图2是根据本申请实施例的一种传输开机日志的方法的流程图;

图3是根据本申请实施例的服务器的结构图;

图4是根据本申请实施例的服务器传输开机日志的流程图;

图5是根据本申请实施例的另一种传输开机日志的方法的流程图;

图6是根据本申请实施例的获取开机日志的装置的结构图。

具体实施方式

为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。

需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

为了更好地理解本申请实施例,以下将本申请实施例中涉及的技术术语解释如下:

BIOS:是一组固化到服务区内主板上一个闪存(Flash)芯片上的程序,它保存着计算机最重要的基本输入输出的程序、系统设置信息、开机上电自检程序和系统启动自举程序;BIOS在计算机启动时最先加载,在操作系统运行前完成自身初始化,并对各个硬件进行检测和设置参数。

开机日志:BIOS在计算机启动时最先加载,因此,将BIOS在计算机开机过程中输出的系统日志称为开机日志;开机日志中包括处理器、内存、硬盘驱动器、显示适配器等设备名称和型号以及它们的状态和性能参数;还包括计算机在开机过程中出现的错误、警告或提示等信息。

主板管理控制器(Baseboard Manager Controller,BMC):是一个独立的系统,它不依赖系统上的其它硬件(比如CPU、内存等),也不依赖BIOS、OS等; BMC可以与BIOS交互,这样可以起到更好的平台管理作用,BMC作为服务器平台管理系统,可以通过多种方式与BIOS进行通讯。

易失性内存设备:一种通过持续的电源供应以保留其中的存储数据的内存设备,如随机访问存储器(Random-Access Memory,RAM)当电源关闭时,易失性内存设中的所有数据都会被清除。

非易失性内存设备:一种具有持久性存储能力的内存设备,在电源关闭时能够保留其存储的数据,或者在恢复通电后能够恢复其原存储数据;用于长期保存数据。

看门狗(watch dog):一种电子或软件定时器。

IO操作:CPU与外部设备(例如磁盘、网络)之间进行数据传输,需要经过I/O控制器以及其他硬件设备的处理,速度较慢。

内存读写操作:CPU直接与内存设备进行数据交换;通过访问内存地址来进行读取或写入。

转储:将数据从一个存储设备或系统复制、移动或备份到另一个存储设备或系统,通过转储能够将磁盘上的文件保存到外部设备(如 USB 驱动器)上,也能够对整个数据库进行完全复制,将其保存在另一台服务器上。

在相关技术中,在收集开机日志时,需要更新BIOS固件或者使用BIOS调试功能,使BIOS所在的服务器重新开机,再在服务器重新开机的过程中收集开机日志,因此,存在只能收集服务器的即时开机日志,而无法获取过去的开机日志的问题。另外,当服务器出现运行异常时服务器的开机过程中断,只能通过复现服务器的异常状态来获取记录服务器异常信息的开机日志,因此,收集记录服务器异常信息的开机日志的时间长,导致分析服务器异常原因的效率低的问题;以及因无法复现服务器的异常状态导致无法收集有效的开机日志,进而无法分析服务器异常的原因的问题。为了解决该问题,本申请实施例针对服务器的两种运行状态提供了两种不同的开机日志传输方法,在服务器的内存条中确定用于存放开机日志的固定内存空间,将服务器的开机日志存储在该固定空间,并通过服务器的开机日志中是否存在自检日志(BIOS Post Complete)判断服务器的运行状态,在确定服务器正常运行时,内存空间主动传输开机日志;在确定服务器异常运行时,通过服务器主板上的主板管理控制器(Baseboard Manager Controller,BMC)获取内存空间的日志;从而可以解决上述问题,以下详细说明。

根据本申请实施例,提供了一种传输开机日志方法的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

图1是根据本申请实施例提供的一种获取开机日志的方法的流程图,如图1所示,该方法包括如下步骤:

步骤S102,确定目标设备的运行状态,其中运行状态包括:运行正常和运行异常。

本申请实施例中以服务器作为目标设备,以收集服务器的BIOS开机日志为例详细解释传输开机日志的方法,其中,服务器或任何计算机的主板上均包括,内存设备(如内存条)、能够与内存设备进行数据传输且写入了BIOS程序的闪存芯片,以及能够与内存设备进行数据交互的BMC系统。在步骤S102中,由BMC确定服务器(即目标设备)在执行开机这一进程时的运行状态为运行正常还是运行异常。

根据本申请一个可选的实施例,确定目标设备的运行状态,包括:接收智能平台管理接口IPMI命令,响应于IPMI命令,启动计时程序并开始计时,其中,计时的时长为预设时长;在预设时长内检测第一目标内存设备,得到检测结果,依据检测结果确定目标设备的运行状态。

服务器(即目标设备)在正常运行的情况下会在完成自检之后将开机日志传输到服务器(即目标设备)中的一个易失性内存设备(即第一目标内存设备)中;在本实施例中,BMC通过检测服务器是否在预设时长内接收到开机日志确定服务器的运行状态,具体方法如下:服务器上电开机后,BIOS代码加载完成服务器的初始化后,由BIOS向BMC以IPMI命令的形式向BMC发送一条启动命令,BMC接收该启动命令后开始执行watch dog(即计时程序),在预设时长内进行计时,并在计时的同时检测上述易失性内存设备(即第一目标内存设备)是否接收到开机日志,根据检测结果确定服务器的运行状态。

根据本申请另一个可选的实施例,依据检测结果确定目标设备的运行状态,包括:如果检测结果指示第一目标内存设备在预设时长中接收到开机日志,确定目标设备的运行状态为运行正常;如果检测结果指示第一目标内存设备在预设时长中未接收到开机日志,确定目标设备的运行状态为运行异常。

在本实施例中, watch dog输出的检测结果(即运行结果)包括以下两种:第一种,易失性内存设备(即第一目标内存设备)在预设时长内接收到了开机日志;第二种,易失性内存设备(即第一目标内存设备)在预设时长内未接收到开机日志。如果watch dog输出的检测结果为上述的第一种,说明服务器(即目标设备)能够成功开机,确定目标设备的运行状态为运行正常;否则,如果watch dog输出的检测结果为上述的第二种,说明服务器的开机进程被中断,确定目标设备的运行状态为运行异常。

步骤S104,如果运行状态为运行正常,从目标设备的基板管理控制BMC系统中的第一目标内存设备中获取开机日志,其中,第一目标内存设备为易失性内存设备,开机日志为目标设备在开机过程中的全部日志。

服务器(即目标设备)在上电开机后到完成开机这一段时间将执行开机过程产生的开机日志存储在服务器中的非易失性内存设备(即第二目标内存设备)中,如存储在内存条中;因此,在步骤S104中,如果服务器(即目标设备)正常执行开机这一进程(即正常运行),则在服务器完成自检后,服务器将存储在服务器的非易失性内存设备(即第二目标内存设备)中的开机日志传输到BMC中的一个易失性内存设备(即第一目标内存设备)(Hostto BMC Bridge,H2B)中,因此,在服务器正常运行的情况下从BMC系统中的易失性内存设备(即第一目标内存设备)中提取开机日志。其中,开机日志中记录了服务器在开机过程中出现的错误、警告或提示等信息;以及服务器中的电子设备的型号、名称等信息。

根据本申请一些可选的实施例,从目标设备的BMC系统中的第一目标内存设备中获取开机日志,包括: 从第一目标内存设备中确定目标存储区域,其中,目标存储区域为预先约定的专用于存储开机日志的存储区域;从目标存储区域读取开机日志。

在一些实施例中,在从BMC系统中的易失性内存设备(即第一目标内存设备)前,首先对H2B进行寻址,在H2B中寻找BMC与BIOS约定好的用于存储开机日志的区域(即目标存储区域),确定用于存储开机日志的区域(即目标存储区域)的地址,后续在服务器(即目标设备)运行正常的情况下均从该地址指示的区域中读取开机日志。

根据本申请另一些可选的实施例,从目标设备的BMC系统中的第一目标内存设备中获取开机日志之后,获取开机日志的方法还包括: 将开机日志转存在第三目标内存设备,其中,第三目标内存设备为BMC系统中的非易失性存储设备。

在另一些实施例中,获取开机日志的目的是将其长期保存以便后续利用开机日志对服务器进行分析。由于非易失性内存设备中无法长期存储数据,容易发生数据的丢失,为长期保存开机日志,在从BMC的易失性内存设备(即第一目标内存设备)中获取开机日志后将其存储在BMC系统中仅允许BMC访问的非易失性内存设备(即第三目标内存设备)中。

需要说明的是,在本申请实施例中获取的开机日志最终都是存储在BMC系统中仅允许BMC访问的非易失性内存设备(即第三目标内存设备)中,因此,服务器中的非易失性内存设备(即第二目标内存设备)中的开机日志最终也将存储在BMC系统中仅允许BMC访问的非易失性内存设备(即第三目标内存设备)中。

根据本申请一个可选的实施例,获取开机日志的方法还包括:在检测到第一目标内存设备在预设时长中接收到开机日志之后,停止计时并重置计时程序。

在本实施例中,如果服务器(即目标设备)正常运行,在检测到易失性内存设备(即第一目标内存设备)接收到开机日志时,停止当前watch dog中的计时操作,以输出目标设备运行正常的检测结果,同时重置BMC中的 watch dog,将计时程序恢复默认值,以保证下一次计时仍然从0开始。

步骤S106,如果运行状态为运行异常,从目标设备中的第二目标内存设备中获取开机日志,其中,第二目标内存设备为目标设备中的非易失性内存设备。

在步骤S106中,如果服务器(即目标设备)未完成开机这一进程(即运行异常),开机日志仍存储在上述的非易失性内存设备(即第二目标内存设备)中,此时,由BMC主动从上述非易失性内存设备(即第二目标内存设备)中获取服务器的开机日志。

需要说明的是,服务器中的非易失性内存设备(即第二目标内存设备)可以是内存条等硬件存储设备,该存储设备被划分了一块用于存储开机日志的专属区域,并且该用于存储开机日志的专属区域仅允许服务器的基本输入输出系统BIOS访问和修改,而不允许服务器的源操作系统(Operating System,OS)访问和修改;专属区域对于OS是不可见的。

根据本申请一个可选的实施例,从目标设备中的第二目标内存设备中获取开机日志,包括:在第二目标内存设备中确定用于存储开机日志的第二目标区域;通过扩展接口对第二目标区域进行转储,得到开机日志。

在本实施例中,当服务器(即目标设备)运行异常时,BMC主动从目标设备的非易失性内存设备(第二目标内存设备)中获取开机日志;在BMC从第二目标内存设备时,BMC首先确定第二目标内存设备中专用于存储开机日志的内存空间(即第二目标区域);进而调用BMC中通信芯片上的一个接口对目标设备的内存设备的内存空间进行转储,实现内存的读写。例如,可以通过远程扩展调试接口(extend debug port,XDP)对开机日志进行转存。

根据本申请一个可选的实施例,在目标设备中确定用于存储开机日志的第二目标区域,包括:接收第二目标区域的首地址和数据容量,其中,数据容量为的第二目标区域存储数据的最大数据量;根据首地址和数据容量确定第二目标区域的末地址;将第二目标内存设备中从首地址到末地址的空间确定为第二目标区域。

服务器上电开机并完成初始化后,由BIOS在目标设备的非易失性内存设备(第二目标内存设备)中确定专用于存储服务器的开机日志的内存空间(即第二目标区域),并在确定后将该内存空间(即第二目标区域)的起始地址(首地址)和该空间的最大数据存储量(即数据容量)发送给BMC。在本实施例中,BMC在接收到BIOS发送的起始地址(首地址)和数据容量后,将首地址和数据容量转化为相同进制,并基于此确定专用于存储服务器的开机日志的内存空间(即第二目标区域)的结尾地址(末地址);后续在服务器运行异常时,BMC从目标设备的非易失性内存设备(第二目标内存设备)读取开机日志时,以起始地址(首地址)作为读取开机日志的起始位置,以结尾地址(末地址)作为读取开机日志的结束位置;仅读取从起始地址(首地址)到结尾地址(末地址)这一段内存的数据。例如,BMC接收到的首地址为0x10000000,数据容量为2兆(MByte),则BMC在接收到0x10000000和2M之后,首先将2M转化为十六进制的形式,即转化为0x200000,再计算首地址0x10000000与数据容量0x200000的和。首地址与数据容量的和即为末地址,即末地址为0x102000000;BMC在目标设备的非易失性内存设备(第二目标内存设备)中读取数据时,仅读取0x10000000到0x102000000这两个地址之间的数据。

通过上述步骤,将传输日志的方法由传统的IO操作替换为内存读写操作,当目标设备的运行状态异常时,不需要做重启、更改固件、更改固件配置等操作,减少了对于固件的依赖;不需要进行复现操作,提高了传输开机日志的速度进而提高了目标设备运行状态异常原因的分析速度。

图2是根据本申请实施例的另一个方面提供的一种传输开机日志的方法的流程图,如图2所示,该方法包括以下步骤:

步骤S202,确定第二目标区域,其中,第二目标区域用于存储开机日志,开机日志为目标设备在开机过程中的全部日志。

对于BIOS来说,在步骤S202中,BIOS在服务器(即目标设备)的内存设备中确定用于存储目标设备在开机过程中的所有系统日志(即开机日志)的内存空间(即第二目标区域);其中,目标设备的内存设备是非易失性内存设备,开机日志记录了服务器在开机过程中出现的错误、警告或提示等信息;同时还记录了服务器中的电子设备的型号、名称等信息。

根据本申请一个可选的实施例,确定第二目标区域,包括:确定第二目标区域的首地址和第二目标区域的数据容量,其中,数据容量为的第二目标区域存储数据的最大数据量;根据首地址和数据容量确定第二目标区域的末地址;将第二目标内存设备中从首地址到末地址的空间确定为第二目标区域。

在本实施例中,服务器(即目标设备)上电后,BIOS代码加载同时目标设备进行初始化;在完成了服务器中的内存设备的初始化后,将内存设备中两个不同地址之间的空间确定为固定内存空间(即第二目标区域),并对该固定内存空间(即第二目标区域)进行初始化。上述内存设备中的两个不同地址分别为首地址和末地址,其中,首地址是BIOS中记录的、预先设置好的内存地址;末地址为首地址与固定内存空间(即目标区域)的数据容量的和指示的地址;固定内存空间(即第二目标区域)的数据容量是BIOS中记录的、预先设置好的字节数量,表示固定内存空间(即第二目标区域)能够存储的最大数据量,通常为2兆(MByte)。

根据本申请一些可选的实施例,在确定第二目标区域之后,传输开机日志的方法包括:通过IPMI命令将首地址和数据容量发送给目标设备中的BMC系统。

在一些可选的实施例中,BIOS在确定了内存设备中用于存储开机日志的固定内存空间(即第二目标区域)后,通过IPMI命令的形式将固定内存空间(即第二目标区域)的首地址和数据容量发送到BMC以告知BMC开机日志在内存设备中的存储地址。

步骤S204,根据在预设时长内写入第二目标区域的开机日志中的日志的类型确定目标设备的运行状态,其中,运行状态包括运行正常和运行异常。

在服务器(即目标设备)开机的过程中,BIOS将开机日志按照生成的顺序逐条写入内存空间(即第二目标区域),其中,开机日志包括服务器的自检日志、服务器中各电子设备的型号、名称等信息;当BIOS将服务器的自检日志写入内存空间(即第二目标区域)后,表示目标设备完成开机过程,即目标设备正常运行。因此,在步骤S204中,根据内存空间(即第二目标区域)中是否写入了自检日志判断目标设备的运行状态是运行正常还是运行异常。

根据本申请一个可选的实施例,根据在预设时长内写入第二目标区域的开机日志中的日志的类型确定目标设备的运行状态,包括:读取在预设时长内写入第二目标区域的开机日志,并确定开机日志中每条日志的类型;如果开机日志中不存在目标类型的日志,确定目标设备的运行状态为运行异常,其中,目标类型的日志为指示目标设备完成自检的日志;如果开机日志中存在目标类型的日志,确定目标设备的运行状态为运行正常。

在本实施例中,服务器(即目标设备)自上电开机开始将执行开机过程产生的开机日志逐条存储在服务器中的非易失性内存设备中的内存空间(即第二目标区域),并在完成自检后将从开机到自检完成这一段时间中产生的所有开机日志传输到BMC与BIOS预先约定的H2B中的固定空间(即第一目标区域);在本实施例中。在预设时长内检测服务器中的非易失性内存设备中的内存空间(即第二目标区域)是否写入自检日志(即目标类型的日志),其中,预设时长为预先设定的,其时间长度为大于服务器从开机到将自检日志传输到H2B中的固定空间(即第一目标区域)这一段时间的时长。即,在本申请实施例中为检测服务器的运行状态设置了足够长的时长,保证对服务器运行状态的判断结果不受预设时长的影响。读取在预设时长内写入服务器中的非易失性内存设备中的内存空间(即第二目标区域)中的每条日志并确定每条日志的类型,如果在预设时长内写入服务器中的非易失性内存设备中的内存空间(即第二目标区域)中的日志不存在自检日志(即目标类型的日志),说明服务器未完成开机,服务器运行异常;如果在预设时长内写入服务器中的非易失性内存设备中的内存空间(即第二目标区域)中的日志存在自检日志(即目标类型的日志),说明服务器成功开机,服务器运行正常。

步骤S206,以与运行状态对应的方法传输开机日志。

在步骤S206中,在通过步骤S204确定了服务器(即目标设备)的运行状态后,针对服务器的不同运行状态采用不同的方法传输开机日志,其中,不同的运行状态对应的传输方法不同。

根据本申请一个可选的实施例,以与运行状态对应的方法传输开机日志,包括:如果目标设备的运行状态为运行正常,在确定第二目标区域写入目标类型的日志后,在目标设备的BMC系统中确定第一目标内存设备,其中,第一目标内存设备为易失性内存设备;通过直接内存读取DMA的方式将开机日志写入第一目标内存设备。

在本申请实施例中,根据在预设时长内BIOS是否将自检日志(即目标类型的日志)传输到目标区域为服务器(即目标设备)定义了运行正常和运行异常这两种运行状态,因此,在本实施例中存在两种传输开机日志的方法。不同运行状态对应的传输日志的方法不同,不同方法的触发条件也不同,在本实施例中,如果目标设备的运行状态为运行正常,以目标设备完成开机作为触发条件,在BIOS将自检日志写入服务器中的非易失性内存设备中的内存空间(即第二目标区域)后,在BMC中确定BIOS和BNC预先约定好的用于暂存开机日志的易失性存储设备H2B(即第一目标内存设备),通过直接内存访问(Direct MemoryAccess,DMA)的方式将开机日志写入H2B中。

根据本申请一些可选的实施例,在目标设备的BMC系统中确定第一目标内存设备,包括:确定通过外围组件快速互连PCIe链路与目标设备进行数据传输的多个易失性内存设备;将多个易失性内存设备中与BMC系统进行数据通信的易失性内存设备确定为第一目标内存设备。

在一些可选的实施例中,上述易失性存储设备H2B(即第一目标内存设备)从通过外围组件快速互连链路(Peripheral Component Interconnect Express,PCIe)与服务器连接的多个易失性存储设备中选取,由于BIOS与BMC预先在某一个H2B中约定了用于存储开机日志的固定区域(即第一目标区域),而BIOS将开机日志写入H2B中的目标区域,BMC从H2B中读出开机日志,因此,该H2B应是对BMC和BIOS均可写可读的,即,对BMC和服务器均是可写可读的,因此,将服务器连接的多个易失性存储设备中能够与BMC通信的H2B确定为目标易失性存储设备(即第一目标内存设备)。

通过上述步骤,在BIOS启动过程中,初始化内存后,在内存中指定固定内存地址、固定内存大小的一块区域,用于存放BIOS开机日志;在目标设备正常运行时,在BIOS 自检完成后通过DMA的方式将开机日志搬运到服务器与BMC均可访问的H2B区域中,实现开机日志的收集;在服务器运行异常时,通过XDP工具直接转储(dump)内存,以获得当前的BIOS开机日志;提高了日志收集的效率。

根据本申请一个可选的实施例,开机日志通过以下方法写入第二目标内存设备:确定第一待写入开机日志的字节数量,并根据首地址和字节数量确定新地址,其中,第一待写入开机日志为开机日志中当前待写入第二目标区域的日志,新地址为第一待写入开机日志写入第二目标区域后第二待写入开机日志写入第二目标区域的起始地址,第二待写入开机日志为第一待写入开机日志的下一条日志;比较新地址与末地址,得到比较结果;如果新地址大于末地址,拒绝将第一待写入开机日志写入第二目标区域;如果新地址小于或者等于末地址,允许将第一待写入开机日志写入第二目标区域。

在本实施例中,在将开机日志逐条写入服务器中的非易失性内存设备中的内存空间(即第二目标区域)时,采用定义全局变量的方法保证写入的数据不越界,方法如下。为做区分,在本实施例中将服务器中的非易失性内存设备中的内存空间(即第二目标区域)定义为区域“BIOS DEBUG INFO AREA”,定义指针全局变量P_start与P_end,其中,P_start为“BIOS DEBUG INFO AREA”的起始地址(首地址),P_end为根据首地址和数据容量确定的“BIOS DEBUG INFO AREA”的结尾地址(末地址);P_end的值为P_start的初始值向后偏移“BIOS DEBUG INFO AREA”内存区域的大小。在将每一条写入“BIOS DEBUG INFO AREA”之前,获取待写入开机日志的数据量以确定其所占内存的大小,将P_start向后偏移该条待写入日志所占内存大小,得到将该条日志写入“BIOS DEBUG INFO AREA”区域后,该区域的新末地址(即新地址);如果上述新末地址(即新地址)大于P_end,说明该条日志写入后会发生越界,因此,拒绝将该条待写入日志写入“BIOS DEBUG INFO AREA”;相反的,如果上述新末地址(即新地址)小于P_end,说明该条日志写入后不会发生越界,因此,允许将该条待写入日志写入“BIOS DEBUG INFO AREA”。并且,在将该条日志写入“BIOS DEBUG INFO AREA”后,下一条日志将从一个新首地址开始写入,其中,新首地址即为原首地址向后偏移上一条日志信息所占内存大小后的地址;并且,每条日志写入后均重复上述检验是否发生越界的过程。

根据本申请一些可选的实施例,传输开机日志的方法还包括: 将第二目标区域的读取对象由目标设备的基本输入输出系统BIOS和目标设备的操作系统修改为目标设备的BIOS。

在一些可选的实施例,BIOS在服务器的非易失性内存设备中确定了专用于存储开机日志的内存空间(即第二目标区域)后,对该内存空间(即第二目标区域)的读写权限进行修改,修改后该内存空间(即第二目标区域)仅允许BIOS访问和修改而对于服务器的操作系统OS不可见。具体的,可以获取记载了服务器配置和接口的高级配置和电源管理接口表(Advanced Configuration and Power Management Interface,ACPI),将ACPI表中记录的该内存空间(即第二目标区域)由BIOS和OS修改为BIOS。

图3是根据本申请实施例提供的一种服务器的结构图,如图3所示,该服务器包括:BMC(30)、BIOS模块(32)和内存设备34,其中,内存设备34,用于存储服务器的开机日志;BIOS模块(32),用于在服务器正常运行时,将内存设备中的开机日志传输到BMC;BMC(30),用于在服务器异常运行时,从内存设备中转储开机日志。

根据本申请一个可选的实施例,BIOS模块(32),还用于以DMA的方式将开机日志发送到BMC。

在本实施例中,在服务器正常运行时,当检测到内存设备接收到服务器的自检日志之后,通过DMA的方式将内存设备中的开机日志发送到BMC中的易失性内存设备H2B中。

根据本申请另一个可选的实施例,BMC,还用于通过扩展接口从内存设备中获取开机日志,并将所属开机日志保存在BMC的非易失性存储设备中。

在本实施例中,在服务器运行出现异常时,BMC调用XDP将内存设备中用于存储开机日志的内存进行dump(转储),将其转储在BMC的非易失性存储设备EEPROM中。

图4是服务器传输开机日志的流程图,如图4所示,服务器上电开机后,BIOS代码加载,完成服务器中CPU的初始化;初始化完成后,BIOS初始化内存设备并从中指定固定大小、固定起始地址的专用区域,将该专用区域专用于存放开机日志;在确定专用区域后,修改服务器的ACPI表使BIOS独占上述专用区域的读写权限,并使上述专用区域对服务器的操作系统不可见。接下来,BIOS向BMC发送IPMI命令,将上述专用区域的起始地址和区域大小以IPMI命令的形式发送至BMC;并且,BIOS通过IPMI命令使能BMC中的watch dog程序,同时将watch dog对应的超时时间设置为预设时长。在输出开机日志之前,BIOS通过PCIe链路在BMC的非易失性内存设备H2B中初始化一个固定区域,用于暂存服务器的开机日志。服务器执行开机进程时,BIOS将开机日志写入上述专用区域中,watch dog检测BIOS是否未在预设时长内向专用区域中写入自检日志;如果在预设时长内写入,BIOS通过DMA的形式将开机日志写入H2B,在开机日志写入到H2B之后,BMC从H2B中提取开机日志并将其转存到BMC的非易失性内存设备EEPROM中,使开机日志被持久化保存。如果未在预设时长内写入,BMC记录服务器运行异常,调用XDP对内存设备中目标区域进行dump,把开机日志转储到BMC的非易失性内存设备EEPROM中,使开机日志被持久化保存。

图5是根据本申请实施例的另一个方面提供的一种传输开机日志的方法的流程图,如图5所示,该方法包括以下步骤:

步骤S502,确定第一目标内存设备,其中,第一目标内存设备为目标设备的管理系统中的易失性内存设备。

在步骤S502中,服务器的BMC系统中在其系统中的多个易失性存储设备中确定一个用于暂存开机日志的易失性存储设备。

步骤S504,接收启动命令,依据启动命令启动计时程序,其中,计时程序用于控制目标设备以预设时长进行计时。

在步骤S504中,BMC接收启动命令,并在接收之后启动计时程序,其中,计时程序的计时时长设置为预设时长。

步骤S506,根据计时程序的运行结果确定目标设备的运行状态,其中,运行状态包括运行正常和运行异常。

在步骤S506中,在步骤S504中启动了计时程序之后,在计时程序中检测目标设备的运行状态,判断目标设备正常运行还是异常运行。

步骤S508,以与运行状态对应的方法传输开机日志,其中,开机日志为目标设备在开机过程中的全部日志。

在步骤S508中, 在通过步骤S506确定了目标设备的运行状态后,通过与运行状态对应的方法传输开机日志,其中,目标设备的运行状态包括运行正常和运行异常;不同的运行状态对应的方法不同。

图6是根据本申请实施例提供的一种获取开机日志的装置的结构图,包括:确定模块60,用于确定目标设备的运行状态,其中运行状态包括:运行正常和运行异常;第一获取模块62,用于在运行状态为运行正常时,从目标设备的基板管理控制BMC系统中的第一目标内存设备中获取开机日志,其中,第一目标内存设备为易失性内存设备,开机日志为目标设备在开机过程中的全部日志;第二获取模块64,用于在运行状态为运行异常时,从目标设备中的第二目标内存设备中获取开机日志,其中,第二目标内存设备为目标设备中的内存设备。

需要说明的是,图6所示实施例的优选实施方式可以参见图1所示实施例的相关描述,此处不再赘述。

根据本申请实施例的另一个方面,还提供了一种非易失性存储介质,非易失性存储介质中存储有计算机程序,其中,该非易失性存储介质所在设备通过运行计算机程序执行上述的获取开机日志的方法和传输开机日志的方法。

上述非易失性存储介质用于存储执行以下功能的程序:确定目标设备的运行状态,其中运行状态包括:运行正常和运行异常;如果运行状态为运行正常,从目标设备的基板管理控制BMC系统中的第一目标内存设备中获取开机日志,其中,第一目标内存设备为易失性内存设备,开机日志为目标设备在开机过程中的全部日志;如果运行状态为运行异常,从目标设备中的第二目标内存设备中获取开机日志,其中,第二目标内存设备为目标设备中的内存设备。

上述非易失性存储介质还用于存储执行以下功能的程序:确定第二目标区域,其中,第二目标区域用于存储开机日志,开机日志为目标设备在开机过程中的全部日志;根据在预设时长内写入第二目标区域的开机日志中的日志的类型确定目标设备的运行状态,其中,运行状态包括运行正常和运行异常;以与运行状态对应的方法传输开机日志。

根据本申请实施例的另一个方面,还提供了一种电子设备,包括存储器和处理器,存储器中存储有计算机程序,处理器被设置为通过计算机程序执行上述的获取开机日志的方法和传输开机日志的方法。

上述电子设备中的处理器用于运行执行以下功能的程序:确定目标设备的运行状态,其中运行状态包括:运行正常和运行异常;如果运行状态为运行正常,从目标设备的基板管理控制BMC系统中的第一目标内存设备中获取开机日志,其中,第一目标内存设备为易失性内存设备,开机日志为目标设备在开机过程中的全部日志;如果运行状态为运行异常,从目标设备中的第二目标内存设备中获取开机日志,其中,第二目标内存设备为目标设备中的内存设备。

上述电子设备中的处理器还用于运行执行以下功能的程序:确定第二目标区域,其中,第二目标区域用于存储开机日志,开机日志为目标设备在开机过程中的全部日志;根据在预设时长内写入第二目标区域的开机日志中的日志的类型确定目标设备的运行状态,其中,运行状态包括运行正常和运行异常;以与运行状态对应的方法传输开机日志。

需要说明的是,上述获取开机日志的装置中的各个模块可以是程序模块(例如是实现某种特定功能的程序指令集合),也可以是硬件模块,对于后者,其可以表现为以下形式,但不限于此:上述各个模块的表现形式均为一个处理器,或者,上述各个模块的功能通过一个处理器实现。

上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。

在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对相关技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。

相关技术
  • 获取日志的方法及装置、存储介质、电子装置
  • 数据库的日志分析处理方法及装置、DDL同步方法及装置
  • 基于Linux周期性命令的远程日志获取方法及系统
  • 日志获取装置、通信模块、日志获取系统以及日志获取方法
  • 开机日志控制方法、装置、计算机设备和存储介质
技术分类

06120116075152