基于kvm虚拟化的虚拟机容错方法

文档序号:8208999阅读:815来源:国知局
基于kvm虚拟化的虚拟机容错方法
【技术领域】
[0001]本发明涉及一种虚拟机容错方法,具体地,涉及一种基于KVM虚拟化的虚拟机容错方法。
【背景技术】
[0002]目前KVM(基于内核的虚拟机)虚拟化没有提供虚拟机容错(fault tolerance)功能,一般对于KVM虚机的容错功能基于以下两种方法:
[0003]一,依赖上层管理策略,监控发现虚机异常后,在另一节点重启该虚机,这种方法的缺点在于,虚拟机在重启过程,其上的所有应用都会中断服务,并且有无法恢复的风险;
[0004]二,启动多个虚机,为虚机内某个应用(比如Web应用)做集群,达到单个应用层面的容错,这种方法的缺点在于只能针对单个应用做容错,并且并非所有应用程序都具备集群功能。

【发明内容】

[0005]针对现有技术中的缺陷,本发明的目的是提供一种基于KVM虚拟化的虚拟机容错方法,其在虚拟化层控制提供虚拟机容错功能,在主节点发生异常时虚机进程能够迅速切换到旁路备份节点,对虚拟机内服务不产生影响,达到无缝容错的效果。
[0006]根据本发明的一个方面,提供一种基于KVM虚拟化的虚拟机容错方法,其特征在于,包括以下步骤:
[0007]步骤一,针对主宿主节点准备从宿主节点,一般从宿主节点物理资源与主宿主节点相符,以便在住宿主节点故障时能够完全接管承载其上的虚拟机资源;主从宿主节点之间共享虚拟机磁盘所在的共享文件系统;
[0008]步骤二,在从宿主节点上启动从虚拟机,作为主虚拟机的镜像虚拟机,主虚拟机的定义和从虚拟机的定义必须相同;从虚拟机启动开始,虚拟CPU处于锁定状态,通过监听指定的TCP端口,等待接收主虚拟机发送来的同步请求;
[0009]步骤三,主虚拟机主动发起数据同步请求;
[0010]步骤四,主虚拟机和从虚拟机进入循环同步阶段;
[0011]步骤五,触发容错后,从虚拟机将启动虚拟CPU。
[0012]优选地,步骤三包括以下步骤:
[0013]步骤三十一,为使内存及状态数据能够尽可能快的保存与接受,主虚拟机、从虚拟机均预先在本地构造缓存空间;
[0014]步骤三十二,主虚拟机通过第二步指定的端口向从虚拟机发起TCP连接,并确认连接成功;
[0015]步骤三十三,主虚拟机将需要传输的虚拟内存及虚拟设备数据结构化地保存至本地缓存池中;
[0016]步骤三十四,通过数据通道,主虚拟机首先发送传输启动通知至从虚拟机,接着发送本次迭代保存的脏数据,最后发送传输完成通知,并等待从虚拟机发送来的传输确认通知;
[0017]步骤三十五,从虚拟机接受数据,将数据暂存于步骤三十一构造的缓冲池中,并向主虚拟机发送传输完成数据段,之后再由缓冲池中的数据构造还原出虚拟机内存和虚拟机设备状态数据,最后开始等待接受下一次循环的数据流;
[0018]步骤三十六,主虚拟机接收到从虚拟机发送的传输确认报文后,一次完整的同步过程完成;由主虚拟机端统计传输数据量和传输时间,可用于传输频率控制;
[0019]步骤三十七,循环执行以上步骤三十三至步骤三十六步骤,将不断同步传输虚拟机内存数据与设备状态数据到从虚拟机端,直到主虚拟机发生异常,触发容错切换动作。
[0020]优选地,所述步骤三十三前后需要为虚拟机I/O线程进行申请或释放锁的操作。
[0021]优选地,所述步骤五启动虚拟CPU后,从虚拟机立刻还原到主虚拟机运行的状态。
[0022]与现有技术相比,本发明具有如下的有益效果:本发明在虚拟化层控制提供虚拟机容错功能,在主节点发生异常时虚机进程能够迅速切换到旁路备份节点,对虚拟机内服务不产生影响,达到无缝容错的效果。
【附图说明】
[0023]通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
[0024]图1为本发明中主宿主机、从宿主机、共享文件系统部署的示意图。
[0025]图2为本发明中主虚拟机、从虚拟机部署的示意图。
[0026]图3为本发明中循环同步过程的示意图。
[0027]图4为本发明中虚拟机容错触发的示意图。
【具体实施方式】
[0028]下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进。这些都属于本发明的保护范围。
[0029]本发明构造一个从属虚拟机,使其不断接受主虚拟机同步来的变化数据,并能在主虚拟机发生故障时进行切换,将主虚拟机的运行态转移到从虚拟机中。
[0030]本发明基于KVM虚拟化的虚拟机容错方法包括以下步骤:
[0031]步骤一,针对主宿主节点(master-host)准备从宿主节点(slave-host),一般从宿主节点物理资源与主宿主节点相符,以便在住宿主节点故障时能够完全接管承载其上的虚拟机资源;主从宿主节点之间共享虚拟机磁盘所在的共享文件系统,以此保障主宿主节点异常后,从宿主节点仍能通过共享文件系统读写虚拟机磁盘文件内容;如图1所示,主宿主节点位于主宿主机内,从宿主节点位于从宿主机内。
[0032]步骤二,如图2所示,在从宿主节点上启动从虚拟机(slave-vm),作为主虚拟机(master-vm)的镜像虚拟机,主虚拟机的定义和从虚拟机的定义必须相同(如虚拟网卡mac地址,虚拟CPU型号等),以便从虚拟机能够接管主虚拟机提供的所有虚拟设备;从虚拟机启动开始,虚拟CPU处于锁定状态,通过监听指定的TCP端口,等待接收主虚拟机发送来的同步请求;
[0033]步骤三,主虚拟机主动发起数据同步请求,具体请求流程如下:
[0034]步骤三十一,为使内存及状态数据能够尽可能快的保存与接受,主虚拟机、
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1