CN109992466B - 虚拟机故障检测方法、装置、计算机可读存储介质及电子设备 - Google Patents
虚拟机故障检测方法、装置、计算机可读存储介质及电子设备 Download PDFInfo
- Publication number
- CN109992466B CN109992466B CN201711474999.3A CN201711474999A CN109992466B CN 109992466 B CN109992466 B CN 109992466B CN 201711474999 A CN201711474999 A CN 201711474999A CN 109992466 B CN109992466 B CN 109992466B
- Authority
- CN
- China
- Prior art keywords
- watchdog
- state
- virtual machine
- data
- instruction
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/301—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is a virtual computing platform, e.g. logically partitioned systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Quality & Reliability (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Computer Hardware Design (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明实施例提出一种虚拟机故障检测方法、装置、计算机可读存储介质及电子设备,涉及虚拟化技术领域。该方法包括:电子设备中的字符设备驱动模块响应所述电子设备中的虚拟机的数据写入指令,将所述数据写入指令对应的喂狗数据写入内核态中;所述字符设备驱动模块响应所述电子设备中的宿主机的数据读取指令,从所述内核态中获取所述喂狗数据并将所述喂狗数据返回至所述宿主机;所述宿主机基于所述喂狗数据对所述虚拟机进行故障检测。该检测方法的实现不依赖于宿主机与虚拟机之间的通信机制,无论通信机制出现拥塞还是故障,或是在通信机制初始化完成之前,宿主机都能实现对虚拟机的故障检测,可靠性高,普适性强。
Description
技术领域
本发明涉及虚拟化技术领域,具体而言,涉及一种虚拟机故障检测方法、装置、计算机可读存储介质及电子设备。
背景技术
随着虚拟化技术的发展,一个物理设备上可以虚拟出一个或多个虚拟机来满足用户的业务需求,虚拟出的虚拟机是逻辑设备,可以单独配置、单独管理,互相之间业务不受影响。虚拟机运行的设备环境,也即是真实的物理平台,称为宿主机。宿主机在正常启动后,可根据用户配置启动虚拟机,使虚拟机运行在宿主机上,但如果虚拟机在启动阶段或运行阶段出现故障,会造成虚拟机不能正常工作。因此,在虚拟机出现故障时,宿主机需要及时发现和处理。
发明内容
本发明实施例提供一种虚拟机故障检测方法、装置、计算机可读存储介质及电子设备。
本发明实施例采用的技术方案如下:
第一方面,本发明实施例提出一种虚拟机故障检测方法,所述方法包括:电子设备中的字符设备驱动模块响应所述电子设备中的虚拟机的数据写入指令,将所述数据写入指令对应的喂狗数据写入内核态中;所述字符设备驱动模块响应所述电子设备中的宿主机的数据读取指令,从所述内核态中获取所述喂狗数据并将所述喂狗数据返回至所述宿主机;所述宿主机基于所述喂狗数据对所述虚拟机进行故障检测。
在上述第一方面实施例提供的技术方案中,先是虚拟机通过字符设备驱动模块向内核态中存储对应的喂狗数据,然后宿主机通过该字符设备驱动模块从内核态中获取虚拟机的喂狗数据,然后宿主机根据喂狗数据检测虚拟机的状态,通过检测虚拟机的状态,就可以知道虚拟机现在是有故障还是正常,可见,在宿主机检测虚拟机的状态过程中,是通过字符设备驱动模块写入喂狗数据实现的,不依赖于宿主机与虚拟机之间的通信机制,也即是说,无论通信机制出现拥塞还是故障,或是在通信机制初始化完成之前,宿主机都能实现对虚拟机的故障检测,避免宿主机在某些情况下不能及时准确检测虚拟机故障的技术问题,实现了及时准确地检测虚拟机故障的技术效果。
可选地,结合上述第一方面提供的技术方案,在第一方面的第一种可能的设计中,所述喂狗数据包括看门狗类型及看门狗状态,所述字符设备驱动模块响应所述虚拟机的数据写入指令,将所述数据写入指令对应的喂狗数据写入内核态中,包括:所述字符设备驱动模块响应所述虚拟机的第一数据写入指令,将所述第一数据写入指令对应的看门狗类型及对应的看门狗状态写入所述内核态中,其中,所述第一数据写入指令为所述虚拟机进入初始化阶段时发送给所述字符设备驱动模块的指令,所述第一数据写入指令对应的看门狗类型为初始化看门狗,所述第一数据写入指令对应的看门狗状态为使能状态。在本申请中,由于虚拟机开始初始化时,会向内核态中写入对应的喂狗数据,使得宿主机根据读取的喂狗数据可以确定虚拟机进入了初始化阶段,进而实现初始化阶段的故障检测。
可选地,结合上述第一方面的第一种可能的设计提供的技术方案,在第二种可能的设计中,所述字符设备驱动模块响应所述虚拟机的数据写入指令,将所述数据写入指令对应的喂狗数据写入内核态中,包括:所述字符设备驱动模块响应所述虚拟机的第二数据写入指令,将所述第二数据写入指令对应的看门狗类型及对应的看门狗状态写入所述内核态中,其中,所述第二数据写入指令为所述虚拟机在初始化完成时发送给所述字符设备驱动模块的指令,所述第二数据写入指令对应的看门狗类型为所述初始化看门狗,所述第二数据写入指令对应的看门狗状态为关闭状态。在本申请中,由于虚拟机在完成初始化时,会向内核态中写入对应的喂狗数据,使得宿主机根据读取的该喂狗数据可以确定该虚拟机关闭初始化看门狗,进而实现初始化阶段的故障检测。
可选地,结合上述第一方面的第二种可能的设计提供的技术方案,在第三种可能的设计中,所述宿主机基于所述喂狗数据对所述虚拟机进行故障检测,包括:当所述喂狗数据中的看门狗类型为所述初始化看门狗且所述初始化看门狗的状态未在第一预设时间内由使能状态变为关闭状态时,确定所述虚拟机在初始化阶段出现故障。在本申请中,宿主机在获取喂狗数据后,通过判断虚拟机是否在第一预设时间内关闭初始化看门狗,实现在虚拟机初始化阶段及时准确地检测虚拟机故障。
可选地,结合上述第一方面提供的技术方案,在第一方面的第四种可能的设计中,所述喂狗数据包括看门狗类型及看门狗状态,所述字符设备驱动模块响应所述虚拟机的数据写入指令,将所述数据写入指令对应的喂狗数据写入内核态中,包括:所述字符设备驱动模块响应所述虚拟机的第三数据写入指令,将所述第三数据写入指令对应的看门狗类型及对应的看门狗状态写入所述内核态中,其中,所述第三数据写入指令为所述虚拟机进入运行阶段时发送给所述字符设备驱动模块的指令,所述第三数据写入指令对应的看门狗类型为运行状态看门狗,所述第三数据写入指令对应的看门狗状态为使能状态。在本申请中,由于虚拟机在正常初始化且进入运行阶段时,需先使能运行状态看门狗,将对应的喂狗数据写入内核态中,使得宿主机在读取到该喂狗数据后可以确定虚拟机进入了运行阶段。
可选地,结合上述第一方面的第四种可能的设计提供的技术方案,在第五种可能的设计中,所述喂狗数据还包括喂狗时间,所述字符设备驱动模块响应所述虚拟机的数据写入指令,将所述数据写入指令对应的喂狗数据写入内核态中,包括:所述字符设备驱动模块响应所述虚拟机的第四数据写入指令,将所述第四数据写入指令对应的看门狗类型、看门狗状态以及对应的喂狗时间写入所述内核态中,其中,所述第四数据写入指令为所述虚拟机在所述运行阶段中对所述运行状态看门狗进行喂狗动作时发送给所述字符设备驱动模块的指令,所述第四数据写入指令对应的看门狗类型为运行状态看门狗,所述第四数据写入指令对应的看门狗状态为使能状态。在本申请中,虚拟机在使能运行状态看门狗后,需对该运行状态看门狗进行喂狗动作,而每次喂狗动作对应的喂狗时间不同,使得宿主机根据喂狗数据中的喂狗时间判断虚拟机是否有喂运行状态看门狗,进而实现虚拟机运行阶段的故障检测。
可选地,结合上述第一方面的第五种可能的设计提供的技术方案,在第六种可能的设计中,所述宿主机基于所述喂狗数据对所述虚拟机进行故障检测,包括:当所述喂狗数据中的看门狗类型为运行状态看门狗且所述运行状态看门狗为使能状态时,判断所述喂狗时间是否在第二预设时间内发生变化;当所述喂狗时间未在所述第二预设时间内发生变化时,确定所述虚拟机在运行阶段出现故障。在本申请中,宿主机在确定虚拟机使能运行状态看门狗后,根据喂狗数据中的喂狗时间是否在第二预设时间内发生变化,如果没有,表明虚拟机已经持续第二预设时间没有喂狗,运行阶段出现异常,实现在虚拟机运行阶段及时准确地检测虚拟机故障。
可选地,结合上述第一方面提供的技术方案,在第一方面的第七种可能的设计中,所述虚拟机为多个时,所述喂狗数据还包括每个虚拟机的唯一标识信息。可见,当虚拟机为多个时,宿主机从内核态中获取的喂狗数据也为多个,此时通过该喂狗数据中的唯一标识信息可确定该喂狗数据对应的是哪个虚拟机。
第二方面,本发明实施例还提出一种虚拟机故障检测方法,响应电子设备中的虚拟机的数据写入指令,将所述数据写入指令对应的喂狗数据写入内核态中;响应所述电子设备中的宿主机的数据读取指令,从所述内核态中获取所述喂狗数据并将所述喂狗数据返回至所述宿主机,以便所述宿主机基于所述喂狗数据对所述虚拟机进行故障检测。
在上述第二方面实施例提供的技术方案中,宿主机通过读取的喂狗数据就可以知道虚拟机是否发生故障,在宿主机检测虚拟机的状态过程中,是通过字符设备驱动模块写入喂狗数据来实现的,不依赖于宿主机与虚拟机之间的通信机制,也即是说,无论通信机制出现拥塞还是故障,或是在通信机制初始化完成之前,宿主机都能实现对虚拟机的故障检测,避免宿主机在某些情况下不能及时准确检测虚拟机故障的技术问题,实现了及时准确地检测虚拟机故障的技术效果。
第三方面,本发明实施例还提出一种虚拟机故障检测装置,所述虚拟机故障检测装置包括:字符设备驱动模块,用于响应电子设备中的虚拟机的数据写入指令,将所述数据写入指令对应的喂狗数据写入内核态中;故障检测模块,运行于所述电子设备中的宿主机,用于向所述字符设备驱动模块发送数据读取指令;所述字符设备驱动模块还用于依据所述数据读取指令从所述内核态中获取所述喂狗数据并将所述喂狗数据返回至所述故障检测模块;所述故障检测模块还用于基于所述喂狗数据对所述虚拟机进行故障检测。
在上述第三方面实施例提供的技术方案中,故障检测模块根据获取的喂狗数据就可以知道虚拟机是否发生故障,在检测虚拟机的状态过程中,是通过字符设备驱动模块写入喂狗数据来实现的,不依赖于宿主机与虚拟机之间的通信机制,也即是说,无论通信机制出现拥塞还是故障,或是在通信机制初始化完成之前,宿主机都能实现对虚拟机的故障检测,避免宿主机在某些情况下不能及时准确检测虚拟机故障的技术问题,实现了及时准确地检测虚拟机故障的技术效果。
可选地,结合上述第三方面提供的技术方案,在第三方面的第一种可能的设计中,所述喂狗数据包括看门狗类型及看门狗状态,所述字符设备驱动模块包括初始化看门狗使能模块,用于响应所述虚拟机的第一数据写入指令,将所述第一数据写入指令对应的看门狗类型及对应的看门狗状态写入所述内核态中,其中,所述第一数据写入指令为所述虚拟机进入初始化阶段时发送给所述字符设备驱动模块的指令,所述第一数据写入指令对应的看门狗类型为初始化看门狗,所述第一数据写入指令对应的看门狗状态为使能状态。在本申请中,在虚拟机开始初始化时,通过初始化看门狗使能模块向内核态中写入对应的喂狗数据,使得宿主机根据读取的喂狗数据可以确定虚拟机进入了初始化阶段,进而实现初始化阶段的故障检测。
可选地,结合上述第三方面的第一种可能的设计提供的技术方案,在第二种可能的设计中,所述字符设备驱动模块还包括初始化看门狗关闭模块,用于响应所述虚拟机的第二数据写入指令,将所述第二数据写入指令对应的看门狗类型及对应的看门狗状态写入所述内核态中,其中,所述第二数据写入指令为所述虚拟机在初始化完成时发送给所述字符设备驱动模块的指令,所述第二数据写入指令对应的看门狗类型为所述初始化看门狗,所述第二数据写入指令对应的看门狗状态为关闭状态。在本申请中,虚拟机在完成初始化时,通过初始化看门狗关闭模块向内核态中写入对应的喂狗数据,使得宿主机根据读取的该喂狗数据可以确定该虚拟机关闭初始化看门狗,进而实现初始化阶段的故障检测。
可选地,结合上述第三方面的第二种可能的设计提供的技术方案,在第三种可能的设计中,所述故障检测模块用于当所述喂狗数据中的看门狗类型为所述初始化看门狗且所述初始化看门狗的状态未在第一预设时间内由使能状态变为关闭状态时,确定所述虚拟机在初始化阶段出现故障。在本申请中,故障检测模块在获取喂狗数据后,通过判断虚拟机是否在第一预设时间内关闭初始化看门狗,实现在虚拟机初始化阶段及时准确地检测虚拟机故障。
可选地,结合上述第三方面提供的技术方案,在第三方面的第四种可能的设计中,所述喂狗数据包括看门狗类型及看门狗状态,所述字符设备驱动模块包括运行状态看门狗使能模块,用于响应所述虚拟机的第三数据写入指令,将所述第三数据写入指令对应的看门狗类型及对应的看门狗状态写入所述内核态中,其中,所述第三数据写入指令为所述虚拟机进入运行阶段时发送给所述字符设备驱动模块的指令,所述第三数据写入指令对应的看门狗类型为运行状态看门狗,所述第三数据写入指令对应的看门狗状态为使能状态。在本申请中,虚拟机在正常初始化进入运行阶段时,通过运行状态看门狗使能模块使能运行状态看门狗,将对应的喂狗数据写入内核态中,使得宿主机在读取到该喂狗数据后可以确定虚拟机进入了运行阶段。
可选地,结合上述第三方面的第四种可能的设计提供的技术方案,在第五种可能的设计中,所述喂狗数据还包括喂狗时间,所述字符设备驱动模块还包括喂狗模块,用于响应所述虚拟机的第四数据写入指令,将所述第四数据写入指令对应的看门狗类型、看门狗状态以及对应的喂狗时间写入所述内核态中,其中,所述第四数据写入指令为所述虚拟机在所述运行阶段中对所述运行状态看门狗进行喂狗动作时发送给所述字符设备驱动模块的指令,所述第四数据写入指令对应的看门狗类型为运行状态看门狗,所述第四数据写入指令对应的看门狗状态为使能状态。在本申请中,虚拟机在使能运行状态看门狗后,通过喂狗模块对该运行状态看门狗进行喂狗动作,而每次喂狗动作对应的喂狗时间不同,使得宿主机根据喂狗数据中的喂狗时间判断虚拟机是否有喂运行状态看门狗,进而实现虚拟机运行阶段的故障检测。
可选地,结合上述第三方面的第五种可能的设计提供的技术方案,在第六种可能的设计中,所述故障检测模块用于当所述喂狗数据中的看门狗类型为运行状态看门狗且所述运行状态看门狗为使能状态时,判断所述喂狗时间是否在第二预设时间内发生变化;当所述喂狗时间未在所述第二预设时间内发生变化时,确定所述虚拟机在运行阶段出现故障。在本申请中,故障检测模块在确定虚拟机使能运行状态看门狗后,根据喂狗数据中的喂狗时间是否在第二预设时间内发生变化,如果没有,表明虚拟机已经持续第二预设时间没有喂狗,运行阶段出现异常,实现在虚拟机运行阶段及时准确地检测虚拟机故障。
第四方面,本发明实施例还提出一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器读取并运行时实现上述各方面所述的方法。
第五方面,本发明实施例还提出一种电子设备,包括存储有计算机程序的计算机可读存储介质和处理器,所述计算机程序被所述处理器读取并运行时,实现上述各方面所述的方法。
本发明的其他特征和优点将在随后的说明书阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明实施例了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本发明实施例所提供的虚拟机故障检测方法及装置的应用环境示意图。
图2示出了本发明实施例所提供的虚拟机故障检测方法的流程示意图。
图3示出了图2中步骤S103的流程示意图。
图4示出了本发明实施例所提供的虚拟机故障检测装置的功能模块示意图。
图标:110-宿主机;120-虚拟机;130-字符设备驱动模块;400-虚拟机故障检测装置;410-数据写入模块;420-故障检测模块;430-故障处理模块。
具体实施方式
在实现本发明实施例的技术方案的过程中,本申请发明人发现:
虚拟机一般存在两个故障点,即初始化阶段和运行阶段。虚拟机在启动时需进行初始化,如果初始化不成功,宿主机需要及时发现和处理;虚拟机初始化成功,进入运行阶段后,如果出现故障,也需要宿主机及时发现和处理。现有的解决方案中,宿主机启动虚拟机后,虚拟机周期性地向宿主机发送状态信息,宿主机则通过接收该状态信息的方式来判断虚拟机的状态,如果宿主机多次没有收到虚拟机的状态信息,则认为虚拟机出现故障。这种检测方式具有可靠性不高,宿主机很容易误判的缺点。
基于上述研究,发明人经过多方调研发现,采用现有技术中的虚拟机故障检测方式具有上述缺点的原因在于:首先,虚拟机能否向宿主机发送状态信息依赖于虚拟机与宿主机之间的通信机制,如果虚拟机没有出现故障,而通信机制出现拥塞或者故障,宿主机就无法接收到状态信息,判断该虚拟机出现故障,从而造成误判;其次,虚拟机在通信机制初始化完成前可能会发生故障,而在通信机制初始化完成前,宿主机无法检测到故障。
以上现有技术中的方案所存在的缺陷,均是发明人在经过实践并仔细研究后得出的结果,因此,上述问题的发现过程以及下文中本发明实施例针对上述问题所提出的解决方案,都应该是发明人在本发明过程中对本发明做出的贡献。
下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
本发明实施例所提供的虚拟机故障检测方法及装置可应用于如图1 所示的电子设备中。其中,所述电子设备可以是采用Linux操作系统的服务器、个人电脑(PersonalComputer,PC)、路由器等。所述电子设备包括宿主机110、虚拟机120及字符设备驱动模块130,所述宿主机110与所述虚拟机120通过所述字符设备驱动模块130通信。其中,所述虚拟机 120可以为一个或多个,该一个或多个虚拟机120均运行在宿主机110上,并由宿主机110进行启动。
在本实施例中,为了实现宿主机110对虚拟机120的初始化阶段和运行阶段的故障检测,在Linux操作系统中创建一个看门狗字符设备 WatchDog,并为该看门狗字符设备WatchDog设置专门的驱动程序(即上述的字符设备驱动模块130),该字符设备驱动模块130运行于Linux内核态中。虚拟机120在初始化和运行阶段通过该字符设备驱动模块130可以向内核态中传递并存储数据,宿主机110则可以通过字符设备驱动模块 130从内核态中获取对应的数据,通过对获取的数据进行分析和处理,可判断每个虚拟机120在初始化阶段和运行阶段是否发生故障。
请参照图2,为本发明实施例所提供的虚拟机故障检测方法的流程示意图。需要说明的是,本发明实施例所述的虚拟机故障检测方法并不以图 2以及以下所述的具体顺序为限制,应当理解,在其它实施例中,本发明所述的虚拟机故障检测方法其中部分步骤的顺序可以根据实际需要相互交换,或者其中的部分步骤也可以省略或删除。该虚拟机故障检测方法可应用于上述的电子设备,下面将对图2所示的具体流程进行详细阐述。
步骤S101,电子设备中的字符设备驱动模块130响应所述电子设备中的虚拟机120的数据写入指令,将所述数据写入指令对应的喂狗数据写入内核态中。
其中,所述喂狗数据可包括看门狗类型及看门狗状态,其中,看门狗类型包括初始化看门狗和运行状态看门狗;所述看门狗状态包括使能状态和关闭状态。在本实施例中,该虚拟机120中设置有两个看门狗定时器(初始化看门狗和运行状态看门狗),虚拟机120在初始化阶段和运行阶段需对这两个看门狗定时器进行相应的操作(使能、关闭、喂狗等),虚拟机 120中运行的用户程序只需告诉字符设备驱动模块130要进行什么操作,而操作的具体实现则是通过字符设备驱动模块130来完成。例如,所述数据写入指令可以为ioctl(fd,cmd,arg),其中,fd=open(/dev/WatchDog),是一个文件描述符,表示虚拟机120通过看门狗字符设备WatchDog写入喂狗数据;cmd为控制命令,来告知字符设备驱动模块130想要做什么,在字符设备驱动模块130中实现的ioctl函数体内,可定义一个switch{case} 结构,每一个case对应一个控制命令,实现相应的操作;arg表示虚拟机 120需传递的参数信息。
在本实施例中,所述字符设备驱动模块130响应所述虚拟机120的第一数据写入指令,将所述第一数据写入指令对应的看门狗类型及对应的看门狗状态写入所述内核态中,其中,所述第一数据写入指令为所述虚拟机 120进入初始化阶段时发送给所述字符设备驱动模块130的指令,所述第一数据写入指令对应的看门狗类型为初始化看门狗,所述第一数据写入指令对应的看门狗状态为使能状态。
可见,虚拟机120在进入初始化阶段时,可通过向所述字符设备驱动模块130发送第一数据写入指令使能初始化看门狗,并在内核态中写入对应的喂狗数据,此时该喂狗数据中的看门狗类型为初始化看门狗,看门狗状态为使能状态。例如,所述第一数据写入指令可以为ioctl(fd,cmd1, arg),控制命令cmd1用于告知字符设备驱动模块130需要使能初始化看门狗,字符设备驱动模块130中具有控制命令cmd1的具体解释和实现。当虚拟机120中的用户程序执行ioctl(fd,cmd1,arg)时,字符设备驱动模块130使能初始化看门狗,将对应的喂狗数据存储在内核态中,此时喂狗数据可以表示为:{看门狗类型type=初始化看门狗;看门狗状态state=使能}。
在本实施例中,所述字符设备驱动模块130响应所述虚拟机120的第二数据写入指令,将所述第二数据写入指令对应的看门狗类型及对应的看门狗状态写入所述内核态中,其中,所述第二数据写入指令为所述虚拟机 120在初始化完成时发送给所述字符设备驱动模块130的指令,所述第二数据写入指令对应的看门狗类型为所述初始化看门狗,所述第二数据写入指令对应的看门狗状态为关闭状态。
可见,虚拟机120在初始化完成时,可通过向所述字符设备驱动模块130发送第二数据写入指令关闭该初始化看门狗,并在内核态中写入对应的喂狗数据,此时该喂狗数据中的看门狗类型为初始化看门狗,看门狗状态为关闭状态。例如,所述第二数据写入指令可以为ioctl(fd,cmd2,arg),控制命令cmd2用于告知字符设备驱动模块130需要关闭初始化看门狗,字符设备驱动模块130中具有控制命令cmd2的具体解释和实现。当虚拟机120中的用户程序执行ioctl(fd,cmd2,arg)时,字符设备驱动模块 130关闭初始化看门狗,将对应的喂狗数据存储在内核态中,此时喂狗数据可以表示为:{看门狗类型type=初始化看门狗;看门狗状态state=关闭}。
在本实施例中,所述字符设备驱动模块130响应所述虚拟机120的第三数据写入指令,将所述第三数据写入指令对应的看门狗类型及对应的看门狗状态写入所述内核态中,其中,所述第三数据写入指令为所述虚拟机 120进入运行阶段时发送给所述字符设备驱动模块130的指令,所述第三数据写入指令对应的看门狗类型为运行状态看门狗,所述第三数据写入指令对应的看门狗状态为使能状态。
可见,虚拟机120在初始化完成时,可通过向所述字符设备驱动模块 130发送第三数据写入指令使能运行状态看门狗,表明虚拟机120开始进入运行阶段,此时字符设备驱动模块130在内核态中写入的喂狗数据中,看门狗类型为运行状态看门狗,看门狗状态为使能状态。例如,所述第三数据写入指令可以为ioctl(fd,cmd3,arg),控制命令cmd3用于告知字符设备驱动模块130需要使能运行状态看门狗,字符设备驱动模块130中具有控制命令cmd3的具体解释和实现。当虚拟机120中的用户程序执行 ioctl(fd,cmd3,arg)时,字符设备驱动模块130使能运行状态看门狗,将对应的喂狗数据存储在内核态中,此时喂狗数据可以表示为:{看门狗类型type=运行状态看门狗;看门狗状态state=使能}。
在本实施例中,虚拟机120在运行阶段时,每隔预定时间需对运行状态看门狗进行一次喂狗动作,喂狗动作可通过向所述字符设备驱动模块 130发送第四数据写入指令实现。所述字符设备驱动模块130响应所述虚拟机120的第四数据写入指令,将所述第四数据写入指令对应的看门狗类型、看门狗状态以及对应的喂狗时间写入所述内核态中,其中,所述第四数据写入指令为所述虚拟机120在所述运行阶段中对所述运行状态看门狗进行喂狗动作时发送给所述字符设备驱动模块130的指令,所述第四数据写入指令对应的看门狗类型为运行状态看门狗,所述第四数据写入指令对应的看门狗状态为使能状态。
可见,在本实施例中,所述第四数据写入指令对应的喂狗数据还包括喂狗时间,虚拟机120每隔预定时间(例如,每1秒钟)进行一次喂狗动作(即向字符设备驱动模块130发送第四数据写入指令),字符设备驱动模块130将从内核态中获得不同的喂狗时间,存入到内核态中的喂狗数据也会相应地发生变化。其中,所述喂狗时间可以通过在内核态中取jiffies 值来获得。例如,所述第四数据写入指令可以为ioctl(fd,cmd4,arg),控制命令cmd4用于告知字符设备驱动模块130需要对运行状态看门狗进行喂狗动作,字符设备驱动模块130中具有控制命令cmd4的具体解释和实现。当虚拟机120中的用户程序执行一次ioctl(fd,cmd4,arg)时,字符设备驱动模块130喂一次运行状态看门狗,从内核态获取对应的喂狗时间(例如,1000),将喂狗时间、运行状态看门狗、运行状态看门狗的使能状态作为喂狗数据存储在内核态中,此时喂狗数据可表示为:{看门狗类型type=运行状态看门狗;看门狗状态state=使能;喂狗时间 timer=1000}。
需要说明的是,在本实施例中,上述采用ioctl调用存储喂狗数据的方式仅为一种示例,本申请对此不做限定。例如,在其他实施例中,也可以通过write操作实现。
进一步地,在本实施例中,所述虚拟机120可以为多个,当虚拟机 120为多个时,所述喂狗数据还包括每个虚拟机120的唯一标识信息id,用于标识喂狗数据属于哪个虚拟机120。其中,所述唯一标识信息id可通过所述数据写入指令传递给字符设备驱动模块130。例如,数据写入指令为ioctl(fd,cmd,arg)时,虚拟机120的唯一标识信息通过参数arg(例如,arg=1,2,3,…)传递。因此,对于唯一标识信息id为N(N=1,2,3,…) 的虚拟机120,第一数据写入指令对应的喂狗数据可表示为{id=N;看门狗类型type=初始化看门狗;看门狗状态state=使能};第二数据写入指令对应的喂狗数据可表示为{id=N;看门狗类型type=初始化看门狗;看门狗状态state=关闭};第三数据写入指令对应的喂狗数据可表示为{id=N;看门狗类型type=运行状态看门狗;看门狗状态state=使能};第四数据写入指令对应的喂狗数据可表示为{id=N;看门狗类型type=运行状态看门狗;看门狗状态state=使能;喂狗时间timer=1000}。
步骤S102,所述字符设备驱动模块130响应所述电子设备中的宿主机110的数据读取指令,从所述内核态中获取所述喂狗数据并将所述喂狗数据返回至所述宿主机110。
在本实施例中,为了实现宿主机110对虚拟机120的故障检测,宿主机110每隔一段时间需通过字符设备驱动模块130从内核态中读取所述虚拟机120写入的喂狗数据。其中,所述宿主机110读取喂狗数据可通过ioctl 调用或read操作,例如,所述数据读取指令中携带有控制命令cmd5,用于告知字符设备驱动模块130需要读取喂狗数据,字符设备驱动模块130 中具有控制命令cmd5的具体解释和实现,当接收到数据读取指令后,从内核态中获得所有虚拟机120的喂狗数据并返回给宿主机110。
步骤S103,所述宿主机110基于所述喂狗数据对所述虚拟机120进行故障检测。
如图3所示,为所述步骤S103的具体流程示意图。所述步骤S103 包括:
S1031,宿主机110通过字符设备驱动模块130从内核态中读取所有虚拟机120的喂狗数据,并对每个虚拟机120的喂狗数据进行分析。
例如,宿主机110根据喂狗数据中的唯一标识信息、看门狗类型、看门狗状态以及喂狗时间等信息,可分析每个虚拟机120当前的状态。
S1032,宿主机110判断虚拟机120是否使能初始化看门狗。
在本实施例中,当宿主机110从喂狗数据中得到看门狗类型为初始化看门狗,看门狗状态为使能时,则可确定该喂狗数据对应的虚拟机120使能初始化看门狗,执行步骤S1033;如果判断虚拟机120没有使能初始化看门狗时,则执行步骤S1035。
S1033,宿主机110判断初始化看门狗的状态是否在第一预设时间内由使能状态变为关闭状态。
在本实施例中,宿主机110在确定虚拟机120使能初始化看门狗后,便开始计时。当计时达到第一预设时间(例如,3分钟)时,判断初始化看门狗的状态是否由使能状态变为关闭状态,如果初始化看门狗未由使能状态变为关闭状态,则执行步骤S1034;如果初始化看门狗由使能状态变为关闭状态,表明虚拟机120在3分钟内完成初始化,未出现故障,可返回步骤S1031,对下一个虚拟机120的喂狗数据进行分析。
S1034,当所述喂狗数据中的看门狗类型为所述初始化看门狗且所述初始化看门狗的状态未在第一预设时间内由使能状态变为关闭状态时,确定所述虚拟机120在初始化阶段出现故障。
例如,在计时达到3分钟时,如果虚拟机120的初始化看门狗状态仍然为使能状态,则说明该虚拟机120已启动3分钟且没有完成初始化,则宿主机110可确定虚拟机120在初始化阶段出现故障。
步骤S1035,宿主机110判断虚拟机120是否使能运行状态看门狗。
在本实施例中,当宿主机110从喂狗数据中得到看门狗类型为运行状态看门狗,看门狗状态为使能时,则可确定该喂狗数据对应的虚拟机120 使能运行状态看门狗,执行步骤S1036;如果判断虚拟机120没有使能初始化看门狗,则表明该虚拟机120还没有进入运行阶段。
步骤S1036,当所述喂狗数据中的看门狗类型为运行状态看门狗且所述运行状态看门狗为使能状态时,判断喂狗时间是否在第二预设时间内发生变化。
在本实施例中,假设虚拟机120每隔1秒钟喂一次运行状态看门狗,而每次喂狗动作对应的喂狗时间不相同。宿主机110在确定虚拟机120使能运行状态看门狗后,开始计时,每隔1秒钟向内核态读取喂狗数据,对每次读取的喂狗时间进行分析。当计时达到第二预设时间(例如,8秒钟) 时,如果宿主机110读取的喂狗时间持续保持不变,则执行步骤S1037;如果喂狗时间在第二预设时间内有发生变化,则确定该虚拟机120没有出现故障,可返回步骤S1031,对下一个虚拟机120的喂狗数据进行分析。
步骤S1037,当所述喂狗时间未在所述第二预设时间内发生变化时,确定所述虚拟机120在运行阶段出现故障。
例如,宿主机110连续8秒读取到的喂狗时间都是1001,表明虚拟机120已经持续8秒没有喂运行状态看门狗了,由此可确定该虚拟机120 在运行阶段出现故障。
进一步地,当宿主机110检测到虚拟机120出现故障时,还需对虚拟机120进行相应的故障处理,所述方法还包括:
步骤S104,所述宿主机110对出现故障的虚拟机120进行故障处理。
在本实施例中,当宿主机110检测到虚拟机120在运行阶段或在初始化阶段出现故障时,可进行重新启动虚拟机120等故障恢复动作,实现故障处理。
请参照图4,为本发明实施例所提供的虚拟机故障检测装置400的功能模块示意图。需要说明的是,本实施例所提供的虚拟机故障检测装置400,其基本原理及产生的技术效果与上一个实施例相同,为简要描述,本实施例中未提及部分,可参考上一个实施例中的相应内容。所述虚拟机故障检测装置400应用于上述的电子设备,其包括数据写入模块410、字符设备驱动模块130、故障检测模块420。
所述数据写入模块410用于向电子设备中的字符设备驱动模块130发送数据写入指令。
在本实施例中,所述数据写入模块410运行在所述虚拟机120的Linux 用户态,通过发送数据写入指令到字符设备驱动模块130,在内核态中存储对应的喂狗数据。
所述字符设备驱动模块130用于响应电子设备中的虚拟机120的数据写入指令,将所述数据写入指令对应的喂狗数据写入内核态中。
在本实施例中,所述字符设备驱动模块130运行于Linux内核态中,根据虚拟机120中的数据写入模块410发送的数据写入指令,将对应的喂狗数据写入内核态中进行存储。
所述故障检测模块420运行于所述电子设备中的宿主机110,用于向所述字符设备驱动模块130发送数据读取指令。
在本实施例中,所述故障检测模块420运行于所述宿主机110的Linux 用户态,通过发送数据读取指令到字符设备驱动模块130,从内核态中读取虚拟机120的喂狗数据。
所述字符设备驱动模块130还用于依据所述数据读取指令从所述内核态中获取所述喂狗数据并将所述喂狗数据返回至所述故障检测模块 420。
其中,为了使虚拟机120在开始初始化时能够将喂狗数据写入内核态中,所述字符设备驱动模块130包括初始化看门狗使能模块,用于响应所述虚拟机120的第一数据写入指令,将所述第一数据写入指令对应的看门狗类型及对应的看门狗状态写入所述内核态中,其中,所述第一数据写入指令为所述虚拟机120进入初始化阶段时发送给所述字符设备驱动模块 130,所述第一数据写入指令对应的看门狗类型为初始化看门狗,所述第一数据写入指令对应的看门狗状态为使能状态。
为了使虚拟机120在初始化完成时能够将喂狗数据写入内核态中,所述字符设备驱动模块130还包括初始化看门狗关闭模块,用于响应所述虚拟机120的第二数据写入指令,将所述第二数据写入指令对应的看门狗类型及对应的看门狗状态写入所述内核态中,其中,所述第二数据写入指令为所述虚拟机120在初始化完成时发送给所述字符设备驱动模块130,所述第二数据写入指令对应的看门狗类型为所述初始化看门狗,所述第二数据写入指令对应的看门狗状态为关闭状态。
为了使虚拟机120在进入运行状态时能够将喂狗数据写入内核态中,所述字符设备驱动模块130包括运行状态看门狗使能模块,用于响应所述虚拟机120的第三数据写入指令,将所述第三数据写入指令对应的看门狗类型及对应的看门狗状态写入所述内核态中,其中,所述第三数据写入指令为所述虚拟机120进入运行阶段时发送给所述字符设备驱动模块130,所述第三数据写入指令对应的看门狗类型为运行状态看门狗,所述第三数据写入指令对应的看门狗状态为使能状态。
为了使虚拟机120在运行阶段能够实现对运行状态看门狗进行喂狗,并写入相应的喂狗数据,所述字符设备驱动模块130还包括喂狗模块,用于响应所述虚拟机120的第四数据写入指令,将所述第四数据写入指令对应的看门狗类型、看门狗状态以及对应的喂狗时间写入所述内核态中,其中,所述第四数据写入指令为所述虚拟机120在所述运行阶段中对所述运行状态看门狗进行喂狗动作时发送给所述字符设备驱动模块130,所述第四数据写入指令对应的看门狗类型为运行状态看门狗,所述第四数据写入指令对应的看门狗状态为使能状态。
所述故障检测模块420还用于基于所述喂狗数据对所述虚拟机120进行故障检测。
其中,所述故障检测模块420用于当所述喂狗数据中的看门狗类型为所述初始化看门狗且所述初始化看门狗的状态未在第一预设时间内由使能状态变为关闭状态时,确定所述虚拟机120在初始化阶段出现故障。
所述故障检测模块420用于当所述喂狗数据中的看门狗类型为运行状态看门狗且所述运行状态看门狗为使能状态时,判断所述喂狗时间是否在第二预设时间内发生变化;当所述喂狗时间未在所述第二预设时间内发生变化时,确定所述虚拟机120在运行阶段出现故障。
可以理解,所述字符设备驱动模块130可以执行上述步骤S101及步骤S102,所述故障检测模块420可以执行上述步骤S103。
进一步地,为了实现虚拟机120的故障处理,所述装置还包括故障处理模块430,用于对出现故障的虚拟机120进行故障处理。
在本实施例中,故障检测模块420在检测到虚拟机120出现故障时,向故障处理模块430发送异常信息,故障处理模块430在接收到异常信息时可对相应的虚拟机120进行重启等故障恢复动作。
可以理解,所述故障处理模块430可以执行上述步骤S104。
本发明实施例还提供一种计算机可读存储介质,其中,该计算机可读存储介质存储有计算机程序,所述计算机程序被处理器读取并运行时,实现如前的图2所示的方法实施例中记载的全部步骤。
本发明实施例还提供了一种电子设备,包括存储有计算机程序的计算机可读存储介质和处理器,所述计算机程序被所述处理器读取并运行时,实现如前的图2所示的方法实施例中记载的全部步骤。
综上所述,本发明实施例所提供的虚拟机故障检测方法、装置、计算机可读存储介质及电子设备,电子设备中的字符设备驱动模块响应所述电子设备中的虚拟机的数据写入指令,将所述数据写入指令对应的喂狗数据写入内核态中;所述字符设备驱动模块响应所述电子设备中的宿主机的数据读取指令,从所述内核态中获取所述喂狗数据并将所述喂狗数据返回至所述宿主机;所述宿主机基于所述喂狗数据对所述虚拟机进行故障检测。本申请中的虚拟机故障检测方法的检测逻辑简单,可以直接检测多个虚拟机的状态。虚拟机在初始化阶段及运行阶段通过字符设备驱动模块向内核态中存储对应的喂狗数据,然后宿主机通过该字符设备驱动模块从内核态中获取虚拟机的喂狗数据,根据喂狗数据检测虚拟机的状态,不依赖于宿主机与虚拟机之间的通信机制,无论通信机制出现拥塞还是故障,或是在通信机制初始化完成之前,宿主机都能实现对虚拟机的故障检测,可靠性高,普适性强。
本领域内的技术人员应明白,本发明实施例可提供为方法、装置、设备或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、装置、设备和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在本发明实施例所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置和方法实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅为本发明的可选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
Claims (16)
1.一种虚拟机故障检测方法,其特征在于,所述方法包括:
电子设备中的字符设备驱动模块响应所述电子设备中的虚拟机的数据写入指令,将所述数据写入指令对应的喂狗数据写入内核态中;所述字符设备驱动模块运行于所述电子设备的操作系统的内核态;
所述字符设备驱动模块响应所述电子设备中的宿主机的数据读取指令,从所述内核态中获取所述喂狗数据并将所述喂狗数据返回至所述宿主机;
所述宿主机基于所述喂狗数据对所述虚拟机进行故障检测;
其中,所述喂狗数据包括看门狗类型及看门狗状态,所述虚拟机在进入初始化阶段时,通过所述字符设备驱动模块写入所述内核态的喂狗数据中的看门狗类型为初始化看门狗,看门狗状态为使能状态;所述虚拟机在初始化完成时,通过所述字符设备驱动模块写入所述内核态的喂狗数据中的看门狗类型为初始化看门狗,看门狗状态为关闭状态;
所述宿主机基于所述喂狗数据对所述虚拟机进行故障检测,包括:
当所述喂狗数据中的看门狗类型为所述初始化看门狗且所述初始化看门狗的状态未在第一预设时间内由使能状态变为关闭状态时,确定所述虚拟机在初始化阶段出现故障。
2.如权利要求1所述的虚拟机故障检测方法,其特征在于,所述字符设备驱动模块响应所述虚拟机的数据写入指令,将所述数据写入指令对应的喂狗数据写入内核态中,包括:
所述字符设备驱动模块响应所述虚拟机的第一数据写入指令,将所述第一数据写入指令对应的看门狗类型及对应的看门狗状态写入所述内核态中,其中,所述第一数据写入指令为所述虚拟机进入初始化阶段时发送给所述字符设备驱动模块的指令,所述第一数据写入指令对应的看门狗类型为初始化看门狗,所述第一数据写入指令对应的看门狗状态为使能状态。
3.如权利要求2所述的虚拟机故障检测方法,其特征在于,所述字符设备驱动模块响应所述虚拟机的数据写入指令,将所述数据写入指令对应的喂狗数据写入内核态中,包括:
所述字符设备驱动模块响应所述虚拟机的第二数据写入指令,将所述第二数据写入指令对应的看门狗类型及对应的看门狗状态写入所述内核态中,其中,所述第二数据写入指令为所述虚拟机在初始化完成时发送给所述字符设备驱动模块的指令,所述第二数据写入指令对应的看门狗类型为所述初始化看门狗,所述第二数据写入指令对应的看门狗状态为关闭状态。
4.如权利要求1所述的虚拟机故障检测方法,其特征在于,所述字符设备驱动模块响应所述虚拟机的数据写入指令,将所述数据写入指令对应的喂狗数据写入内核态中,包括:
所述字符设备驱动模块响应所述虚拟机的第三数据写入指令,将所述第三数据写入指令对应的看门狗类型及对应的看门狗状态写入所述内核态中,其中,所述第三数据写入指令为所述虚拟机进入运行阶段时发送给所述字符设备驱动模块的指令,所述第三数据写入指令对应的看门狗类型为运行状态看门狗,所述第三数据写入指令对应的看门狗状态为使能状态。
5.如权利要求4所述的虚拟机故障检测方法,其特征在于,所述喂狗数据还包括喂狗时间,所述字符设备驱动模块响应所述虚拟机的数据写入指令,将所述数据写入指令对应的喂狗数据写入内核态中,包括:
所述字符设备驱动模块响应所述虚拟机的第四数据写入指令,将所述第四数据写入指令对应的看门狗类型、看门狗状态以及对应的喂狗时间写入所述内核态中,其中,所述第四数据写入指令为所述虚拟机在所述运行阶段中对所述运行状态看门狗进行喂狗动作时发送给所述字符设备驱动模块的指令,所述第四数据写入指令对应的看门狗类型为运行状态看门狗,所述第四数据写入指令对应的看门狗状态为使能状态。
6.如权利要求5所述的虚拟机故障检测方法,其特征在于,所述宿主机基于所述喂狗数据对所述虚拟机进行故障检测,包括:
当所述喂狗数据中的看门狗类型为运行状态看门狗且所述运行状态看门狗为使能状态时,判断所述喂狗时间是否在第二预设时间内发生变化;
当所述喂狗时间未在所述第二预设时间内发生变化时,确定所述虚拟机在运行阶段出现故障。
7.如权利要求1-6任一项所述的虚拟机故障检测方法,其特征在于,所述虚拟机为多个时,所述喂狗数据还包括每个虚拟机的唯一标识信息。
8.一种虚拟机故障检测方法,其特征在于,应用于电子设备中的字符设备驱动模块,所述字符设备驱动模块运行于所述电子设备的操作系统的内核态;所述方法包括:
响应所述电子设备中的虚拟机的数据写入指令,将所述数据写入指令对应的喂狗数据写入内核态中;
响应所述电子设备中的宿主机的数据读取指令,从所述内核态中获取所述喂狗数据并将所述喂狗数据返回至所述宿主机,以便所述宿主机基于所述喂狗数据对所述虚拟机进行故障检测;
其中,所述喂狗数据包括看门狗类型及看门狗状态,所述虚拟机在进入初始化阶段时,通过所述字符设备驱动模块写入所述内核态的喂狗数据中的看门狗类型为初始化看门狗,看门狗状态为使能状态;所述虚拟机在初始化完成时,通过所述字符设备驱动模块写入所述内核态的喂狗数据中的看门狗类型为初始化看门狗,看门狗状态为关闭状态;
所述宿主机在所述喂狗数据中的看门狗类型为所述初始化看门狗且所述初始化看门狗的状态未在第一预设时间内由使能状态变为关闭状态时,确定所述虚拟机在初始化阶段出现故障。
9.一种虚拟机故障检测装置,其特征在于,所述虚拟机故障检测装置包括:
字符设备驱动模块,用于响应电子设备中的虚拟机的数据写入指令,将所述数据写入指令对应的喂狗数据写入内核态中;所述字符设备驱动模块运行于所述电子设备的操作系统的内核态;
故障检测模块,运行于所述电子设备中的宿主机,用于向所述字符设备驱动模块发送数据读取指令;
所述字符设备驱动模块还用于依据所述数据读取指令从所述内核态中获取所述喂狗数据并将所述喂狗数据返回至所述故障检测模块;
所述故障检测模块还用于基于所述喂狗数据对所述虚拟机进行故障检测;
其中,所述喂狗数据包括看门狗类型及看门狗状态,所述虚拟机在进入初始化阶段时,通过所述字符设备驱动模块写入所述内核态的喂狗数据中的看门狗类型为初始化看门狗,看门狗状态为使能状态;所述虚拟机在初始化完成时,通过所述字符设备驱动模块写入所述内核态的喂狗数据中的看门狗类型为初始化看门狗,看门狗状态为关闭状态;
所述故障检测模块用于当所述喂狗数据中的看门狗类型为所述初始化看门狗且所述初始化看门狗的状态未在第一预设时间内由使能状态变为关闭状态时,确定所述虚拟机在初始化阶段出现故障。
10.如权利要求9所述的虚拟机故障检测装置,其特征在于,所述字符设备驱动模块包括初始化看门狗使能模块,用于响应所述虚拟机的第一数据写入指令,将所述第一数据写入指令对应的看门狗类型及对应的看门狗状态写入所述内核态中,其中,所述第一数据写入指令为所述虚拟机进入初始化阶段时发送给所述字符设备驱动模块的指令,所述第一数据写入指令对应的看门狗类型为初始化看门狗,所述第一数据写入指令对应的看门狗状态为使能状态。
11.如权利要求10所述的虚拟机故障检测装置,其特征在于,所述字符设备驱动模块还包括初始化看门狗关闭模块,用于响应所述虚拟机的第二数据写入指令,将所述第二数据写入指令对应的看门狗类型及对应的看门狗状态写入所述内核态中,其中,所述第二数据写入指令为所述虚拟机在初始化完成时发送给所述字符设备驱动模块的指令,所述第二数据写入指令对应的看门狗类型为所述初始化看门狗,所述第二数据写入指令对应的看门狗状态为关闭状态。
12.如权利要求9所述的虚拟机故障检测装置,其特征在于,所述字符设备驱动模块包括运行状态看门狗使能模块,用于响应所述虚拟机的第三数据写入指令,将所述第三数据写入指令对应的看门狗类型及对应的看门狗状态写入所述内核态中,其中,所述第三数据写入指令为所述虚拟机进入运行阶段时发送给所述字符设备驱动模块的指令,所述第三数据写入指令对应的看门狗类型为运行状态看门狗,所述第三数据写入指令对应的看门狗状态为使能状态。
13.如权利要求12所述的虚拟机故障检测装置,其特征在于,所述喂狗数据还包括喂狗时间,所述字符设备驱动模块还包括喂狗模块,用于响应所述虚拟机的第四数据写入指令,将所述第四数据写入指令对应的看门狗类型、看门狗状态以及对应的喂狗时间写入所述内核态中,其中,所述第四数据写入指令为所述虚拟机在所述运行阶段中对所述运行状态看门狗进行喂狗动作时发送给所述字符设备驱动模块的指令,所述第四数据写入指令对应的看门狗类型为运行状态看门狗,所述第四数据写入指令对应的看门狗状态为使能状态。
14.如权利要求13所述的虚拟机故障检测装置,其特征在于,所述故障检测模块用于当所述喂狗数据中的看门狗类型为运行状态看门狗且所述运行状态看门狗为使能状态时,判断所述喂狗时间是否在第二预设时间内发生变化;
当所述喂狗时间未在所述第二预设时间内发生变化时,确定所述虚拟机在运行阶段出现故障。
15.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器读取并运行时,实现如权利要求1-6任一项所述的方法。
16.一种电子设备,其特征在于,包括存储有计算机程序的计算机可读存储介质和处理器,所述计算机程序被所述处理器读取并运行时,实现如权利要求1-6任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711474999.3A CN109992466B (zh) | 2017-12-29 | 2017-12-29 | 虚拟机故障检测方法、装置、计算机可读存储介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711474999.3A CN109992466B (zh) | 2017-12-29 | 2017-12-29 | 虚拟机故障检测方法、装置、计算机可读存储介质及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109992466A CN109992466A (zh) | 2019-07-09 |
CN109992466B true CN109992466B (zh) | 2022-09-16 |
Family
ID=67108713
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711474999.3A Active CN109992466B (zh) | 2017-12-29 | 2017-12-29 | 虚拟机故障检测方法、装置、计算机可读存储介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109992466B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111880906A (zh) * | 2020-08-03 | 2020-11-03 | 广东省华南技术转移中心有限公司 | 虚拟机高可用性管理方法、系统以及存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105354103A (zh) * | 2014-12-19 | 2016-02-24 | 汉柏科技有限公司 | 一种用户态下管理watchdog的方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7000100B2 (en) * | 2001-05-31 | 2006-02-14 | Hewlett-Packard Development Company, L.P. | Application-level software watchdog timer |
CN100504899C (zh) * | 2006-08-29 | 2009-06-24 | 联想(北京)有限公司 | 一种软件看门狗系统和方法 |
US8572609B2 (en) * | 2009-07-01 | 2013-10-29 | Riverbed Technology, Inc. | Configuring bypass functionality of a network device based on the state of one or more hosted virtual machines |
CN102902599B (zh) * | 2012-09-17 | 2016-08-24 | 华为技术有限公司 | 虚拟机内部故障处理方法、装置及系统 |
CN103793288B (zh) * | 2014-02-14 | 2017-07-18 | 北京邮电大学 | 一种软件看门狗系统及方法 |
CN104199753B (zh) * | 2014-09-04 | 2018-05-29 | 中标软件有限公司 | 一种虚拟机应用服务故障恢复系统及其故障恢复方法 |
TWI529624B (zh) * | 2015-03-19 | 2016-04-11 | Univ Nat Central | Method and system of fault tolerance for multiple servers |
-
2017
- 2017-12-29 CN CN201711474999.3A patent/CN109992466B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105354103A (zh) * | 2014-12-19 | 2016-02-24 | 汉柏科技有限公司 | 一种用户态下管理watchdog的方法 |
Non-Patent Citations (1)
Title |
---|
Linux看门狗管理及在DM8168芯片上的应用;刘永红;《单片机与嵌入式系统应用》;20151201(第12期);50-53 * |
Also Published As
Publication number | Publication date |
---|---|
CN109992466A (zh) | 2019-07-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9146839B2 (en) | Method for pre-testing software compatibility and system thereof | |
EP3142011B9 (en) | Anomaly recovery method for virtual machine in distributed environment | |
US10216550B2 (en) | Technologies for fast boot with adaptive memory pre-training | |
JP5692414B2 (ja) | 検知装置、検知プログラムおよび検知方法 | |
CN104809045B (zh) | 监控脚本的运行方法及装置 | |
WO2019237710A1 (zh) | 一种gpu服务器的显卡的识别方法、装置、设备及介质 | |
US20150331733A1 (en) | Tag based selection of test scripts for failure analysis | |
CN112199240B (zh) | 一种节点故障时进行节点切换的方法及相关设备 | |
CN101156137A (zh) | 选择子例程返回机制 | |
CN110457907B (zh) | 一种固件程序检测方法和装置 | |
US9703651B2 (en) | Providing availability of an agent virtual computing instance during a storage failure | |
CN114327662B (zh) | 操作系统的处理方法及装置、存储介质和处理器 | |
CN108090352B (zh) | 检测系统及检测方法 | |
CN109992466B (zh) | 虚拟机故障检测方法、装置、计算机可读存储介质及电子设备 | |
CN109002348B (zh) | 一种虚拟化系统中的负载均衡方法及装置 | |
US20170269988A1 (en) | Determining problem solutions based on system state data | |
US20230088318A1 (en) | Remotely healing crashed processes | |
CN112559248B (zh) | 预处理服务恢复方法、装置、设备及存储介质 | |
KR20230004235A (ko) | 제어 장치, 제어 방법, 및 프로그램 | |
CN107783827B (zh) | 异步任务处理方法及装置 | |
US9959225B2 (en) | Computer apparatus and control method of computer apparatus | |
JP2021069009A (ja) | 情報処理システム、情報処理システムの制御方法、情報処理装置、及びプログラム | |
CN111221628A (zh) | 虚拟化平台上对虚拟机文件的安全检测方法及装置 | |
CN111400113A (zh) | 一种计算机系统的整机自检方法、装置及系统 | |
CN114978891B (zh) | 网络设备bios配置的处理方法、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |