一种主机与虚拟机共享内存方法、装置、设备及介质制造方法及图纸

技术编号:32435893 阅读:15 留言:0更新日期:2022-02-24 19:10
本发明专利技术公开了一种主机与虚拟机共享内存方法、装置、设备及介质。所述方法包括:建立虚拟机的客户端进程与主机的服务端进程之间的通信通道,所述主机为所述虚拟机的宿主机;在所述通信通道内,完成共享内存页面的虚拟机物理地址到宿主机物理地址的转换;将所述宿主机物理地址映射到所述服务端进程的虚拟地址空间。该方法基于建立的通信通道能够进行共享内存地址的传输和转换,并将宿主机物理地址映射到服务端进程的虚拟地址空间,能够有效避免现有技术中存在的诸多问题。有技术中存在的诸多问题。有技术中存在的诸多问题。

【技术实现步骤摘要】
一种主机与虚拟机共享内存方法、装置、设备及介质


[0001]本专利技术实施例涉及虚拟机
,尤其涉及一种主机与虚拟机共享内存方法、装置、设备及介质。

技术介绍

[0002]目前,高性能分布式计算和存储使用越发广泛,结合云计算的成熟发展,虚拟云主机成为广大服务云服务商的首选。对于大量的客户端/服务器模型的应用,主机上的服务程序管理真实的物理设备,并为部署在虚拟机中的应用提供虚拟服务,这类服务涉及到虚拟机与主机间的高性能数据交互,通常使用共享内存来完成。
[0003]现有技术中,虚拟机和主机之间共享内存的主流的解决方案包括两种:方案一是基于virtio协议的传输通道实现虚拟机和主机之间共享内存,方案二是基于ivshmem,即宿主机与虚拟机之间或多个虚拟机之间共享内存的特殊设备,实现虚拟机和主机之间共享内存。
[0004]在方案一中I/O虚拟化的关键是为主机和虚拟机之间建立I/O请求和数据的传输通道,通过在虚拟机中呈现出一个virtio

pci设备作为虚拟磁盘或虚拟网卡,而在主机中使用用户态的virtio、vhost

user或内核态的vhost模块来提供真实的I/O服务,实现I/O虚拟化。根据协议,虚拟机和主机之间会共享一段固定大小的内存,称为vring,用于传输I/O请求和数据。但是,方案一无法直接用于共享内存服务,因为该段内存大小固定,无法灵活地进行分配和回收。且只能使用固定的协议来传输I/O信息,无法直接给虚拟机或主机任意访问。
[0005]方案二中的ivshmem在虚拟机内部表现为PCI设备,共享的内存区域则以PCI BAR的形式存在,在构建宿主机和虚拟机之间共享内存,虽然ivshmem这一技术被广泛的使用,但是仍然存在诸多缺点。首先,ivshmem消耗宿主机的内存空间来做数据传输,成本计算困难,在公有云场景中,用户往往按照虚拟机的资源配置进行付费,而ivshmem消耗的宿主机的内存空间,在虚拟机中无法体现,这样就出现了成本计算的困难;其次,ivshmem的大小受限,在大数据量场景下,虚拟机需要大块连续的内存,此情况下ivshmem无法满足用户的需求;此外,ivshmem在虚拟机内部表现为PCI设备,由于PCI插槽数量有限,这就限制了ivshmem的数量以及可能导致和其他PCI设备之间的竞争。

技术实现思路

[0006]本专利技术实施例提供了一种主机与虚拟机共享内存方法、装置、设备及介质,该方法基于建立的通信通道能够进行共享内存地址的传输和转换,并将宿主机物理地址映射到服务端进程的虚拟地址空间,能够有效避免现有技术中存在的诸多问题。
[0007]第一方面,本专利技术实施例提供了一种主机与虚拟机共享内存方法,包括:建立虚拟机的客户端进程与主机的服务端进程之间的通信通道,所述主机为所述虚拟机的宿主机;
在所述通信通道内,完成共享内存页面的虚拟机物理地址到宿主机物理地址的转换;将所述宿主机物理地址映射到所述服务端进程的虚拟地址空间。
[0008]第二方面,本专利技术实施例还提供了一种主机与虚拟机共享内存装置,包括:建立模块,用于建立虚拟机的客户端进程与主机的服务端进程之间的通信通道,所述主机为所述虚拟机的宿主机;转换模块,用于在所述通信通道内,完成共享内存页面的虚拟机物理地址到宿主机物理地址的转换;映射模块,用于将所述宿主机物理地址映射到所述服务端进程的虚拟地址空间。
[0009]第三方面,本专利技术实施例还提供了一种计算机设备,所述计算机设备中的主机上安装有虚拟机,所述虚拟机中包括客户端程序,所述主机中包括服务端程序,所述主机内部署vhost

vsock内核模块以及地址映射内核模块;所述计算机设备还包括:一个或多个处理器;存储装置,用于存储一个或多个程序;所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器用于执行本专利技术任意实施例所述的主机与虚拟机共享内存方法。
[0010]第四方面,本专利技术实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本专利技术任意实施例所提供的主机与虚拟机共享内存方法。
[0011]本专利技术实施例提供了一种主机与虚拟机共享内存方法、装置、设备及介质,首先建立虚拟机的客户端进程与主机的服务端进程之间的通信通道,所述主机为所述虚拟机的宿主机;然后在所述通信通道内,完成共享内存页面的虚拟机物理地址到宿主机物理地址的转换;最后将所述宿主机物理地址映射到所述服务端进程的虚拟地址空间。上述方法基于建立的通信通道能够进行共享内存地址的传输和转换,并将宿主机物理地址映射到服务端进程的虚拟地址空间,能够有效避免现有技术中共享内存分配、使用、释放不灵活的问题、由主机分配物理内存共享给虚拟机导致的额外资源占用以及计费困难的问题,以及使用ivshmem共享内存对虚拟机PCI插槽的占用和大小受限问题。
附图说明
[0012]图1为本专利技术实施例一所提供的一种主机与虚拟机共享内存方法的流程示意图;图2为本专利技术实施例二所提供的一种主机与虚拟机共享内存方法中主机的软件结构示意图;图3为本专利技术实施例三所提供的一种主机与虚拟机共享内存装置的结构示意图;图4为本专利技术实施例四所提供的一种计算机设备的结构示意图。
具体实施方式
[0013]下面将参照附图更详细地描述本专利技术的实施例。虽然附图中显示了本专利技术的某些实施例,然而应当理解的是,本专利技术可以通过各种形式来实现,而且不应该被解释为限于这
里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本专利技术。应当理解的是,本专利技术的附图及实施例仅用于示例性作用,并非用于限制本专利技术的保护范围。
[0014]应当理解,本专利技术的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本专利技术的范围在此方面不受限制。
[0015]本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。
[0016]需要注意,本专利技术中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
[0017]需要注意,本专利技术中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
[0018]本专利技术实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。
[0019]实施例一图1为本专利技术实施例一所提供的一种主机与虚拟机共享内存方法的流程示意图,该方法可适用于主机与虚拟机之间进程高性能数据交互的情况,本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种主机与虚拟机共享内存方法,其特征在于,所述方法包括:建立虚拟机的客户端进程与主机的服务端进程之间的通信通道,所述主机为所述虚拟机的宿主机;在所述通信通道内,完成共享内存页面的虚拟机物理地址到宿主机物理地址的转换;将所述宿主机物理地址映射到所述服务端进程的虚拟地址空间。2.根据权利要求1所述的方法,其特征在于,所述虚拟机的客户端进程为客户端程序,所述主机的服务端进程为服务端程序,所述通信通道为Socket通道,相应的,建立所述虚拟机的客户端进程与主机的服务端进程之间的通信通道,包括:通过vhost

vsock内核模块建立所述客户端程序与所述服务端程序之间的Socket通道。3.根据权利要求2所述的方法,其特征在于,所述通过vhost

vsock内核模块建立所述客户端程序与所述服务端程序之间的Socket通道,包括:通过所述服务端程序建立vsock服务端;为所述vsock服务端绑定cid地址;对绑定cid地址的vsock端口进行监听;启动所述客户端程序,通过所述vhost

vsock内核模块连接所述绑定cid地址的vsock端口,以完成所述客户端程序与所述服务端程序之间Socket通道的建立。4.根据权利要求2所述的方法,其特征在于,所述在所述通信通道内,完成共享内存页面的虚拟机物理地址到宿主机物理地址的转换,包括:在所述Socket通道内,通过所述vhost

vsock内核模块完成共享内存页面的虚拟机物理地址到宿主机物理地址的转换。5.根据权利要求4所述的方法,其特征在于,所述在所述Socket通道内,通过所述vhost

vsock内核模块完成共享内存页面的虚拟机物理地址到宿主机物理地址的转换,包括:通过所述Socket通道传输虚拟内存分配报文至所述服务端程序,所述报文包括共享内存页面的大小;通过所述客户端程序分配多个页对齐的匿名页作为共享内存页面;通过所述客户端程序的地址转换接口,得到所述共享内存页面的虚...

【专利技术属性】
技术研发人员:张伟韬傅唯威邹懋陈飞王鲲
申请(专利权)人:维塔科技北京有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1