一种基于Hypervisor的黑匣子实现方法及系统与流程

专利2022-06-30  64


本发明属于计算机操作系统技术领域,具体涉及一种基于hypervisor的黑匣子实现方法及系统。



背景技术:

hypervisor叫做虚拟机监视器(virtualmachinemonitor),是一种运行其他操作系统的操作系统。hypervisor运行在物理硬件和操作系统之间的中间层操作系统,可允许多个操作系统和应用共享一套基础物理硬件,运行在hypervisor之上的操作系统称之为客户机操作系统(guestos)。

由于hypervisor上可以运行多种guestos,而guestos可能会采用像linux内核这种多任务,可抢占的操作系统。对于linux内核代码,其在4.20版本的代码量已经达到2500万行,代码庞大无法精简,,一旦出现异常崩溃情况,很难进行调试和跟踪。

hypervisor之前一直被用于服务器领域,但是随着嵌入式系统的发展,其被认为是嵌入式系统的下一个前沿领域,以解决日益增加的复杂应用场景对嵌入式系统有限资源利用的决策难。hypervisor提供了在同一多核处理器上承载异构操作系统的灵活性,而它又实现了良好的可靠性和故障控制机制,以保证关键任务、硬实时应用程序和一般用途、不受信任的用户应用程序之间的安全分离。比如当前汽车的智能座舱,利用hypervisor技术同时在一块单板上实现全液晶仪表显示和中控娱乐系统显示,其中全液晶仪表运行在选用linux或qnx的guestos上,中控娱乐系统运行在选用android的guestos上。

目前通用的guestos都会在操作系统本身提供日志系统,比如android的logcat或者linux系统journal日志,工程师可以通过这些日志对guestos系统进行故障分析。另外guestos也可以通过hypervisor配置串口,将本身的异常调试信息实时的打印输出到串口,这样可以通过pc接入串口实时查看guestos状态。

基于hypervisor的多系统环境,尤其是对于在嵌入式系统下运行hypervisor,虽然可以通过串口查看到异常调试信息,但由于在实际运行环境中不会有接入串口,比如汽车的智能座舱系统,在系统上车以后,串口输出是被去掉的,因此无法通过串口捕获到guestos异常时刻的现场信息。同时guestos提供的日志系统依赖于guestos自身操作系统提供的存储功能,由于guestos内核异常崩溃,这一刻guestos不再具有存储的能力,guestos日志系统将无法使用,因此也无法记录guestos崩溃时刻的现场,无法准确了解产生异常的具体原因。比如汽车行驶过程中,用于液晶仪表显示的guestos异常导致黑屏重启,通过现有的手段无法知道获取异常现场,重启的原因无法清晰获取,这样给后续工程师故障分析带来了很高的难度。由此可见,运行在hypervisor之上的guestos,如果不具备黑匣子功能,不能有效记录各个客户机操作系统的异常崩溃现场信息,不利于分析排查系统异常产生的原因。

因此,现阶段急需要提供一种基于hypervisor的黑匣子实现方法及系统,来解决上述问题。



技术实现要素:

本发明目的在于提供一种基于hypervisor的黑匣子实现方法及系统,运行在hypervisor之上的guestos,在产生异常复位后,实现黑匣子一样的记录和监控功能,对于排查虚拟化系统中各个guestos异常产生的原因非常实用和方便,覆盖性更广、适用性更强。

为实现上述目的,本发明所采用的技术方案是:

一种基于hypervisor的黑匣子实现方法,包括以下步骤:

s1:hypervisor根据用户配置创建若干个guestos,然后为每个guestos预分配一块用于保存黑匣子数据的内存区域,并记录所述内存区域的地址信息;

s2:hypervisor在永久存储设备上预分配一块用于保存黑匣子的存储地址空间,整个黑匣子的所述存储地址空间按照guestos的数量进行分区,即一个guestos对应一个所述存储地址空间,每个分区中按照保存的不同信息划分为非滚动区、滚动区和内存转储区;其中,非滚动区记录guestos一部分数据且不可覆盖,写满以后不再记录;滚动区通过循环记录的方式,当记录区数据写满以后滚动到头部继续记录;内存转储区用于保存guestos内存转储的数据;

s3:hypervisor启动guestos,进入guestos运行并执行相应的业务;guestos发生崩溃重启,hypervisor根据标志位判断当前guestos是否为异常重启,如果是异常重启,将guestos异常时所用的现场信息写入到步骤s1中的所述内存区域;

s4:hypervisor提供命令查询所述现场信息,并将所述内存区域中保存的所述现场信息输出到串口或者通过网络传输到远端服务器上;

s5:hypervisor根据配置判断步骤s3中保存在内存区域的所述现场信息是否需要写入到永久存储设备上,若判断结果为需要写入到永久存储设备,则将所述现场信息固化写入到黑匣子存储地址空间的非滚动区。

优选的,所述永久存储设备包括emmc、sd卡、固态硬盘中的一种或多种。

优选的,所述现场信息包括通用寄存器、系统寄存器、堆栈中的一种或多种。

优选的,步骤s2中guestos将自身数据实时写入所述存储地址空间的滚动区的步骤如下:

s201:guestos搜集需要记录的数据,调用hypervisor提供的黑匣子数据写入接口,将数据传递给hypervisor的黑匣子管理系统;

s202:hypervisor黑匣子管理系统接收到guestos的数据,通过guestos信息找到永久存储设备上guestos对应的黑匣子存储地址空间,将数据写入到永久存储设备的黑匣子存储地址空间的滚动区;

s203:数据写入完成以后,hypervisor返回到guestos继续运行。

优选的,还包括guestos内存转储步骤,其具体内容如下:

通过配置或者hypervisor提供的命令,将guestos内存进行转储,采用lzo压缩算法或者lzma压缩算法对guestos内存转储的文件进行压缩,压缩完成以后将数据写入到黑匣子内存转储区。

一种基于hypervisor的黑匣子实现系统,包括:

内存区域分配装置:用于在hypervisor根据用户配置创建若干个guestos时,为每个guestos预分配一块用于保存黑匣子数据的内存区域,并记录所述内存区域的地址信息;

存储地址空间分配装置:用于hypervisor在永久存储设备上预分配一块保存黑匣子的存储地址空间;

存储地址空间分区装置:用于对整个黑匣子的所述存储地址空间按照guestos的数量进行分区,即一个guestos对应一个所述存储地址空间,每个分区中按照保存的不同信息划分为非滚动区、滚动区和内存转储区;其中,非滚动区记录guestos一部分数据且不可覆盖,写满以后不再记录;滚动区通过循环记录的方式,当记录区数据写满以后滚动到头部继续记录;内存转储区用于保存guestos内存转储的数据;

异常判断装置:当guestos发生崩溃重启时,根据标志位判断当前guestos是否为异常重启;

异常信息存储装置:当guestos是异常重启时,将guestos异常时所用的现场信息写入到所述内存区域中;

异常信息查询装置:通过hypervisor提供命令查询所述现场信息,并将所述内存区域中保存的所述现场信息输出到串口或者通过网络传输到远端服务器上;

现场信息永久存储装置:通过hypervisor根据配置来判断保存在内存区域的所述现场信息是否需要写入到永久存储设备上,若判断结果为需要写入到永久存储设备,则将所述现场信息固化写入到黑匣子存储地址空间的非滚动区。

优选的,还包括guestos内存转储装置:用于通过配置或者hypervisor提供的命令,将guestos内存进行转储,采用lzo压缩算法或者lzma压缩算法对guestos内存转储的文件进行压缩,压缩完成以后将数据写入到黑匣子内存转储区。

本发明的有益技术效果是:对于运行在hypervisor之上的guestos,在产生异常复位后,实现黑匣子一样的记录和监控功能,对于排查虚拟化系统中各个guestos异常产生的原因非常实用和方便,覆盖性更广、适用性更强。

附图说明

图1显示为本发明的实施例1的步骤流程示意图。

图2显示为本发明的实施例1的存储地址空间分区步骤流程示意图。

图3显示为本发明的实施例1的黑匣子数据写入滚动区步骤流程示意图。

图4显示为本发明的实施例2的结构示意图。

具体实施方式

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

实施例1:

如图1所示,步骤1,hypervisor根据用户配置创建客户机操作系统(guestos),然后为每个guestos预分配一块用于保存黑匣子数据的内存区域,并记录所述内存区域的地址信息;

步骤2,hypervisor在永久存储设备(比如emmc、sd卡、固态硬盘等)预分配一块用于保存黑匣子的存储地址空间,并按照图2的方式对存储地址空间进行布局,整个黑匣子存储地址区域按照guestos的数量进行分区,每个分区中按照保存的信息不同划分为非滚动区、滚动区和内存转储区。非滚动区记录guestos最关键的数据,不可覆盖,写满以后不再记录;滚动区通过循环记录的方式,当记录区数据写满以后滚动到头部继续记录;内存转储区用于保存guestos内存转储的数据;

步骤3,hypervisor启动guestos,进入guestos运行并执行相应的业务。guestos发生崩溃重启,比如guestos内核访问非法指针导致系统产生了异常重启,这个时候系统从guestos退出到hypervisor,hypervisor根据标志位判断当前guestos是否为异常重启,如果是异常重启,将guestos异常时所用的通用寄存器、系统寄存器、堆栈等现场信息写入到步骤1中所述内存地址空间;

步骤4,hypervisor提供命令查询故障信息,将所述内存地址空间中保存的异常信息,输出到串口或者通过网络传输到远端服务器上,用于工程师进行故障跟踪分析;

步骤5,hypervisor根据配置判断步骤3中保存在内存的异常现场信息是否需要写入到永久存储设备(比如emmc、sd卡、固态硬盘等)上,用于将异常现场信息固化到本地存储设备上,防止断电以后无法查询故障信息。对于不容易保护现场环境的场景或许现场环境不具备调试接入的场景,比如不能接入串口查看打印信息,固化异常现场信息到本地有助于问题的分析跟踪,该异常现场信息由于很关键,需要固化写入到存储设备黑匣子的非滚动区;

步骤6,hypervisor提供对guestos内存转储功能,通过配置或者hypervisor提供的命令,将guestos内存进行转储,在不进行压缩的情况下,guestos内存转储的文件大小和guestos所使用的内存总量相等,考虑到guestos内存转储的文件比较大,可采用lzo压缩算法或者lzma压缩算法对guestos内存转储的文件进行压缩,压缩完成以后将数据写入到黑匣子内存转储区,这样开发工程师就可以从黑匣子内存转储区取出对应的转储数据利用相应的工具(如gdb,crash)做异常分析;

另外本发明还在hypervisor中提供了一套黑匣子数据写入接口,用于guestos通过接口将自身关键的数据实时的写入黑匣子的滚动区,如图3所示。

步骤1,guestos搜集需要记录的关键数据,调用hypervisor提供的黑匣子数据写入接口,将数据传递给hypervisor的黑匣子管理系统;

步骤2,hypervisor黑匣子管理系统接收到guestos的数据,通过guestos信息找到永久存储设备上guestos对应的黑匣子存储区域,将数据写入到存储设备上黑匣子的滚动区。

步骤3,数据写入完成以后,hypervisor返回到guestos继续运行。

实施例2:

如图4所示,一种基于hypervisor的黑匣子实现系统,包括:

内存区域分配装置:用于在hypervisor根据用户配置创建若干个guestos时,为每个guestos预分配一块用于保存黑匣子数据的内存区域,并记录所述内存区域的地址信息;

存储地址空间分配装置:用于hypervisor在永久存储设备上预分配一块保存黑匣子的存储地址空间;

存储地址空间分区装置:用于对整个黑匣子的所述存储地址空间按照guestos的数量进行分区,即一个guestos对应一个所述存储地址空间,每个分区中按照保存的不同信息划分为非滚动区、滚动区和内存转储区;其中,非滚动区记录guestos一部分数据且不可覆盖,写满以后不再记录;滚动区通过循环记录的方式,当记录区数据写满以后滚动到头部继续记录;内存转储区用于保存guestos内存转储的数据;

异常判断装置:当guestos发生崩溃重启时,根据标志位判断当前guestos是否为异常重启;

异常信息存储装置:当guestos是异常重启时,将guestos异常时所用的现场信息写入到所述内存区域中;

异常信息查询装置:通过hypervisor提供命令查询所述现场信息,并将所述内存区域中保存的所述现场信息输出到串口或者通过网络传输到远端服务器上;

现场信息永久存储装置:通过hypervisor根据配置来判断保存在内存区域的所述现场信息是否需要写入到永久存储设备上,若判断结果为需要写入到永久存储设备,则将所述现场信息固化写入到黑匣子存储地址空间的非滚动区。

优选的,还包括guestos内存转储装置:用于通过配置或者hypervisor提供的命令,将guestos内存进行转储,采用lzo压缩算法或者lzma压缩算法对guestos内存转储的文件进行压缩,压缩完成以后将数据写入到黑匣子内存转储区。


技术特征:

1.一种基于hypervisor的黑匣子实现方法,其特征在于,包括以下步骤:

s1:hypervisor根据用户配置创建若干个guestos,然后为每个guestos预分配一块用于保存黑匣子数据的内存区域,并记录所述内存区域的地址信息;

s2:hypervisor在永久存储设备上预分配一块用于保存黑匣子的存储地址空间,整个黑匣子的所述存储地址空间按照guestos的数量进行分区,即一个guestos对应一个所述存储地址空间,每个分区中按照保存的不同信息划分为非滚动区、滚动区和内存转储区;其中,非滚动区记录guestos一部分数据且不可覆盖,写满以后不再记录;滚动区通过循环记录的方式,当记录区数据写满以后滚动到头部继续记录;内存转储区用于保存guestos内存转储的数据;

s3:hypervisor启动guestos,进入guestos运行并执行相应的业务;guestos发生崩溃重启,hypervisor根据标志位判断当前guestos是否为异常重启,如果是异常重启,将guestos异常时所用的现场信息写入到步骤s1中的所述内存区域;

s4:hypervisor提供命令查询所述现场信息,并将所述内存区域中保存的所述现场信息输出到串口或者通过网络传输到远端服务器上;

s5:hypervisor根据配置判断步骤s3中保存在内存区域的所述现场信息是否需要写入到永久存储设备上,若判断结果为需要写入到永久存储设备,则将所述现场信息固化写入到黑匣子存储地址空间的非滚动区。

2.根据权利要求1所述的一种基于hypervisor的黑匣子实现方法,其特征在于,所述永久存储设备包括emmc、sd卡、固态硬盘中的一种或多种。

3.根据权利要求1所述的一种基于hypervisor的黑匣子实现方法,其特征在于,所述现场信息包括通用寄存器、系统寄存器、堆栈中的一种或多种。

4.根据权利要求1所述的一种基于hypervisor的黑匣子实现方法,其特征在于,步骤s2中guestos将自身数据实时写入所述存储地址空间的滚动区的步骤如下:

s201:guestos搜集需要记录的数据,调用hypervisor提供的黑匣子数据写入接口,将数据传递给hypervisor的黑匣子管理系统;

s202:hypervisor黑匣子管理系统接收到guestos的数据,通过guestos信息找到永久存储设备上guestos对应的黑匣子存储地址空间,将数据写入到永久存储设备的黑匣子存储地址空间的滚动区;

s203:数据写入完成以后,hypervisor返回到guestos继续运行。

5.根据权利要求1-4任一项所述的一种基于hypervisor的黑匣子实现方法,其特征在于,还包括guestos内存转储步骤,其具体内容如下:

通过配置或者hypervisor提供的命令,将guestos内存进行转储,采用lzo压缩算法或者lzma压缩算法对guestos内存转储的文件进行压缩,压缩完成以后将数据写入到黑匣子内存转储区。

6.一种基于hypervisor的黑匣子实现系统,其特征在于,包括:

内存区域分配装置:用于在hypervisor根据用户配置创建若干个guestos时,为每个guestos预分配一块用于保存黑匣子数据的内存区域,并记录所述内存区域的地址信息;

存储地址空间分配装置:用于hypervisor在永久存储设备上预分配一块保存黑匣子的存储地址空间;

存储地址空间分区装置:用于对整个黑匣子的所述存储地址空间按照guestos的数量进行分区,即一个guestos对应一个所述存储地址空间,每个分区中按照保存的不同信息划分为非滚动区、滚动区和内存转储区;其中,非滚动区记录guestos一部分数据且不可覆盖,写满以后不再记录;滚动区通过循环记录的方式,当记录区数据写满以后滚动到头部继续记录;内存转储区用于保存guestos内存转储的数据;

异常判断装置:当guestos发生崩溃重启时,根据标志位判断当前guestos是否为异常重启;

异常信息存储装置:当guestos是异常重启时,将guestos异常时所用的现场信息写入到所述内存区域中;

异常信息查询装置:通过hypervisor提供命令查询所述现场信息,并将所述内存区域中保存的所述现场信息输出到串口或者通过网络传输到远端服务器上;

现场信息永久存储装置:通过hypervisor根据配置来判断保存在内存区域的所述现场信息是否需要写入到永久存储设备上,若判断结果为需要写入到永久存储设备,则将所述现场信息固化写入到黑匣子存储地址空间的非滚动区。

7.根据权利要求6所述的一种基于hypervisor的黑匣子实现系统,其特征在于,还包括guestos内存转储装置:用于通过配置或者hypervisor提供的命令,将guestos内存进行转储,采用lzo压缩算法或者lzma压缩算法对guestos内存转储的文件进行压缩,压缩完成以后将数据写入到黑匣子内存转储区。

技术总结
本发明公开了一种基于Hypervisor的黑匣子实现方法,包括以下步骤:S1:Hypervisor根据用户配置创建若干个Guest OS,然后为每个Guest OS预分配一块用于保存黑匣子数据的内存区域,并记录所述内存区域的地址信息;S2:Hypervisor在永久存储设备上预分配一块用于保存黑匣子的存储地址空间等。本发明中,对于运行在Hypervisor之上的Guest OS,在产生异常复位后,实现黑匣子一样的记录和监控功能,对于排查虚拟化系统中各个Guest OS异常产生的原因非常实用和方便,覆盖性更广、适用性更强。

技术研发人员:不公告发明人
受保护的技术使用者:中瓴智行(成都)科技有限公司
技术研发日:2020.01.09
技术公布日:2020.06.05

转载请注明原文地址: https://bbs.8miu.com/read-59258.html

最新回复(0)