首页> 中国专利> 虚拟化系统及虚机间高速通信方法

虚拟化系统及虚机间高速通信方法

摘要

本申请公开了一种虚拟化系统及虚机间高速通信方法,该虚拟化系统包括包括物理内存和N个虚机,N为正整数;所述物理内存包括共享内存区;每个虚机包括所述共享内存区的映射。该虚拟化系统及虚机间高速通信方法,能够实现虚机间的高速通信。

著录项

  • 公开/公告号CN114791844A

    专利类型发明专利

  • 公开/公告日2022-07-26

    原文格式PDF

  • 申请/专利权人 北京和利时系统工程有限公司;

    申请/专利号CN202210348964.X

  • 发明设计人 杨永明;白少波;康军凯;孟勋;

    申请日2022-04-01

  • 分类号G06F9/455;G06F9/50;

  • 代理机构北京安信方达知识产权代理有限公司;

  • 代理人吴凤凰;解婷婷

  • 地址 100176 北京市大兴区北京经济技术开发区地盛中路2号院

  • 入库时间 2023-06-19 16:08:01

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-07-26

    公开

    发明专利申请公布

说明书

技术领域

本申请涉及计算机技术领域,尤指一种虚拟化系统及虚机间高速通信方法。

背景技术

当前应用场景中,所有虚机都在同一台物理机上运行。其中包括宿主机0、虚机1、虚机2。如果三个虚机之间需要通信,则使用虚拟网桥搭建的方式让三个虚机之间形成一个通路(如图1所示)。然后在每个虚机之间均使用软件模拟一个虚拟网卡。每两个虚拟之间需要通信,则通过虚机之间的虚拟网卡两两先建立通信,然后再进行虚机之间的通信。

既有的虚机间通过虚拟网卡通信方式,存在以下问题:如果一个虚机想要把相同的信息发给不同的虚机,则需要分别建立两个通道分别进行信息发送。实际应用中不止想要两个虚机之间进行数据交互,还想实现多个虚拟对同一信息的同步访问。而网络通信机制存在不易接口化、难扩展和维护难等问题,容易出现各虚机间信息传递缺失或者不准确的问题。

发明内容

本申请提供了一种虚拟化系统及虚机间高速通信方法,能够实现虚机间的高速通信。

本申请提供了一种虚拟化系统,包括物理内存和N个虚机,N为正整数;

所述物理内存包括共享内存区;

每个虚机包括所述共享内存区的映射。

一种示例性的实施例中,所述共享内存区包括表头和子数据区;

所述表头包括M个描述表;M为正整数;

所述子数据区包括M个数据区;

每个数据区包括A区和B区。

一种示例性的实施例中,所述描述表包括如下信息:创建状态标记、数据的写权限拥有者、数据的读权限拥有者、数据长度、有效数据区标志、A区数据的偏移和B区数据的偏移。

一种示例性的实施例中,每个A区和B区都包括数据头和负载数据;

所述数据头包括数据实际长度、数据的校验、数据的更新次数和数据的时间戳。

本申请提供了一种虚机间高速通信方法,应用于上述的虚拟化系统,包括:

当虚机需要将待写入的数据写入共享内存区的子数据区时,调用写消息接口;

在判断所述虚机具有子数据区的写权限并对所述待写入的数据校验成功的情况下,查找到所述子数据区中的数据操作区;

获取数据操作区的位置信息;将所述待写入的数据写入所述位置信息所指示的位置。

一种示例性的实施例中,在虚机需要将待写入的数据写入子数据区之前,包括:

启动所述虚机对应的宿主机,并对所述宿主机进行初始化;

所述对所述宿主机进行初始化,包括:

当判断未创建共享内存区时,创建所述共享内存区;并按照各虚机的预设信息对所述共享内存区的表头进行初始化;

并将初始化后的共享内存区映射到所述宿主机的每个虚机。

一种示例性的实施例中,所述将所述待写入的数据写入所述位置信息所指示的位置之后,包括:

更新所述数据操作区的数据头信息;

将数据操作区标记为数据有效区。

本申请提供了一种虚机间高速通信方法,应用于上述的虚拟化系统,包括:

当虚机需要读取子数据区的数据时,调用读消息接口;

在判断所述虚机具有子数据区的读权限后,查找到所述子数据区中的数据有效区;

获取所述数据有效区的位置信息;

根据所述位置信息读取数据。

一种示例性的实施例中,根据所述位置信息读取数据,包括:

从所述位置信息所指示的位置读取所述数据有效区的数据头以及所述数据有效区的负载数据;

对所述负载数据进行校验;

若检验通过,则返回需要读取的数据。

一种示例性的实施例中,包括:

若检验不通过,则判定读取数据区的数据失败。

本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的其他优点可通过在说明书以及附图中所描述的方案来实现和获得。

附图说明

附图用来提供对本申请技术方案的理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本申请的技术方案,并不构成对本申请技术方案的限制。

图1为现有技术的虚机间通讯的示意图;

图2为本申请实施例的虚拟化系统的示意图;

图3为本申请实施例的虚拟化系统示例的示意图;

图4为本申请实施例的共享内存区数据分布的示意图;

图5为本申请实施例的子数据区写入数据的流程图;

图6为本申请实施例的读取子数据区数据的流程图。

具体实施方式

图2为本申请实施例的虚拟化系统的示意图,如图2所示,本实施例的虚拟化系统包括一种虚拟化系统,包括物理内存和N个虚机;

所述物理内存包括共享内存区;

每个虚机包括所述共享内存区的映射。

一种示例性的实施例中,所述虚机可以包括宿主机和虚拟机,宿主机用于管理虚拟机,宿主机也是使用虚拟内存。

一种示例性的实施例中,所述共享内存区包括表头和子数据区;

所述表头包括M个描述表;

所述子数据区包括M个数据区;

每个数据区包括A区和B区。

一种示例性的实施例中,所述描述表包括如下信息:创建状态标记、数据的写权限拥有者、数据的读权限拥有者、数据长度、有效数据区标志、A区数据的偏移和B区数据的偏移。

一种示例性的实施例中,N为正整数。

一种示例性的实施例中,M为正整数。

一种示例性的实施例中,所述描述表包括如下信息:创建状态标记、数据的写权限拥有者、数据的读权限拥有者、数据长度、有效数据区标志、A区数据的偏移和B区数据的偏移;

一种示例性的实施例中,所述N个数据区与所述N个虚机可以为一一对应的关系,所述N个数据区与所述N个虚机也可以为多对一的关系。例如:虚机只有三个,分别为1号虚机、2号虚机、3号虚机。假设有5个数据区,分别为1区、2区、3区、4区、5区。1号虚机可以有其中三个数据区(例如,1区、2区、3区)的写权限,2号虚机可以仅有另外一个数据区(例如,4区)的写权限,3号虚机有5区的写权限。三个虚机都有这五个数据区的读权限。数据的写权限是只能由一个虚机或者宿主机拥有,但是一个虚拟或者宿主机可以有多个可写的数据区,也可以连一个写权限数据区也没有,可以仅有读权限。

一种示例性的实施例中,每个A区和B区都包括数据头和负载数据;

所述数据头包括数据实际长度、数据的校验、数据的更新次数和数据的时间戳。

本申请实施例通过在物理内存创建共享内存区,并将共享内存区映射到每个虚机,虚机可以将数据写入共享内存区,也可以从共享内存区读取数据,从而实现了虚机间的高速通信。

基于上述虚机化系统的数据写入和数据读取如下:

当虚机需要将待写入的数据写入共享内存区的子数据区时,调用写消息接口;

在判断所述虚机具有子数据区的写权限并对所述待写入的数据校验成功的情况下,查找到所述子数据区中的数据操作区;

获取数据操作区的位置信息;将所述待写入的数据写入所述位置信息所指示的位置。

一种示例性的实施例中,在虚机需要将待写入的数据写入子数据区之前,包括:

启动宿主机,并对所述宿主机进行初始化;

所述对所述宿主机进行初始化,包括:

当判断未创建共享内存区时,创建所述共享内存区;并按照各虚机的预设信息对所述共享内存区的表头进行初始化;

并将初始化后的共享内存区映射到每个虚机。

一种示例性的实施例中,所述将所述待写入的数据写入所述位置信息所指示的位置之后,包括:

更新所述数据操作区的数据头信息;

将数据操作区标记为数据有效区。

当虚机需要读取子数据区的数据时,调用读消息接口;

在判断所述虚机具有子数据区的读权限后,查找到所述子数据区中的数据有效区;

获取所述数据有效区的位置信息;

根据所述位置信息读取数据。

一种示例性的实施例中,根据所述位置信息读取数据,包括:

从所述位置信息所指示的位置读取所述数据有效区的数据头以及所述数据有效区的负载数据;

对所述负载数据进行校验;

若检验通过,则返回需要读取的数据。

一种示例性的实施例中,若检验不通过,则判定读取数据区的数据失败。

通过本申请实施例的虚拟化系统及虚机间的高速通信方法,实现了虚机间的高速通信。

图3为本申请实施例的虚拟化系统示例的示意图,如图3所示,包括宿主机0、虚机1、虚机2、Hypervisor管理系统。

其中Hypervisor将物理内存中一块区域单独作为共享内存,然后将该内存地址分别映射到不同的虚机中。

共享内存中数据分布如图4所示:每个虚机都能找到共享内存的起始位置,按照约定的数据格式存储数据。将该共享内存段分为两大部分:表头和子数据汇总区。表头包含每一段数据区的描述信息,用于查找对应类型数据区的位置和状态;子数据汇总区由若干数据区组成。每一个数据区又包含A区数据和B区数据,A区包含数据头和负载数据,B区结构和A区结构一致。

其中,表头的每一个数据区包含信息如下:

itm_state; 表示标记创建状态;

itm_writer; 表示数据的写权限拥有者;

itm_reader; 表示数据的读权限拥有者;

itm_size; 表示数据的长度;

itm_abn; 表示有效数据区标志;

itm_offa; 表示区数据的偏移;

itm_offb; 表示B区数据的偏移。

表头的信息在宿主机启动后,按照各虚机之间的约定内容进行初始化。itm_state(创建状态),在宿主机启动正常后,将该位置信息置位,当前方案使用值0xCACACACA表示共享内存已创建,如果不为该值则表示共享内存未创建。itm_writer(数据的写权限拥有者),按照约定表示对应的子数据区对应虚机的写权限,当前每一个子数据区最多只有一个虚机有写权限。itm_reader(数据的读权限拥有者),按照约定表示对应的子数据区对应虚机的读权限,每个虚机都可以有读权限。itm_size(数据的长度)表示对应子数据区A区和B区数据的长度,A区与B区数据长度一致。itm_abn(有效数据区标志)表示有效数据区是A区还是B区。itm_offa(A区数据的偏移)表示对应的子数据区A区数据地址,itm_offb(B区数据的偏移)表示对应的子数据区B区数据地址。

每一个数据区的类型和读写权限在初始化阶段按照约定进行设置。

其中,子数据区中每一段数据区中的数据头包含如下内容,A区和B区格式一致:

itm_len; 表示数据实际长度;

itm_chk; 表示数据的校验;

itm_tms; 表示数据的更新次数;

itm_time; 表示数据的时间戳。

子数据区数据头中各函数含义:itm_len(数据实际长度)表示子数据区中对应区数据的实际长度。itm_chk(数据的校验)表示子数据区中对应区的负载数据校验值。itm_tms(数据的更新次数)表示子数据区中更新数据的次数。itm_time(数据的时间戳)表示子数据区中对应区更新数据的时间值。

子数据区的每一个数据区均设置A和B两片子数据区,采用乒乓管理机制,这样在非原子操作下,可以实现生产者(写入数据的虚机)和消费者(读取数据的虚机)操作不同的子数据区,来避免各虚机间数据读写冲突。生产者可随时更新、消费者可随时读取。有效的提高各虚机间通信效率。

子数据区写入数据的逻辑如图5所示:

当虚机需要更新对应信息时候,调用写消息接口,然后判断是否具有子数据区的写权限,如果没有,则写数据结束。如果有写权限,则校验要写入的数据正确性,校验失败,则写数据结束;如果校验通过,判断A区数据是否为数据有效区,如果A区数据不是数据有效区,则将A区作为操作区对待;反之,将B区作为操作区对待。下一步,获取操作区的位置信息,然后将需要更新的信息写入到操作区中。下一步更新操作区对应的数据头信息,最后将数据有效区指向操作区,写数据结束。

数据读取的逻辑如图6所示:

当虚机需要读取对应信息时候,调用读消息接口,然后判断是否具有子数据区的读权限,如果没有,则读数据结束;如果有读权限,则判断A区数据是否为数据有效区,如果A区数据是数据有效区,则将A区置为有效区;如果A区数据不是数据有效区,再判断B区是否为数据有效区,如果B区数据不是数据有效区,返回读数据结束;如果B区数据是数据有效区,则将B区置为有效区。下一步,获取有效区的位置信息,然后读取有效区的长度校验等信息。下一步读取有效区的负载数据,下一步对有效区的负载数据进行校验,校验不通过,则读数据失败;校验通过,则返回读取的信息内容。

基于Hypervisor的虚拟化系统,所有虚机使用同一物理硬件,因此可采用多虚机共享内存的方式进行信息交互。将同一块物理内存同时映射给所有虚机,这样子他们访问的都是同一块物理内存。当某一个虚机更新信息以后,且仅需要更新一次,其它虚机均可获取该信息。不需要在进行二次更新或者传输,大大提高虚机间信息同步的效率。

本申请描述了多个实施例,但是该描述是示例性的,而不是限制性的,并且对于本领域的普通技术人员来说显而易见的是,在本申请所描述的实施例包含的范围内可以有更多的实施例和实现方案。尽管在附图中示出了许多可能的特征组合,并在具体实施方式中进行了讨论,但是所公开的特征的许多其它组合方式也是可能的。除非特意加以限制的情况以外,任何实施例的任何特征或元件可以与任何其它实施例中的任何其他特征或元件结合使用,或可以替代任何其它实施例中的任何其他特征或元件。

在本申请中示出和/或讨论的任何特征可以单独地或以任何适当的组合来实现。

此外,在描述具有代表性的实施例时,说明书可能已经将方法和/或过程呈现为特定的步骤序列。然而,在该方法或过程不依赖于本文所述步骤的特定顺序的程度上,该方法或过程不应限于所述的特定顺序的步骤。如本领域普通技术人员将理解的,其它的步骤顺序也是可能的。

本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些组件或所有组件可以被实施为由处理器,如数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号