虚拟机蓝屏检测方法及设备与流程

文档序号:13207396阅读:882来源:国知局
虚拟机蓝屏检测方法及设备与流程

本发明涉及计算机领域,尤其涉及一种虚拟机蓝屏检测方法及设备。



背景技术:

蓝屏是windows操作系统在无法从一个系统错误中恢复过来时,为保护电脑数据文件不被破坏而强制显示的屏幕现象。在虚拟机化场景下,虚拟机的设备大多由软件模拟,设备的驱动都是基于模拟的设备,更容易触发蓝屏机制。

在虚拟机大规模部署的场景下,虚拟机的蓝屏不仅造成业务中断,而且运维巡检也是一件耗时耗力的事情。目前云计算中,监控虚拟机的状态的方式很多,大体可以分为两种,一种是在虚拟机内部检测,通过数据通道发送给监控软件,第二种是通过宿主机,利用hypervisor(虚拟化管理程序)的工具,获取虚拟机的运行状态。这两种方法都是主动的方式去查询,会对虚拟机或宿主服务的性能造成一定的影响。这个两类只能检测到异常,不能准确定位虚拟机是否发生了蓝屏,后续确认该异常是否是蓝屏需要人工进行检测查看,费时费力,导致故障不能及时排除蓝屏故障,造成业务中断时间长。



技术实现要素:

本发明的一个目的是提供一种虚拟机蓝屏检测方法及设备,能够解决现有的方案只能检测到异常,不能准确定位虚拟机是否发生了蓝屏的问题。

根据本发明的一个方面,提供了一种虚拟机蓝屏检测方法,该方法包括:

当监测到发生蓝屏时,对公共空间地址中对应的标志位进行改写;

当监测到所述标志位有变化时,发出检测到蓝屏的通知。

进一步的,上述方法中,当监测到发生蓝屏时,对公共空间地址中对应的标志位进行改写,包括:

当微软虚拟机监测到发生蓝屏时,对公共空间地址中对应的标志位进行改写;

当监测到所述标志位有变化时,发出检测到蓝屏的通知,包括:

当特权虚拟机监测到所述标志位有变化时,发出检测到蓝屏的通知。

进一步的,上述方法中,所述公共空间地址为微软虚拟机的总线设备的配置空间地址。

进一步的,上述方法中,当微软虚拟机监测到发生蓝屏时,对公共空间地址中对应的标志位进行改写,包括:

当微软虚拟机监测到内存信息文件生成时,调用蓝屏回调函数对总线设备的配置空间地址中对应的标志位进行改写,其中,所述内存信息文件在监测到发生蓝屏时生成。

进一步的,上述方法中,当微软虚拟机监测到内存信息文件生成时,调用蓝屏回调函数对总线设备的配置空间地址中对应的标志位进行改写,包括:

打开微软虚拟机的生成内存信息文件的功能;

在微软虚拟机的驱动初始化中,向微软驱动架构注册蓝屏回调函数,其中,所述驱动初始化为半虚拟化驱动的总线设备的驱动初始化;

当监测到内存信息文件生成时,调用蓝屏回调函数对公共空间地址中对应的标志位进行改写。

进一步的,上述方法中,所述蓝屏回调函数包括keregisterbugcheckcallback或keregisterbugcheckreasoncallback。

进一步的,上述方法中,所述内存信息文件为内存转储文件。

进一步的,上述方法中,当特权虚拟机监测到所述标志位有变化时,发出检测到蓝屏的通知,包括:

当特权虚拟机的模拟处理器监测到所述标志位有变化时,模拟处理器发出检测到蓝屏的通知。

根据本发明的另一方面,还提供了一种虚拟机蓝屏检测设备,该设备包括:

第一装置,用于当监测到发生蓝屏时,对公共空间地址中对应的标志位进行改写;

第二装置,用于当监测到所述标志位有变化时,发出检测到蓝屏的通知。

进一步的,上述设备中,所述第一装置为微软虚拟机;

所述第二装置为特权虚拟机监测。

进一步的,上述设备中,所述公共空间地址为微软虚拟机的总线设备的配置空间地址。

进一步的,上述设备中,所述微软虚拟机,用于当监测到内存信息文件生成时,调用蓝屏回调函数对总线设备的配置空间地址中对应的标志位进行改写,其中,所述内存信息文件在监测到发生蓝屏时生成。

进一步的,上述设备中,所述微软虚拟机,用于打开微软虚拟机的生成内存信息文件的功能;在微软虚拟机的驱动初始化中,向微软驱动架构注册蓝屏回调函数,其中,所述驱动初始化为半虚拟化驱动的总线设备的驱动初始化;及当监测到内存信息文件生成时,调用蓝屏回调函数对公共空间地址中对应的标志位进行改写。

进一步的,上述设备中,所述蓝屏回调函数包括keregisterbugcheckcallback或keregisterbugcheckreasoncallback。

进一步的,上述设备中,所述内存信息文件为内存转储文件。

进一步的,上述设备中,所述第二装置为特权虚拟机的模拟处理器。

与现有技术相比,本申请通过当监测到发生蓝屏时,对公共空间地址中对应的标志位进行改写;当监测到所述标志位有变化时,发出检测到蓝屏的通知,能够在第一时间检测到蓝屏的发生,并主动及时上报,缩短虚拟机业务中断的时间,能提升运维的效率,将业务中断的损失降为最小,提升用户服务体验,保证服务的稳定性,可以大大节约云计算服务的成本。

附图说明

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:

图1示出根据本发明一个方面的一种虚拟机蓝屏检测方法的流程图;

图2示出本发明中虚拟机蓝屏检测方法的原理图;

图3示出本发明虚拟机蓝屏检测方法一优选的实施例的流程图;

图4示出根据本发明另一个方面的一种虚拟机蓝屏检测设备的模块图。

附图中相同或相似的附图标记代表相同或相似的部件。

具体实施方式

下面结合附图对本发明作进一步详细描述。

在本申请一个典型的配置中,终端、服务网络的设备和可信方均包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。

如图1的示,本申请提供一种虚拟机蓝屏检测方法,该方法包括:

步骤s1,当监测到发生蓝屏时,对公共空间地址中对应的标志位进行改写;

步骤s2,当监测到所述标志位有变化时,发出检测到蓝屏的通知。本实施例通过改写公共空间地址中的标志位,及监测所述标志位的变化,能够在第一时间检测到蓝屏的发生,并主动及时上报,缩短虚拟机业务中断的时间,能提升运维的效率,将业务中断的损失降为最小,提升用户服务体验,保证服务的稳定性,长期来看可以大大节约云计算服务的成本。

本申请一种虚拟机蓝屏检测方法一优选的实施例中,步骤s1,当监测到发生蓝屏时,对公共空间地址中对应的标志位进行改写,包括:

当微软(windows)虚拟机监测到发生蓝屏时,对公共空间地址中对应的标志位进行改写;

步骤s2,当监测到所述标志位有变化时,发出检测到蓝屏的通知,包括:

当特权虚拟机监测到所述标志位有变化时,发出检测到蓝屏的通知。具体的,如图2所示,具体的,蓝屏发生在windows虚拟机上,当windows虚拟机监测到蓝屏发生,对windows虚拟机和特权虚拟机监测的公共空间地址中对应的标志位进行改写,如将标志位由0修改为1,公共空间地址中对应的标志位对特权虚拟机可见,因此由特权虚拟机监测所述标志位的变化,当监测到有变化时,可以认为windows虚拟机已发生蓝屏,并将此信息进行上报如上报给监控系统,从而实现windows虚拟机和特权虚拟机之间高效地配合进行蓝屏监测。

本申请一种虚拟机蓝屏检测方法一优选的实施例中,当特权虚拟机监测到所述标志位有变化时,发出检测到蓝屏的通知,包括:

当特权虚拟机的模拟处理器监测到所述标志位有变化时,模拟处理器发出检测到蓝屏的通知。具体的,在xen(开放源代码虚拟机监视器)的虚拟化场景中,微软虚拟机的设备都是由特权虚拟机(dom0)上的qemu(模拟处理器)模拟的,主要是磁盘和网卡等设备。微软虚拟机上经常安装pvdriver(para-virtualizationdriver,半虚拟化驱动)来优化前后端的输入输出(io)传输,其中,所述前端为微软虚拟机,所述后端为特权虚拟机。安装pvdriver后,pvdriver会首先隐藏qemu模拟的磁盘,网卡等设备,并且利用qemu模拟的总线设备(pci),模拟出新的虚拟磁盘和网卡设备,并为之提供驱动。如图2所示,windows虚拟机安装pvdriver(para-virtualizationdriver,半虚拟化驱动)后,总线设备(pci)是由特权虚拟机(dom0)上的模拟处理器(qemu模拟)的,但是总线设备的驱动程序由pvdriver接管,此时对windows虚拟机来说,它的pci设备的配置空间地址,对特权虚拟机(dom0)上的qemu来说是可见的,因此当windows虚拟机蓝屏时利用回调函数向windows虚拟机的pci设备的配置空间地址写标志位,然后在qemu中去检测这配置空间地址中值的变化,当qemu、pvdriver双方约定的标志位发生变化时,qemu可以认为windows虚拟机已发生蓝屏,并将此信息上报给监控系统。

本申请一种虚拟机蓝屏检测方法一优选的实施例中,所述公共空间地址为微软虚拟机的总线设备的配置空间地址。具体的,如图2所示,windows虚拟机安装pvdriver后,总线设备是由特权虚拟机(dom0)上的模拟处理器(qemu模拟)的,但是总线设备的驱动程序由pvdriver接管,此时对windows虚拟机来说,它的pci设备的配置空间地址,对特权虚拟机(dom0)上的qemu来说是可见的,因此当windows虚拟机蓝屏时,向windows虚拟机的pci设备的配置空间地址写标志位,然后在qemu中去检测这配置空间地址中值的变化,当qemu、pvdriver双方约定的标志位发生变化时,qemu可以认为windows虚拟机已发生蓝屏,并将此信息上报给监控系统,在此,利用微软虚拟机的总线设备的配置空间地址,可实现windows虚拟机和特权虚拟机之间高效地配合进行蓝屏监测。

本申请一种虚拟机蓝屏检测方法一优选的实施例中,当微软虚拟机监测到发生蓝屏时,对公共空间地址中对应的标志位进行改写,包括:

当微软虚拟机监测到内存信息文件生成时,调用蓝屏回调函数对总线设备的配置空间地址中对应的标志位进行改写,其中,所述内存信息文件在发生蓝屏时生成。具体的,如图2所示,当windows虚拟机蓝屏时,会有对应的内存信息文件生成,此时,利用回调函数向windows虚拟机的pci设备的配置空间地址写标志位,然后在qemu中去检测这配置空间地址中值的变化,当qemu、pvdriver双方约定的标志位发生变化时,qemu可以认为windows虚拟机已发生蓝屏,并将此信息上报给监控系统,在此,通过内存信息文件和回调函数的配合,可实现windows虚拟机和特权虚拟机之间高效地配合进行蓝屏监测。

如图3所示,本申请一种虚拟机蓝屏检测方法一优选的实施例中,当微软虚拟机监测到内存信息文件生成时,调用蓝屏回调函数对总线设备的配置空间地址中对应的标志位进行改写,包括:

步骤s11,打开微软虚拟机的生成内存信息文件的功能,其中,所述内存信息文件在监测到发生蓝屏时生成,从而实现后续微软虚拟机的生成内存信息文件的功能的启用;

步骤s12,在微软虚拟机的半虚拟化驱动(pvdriver)的总线设备(pci)的驱动初始化中,向微软驱动架构注册蓝屏回调函数,从而实现后续蓝屏回调函数能够对公共空间地址在对应的标志位进行改写的功能;

步骤s13,当监测到内存信息文件生成时,调用蓝屏回调函数对公共空间地址中对应的标志位进行改写。具体的,蓝屏检测实现细节如下:

1.打开windows虚拟机的dump文件生成功能;

2.在pvdriver的pci的驱动初始化中向微软驱动架构注册回调函数。

3.监测到蓝屏发生时,dump文件生成时回调函数会被调用向pci设备的配置空间地址写标志位如将0改写成1,qemu检测这配置空间地址中值的变化,向监控程序报告。

本申请一种虚拟机蓝屏检测方法一优选的实施例中,所述蓝屏回调函数包括:

keregisterbugcheckcallback或keregisterbugcheckreasoncallback。具体的,windows驱动架构提供一些蓝屏(crash)回调函数,其中keregisterbugcheckcallback和keregisterbugcheckreasoncallback两个函数会在dump文件(内存转储文件)保存时被调用,两个函数的功能一样,使用在pvdriver的pci的驱动初始化中向微软驱动架构注册;keregisterbugcheckcallback或keregisterbugcheckreasoncallback回调函数即可。

本申请一种虚拟机蓝屏检测方法一优选的实施例中,所述内存信息文件为内存转储文件。具体的,windows虚拟机的驱动架构提供一些蓝屏(crash)回调函数,回调函数会在内存转储文件(dump文件)保存时被调用,可以利用此机制,在蓝屏发生时,虽然windows虚拟机内部不再运行应用程序,利用回调函数通知qemu,由qemu在特权虚拟机(dom0)上做一些通知,从而将蓝屏的信息上报监控系统。

如图4所示,根据本申请的另一面,还提供一种虚拟机蓝屏检测设备,该设备包括:

第一装置1,用于当监测到发生蓝屏时,对公共空间地址中对应的标志位进行改写;

第二装置2,用于当监测到所述标志位有变化时,发出检测到蓝屏的通知。本实施例通过改写公共空间地址中的标志位,及监测所述标志位的变化,能够在第一时间检测到蓝屏的发生,并主动及时上报,缩短虚拟机业务中断的时间,能提升运维的效率,将业务中断的损失降为最小,提升用户服务体验,保证服务的稳定性,长期来看可以大大节约云计算服务的成本。

本申请一种虚拟机蓝屏检测设备一优选的实施例中,所述第一装置1为微软虚拟机;

所述第二装置2为特权虚拟机监测。具体的,如图2所示,具体的,蓝屏发生在windows虚拟机上,当windows虚拟机监测到蓝屏发生,对windows虚拟机和特权虚拟机监测的公共空间地址中对应的标志位进行改写,如将标志位由0修改为1,公共空间地址中对应的标志位对特权虚拟机可见,因此由特权虚拟机监测所述标志位的变化,当监测到有变化时,可以认为windows虚拟机已发生蓝屏,并将此信息进行上报如上报给监控系统,从而实现windows虚拟机和特权虚拟机之间高效地配合进行蓝屏监测。

本申请一种虚拟机蓝屏检测设备一优选的实施例中,所述第二装置2为特权虚拟机的模拟处理器。具体的,在xen(开放源代码虚拟机监视器)的虚拟化场景中,微软虚拟机的设备都是由特权虚拟机(dom0)上的qemu(模拟处理器)模拟的,主要是磁盘和网卡等设备。微软虚拟机上经常安装pvdriver(para-virtualizationdriver,半虚拟化驱动)来优化前后端的输入输出(io)传输,其中,所述前端为微软虚拟机,所述后端为特权虚拟机。安装pvdriver后,pvdriver会首先隐藏qemu模拟的磁盘,网卡等设备,并且利用qemu模拟的总线设备(pci),模拟出新的虚拟磁盘和网卡设备,并为之提供驱动。如图2所示,windows虚拟机安装pvdriver(para-virtualizationdriver,半虚拟化驱动)后,总线设备(pci)是由特权虚拟机(dom0)上的模拟处理器(qemu模拟)的,但是总线设备的驱动程序由pvdriver接管,此时对windows虚拟机来说,它的pci设备的配置空间地址,对特权虚拟机(dom0)上的qemu来说是可见的,因此当windows虚拟机蓝屏时利用回调函数向windows虚拟机的pci设备的配置空间地址写标志位,然后在qemu中去检测这配置空间地址中值的变化,当qemu、pvdriver双方约定的标志位发生变化时,qemu可以认为windows虚拟机已发生蓝屏,并将此信息上报给监控系统。

本申请一种虚拟机蓝屏检测设备一优选的实施例中,所述公共空间地址为微软虚拟机的总线设备的配置空间地址。具体的,如图2所示,windows虚拟机安装pvdriver后,总线设备是由特权虚拟机(dom0)上的模拟处理器(qemu模拟)的,但是总线设备的驱动程序由pvdriver接管,此时对windows虚拟机来说,它的pci设备的配置空间地址,对特权虚拟机(dom0)上的qemu来说是可见的,因此当windows虚拟机蓝屏时,向windows虚拟机的pci设备的配置空间地址写标志位,然后在qemu中去检测这配置空间地址中值的变化,当qemu、pvdriver双方约定的标志位发生变化时,qemu可以认为windows虚拟机已发生蓝屏,并将此信息上报给监控系统,在此,利用微软虚拟机的总线设备的配置空间地址,可实现windows虚拟机和特权虚拟机之间高效地配合进行蓝屏监测。

本申请一种虚拟机蓝屏检测设备一优选的实施例中,所述微软虚拟机,用于当监测到内存信息文件生成时,调用蓝屏回调函数对总线设备的配置空间地址中对应的标志位进行改写,其中,所述内存信息文件在监测到发生蓝屏时生成。具体的,如图2所示,当windows虚拟机蓝屏时,会有对应的内存信息文件生成,此时,利用回调函数向windows虚拟机的pci设备的配置空间地址写标志位,然后在qemu中去检测这配置空间地址中值的变化,当qemu、pvdriver双方约定的标志位发生变化时,qemu可以认为windows虚拟机已发生蓝屏,并将此信息上报给监控系统,在此,通过内存信息文件和回调函数的配合,可实现windows虚拟机和特权虚拟机之间高效地配合进行蓝屏监测。

本申请一种虚拟机蓝屏检测设备一优选的实施例中,所述微软虚拟机1,用于打开微软虚拟机的生成内存信息文件的功能,其中,所述内存信息文件在监测到发生蓝屏时生成,从而实现后续微软虚拟机的生成内存信息文件的功能的启用;在微软虚拟机的驱动初始化中,向微软驱动架构注册蓝屏回调函数,其中,所述驱动初始化为半虚拟化驱动的总线设备的驱动初始化,从而实现后续蓝屏回调函数能够对公共空间地址在对应的标志位进行改写的功能;及当监测到内存信息文件生成时,调用蓝屏回调函数对公共空间地址中对应的标志位进行改写。具体的,蓝屏检测实现细节如下:

1.打开windows虚拟机的dump文件生成功能;

2.在pvdriver的pci的驱动初始化中向微软驱动架构注册回调函数。

3.监测到蓝屏发生时,dump文件生成时回调函数会被调用向pci设备的配置空间地址写标志位如将0改写成1,qemu检测这配置空间地址中值的变化,向监控程序报告。

本申请一种虚拟机蓝屏检测设备一优选的实施例中,所述蓝屏回调函数包括:

keregisterbugcheckcallback或keregisterbugcheckreasoncallback。具体的,windows驱动架构提供一些蓝屏(crash)回调函数,其中keregisterbugcheckcallback和keregisterbugcheckreasoncallback两个函数会在dump文件(内存转储文件)保存时被调用,两个函数的功能一样,使用在pvdriver的pci的驱动初始化中向微软驱动架构注册;keregisterbugcheckcallback或keregisterbugcheckreasoncallback回调函数即可。

本申请一种虚拟机蓝屏检测设备一优选的实施例中,所述内存信息文件为内存转储文件。具体的,windows虚拟机的驱动架构提供一些蓝屏(crash)回调函数,回调函数会在内存转储文件(dump文件)保存时被调用,可以利用此机制,在蓝屏发生时,虽然windows虚拟机内部不再运行应用程序,利用回调函数通知qemu,由qemu在特权虚拟机(dom0)上做一些通知,从而将蓝屏的信息上报监控系统。

综上所述,本申请通过当监测到发生蓝屏时,对公共空间地址中对应的标志位进行改写;当监测到所述标志位有变化时,发出检测到蓝屏的通知,能够在第一时间检测到蓝屏的发生,并主动及时上报,缩短虚拟机业务中断的时间,能提升运维的效率,将业务中断的损失降为最小,提升用户服务体验,保证服务的稳定性,可以大大节约云计算服务的成本。

显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

需要注意的是,本发明可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(asic)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例中,本发明的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本发明的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,ram存储器,磁或光驱动器或软磁盘及类似设备。另外,本发明的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。

另外,本发明的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本发明的方法和/或技术方案。而调用本发明的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的计算机设备的工作存储器中。在此,根据本发明的一个实施例包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本发明的多个实施例的方法和/或技术方案。

对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。

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