CN104254840B - 在计算机系统中的存储器转储和分析 - Google Patents

在计算机系统中的存储器转储和分析 Download PDF

Info

Publication number
CN104254840B
CN104254840B CN201380021626.4A CN201380021626A CN104254840B CN 104254840 B CN104254840 B CN 104254840B CN 201380021626 A CN201380021626 A CN 201380021626A CN 104254840 B CN104254840 B CN 104254840B
Authority
CN
China
Prior art keywords
memory
current context
dump
computer system
bootstrap
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN201380021626.4A
Other languages
English (en)
Other versions
CN104254840A (zh
Inventor
闻磊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mawier International Trade Co Ltd
Original Assignee
Mawier International Trade Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mawier International Trade Co Ltd filed Critical Mawier International Trade Co Ltd
Publication of CN104254840A publication Critical patent/CN104254840A/zh
Application granted granted Critical
Publication of CN104254840B publication Critical patent/CN104254840B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/079Root cause analysis, i.e. error or fault diagnosis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0778Dumping, i.e. gathering error/state information after a fault for later diagnosis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0784Routing of error reports, e.g. with a specific transmission path or data flow
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0787Storage of error reports, e.g. persistent data storage, storage using memory protection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0736Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in functional embedded systems, i.e. in a data processing system designed as a combination of hardware and software dedicated to performing a certain function
    • G06F11/0742Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in functional embedded systems, i.e. in a data processing system designed as a combination of hardware and software dedicated to performing a certain function in a data processing system embedded in a mobile device, e.g. mobile phones, handheld devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0748Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a remote unit communicating with a single-box computer node experiencing an error/fault
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Debugging And Monitoring (AREA)

Abstract

提供了一种用于在计算机系统中执行存储器转储的系统和方法。在计算机系统中检测到一个触发事件。该计算机系统被配置用于检测内核严重错误和系统挂起两者,并且如果内核严重错误和系统挂起两者之一被检测到,则执行存储器转储。响应于检测到触发事件而在计算机系统中执行存储器转储。存储器转储的执行包括将计算机系统的当前情境存储在存储器的一部分。存储当前情境而不在检测到触发事件之前预留该部分。重新启动该计算机系统并且执行引导程序,其中该引导程序的运行空间被限制于存储器的该部分。该引导程序被用于将当前情境上传到主机设备。

Description

在计算机系统中的存储器转储和分析
相关申请的交叉引用
本公开要求于2012年4月27日提交的第61/639,456号美国临时专利申请的优先权。该申请全部内容通过引用的方式并入于此。
技术领域
本文档中所述的技术总体涉及用于在计算机系统中执行存储器转储的系统和方法,尤其涉及在执行嵌入式设备中执行存储器转储和事后分析的系统和方法。
背景技术
随着信息通信技术的广泛使用,信息处理系统,诸如桌面计算机,笔记本计算机,或者嵌入式设备(例如智能电话,个人数字助理,平板计算机)应该展示出高度的可靠性。当在信息处理系统运行期间出现故障时,立即收集关于故障的信息并且在此之后继续系统的正常运行可以是重要的。信息处理系统中一种可能出现的故障的一个示例是内核严重错误(panic)。内核严重错误是当信息处理系统的操作系统(OS)检测到系统无法安全从其恢复的致命错误时采取的动作。当检测到内核严重错误时,系统可以向显示设备输出错误消息并且执行存储器转储以用于事后调试。存储器转储被用于当检测到致命问题的时刻存储系统的存储器的内容。通常,OS或者在OS内核中操作的程序执行转储过程。例如,当系统的中央处理器(CPU)接收到指示出现致命错误的中断信号时,CPU可以将控制传递给OS内核中的存储器转储程序以执行存储器转储操作。
发明内容
本公开针对用于在计算机系统中执行存储器转储的系统和方法。在一种用于在计算机系统中执行存储器转储的方法中,在计算机系统中检测触发事件。该计算机系统被配置为检测内核严重错误和系统挂起,并且如果内核严重错误和系统挂起两者之一被检测到则执行存储器转储。响应于检测到触发事件,在计算机系统中执行存储器转储。存储器转储的执行包括将计算机系统的当前情境存储在存储器设备的一部分中。存储当前情境而不在检测到触发事件之前预留该部分。重新启动计算机系统并且执行引导程序,其中该引导程序的运行空间被限制于存储器设备的该部分。该引导程序被用于将当前情境上传到主机设备。
在另一示例中,一种用于在计算机系统中执行存储器转储的系统包括处理器以及被编码有用于命令处理器执行操作的指令的计算机可读存储器。该操作包括在计算机系统中检测触发事件,其中计算机系统被配置为检测内核严重错误和系统挂起两者,并且如果内核严重错误和系统挂起两者之一被检测到则执行存储器转储。该操作还包括响应于检测到触发事件而在计算机系统中执行存储器转储。该执行包括将计算机系统的当前情境存储在存储器设备的一部分中,其中存储当前情境而不在检测到触发事件之前预留该部分。重新启动计算机系统并且执行引导程序,其中该引导程序的运行空间被限制于存储器设备的该部分。该引导程序被用于将当前情境上传到主机设备。
附图说明
图1是描绘用于执行存储器转储和事后分析的示例嵌入式设备和主机设备的框图。
图2是图示说明嵌入式设备和主机设备内的示例软件结构的图。
图3是图示用于执行响应于内核严重错误或系统挂起的存储器转储和事后分析的示例方法的流程图。
图4是图示在将存储器转储数据从嵌入式设备转移到主机设备中使用的示例上传协议的方面的框图。
图5是图示一种用于允许数据在上传之前被压缩的上传协议的示例方法的流程图。
图6是计算机系统中的Linux存储器转储的示例使用模式的框图。
图7是图示用于从存储器恢复文件系统和文件内容的示例过程的流程图。
图8是图示用于在计算机系统中执行存储器转储的示例方法的流程图。
具体实施方式
图1是描绘用于执行存储器转储和事后分析的示例嵌入式设备102和主机设备112的框图100。嵌入式设备102包括处理器104,存储器控制器106,存储器108,以及主机控制接口110。处理器104可以是计算领域技术人员熟知的通用处理单元,其能够处理由内部或者外部中断驱动的任务。处理器104可以连接到嵌入式设备102的各种输入设备和输出设备(例如键盘,触摸板,显示设备,扬声器等)并且耦合到任何数目的不同的存储器设备(例如只读存储器,随机访问存储器,硬盘驱动器等)。虽然框图100将示例嵌入式设备102描绘为包括单个处理器104,但是在其它示例中,可以用多个处理核执行计算机程度的指令。处理器104和嵌入式设备102的其它组件经由主机控制接口110与主机设备112通信。主机控制接口110可以例如使用通用串行总线(USB)协议以实现嵌入式设备102和主机设备112之间的通信。其它类型的主机控制接口(例如联合测试行动组接口,集成电路间接口,局域网接口等)可以被使用。
在图1的示例嵌入式设备102中,处理器104被耦合到存储器108,其可以是随机访问存储器(RAM),动态RAM(DRAM),静态RAM(SRAM),同步DRAM(SDRAM),FLASH存储器等的任意组合。存储器108可以进一步是NOR型闪速存储器,NAND型闪速存储器,或者多媒体卡存储器(例如eMMC存储器)及其它。处理器104jingyou存储器控制器106访问存储器108。当处理器104需要访问存储器108时,读取请求或者写入请求被从处理器104发送到存储器控制器106,并且存储器控制器反过来向存储器108发送对应的读取请求或者写入请求。结果,来自处理器104的数据可以被写入到存储器108,或者可以将数据从存储器108读取到处理器104。
当嵌入式设备102在操作期间出现故障时,关于故障的信息被收集以用于事后分析和调试。嵌入式设备102中可能出现的故障的示例是内核严重错误。内核严重错误是由嵌入式设备102的OS在检测到严重错误时所采取的动作。在一个示例中,嵌入式系统102使用Linux(注册商标)OS,其包括用于处理这种严重错误的内核严重错误例程。内核可以形成OS的核心并且被用于管理嵌入式设备102的资源以及提供额外的服务,例如内核严重错误例程。嵌入式设备102中可能出现的故障的另一示例是系统挂起(即死机)。系统挂起出现在嵌入式设备102的单个或者所有程序停止对输入做出响应时。例如,嵌入式设备102的显示的各方面变成静止,并且任何类型的输入在嵌入式设备102内都无法产生效果。
内核严重错误和系统挂起用作嵌入式设备102的触发事件。嵌入式设备102被配置为检测内核严重错误和系统挂起两者,如果该触发事件中任何一个发生,则收集关于故障的信息以用于事后分析。收集关于故障的信息经由存储器转储发生。存储器转储被用于当内核严重错误或者系统挂起被检测到的时刻存储存储器108的内容。
在执行存储器转储时,Linux内核转储机制(例如“Kdump”工具)将嵌入式设备102的当前情境存储在存储器108的一部分中,并且向存储器108的特定页面写入签名。为了存储当前情境和写入签名,Linux内核在运行的同时不会特别地预留空间以加载在内核严重错误或者系统挂起的情况下被触发的第二内核。而是,存储当前情境而在检测到触发事件之前不预留存储器108的该部分。当内核严重错误或者系统挂起被检测到时,当前情境被存储在存储器108的一部分中,该部分一般被预留作为嵌入式设备102中的视频存储器使用。将视频存储器用于存储器转储在Linux内核正常运行时具有最小影响。将当前情境以此方式存储,允许执行存储器转储而不预留存储器108的一大部分空间。
在存储器转储的另一方面中,重新启动嵌入式设备102并且执行引导程序(例如修改版本的“U-boot”引导加载程序)。通常,引导程序是计算机程序,其将嵌入式设备102的OS加载到存储器108中并且打包指令以引导OS内核。在执行存储器转储时,引导程序适于和存储器108一起使用,以便引导程序的运行空间可以被限制于存储器108的存储当前情境的部分(即上述视频存储器部分)。在存储器108的该部分内操作的引导程序检测签名是否存在于存储器108的特定页面中。当在存储器108的特定页面检测到签名时,引导程序中断嵌入式设备的正常启动过程,并且根据存储器转储来执行进一步的动作。
引导程序执行的进一步动作包括将存储器108的该部分中存储的当前情境经由主机控制接口110上传到主机设备112。为了执行上传,必须建立嵌入式设备102和主机设备112之间的连接。在连接建立后,引导程序将当前情境上传到主机设备112。主机控制接口110使用通用串行总线(USB)协议执行上传。在一个示例中,USB协议基于Android(注册商标)系统的“快速启动(Fastboot)”协议。该快速启动协议是直接基于USB底层数据分组的协议。原始的快速启动协议包括用于文件下载的功能而不包扩用于文件上传的功能。然而,在图1的嵌入式系统102中,使用了包括上传功能的快速启动协议的修改版本。在上传之前,存储器108的该部分中的当前情境可以被压缩(例如,用“zlib”软件压缩库),从而减少上传时间。
在将当前情境从嵌入式设备102上传到主机设备112之后,主机设备执行对当前情境的事后分析。为了进行事后分析,主机设备112将当前情境存储为映射文件。在一个示例中,“崩溃工具(Crash Utility)”应用的修改版本被用于进行事后分析。崩溃工具是一种Linux内核转储映射分析工具,并且由Red Hat,Inc.(注册商标)开发和维护。存储在主机设备112中的映射文件可以使用修改版本的崩溃工具应用被直接分析。原始版本的崩溃工具应用只允许查看简单数据结构内容并且缺少恢复文件系统和文件内容的功能。图1的示例系统因此利用添加了用于恢复文件系统和文件内容功能的崩溃工具应用的修改版本。
图1的示例系统在内核严重错误或者系统挂起的事件发生时启用存储器转储并且分析该事件。进一步,在图1的示例系统中,执行存储器转储而不特别地预留存储器108的该部分以用于在Linux内核运行期间存储存储器转储。将存储器转储数据经由USB协议上传到主机设备112,使得存储在存储器转储数据中的文件能够被浏览并且能够从嵌入式设备102崩溃的时间点恢复。虽然图1的示例系统关于嵌入式设备进行描述,但是此处所述的存储器转储和分析方法可以应用于任何计算机系统。例如,设备102和112两者之一或者两者可以是个人计算机(PC)。图1的示例系统可以尤其适用于嵌入式设备102在户外测试的情况。
图2是图示嵌入式设备200和主机设备250内的示例软件结构的图。根据上面图1所述,嵌入式设备200可以包括用于执行存储器转储的硬件和软件系统,并且主机设备250可以包括用于执行事后存储器转储分析的硬件和软件系统。嵌入式设备200内的软件包括引导程序202,OS内核204以及各种应用程序206。主机设备250内的软件包括的崩溃工具应用252的修改版本。
嵌入式设备200的引导程序202包括引导加载程序功能以及用于将存储器转储数据上传到主机设备250的功能。引导加载程序功能通过使用U-boot工具208或者其它类似程序实现。如上所述,U-boot工具208适于存储器存储并且能够从存储器中的特定位置执行,其中存储器中的特定位置是存储器中存储存储器转储数据的部分。在嵌入式设备200在崩溃后重新启动时,引导程序202确定是否应该执行进一步的存储器转储功能(例如,通过检测由Linux内核转储机制写入存储器的签名)。如果进一步的存储器转储功能将要被执行,则引导程序202利用快速启动协议210的修改版本将存储器转储数据经由USB协议上传到主机设备250。
用于控制嵌入式设备200的硬件的程序一般在包括在嵌入式设备200的OS中的OS内核204内操作。0S内核204包括严重错误例程212和转储程序214。严重错误例程212被配置为处置嵌入式设备200不能从其安全恢复的致命错误的处理。例如,严重错误例程212可以向嵌入式设备的显示器输出错误消息并且经由转储程序214发起内核存储器的存储器转储。转储程序214可以是Linux内核转储机制,诸如Kdump工具。当被启动时,转储程序214将嵌入式设备200的当前情境存储在嵌入式设备200的存储器中并且向存储器中的特定页写入签名。
嵌入式设备200还包括各种应用程序206,该应用程序包括看门狗计时器216及其他。看门狗计时器216是用于在嵌入式设备200中检测故障并且从故障恢复的电子计时器。具体地,看门狗计时器216被用于当系统挂起的情况下启用嵌入式设备200中的存储器转储功能。在嵌入式设备200的正常操作中,嵌入式设备200定期地重新启动看门狗计时器216以防止看门狗计时器216超时。如果嵌入式设备200由于系统挂起重新启动看门狗计时器216失败,看门狗计时器216延续并且生成超时信号。超时信号被用于发起改正动作,诸如将当前情境存储器转储到嵌入式设备200的存储器中并且重新启动嵌入式设备200。具体地,在图1所述的存储器转储和分析系统的上下文中,看门狗计时器216能够被选择在嵌入式设备102中启动,并且当嵌入式设备102被重新启动时,可以检测到该重新启动是否由看门狗计时器216引起。如果看门狗计时器216是该重新启动的原因,进一步的存储器转储程序会被执行。以此方式使用看门狗计时器216,存储器转储和事后分析在系统挂起的情况下被执行。
主机设备250包括用于执行存储器转储的事后分析的崩溃工具应用252的修改版本。如上文解释,崩溃工具是Linux内核转储映射分析工具,其被用于直接分析存储在主机设备250中的转储的映射文件。原始的崩溃工具应用只提供查看简单数据结构内容并且缺少用于恢复文件系统和文件内容的功能。崩溃工具应用252的修改版本增加了用于恢复文件系统和文件内容的功能。文件系统和文件内容的恢复将参考图7在下面更详细地解释。
图3是图示用于响应于内核严重错误或者系统挂起而执行存储器转储和事后分析的示例方法的流程图300。在302处,在计算机系统中检测内核严重错误。在304处,Linux内核转储机制(例如,Kdump)将计算机系统的当前情境存储在存储器中并且向存储器的特定页面写入签名。如上文参考图1解释,Linux内核或者Linux内核转储机制不需要在运行期间特别地预留空间以载入在崩溃情况下被触发的第二内核。因为计算机系统中的一些存储器被组合预留为视频存储器,这些存储器在存储器转储和分析过程中没有用到。因此,存储器转储的位置和引导程序的运行空间可以被限制于该区域。以此方式使用视频存储器,当Linux内核正常运行时具有最小的影响,因此,不必要预留存储器的一部分以用作内核转储区域。
在306处,重新启动计算机系统。在308处,计算机系统执行引导(即引导加载程序)程序(例如,U-boot或者其修改版本),并且引导程序在启动过程中检测签名。当检测到签名时,启动过程被中断并且根据存储器转储和事后分析的进一步过程被执行。在310处,在计算机系统和主机设备之间的连接被建立后,存储器转储的数据(即存储在存储器中的当前情境)经由USB协议被上传到主机设备。在312处,主机设备执行对存储器转储的数据的分析。该分析包括,例如,恢复文件系统和文件内容。
可替换地,如上文关于图1和2所述,用于执行存储器转储和事后分析的示例方法还可以由系统挂起触发。为了在系统挂起的情况下启用存储器转储,在314处,在计算机系统中启动看门狗计时器。在316处,看门狗计时器检测到系统挂起。当检测到系统挂起时,存储器转储程序被发起。因此,存储器转储机制可以将计算机系统的当前情境存储在存储器中并且向存储器的特定页面写入签名。Linux内核或者Linux内核转储机制不需要在运行期间特别地预留空间以载入在系统挂起情况下被触发的第二内核。如上文所述,用于存储器转储的存储器区域是一般被预留为视频存储器的区域。
在318处,重新启动计算机系统。在320处,在计算机系统的重新启动期间,做出关于看门狗计时器超时是否是重新启动的原因的确定。如果确定看门狗计时器超时是重新启动的原因,则进一步的存储器转储程序被执行。接着,上述步骤308、310和312,随后响应于系统挂起而被执行以完成存储器转储和事后分析。
图4是图示将存储器转储数据从嵌入式设备402转移到主机设备404中使用的示例上传协议的方面的框图400。如框图400所示,嵌入式设备402和主机设备404两者分别包括USB接口,406和408。在图4的示例中,在嵌入式设备402和主机设备404之间的连接被建立后,存储器转储数据经由USB协议被从嵌入式设备402上传到主机设备404。主机设备404可以是个人计算机(PC),其被配置为对上传到主机设备404的存储器转储数据执行分析和文件恢复。
图4的示例上传协议在主机设备404向嵌入式设备402发送USB分组时被发起。USB分组的内容是“上传<起始地址>:<大小>”,如410所示。USB分组的内容的示例是“上传0:0x1000,”,其是对嵌入式设备402的指令,用于从地址0上传0x1000的存储器内容。在发送存储器请求分组之后,主机设备404准备好从USB接口408读取<大小>的USB数据。在接收“上传<起始地址>:<大小>”指令之后,嵌入式设备402根据指令410经由USB接口406上传<大小>的存储器内容412。嵌入式设备402随后等待下一指令。在经由USB接口408接收USB<大小>的数据412之后,主机设备404读取USB数据并且将数据存储为映射文件414。映射文件可以在主机设备404中经由Linux内核转储映射分析工具被分析。
图5是图示用于数据在上传之前允许被压缩的上传协议的示例方法的流程图500。参考图4,主机设备向嵌入式设备发送形式为“上传<起始地址>:<大小>”的指令,其被用于指示嵌入式设备上传从特定存储器地址开始的特定存储器内容。图5的示例方法被用于压缩由<起始地址>:<大小>指定的存储器区间并且此后将经压缩的存储器区间上传到主机设备。压缩可以通过多种压缩库执行,包括例如“zlib”压缩库。
在502处,因为最终压缩大小可能不被准确预测,上传协议采用具有固定大小M的临时存储空间作为中间存储量。使用大小为M的中间存储,中间协议执行(<大小>+M-1)/M压缩过程。在504处,每个压缩过程将从<起始地址>开始大小为M的内存压缩成中间存储以形成大小为N的经压缩的内存。在506处,嵌入式设备通知主机设备关于压缩后的大小N。一种为“ZIP<压缩后大小>”的协议格式被使用,其中<压缩后大小>是由八个(8)字符表示的字类型数据结构。在508处,在接收到“ZIP<压缩后大小>”指令之后,主机设备准备好读取<压缩后大小>的USB分组。在接收到<压缩后大小>的USB分组之后,主机设备等待下一个“ZIP<压缩后大小>”分组。当<压缩后大小>为0时,主机设备确定传输过程完毕,并且所有接收的数据被存储在映射文件中。
图6是计算机系统中的Linux存储器转储的示例使用模式的框图600。在602处,Linux内核被启动。在603处,看门狗计时器在系统挂起的情况下被重置,并且在604处,警示器被寄存(register)。在内核引导期间或者之后寄存看门狗计时器允许看门狗计时器发挥作用,使得如果看门狗计时器没有在特定时间内被重置(即发生系统挂起),则使得系统执行重置操作。如图6所示,当重置操作由于看门狗计时器而执行时,该信息在启动处被U-boot引导加载程序工具检测到,使得存储器转储操作被执行。
在605处,发生系统崩溃,并且在606处,签名在计算机系统的存储器中被更新并且缓存被清除。进一步,在此刻,复用Linux内核转储机制(例如,K-dump)通过将当前情境存储到计算机系统的存储器中以执行存储器转储。在608处,计算机系统被重启。在610处,U-boot引导加载程序工具或者另一类似计算机程序被执行。U-boot引导加载程序工具或者其它类似程序检测写入到存储器的签名并且中断正常启动过程。U-boot引导加载程序工具或者其它类似程序适合用于存储器存储,并且U-boot引导加载程序工具或者其它类似程序的运行空间的位置能够被限制于被组合预留作为视频存储器区域。U-boot引导加载程序工具或者其它类似程序的被限制于其中的存储器区域是Linux内核转储机制存储了当前情境的存储器区域。在612处,包括上传功能的快速启动协议的修改版本被启动。在614处,存储器转储的内容被上传到PC端。上传可以经由USB协议进行,并且PC端口可以被包括作为主机设备的一部分,其中主机设备被配置为接收存储器转储内容并且执行存储器转储内容的分析和文件恢复。
图7是图示用于从存储器恢复文件系统和文件内容的示例过程的流程图700。在Linux中,ramfs/tmpfs文件系统的实现基于页面快速缓存,以至于ramfs/tmpfs没有实际的后端存储设备,并且所有文件实际上被存储在存储器中(即对应的分配页面的页面快速缓存)。只要能够获得期望恢复的文件的inode(索引节点)地址,文件的内容就能够通过对应的基数树被恢复。在tmpfs文件夹中的文件还可以从Linux VFS层次结构访问。该结构类似于树,使得如果节点要被定位,则节点的定位从树的根点开始。
寻找树的根点可以使用能够从当前任务结构、立即访问的数据开始。在702处,图7图示了用于当前任务结构的摘要信息,指示其具有用于具有“struct nsproxy”结构类型的nsproxy(根类)的成员。在704处,nsproxy结构被示出,图示其具有mnt_ns成员,该成员具有“struct mnt_namespace”结构类型。在705处,mnt_namespace结构被示出,图示其具有root成员,该成员具有“struct mount”结构类型。在706处,mount结构被示出,图示其具有mnt_list成员,该成员具有“struct list_head”结构类型。
在708处,通过在被之前的mnt_list指向的列表中循环,能够获得每个表示安装点(mount point)的vfsmount结构。mount结构已经包含vfsmount结构,以至于while循环能够被用于获得mount结构链并且随后推断vfsmount链。在710处,vfsmount结构具有mnt_root成员,该成员具有struct dentry结构类型。dentry结构具有d_subdirs成员,该成员具有“struct list_head”结构类型。在712处,所有子目录的dentry节点被附接到它的上层目录项d_subdirs list_head指针上。通过在d_subdirs中循环,能够获得所有子目录的目录项struct。在714处,目录项结构具有d_inode成员,该成员具有“struct inode”结构类型,以及d_name成员,该成员具有“struct qstr”结构类型,其中能够根据该成员确定找到的文件是否已经被恢复。在716处,inode结构具有i_mapping成员,该成员具有“struct address_space”结构类型。在718处,address_space结构具有page_tree成员,该成员具有“structradix_tree_root”结构类型。在720处,因为一个基数树的根点可以在718处获得,其中一个基数树内容的根点存储数据的一个页面,通过从树的当前节点出发,能够获得所有包含原始文件的页面。以此方式,tmpfs中的文件可以被恢复。
图8是图示用于在计算机系统中执行存储器转储的示例方法的流程图800。在802处,在计算机系统中检测触发事件。计算机系统被配置为检测内核严重错误和系统挂起两者并且如果内核严重错误或者系统挂起被检测到,则执行存储器转储。响应于检测到触发事件而在计算机系统中执行存储器转储。在804处,将计算机系统的当前情境存储在存储器设备的一部分中。存储当前情境而不在检测到触发事件之前预留该部分。在806处,重新启动计算机系统并且执行引导程序,其中引导程序的运行空间被限制于存储器设备的gai部分。在808处,引导程序被用于将当前情境上传到主机设备。
此书面描述使用示例来公开本发明,包括最佳模式,并且也能够使本领域技术人员制作和使用本发明。本发明的专利范围可以包括其它示例。另外,此处所述方法和系统可以通过包括能够被设备处理子系统执行的程序指令的程序代码而被实现在很多不同类型的处理设备上。软件程序指令包括源代码、对象代码、机器代码或者任何其它被存储的数据,其可操作以使得处理系统执行此处所述方法和操作。然而,其它实施方式也可以被使用,诸如被配置为执行此处所述方法和系统的固件或者甚至适当设计的硬件。
系统数据和方法的数据(例如,关联、映射、数据输入、数据输出、中间数据结果、最终数据结果等)可以在一个或者多个不同类型的计算机执行数据存储中被存储和实现,诸如不同类型的存储器设备和编程结构(例如,RAM、ROM、闪速存储器、平面文件、数据库、编程数据结构、编程变量、IF-THEN(或者类似类型)声明结构等)。需要注意,数据类型描述用于在数据库、程序、存储器或者其它计算机可读媒体中组织和存储数据以供计算机程序使用的格式。
此处所述的计算机组件,软件模块,功能,数据存储以及数据结构可以直接或者间接彼此联系以允许其操作所需的数据流。还需注意,模块或者处理器包括但不限于执行软件操作的代码单元,并且包括能够作为例如,子例程代码单元,或者软件函数代码单元,或者对象(例如在面向对象范式中),或者小程序,或者用计算机脚本语言,或者另一种类型计算机代码执行的代码单元。软件组件和/或功能可以根据所处情况,位于单个计算机或者跨多个计算机分布。
应该明白此处所述以及下面权利要求中通篇所使用的,“一个”“一种”以及“该”的意义包括复数引用,除非上下文另外明确指出。同时,此处所述中以及下面权利要求中通篇所使用的,“在……中”的意义包括“在……中”和“在……上”,除非上下文另外明确指出。另外,此处所述中以及下面权利要求中通篇所使用的,“每个”的意义不要求“每个并且每一个”,除非上下文另外明确指出。最后,此处所述中以及下面权利要求中通篇所使用的,“和”和“或”的意义包括连接意义和分隔意义两者并且可以互换使用,除非上下文另外明确指出;短语“排他地”可以用于表示只适用于分隔意义的情况。

Claims (20)

1.一种用于在计算机系统中执行存储器转储的方法,所述方法包括:
在所述计算机系统中检测触发事件,所述计算机系统被配置为检测内核严重错误和系统挂起两者并且如果所述内核严重错误和所述系统挂起两者之一被检测到则执行所述存储器转储;以及
响应于检测到所述触发事件而在所述计算机系统中执行所述存储器转储,所述存储器转储的所述执行包括:
将所述计算机系统的当前情境存储在存储器设备的一部分中,所述当前情境被存储而不在检测到所述触发事件之前预留所述部分,
在所述存储器设备的特定位置处写入签名,
重新启动所述计算机系统并且执行引导程序,所述引导程序的运行空间被限制于所述存储器设备的所述部分,所述引导程序的所述执行包括检测所述存储器设备的所述特定位置处的所述签名,以及
响应于检测到所述签名,使用所述引导程序将所述当前情境上传到主机设备。
2.根据权利要求1所述的方法,进一步包括:
将所述计算机系统的所述当前情境存储在所述存储器设备的所述部分中,其中所述部分是视频存储器,所述视频存储器被配置为在检测到所述触发事件之前存储所述当前情境之外的数据。
3.根据权利要求1所述的方法,进一步包括:
使用所述引导程序将所述当前情境上传到所述主机设备,其中所述当前情境经由通用串行总线(USB)协议被上传。
4.根据权利要求3所述的方法,其中使用所述引导程序上传所述当前情境包括:
在所述计算机系统处接收USB分组,其中所述USB分组包括指示要被上传到所述主机设备的数据的起始地址和大小的指令;
基于所述指令压缩所述存储器设备的所述部分的存储器区间;以及
将压缩的所述存储器区间经由所述USB协议从所述计算机系统上传到所述主机设备。
5.根据权利要求1所述的方法,进一步包括:
在所述计算机系统中执行所述存储器转储,其中所述执行使用单个操作系统内核被进行。
6.根据权利要求1所述的方法,进一步包括:
利用看门狗计时器检测所述系统挂起,其中所述检测使得所述计算机系统重新启动并且使得所述存储器转储被执行。
7.根据权利要求1所述的方法,进一步包括:
在所述主机设备处将所述当前情境存储在映射文件中;以及
在所述主机设备处经由内核转储映射分析工具来分析所述映射文件。
8.根据权利要求7所述的方法,进一步包括:
在所述主机设备处经由所述内核转储映射分析工具来分析所述映射文件,其中所述分析被配置为恢复所述当前情境的文件系统和文件内容。
9.根据权利要求1所述的方法,其中所述计算机系统是嵌入式设备。
10.根据权利要求9所述的方法,其中所述嵌入式设备是智能电话。
11.一种用于在计算机系统中执行存储器转储的计算机实现的系统,所述计算机实现的系统包括:
处理器;以及
计算机可读存储器,所述计算机可读存储器被编码有用于命令所述处理器执行如下操作的指令:
在所述计算机系统中检测触发事件,所述计算机系统被配置为检测内核严重错误和系统挂起两者并且如果所述内核严重错误和所述系统挂起两者之一被检测到时则执行所述存储器转储;以及
响应于检测到所述触发事件而在所述计算机系统中执行所述存储器转储,所述存储器转储的所述执行包括:
将所述计算机系统的当前情境存储在存储器设备的一部分中,所述当前情境被存储而不在检测到所述触发事件之前预留所述部分,
在所述存储器设备的特定位置处写入签名,
重新启动所述计算机系统并且执行引导程序,所述引导程序的运行空间被限制于所述存储器设备的所述部分,所述引导程序的所述执行包括检测所述存储器设备的所述特定位置处的所述签名,以及
响应于检测到所述签名,使用所述引导程序将所述当前情境上传到主机设备。
12.根据权利要求11所述的系统,其中所述部分是视频存储器,所述视频存储器被配置为在检测到所述触发事件之前存储所述当前情境之外的数据。
13.根据权利要求11所述的系统,其中所述当前情境经由通用串行总线(USB)协议被上传。
14.根据权利要求13所述的系统,其中使用所述引导程序上传所述当前情境包括:
在所述计算机系统处接收USB分组,其中所述USB分组包括指示要被上传到所述主机设备的数据的起始地址和大小的指令;
基于所述指令压缩所述存储器设备的所述部分的存储器区间;以及
将压缩的所述存储器区间经由所述USB协议从所述计算机系统上传到所述主机设备。
15.根据权利要求11所述的系统,其中所述执行使用单个操作系统内核被进行。
16.根据权利要求11所述的系统,其中所述操作进一步包括:
利用看门狗计时器检测所述系统挂起,其中所述检测使得所述计算机系统重新启动并且使得所述存储器转储被执行。
17.根据权利要求11所述的系统,其中所述操作进一步包括:
在所述主机设备处将所述当前情境存储在映射文件中;以及
在所述主机设备处经由内核转储映射分析工具来分析所述映射文件。
18.根据权利要求17所述的系统,其中所述分析被配置为恢复所述当前情境的文件系统和文件内容。
19.根据权利要求11所述的系统,其中所述计算机系统是嵌入式设备。
20.根据权利要求19所述的系统,其中所述嵌入式设备是智能电话。
CN201380021626.4A 2012-04-27 2013-04-17 在计算机系统中的存储器转储和分析 Expired - Fee Related CN104254840B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201261639456P 2012-04-27 2012-04-27
US61/639,456 2012-04-27
PCT/IB2013/001078 WO2013160763A2 (en) 2012-04-27 2013-04-17 Memory dump and analysis in a computer system

Publications (2)

Publication Number Publication Date
CN104254840A CN104254840A (zh) 2014-12-31
CN104254840B true CN104254840B (zh) 2017-05-31

Family

ID=48746582

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380021626.4A Expired - Fee Related CN104254840B (zh) 2012-04-27 2013-04-17 在计算机系统中的存储器转储和分析

Country Status (4)

Country Link
US (1) US9218234B2 (zh)
EP (1) EP2842035A2 (zh)
CN (1) CN104254840B (zh)
WO (1) WO2013160763A2 (zh)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9442825B2 (en) * 2013-04-15 2016-09-13 Tencent Technology (Shenzhen) Company Limited Method and device for signing program crash
US9329931B2 (en) * 2013-07-24 2016-05-03 Seagate Technology Llc Solid state drive emergency pre-boot application providing expanded data recovery function
US9430314B2 (en) * 2013-10-16 2016-08-30 Cypress Semiconductor Corporation Memory program upon system failure
US9483341B2 (en) * 2014-01-02 2016-11-01 Red Hat, Inc. Applying security label on kernel core crash file
US9652328B2 (en) * 2014-05-12 2017-05-16 International Business Machines Corporation Restoring an application from a system dump file
US20160070665A1 (en) * 2014-09-08 2016-03-10 Htc Corporation Portable electronic device and user data access method therefor
US9740551B2 (en) 2014-12-02 2017-08-22 International Business Machines Corporation Enhanced restart of a core dumping application
CN104461787A (zh) * 2014-12-22 2015-03-25 上海斐讯数据通信技术有限公司 一种手机分区表内容的转储系统
US9959127B2 (en) * 2015-06-01 2018-05-01 Dell Products, L.P. Systems and methods for exporting diagnostic data and securing privileges in a service operating system
US9727242B2 (en) 2015-06-10 2017-08-08 International Business Machines Corporation Selective memory dump using usertokens
US10013299B2 (en) 2015-09-16 2018-07-03 Microsoft Technology Licensing, Llc Handling crashes of a device's peripheral subsystems
CN105242981A (zh) * 2015-10-30 2016-01-13 浪潮电子信息产业股份有限公司 一种Kdump的配置方法及计算机设备
CN105528215B (zh) * 2015-12-15 2018-06-19 上海斐讯数据通信技术有限公司 一种u-boot启动过程中Linux基址动态更新方法及系统
US10216562B2 (en) * 2016-02-23 2019-02-26 International Business Machines Corporation Generating diagnostic data
CN108073507B (zh) * 2016-11-17 2021-04-13 联芯科技有限公司 一种内核崩溃现场数据的处理方法及装置
US10169198B2 (en) 2017-04-24 2019-01-01 International Business Machines Corporation Aggregating data for debugging software
KR20190004094A (ko) * 2017-07-03 2019-01-11 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
CN110309008B (zh) * 2018-03-20 2023-06-20 浙江宇视科技有限公司 系统异常时内存数据的保存方法及系统
US10846211B2 (en) * 2018-03-21 2020-11-24 Microsoft Technology Licensing, Llc Testing kernel mode computer code by executing the computer code in user mode
CN109062627A (zh) * 2018-07-12 2018-12-21 郑州云海信息技术有限公司 一种Linux服务器系统kdump服务的配置方法
KR20210031317A (ko) * 2019-09-11 2021-03-19 주식회사 엘지화학 워치독 시스템, 워치독 방법, 및 워치독 시스템을 포함하는 배터리 관리 시스템
US11544148B2 (en) * 2021-04-02 2023-01-03 Microsoft Technology Licensing, Llc Preserving error context during a reboot of a computing device
CN114595038A (zh) * 2022-04-28 2022-06-07 阿里云计算有限公司 数据处理方法、计算设备及计算机存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1140272A (zh) * 1994-09-07 1997-01-15 国际商业机器公司 用于高级电源管理(apm)的自动备份系统
US6697973B1 (en) * 1999-12-08 2004-02-24 International Business Machines Corporation High availability processor based systems
US6728907B1 (en) * 2000-04-14 2004-04-27 Microsoft Corporation System and method for self-diagnosing system crashes

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6543010B1 (en) * 1999-02-24 2003-04-01 Hewlett-Packard Development Company, L.P. Method and apparatus for accelerating a memory dump
JP4677214B2 (ja) * 2004-09-06 2011-04-27 富士通株式会社 パニックダンプ採取のためのプログラム、方法、及び機構
US7412352B1 (en) * 2004-11-12 2008-08-12 Sun Microsystems, Inc. Computer diagnostic system and method
JP4528144B2 (ja) * 2005-01-26 2010-08-18 富士通株式会社 メモリダンププログラムのブート方法、機構及びプログラム
US7747847B2 (en) * 2005-03-25 2010-06-29 Broadcom Corporation Method and system for iSCSI boot in which an iSCSI client loads boot code from a host bus adapter and/or network interface card
US8375386B2 (en) 2005-06-29 2013-02-12 Microsoft Corporation Failure management for a virtualized computing environment
US7788537B1 (en) * 2006-01-31 2010-08-31 Emc Corporation Techniques for collecting critical information from a memory dump
US7594143B2 (en) * 2006-10-31 2009-09-22 Hewlett-Packard Development Company, L.P. Analysis engine for analyzing a computer system condition
US7823006B2 (en) * 2007-05-29 2010-10-26 Microsoft Corporation Analyzing problem signatures
US7890814B2 (en) * 2007-06-27 2011-02-15 Microsoft Corporation Software error report analysis
JP4609521B2 (ja) * 2008-04-21 2011-01-12 ソニー株式会社 情報処理装置、および情報処理方法、並びにコンピュータ・プログラム
EP2333668A4 (en) 2008-08-12 2012-07-04 Fujitsu Ltd INFORMATION PROCESSOR AND BLOCKING STUDY INVESTIGATION INFROMATION PROCESSING
US8166349B2 (en) * 2008-12-18 2012-04-24 Vmware, Inc. Communicating with USB devices after a computer system crash
US8332765B2 (en) * 2009-03-06 2012-12-11 Microsoft Corporation Problem reporting system based on user interface interactions
US8667328B2 (en) * 2009-04-28 2014-03-04 Ca, Inc. System and method for protecting windows system state
CN102483713A (zh) 2009-08-04 2012-05-30 富士通株式会社 复位方法以及监视装置
US8132057B2 (en) * 2009-08-07 2012-03-06 International Business Machines Corporation Automated transition to a recovery kernel via firmware-assisted-dump flows providing automated operating system diagnosis and repair
US8862930B2 (en) 2010-11-24 2014-10-14 Red Hat, Inc. Crash recovery memory reservation based on device drivers for an operational kernel
US8510523B2 (en) * 2011-09-12 2013-08-13 Microsoft Corporation Memory dump with expanded data and user privacy protection
US8645763B2 (en) * 2011-09-12 2014-02-04 Microsoft Corporation Memory dump with expanded data and user privacy protection
US8959416B1 (en) * 2011-12-16 2015-02-17 Western Digital Technologies, Inc. Memory defect management using signature identification
JP6083136B2 (ja) * 2012-06-22 2017-02-22 富士通株式会社 メモリダンプ機能を有する情報処理装置、メモリダンプ方法、およびメモリダンププログラム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1140272A (zh) * 1994-09-07 1997-01-15 国际商业机器公司 用于高级电源管理(apm)的自动备份系统
US6697973B1 (en) * 1999-12-08 2004-02-24 International Business Machines Corporation High availability processor based systems
US6728907B1 (en) * 2000-04-14 2004-04-27 Microsoft Corporation System and method for self-diagnosing system crashes

Also Published As

Publication number Publication date
CN104254840A (zh) 2014-12-31
US20130290789A1 (en) 2013-10-31
US9218234B2 (en) 2015-12-22
WO2013160763A3 (en) 2014-01-23
WO2013160763A2 (en) 2013-10-31
EP2842035A2 (en) 2015-03-04

Similar Documents

Publication Publication Date Title
CN104254840B (zh) 在计算机系统中的存储器转储和分析
Scargall Programming persistent memory: A comprehensive guide for developers
US9778844B2 (en) Installation of operating system on host computer using virtual storage of BMC
US9158628B2 (en) Bios failover update with service processor having direct serial peripheral interface (SPI) access
US9665469B2 (en) System and method of runtime downloading of debug code and diagnostics tools in an already deployed baseboard management controller (BMC) devices
Verma et al. {Failure-Atomic} Updates of Application Data in a Linux File System
US9448889B2 (en) BIOS failover update with service processor
US9448808B2 (en) BIOS update with service processor without serial peripheral interface (SPI) access
TWI784526B (zh) 預防於開機自我檢測常式中因錯誤的bios設定所造成停機的方法、系統及bios晶片
US20140129875A1 (en) Method for reading kernel log upon kernel panic in operating system
US9298371B1 (en) System and method of reducing write cycles and increasing longevity of non-volatile memory in baseboard management controller (BMC)
CN111258666B (zh) 计算机文件的读取方法、装置、计算机系统及存储介质
US10380069B2 (en) Generalized write operations verification method
KR20170040734A (ko) 업데이트 제어 방법을 갖는 전자 시스템 및 그것의 동작 방법
JP6237230B2 (ja) メモリ管理プログラム、メモリ管理方法、及びメモリ管理装置
US20220197746A1 (en) Combination bios with a/b recovery
CN104021089A (zh) 快闪存储器控制芯片与存储装置以及快闪存储器控制方法
US9690633B2 (en) Synchronization method
JP2007133544A (ja) 障害情報解析方法及びその実施装置
US11822419B2 (en) Error information processing method and device, and storage medium
US9250919B1 (en) Multiple firmware image support in a single memory device
Sun et al. Spiffy: Enabling {File-System} Aware Storage Applications
US11354109B1 (en) Firmware updates using updated firmware files in a dedicated firmware volume
JP2005332030A (ja) コントローラ
CN111159123B (zh) 一种嵌入式可靠参数储存文件系统及方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20170531

Termination date: 20180417

CF01 Termination of patent right due to non-payment of annual fee