一种基于KVM虚拟化的虚拟机高可用的方法与装置与流程

文档序号:11276160阅读:385来源:国知局
一种基于KVM虚拟化的虚拟机高可用的方法与装置与流程

本发明涉及虚拟机技术领域,特别是涉及一种基于kvm虚拟化的虚拟机高可用的方法与装置。



背景技术:

虚拟机(virtualmachine,vm)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。

传统方式中,为了实现vm高可用的功能,通常依赖上层管理策略,监控到vm异常后,在另一节点重启该vm,以保证vm业务的正常运行。但是,这种方法的缺点在于,vm重启过程中,其上的所有应用会中断服务,并且伴随有无法恢复的风险。并且,目前,对于基于kernel的虚拟机(kernel-basedvirtualmachine,kvm)虚拟化并没有提供虚拟机高可用的功能。

可见,如何实现基于kvm虚拟化的虚拟机的高可用,是本领域技术人员亟待解决的问题。



技术实现要素:

本发明实施例的目的是提供一种基于kvm虚拟化的虚拟机高可用的方法与装置,可以实现基于kvm虚拟化的虚拟机的高可用。

为解决上述技术问题,本发明实施例提供一种基于kvm虚拟化的虚拟机高可用的方法,包括:

备份虚拟机接收到主虚拟机发送的tcp连接请求后,向所述主虚拟机发送响应消息;所述备份虚拟机位于备份节点上;所述主虚拟机与所述备份虚拟机使用同一个文件系统;

所述备份虚拟机接收到所述主虚拟机发送的目标数据后,将所述目标数据存储于对应的缓冲区,并向所述主虚拟机发送反馈信息;

所述备份虚拟机接收到所述主虚拟机发送的特定报文后,或者是在预设时间内未接收到所述主虚拟机发送的目标数据时,则启动对应的虚拟cpu,代替所述主虚拟机工作。

可选的,在所述将所述目标数据存储于对应的缓冲之后,还包括:

将所述缓冲区中的目标数据还原为虚拟内存数据和虚拟设备数据,并将所述虚拟内存数据保存至对应的虚拟内存中,将所述虚拟设备数据保存至对应的虚拟设备中。

可选的,还包括:

在规定时间内未接收到所述主虚拟机发送的所述目标数据时,则向所述主虚拟机发送获取目标数据的请求;所述规定时间小于所述预设时间。

本发明实施例还提供了一种基于kvm虚拟化的虚拟机高可用的装置,包括接收单元、发送单元和启动单元,

所述接收单元,用于接收主虚拟机发送的tcp连接请求,并触发所述发送单元,向所述主虚拟机发送响应消息;所述备份虚拟机位于备份节点上;所述主虚拟机与所述备份虚拟机使用同一个文件系统;

所述接收单元还用于接收所述主虚拟机发送的目标数据,将所述目标数据存储于对应的缓冲区,并触发所述发送单元,所述发送单元还用于向所述主虚拟机发送反馈信息;

所述启动单元,用于当接收到所述主虚拟机发送的特定报文后,或者是在预设时间内未接收到所述主虚拟机发送的目标数据时,则启动对应的虚拟cpu,代替所述主虚拟机工作。

可选的,还包括还原单元,

所述还原单元,用于将所述缓冲区中的目标数据还原为虚拟内存数据和虚拟设备数据,并将所述虚拟内存数据保存至对应的虚拟内存中,将所述虚拟设备数据保存至对应的虚拟设备中。

可选的,所述发送单元还用于在规定时间内未接收到所述主虚拟机发送的所述目标数据时,则向所述主虚拟机发送获取目标数据的请求;所述规定时间小于所述预设时间。

由上述技术方案可以看出,在备份节点上设置一个备份虚拟机,该备份虚拟机可以作为主虚拟机的镜像虚拟机,备份虚拟机接收到主虚拟机发送的tcp连接请求后,向所述主虚拟机发送响应消息,实现与主虚拟机的连接。建立连接关系后,主虚拟机可以向备份虚拟机发送目标数据,备份虚拟机接收到主虚拟机发送的目标数据后,可以将目标数据存储于对应的缓冲区,并向所述主虚拟机发送反馈信息;主虚拟机通过发送目标数据的方式,可以实现备份虚拟机和主虚拟机数据的同步。当备份虚拟机接收到所述主虚拟机发送的特定报文后,或者是在预设时间内未接收到所述主虚拟机发送的目标数据时,则说明主虚拟机所在的主节点出现了故障,也即主虚拟机已将无法正常工作,此时备份虚拟机可以启动对应的虚拟cpu,代替所述主虚拟机工作。可见,通过设置备份虚拟机,并且保持备份虚拟机与主虚拟机数据的同步,可以在主节点发生故障时将主虚拟机的进程立即切换到备份节点,由备份虚拟机代替主虚拟机工作,该过程可以达到无缝切换的效果,对虚拟机内服务不会产生影响,实现了虚拟机的高可用。

附图说明

为了更清楚地说明本发明实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种基于kvm虚拟化的虚拟机高可用的方法的流程图;

图2为本发明实施例提供的一种主虚拟机和备份虚拟机结构的示意图;

图3为本发明实施例提供的一种基于kvm虚拟化的虚拟机高可用的装置的结构示意图。

具体实施方式

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

为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。

接下来,详细介绍本发明实施例所提供的一种基于kvm虚拟化的虚拟机高可用的方法。图1为本发明实施例提供的一种基于kvm虚拟化的虚拟机高可用的方法的流程图,该方法包括:

s101:备份虚拟机接收到主虚拟机发送的tcp连接请求后,向所述主虚拟机发送响应消息。

在本发明实施例中,为了保证主节点上的虚拟机(可以将该虚拟机称为主虚拟机)业务的连续性,可以在备份节点上创建一个备份虚拟机。该备份虚拟机相当于是主虚拟机的镜像虚拟机,其完全按照主虚拟机的定义进行创建。

如图2所示,为主虚拟机和备份虚拟机的结构示意图,每台虚拟机中包含有虚拟cpu、虚拟内存和虚拟设备,其中虚拟内存可以用于存储虚拟内存数据,虚拟设备可以用于存储虚拟设备数据。主节点运行正常时,主虚拟机的虚拟cpu处于开启状态,而备份虚拟机上的虚拟cpu处于锁定状态,其中,两台虚拟机共享一个文件系统。

为了实现两个虚拟机之间的数据同步,两台虚拟机需要先建立连接关系。主虚拟机可以通过特定的端口向备份虚拟机发送tcp连接请求,备份虚拟机在接收到该tcp连接请求后,可以向主虚拟机发送响应消息,以便于主虚拟机可以依据该响应消息,确认与备份虚拟机已经连接成功。

s102:所述备份虚拟机接收到所述主虚拟机发送的目标数据后,将所述目标数据存储于对应的缓冲区,并向所述主虚拟机发送反馈信息。

在本发明实施例中,为了使得虚拟机能够尽可能快的保存与接收数据,在主虚拟机和备份虚拟机中可以预先设置缓冲区,这两个缓冲区位于同一个文件系统中。

主虚拟机可以将需要传输的虚拟内存数据以及虚拟设备数据结构化的保存至其对应的缓冲区中,为便于后续介绍,可以将主虚拟机中的这些数据称作目标数据。当主虚拟机接收到备份虚拟机发送的响应信息后,则说明连接已经建立成功,主虚拟机便可以将目标数据发送给所述备份虚拟机。

考虑到目标数据的数据量往往较大,在传输目标数据时可以对其进行分段处理,并对每段数据进行标号,以便于备份虚拟机可以识别出各段数据之间的前后顺序。

例如,可以将目标数据切分成10个数据段,依次标号为0-9,编号0的数据段即为第一个数据段,标号为9的数据段即为该目标数据的最后一个数据段。

在本发明实施例中,可以将主虚拟机向备份虚拟机传输一次目标数据看做是一次完整的数据同步的过程,由于每次传输的目标数据的数据量大小不尽相同,相应的,对其进行切分的段数也并非固定不变。为了便于备份虚拟机可以识别出哪个数据段是目标数据的第一个数据段,哪个数据段是目标数据的最后一个数据段,主虚拟机在向备份虚拟机发送各个数据段时,在第一个数据段和最后一个数据段中可以携带相应的标识信息。

例如,可以在第一段数据中携带“transferbegin”标识,在最后一个数据段中携带“transferfinish”标识。

备份虚拟机在接收到一个数据段后,便可以向主虚拟机发送一个响应信息,例如,可以发送携带“transferverify”标识的数据段作为反馈信息,以便于主虚拟机依据该反馈信息可以获知数据段已经发送成功。

s103:所述备份虚拟机接收到所述主虚拟机发送的特定报文后,或者是在预设时间内未接收到所述主虚拟机发送的目标数据时,则启动对应的虚拟cpu,代替所述主虚拟机工作。

在上述s102中可以实现主虚拟机与备份虚拟机数据的同步,在数据同步期间,备份虚拟机的虚拟cpu处于锁定状态,即备份虚拟机并不提供实质性的业务服务。

当主虚拟机所属的主节点发生故障时,为了保证主虚拟机上业务的连续性,可以将备份虚拟机的虚拟cpu激活,由备份虚拟机代替主虚拟机,继续执行主虚拟机的业务。

其中,激活备份虚拟机的虚拟cpu可以有两种方式,一种方式,可以是主虚拟机向备份虚拟机发送状态异常的报文。在具体实现中,可以通过指定信号或信号集设置处理句柄,主节点在发生故障时,会触发该处理句柄发出信号异常指令,主虚拟机捕捉到该信号异常指令后,继续传输完成正在同步的数据,并后向备份虚拟机发送状态异常的报文,备份虚拟机在接收到该报文后,便可以将其对应的虚拟cpu激活。

另一种方式,可以是备份虚拟机自行激活其对应的虚拟cpu。当主节点出现故障时,此时主虚拟机将无法产生新的目标数据,也即备份虚拟机将无法获取到新的目标数据。依据数据传输的时间,可以设置相应的预设时间,当备份虚拟机在预设时间内未接收到新的目标数据时,则可以说明主节点出现了故障,此时,备份虚拟机可以主动激活自身的虚拟cpu,以接替主虚拟机的工作,以保证主虚拟机上原本业务的连续。

由上述技术方案可以看出,在备份节点上设置一个备份虚拟机,该备份虚拟机可以作为主虚拟机的镜像虚拟机,备份虚拟机接收到主虚拟机发送的tcp连接请求后,向所述主虚拟机发送响应消息,实现与主虚拟机的连接。建立连接关系后,主虚拟机可以向备份虚拟机发送目标数据,备份虚拟机接收到主虚拟机发送的目标数据后,可以将目标数据存储于对应的缓冲区,并向所述主虚拟机发送反馈信息;主虚拟机通过发送目标数据的方式,可以实现备份虚拟机和主虚拟机数据的同步。当备份虚拟机接收到所述主虚拟机发送的特定报文后,或者是在预设时间内未接收到所述主虚拟机发送的目标数据时,则说明主虚拟机所在的主节点出现了故障,也即主虚拟机已将无法正常工作,此时备份虚拟机可以启动对应的虚拟cpu,代替所述主虚拟机工作。可见,通过设置备份虚拟机,并且保持备份虚拟机与主虚拟机数据的同步,可以在主节点发生故障时将主虚拟机的进程立即切换到备份节点,由备份虚拟机代替主虚拟机工作,该过程可以达到无缝切换的效果,对虚拟机内服务不会产生影响,实现了虚拟机的高可用。

为了快速接收数据,备份虚拟机可以将接收的目标数据先存储于其对应的缓冲区中,其中,依据数据类型的不同,目标数据可以分为虚拟内存数据和虚拟设备数据。由图2可以是看出,备份虚拟机中有相应的虚拟内存和虚拟设备,因此,备份虚拟机在接收到目标数据后,可以将所述缓冲区中的目标数据还原为虚拟内存数据和虚拟设备数据,并将所述虚拟内存数据保存至对应的虚拟内存中,将所述虚拟设备数据保存至对应的虚拟设备中。

考虑到受网络因素的影响,可能会出现备份虚拟机无法成功接收到目标数据的情况,针对该种情况,备份虚拟机可以向主虚拟机发送获取目标数据的请求。具体的,当备份虚拟机在规定时间内未接收到所述主虚拟机发送的所述目标数据时,则向所述主虚拟机发送获取目标数据的请求。

结合上述将目标数据分段传输的方式,每段数据都有其对应的标号信息,当备份虚拟机未接收到某一个数据段时,则可以在向主虚拟机发送获取目标数据的请求中携带该数据段标号信息。

在上述激活备份虚拟机的虚拟cpu的第二种方式中涉及到了预设时间,为了避免将重新发送数据与激活虚拟cpu混淆,可以将规定时间设置的小于所述预设时间。

图3为本发明实施例提供的一种基于kvm虚拟化的虚拟机高可用的装置的结构示意图,包括接收单元31、发送单元32和启动单元33,

所述接收单元31,用于接收主虚拟机发送的tcp连接请求,并触发所述发送单元32,向所述主虚拟机发送响应消息;所述备份虚拟机位于备份节点上;所述主虚拟机与所述备份虚拟机使用同一个文件系统。

所述接收单元31还用于接收所述主虚拟机发送的目标数据,将所述目标数据存储于对应的缓冲区,并触发所述发送单元32,所述发送单元32还用于向所述主虚拟机发送反馈信息;

所述启动单元33,用于当接收到所述主虚拟机发送的特定报文后,或者是在预设时间内未接收到所述主虚拟机发送的目标数据时,则启动对应的虚拟cpu,代替所述主虚拟机工作。

可选的,还包括还原单元,

所述还原单元,用于将所述缓冲区中的目标数据还原为虚拟内存数据和虚拟设备数据,并将所述虚拟内存数据保存至对应的虚拟内存中,将所述虚拟设备数据保存至对应的虚拟设备中。

可选的,所述发送单元还用于在规定时间内未接收到所述主虚拟机发送的所述目标数据时,则向所述主虚拟机发送获取目标数据的请求;所述规定时间小于所述预设时间。

图3所对应实施例中特征的说明可以参见图1所对应实施例的相关说明,这里不再一一赘述。

由上述技术方案可以看出,在备份节点上设置一个备份虚拟机,该备份虚拟机可以作为主虚拟机的镜像虚拟机,备份虚拟机接收到主虚拟机发送的tcp连接请求后,向所述主虚拟机发送响应消息,实现与主虚拟机的连接。建立连接关系后,主虚拟机可以向备份虚拟机发送目标数据,备份虚拟机接收到主虚拟机发送的目标数据后,可以将目标数据存储于对应的缓冲区,并向所述主虚拟机发送反馈信息;主虚拟机通过发送目标数据的方式,可以实现备份虚拟机和主虚拟机数据的同步。当备份虚拟机接收到所述主虚拟机发送的特定报文后,或者是在预设时间内未接收到所述主虚拟机发送的目标数据时,则说明主虚拟机所在的主节点出现了故障,也即主虚拟机已将无法正常工作,此时备份虚拟机可以启动对应的虚拟cpu,代替所述主虚拟机工作。可见,通过设置备份虚拟机,并且保持备份虚拟机与主虚拟机数据的同步,可以在主节点发生故障时将主虚拟机的进程立即切换到备份节点,由备份虚拟机代替主虚拟机工作,该过程可以达到无缝切换的效果,对虚拟机内服务不会产生影响,实现了虚拟机的高可用。

以上对本发明实施例所提供的一种基于kvm虚拟化的虚拟机高可用的方法与装置进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

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