记录内核异常栈及vmcore文件的方法及系统的制作方法

文档序号:9667244阅读:1006来源:国知局
记录内核异常栈及vmcore文件的方法及系统的制作方法
【技术领域】
[0001]本发明涉及计算机技术领域,尤其涉及一种记录内核异常桟及vmcore文件的方法及系统。
【背景技术】
[0002]目前,网络设备(如防火墙、交换机等)一般都搭载有watchdog功能,即在系统异常或发生重大错误情况下自动重启设备,由于内核崩溃现场的内存镜像文件(vmcore文件)和异常栈信息是保存在内存中,因此,设备重启后vmcore文件和内核异常栈信息也就随之消失了,而内核异常栈信息是解决内核bug必不可少的且至关重要的信息,有时需要把内核异常栈或内核崩溃现场.core文件发给后端研发人员定位,以解决内核异常问题。
[0003]但是,现有技术中,并没有记录内核异常栈和内核崩溃现场vmcore文件的实现方案,也无法确定内核发生异常的时间,设备重启后内核异常栈及vmcore文件就丢失了。
[0004]因此,如何实现自动记录并保存内核异常栈和内核崩溃现场vmcore文件,以便于文件导出及定位内核异常原因,实现内核异常问题的定位,成为目前急需解决的问题之一。

【发明内容】

[0005]针对现有技术方案存在的问题和不足,本发明提供了一种记录内核异常栈及vmcore文件的方法及系统,解决了现有技术中无法在linux内核出问题的第一时间记录内核异常桟及vmcore文件的问题。
[0006]根据本发明的一个方面,提供了一种记录内核异常栈及vmcore文件的方法,该方法包括:
[0007]当系统内核出现异常时,所述系统内核触发捕获内核启动;
[0008]所述捕获内核生成所述系统内核崩溃现场的内存镜像文件vmcore ;
[0009]在所述捕获内核启动过程中,所述捕获内核从所述vmcore中提取带有调试信息的内核异常栈信息,生成文本形式的内核异常信息文件,并将所述内核异常信息文件存储到预设存储介质,以及
[0010]对所述vmcore进行压缩,并将压缩后的vmcore存储到所述预设存储介质。
[0011]其中,在所述捕获内核从所述vmcore中提取带有调试信息的内核异常栈信息之前,还包括:
[0012]所述捕获内核挂载所述预设存储介质。
[0013]其中,所述捕获内核从所述vmcore中提取带有调试信息的内核异常栈信息,生成文本形式的内核异常信息文件,并将所述内核异常信息文件存储到预设存储介质,包括:
[0014]获取当前系统时间;
[0015]从所述vmcore中提取带有调试信息的内核异常栈信息;
[0016]根据所述内核异常栈信息生成以所述当前系统时间为标识的文本形式的内核异常信息文件;
[0017]将所述内核异常信息文件保存到所述预设存储介质。
[0018]其中,所述根据所述内核异常栈信息生成以所述当前系统时间为标识的文本形式的内核异常信息文件,包括:
[0019]根据所述内核异常栈信息生成以所述当前系统时间命名的文本形式的内核异常信息文件;或
[0020]将所述当前系统时间作为内核异常发生时间记录在所述文本形式的内核异常信息文件中。
[0021 ] 其中,所述方法还包括:
[0022]所述系统内核预先配置用于加载所述捕获内核的内存空间;
[0023]在所述系统内核启动时,所述系统内核采用kexec加载所述捕获内核到所述预设内存空间。
[0024]其中,在所述系统内核启动之前,还包括:
[0025]所述系统内核预先将所述kexec的可执行文件和所述捕获内核的镜像文件配置到所述系统内核的内核文件系统中。
[0026]根据本发明的另一个方面,提供了一种记录内核异常栈及vmcore文件的系统,该系统包括:
[0027]系统内核,用于当系统内核出现异常时,触发捕获内核启动;
[0028]捕获内核,用于生成所述系统内核崩溃现场的内存镜像文件vmcore ;
[0029]所述捕获内核,还用于从所述vmcore中提取带有调试信息的内核异常栈信息,生成文本形式的内核异常信息文件,并将所述内核异常信息文件存储到预设存储介质,以及对所述vmcore进行压缩,并将压缩后的vmcore存储到所述预设存储介质。
[0030]其中,所述捕获内核,还用于在从所述vmcore中提取带有调试信息的内核异常栈信息之前,挂载所述预设存储介质。
[0031]其中,所述系统内核,还用于预先配置用于加载所述捕获内核的内存空间,并在所述系统内核启动时,采用kexec加载所述捕获内核到所述预设内存空间。
[0032]其中,所述系统内核,还用于在启动之前,预先将所述kexec的可执行文件和所述捕获内核的镜像文件配置到所述系统内核的内核文件系统中。
[0033]本发明的有益效果为:
[0034]本发明提供的记录内核异常栈及vmcore文件的方法及系统,通过在系统内核(即第一内核)启动时,当第一内核出现异常时使用kexec触发预先加载的捕获内核启动,以获取内核异常桟信息及vmcore文件并保存到存储介质中,以便于后续对内核异常进行定位,解决了网络设备在现网环境中linux内核出现问题的第一时间无法记录内核异常栈及vmcore文件的问题。
[0035]上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的【具体实施方式】。
【附图说明】
[0036]通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
[0037]图1为本发明实施例提出的一种记录内核异常栈及vmcore文件的方法的流程图;
[0038]图2为本发明实施例提出的记录内核异常栈及vmcore文件的方法中步骤SI3的细分步骤流程图;
[0039]图3为本发明实施例提出的一种记录内核异常栈及vmcore文件的系统的结构示意图。
【具体实施方式】
[0040]下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
[0041]本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。
[0042]本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非被特定定义,否则不会用理想化或过于正式的含义来解释。
[0043]图1示出了本发明实施例的一种记录内核异常栈及vmcore文件的方法的流程图。
[0044]如图1所示,本发明实施例提出的记录内核异常栈及vmcore文件的方法具体包括以下步骤:
[0045]S11、当系统内核出现异常时,所述系统内核触发捕获内核启动;
[0046]其中,系统内核为网络设备在现网环境中Linux系统的系统内核(即第一内核),捕获内核用于当系统内核出现异常时,获取系统内核的完整信息,包括CPU寄存器、堆栈数据等。
[0047]S12、所述捕获内核生成所述系统内核崩溃现场的内存镜像文件vmcore ;
[0048]具体的,当linux系统内核发生崩溃的时候,可以通过kdump等方式收集内核崩溃之前的内存,生成所述系统内核崩溃现场的内存镜像文件vmcore。
[0049]S13、在所述捕获内核启动过程中,所述捕获内核从所述vmcore中提取带有调试信息的内核异常栈信息,生成文本形式的内核异常信息文件,并将所述内核异常信息文件存储到预设存储介质,以及
[0050]对所述vmcore进行压缩,并将压缩后的vmcore存储到所述预设存储介质。
[0051 ] 具体的,捕获内核通过运行预设的自定义脚本,采用vmcore-dmesg命令从所述vmcore中提取带有调试信息的内核异常栈信息,生成文本形式的内核异常信息文件,并将所述内核异常信息文件存储到预设存储介质,并采用Makedumpfile-c-d-xvmcore—diskset = /proc/vmcore命令对所述vmcore进行压缩,并将压缩后的vmcore存储到所述预设存储介质。
[0052]本实施例中,通过编译kexec-tools工具及makedumpfile工具,按照当前系统x86_64架构编译开源代码生成所需的kexec、vmcore-dmesg、ma
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1