CN116360925A - 一种半虚拟化实现方法、装置、设备及介质 - Google Patents
一种半虚拟化实现方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN116360925A CN116360925A CN202310342064.9A CN202310342064A CN116360925A CN 116360925 A CN116360925 A CN 116360925A CN 202310342064 A CN202310342064 A CN 202310342064A CN 116360925 A CN116360925 A CN 116360925A
- Authority
- CN
- China
- Prior art keywords
- data
- qemu
- application program
- physical server
- virtual machine
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 55
- 230000003993 interaction Effects 0.000 claims abstract description 24
- 230000008569 process Effects 0.000 claims abstract description 13
- 238000004590 computer program Methods 0.000 claims description 10
- 238000005516 engineering process Methods 0.000 abstract description 10
- 230000008901 benefit Effects 0.000 abstract description 6
- 230000005540 biological transmission Effects 0.000 abstract description 4
- 230000006870 function Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 238000004088 simulation Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/4555—Para-virtualisation, i.e. guest operating system has to be modified
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45562—Creating, deleting, cloning virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45575—Starting, stopping, suspending or resuming virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及虚拟化领域,尤其涉及一种半虚拟化实现方法、装置、设备及介质。所述方法包括:在物理服务器的用户态中运行若干Qemu应用程序;利用每个Qemu应用程序在进程空间中启动一个虚拟机,并在虚拟机启动时创建共享内存;响应于虚拟机中的应用程序请求访问物理服务器挂载的硬件设备时,则通过所述共享内存完成Qemu应用程序与虚拟机之间的数据交互。本发明的方案不再依赖于VirtIO框架,而是基于Qemu和共享内存实现了半虚拟化技术,在模拟不同的硬件设备时更具灵活性;此外以共享内存的方式传递数据在处理多任务并发时有一定性能优势。
Description
技术领域
本发明涉及虚拟化领域,尤其涉及一种半虚拟化实现方法、装置、设备及介质。
背景技术
随着服务器的单机性能提升,如果一台服务器只部署一个业务,会极大的浪费服务器资源;如果部署多个相似业务,又会造成彼此冲突。半虚拟化技术的诞生解决了这个问题,其既能充分发挥服务器性能、共享使用服务器的硬件设备,又能解决业务之间的冲突问题,并且在性能上,比全虚拟化技术要强很多。目前,现有成熟的半虚拟化技术大多是基于virtio框架,在Guest端(指运行在物理机上的虚拟机系统)的前端驱动里,模拟设备的功能,当用户层的应用程序访问驱动的接口时,前端驱动通过解析,把数据与请求加入到virt队列中,然后通知Qemu程序,Qemu程序读取virt队列中的请求与数据,根据请求和数据再去访问物理服务器的驱动接口,从而实现对硬件设备的io读写。
请参照图1所示,现有技术基于virtio框架实现半虚拟化主要分为三部分:(1)虚拟机系统里的virtio前端驱动,用来接收与转化虚拟机apps的请求与数据;(2)Virtqueue队列,主要用来传输数据,属于Qemu应用程序与虚拟机系统的数据桥梁;(3)基于Qemu的virtio后端驱动,用来处理虚拟机系统发送过来的数据,并转化为host端用户态的数据,最终调用Host端ioctl接口完成读写硬件设备。基于virtio框架实现半虚拟化整体流程为:虚拟机的APPs通过用户态访问内核态的virtio前端驱动接口,virtio前端驱动接收到请求与数据后,写入到virtqueue中,并通知QEMU数据写入完毕;Qemu的virtio后端驱动根据virtio框架协议,从virtqueue队列中读取数据,由于Qemu是服务器端运行的应用程序,把从virtqueue读取的数据转化为服务器端用户态的数据后,再调用服务器的驱动接口,完成设备读写。最后,Qemu把请求结果,写入到virtqueue中,返回给虚拟机系统。
然而,由于现有技术是基于virtio框架,而virtio框架作为一种通用的半虚拟化io设备的协议,因为是通用框架,并不完全适合所有虚拟化设备,有它本身的局限性。主要表现有以下几点:一方面,数据需要转化成virtqueue结构体,即数据需要额外的组装与打包,会有额外的时间与空间成本。另一方面,数据只能通过队列传输,不够灵活,多任务并发时,会有性能上的问题,例如技术成熟的virtio-net使用了两个virtqueue队列,一个用于收数据,一个用于发数据。
发明内容
有鉴于此,有必要针对以上技术问题,提供一种半虚拟化实现方法、装置、设备及介质。
根据本发明的第一方面,提供了一种半虚拟化实现方法,所述方法包括:
在物理服务器的用户态中运行若干Qemu应用程序;
利用每个Qemu应用程序在进程空间中启动一个虚拟机,并在虚拟机启动时创建共享内存;
响应于虚拟机中的应用程序请求访问物理服务器挂载的硬件设备时,则通过所述共享内存完成Qemu应用程序与虚拟机之间的数据交互。
在一些实施例中,所述方法还包括:
在每个虚拟机的内核态中运行设备前端驱动,其中,所述设备前端驱动用于将数据转换成内核态数据;
在每个Qemu应用程序中运行设备驱动,其中,所述设备驱动用于将内核态数据转换成用户态数据;
在物理服务器的内核态中运行设备后端驱动,所述设备后端驱动用于将用户态数据转换成内核态数据。
在一些实施例中,所述方法还包括:
需要访问物理服务器挂载的硬件设备时,虚拟机中的应用程序通过ioctl接口从用户态访问内核态的所述设备前端驱动,以向所述设备前端驱动发送调用请求。
在一些实施例中,通过所述共享内存完成Qemu应用程序与虚拟机之间的数据交互,包括:
利用所述设备前端驱动将与调用请求相关的数据转换成内核态数据后写入到所述共享内存中,并通知所述Qemu应用程序去共享内存读取;
响应于Qemu应用程序读取完与调用请求相关的数据,则利用所述设备驱动将读取的数据转换为物理服务器上的用户态数据,并调用物理服务器上的ioctl接口将用户态的数据传递给物理服务器的所述设备后端驱动;
所述设备后端驱动接收到用户态的数据后转换成内核态数据,以使物理服务器根据转换后的内核态数据读写硬件设备的寄存器;
响应于物理服务器完成对硬件设备的寄存器的读写,由物理服务器将访问结果返回给对应的Qemu应用程序,再由对应的Qemu应用程序将所述访问结果返回给虚拟机中的应用程序。
根据本发明的第二方面,提供了一种半虚拟化实现装置,所述装置包括:
运行模块,所述运行模块配置用于在物理服务器的用户态中运行若干Qemu应用程序;
内存创建模块,所述内存创建模块配置用于利用每个Qemu应用程序在进程空间中启动一个虚拟机,并在虚拟机启动时创建共享内存;
数据交互模块,所述数据交互模块配置用于响应于虚拟机中的应用程序请求访问物理服务器挂载的硬件设备时,则通过所述共享内存完成Qemu应用程序与虚拟机之间的数据交互。
在一些实施例中,所述装置还包括驱动模块,所述驱动模块配置用于:
在每个虚拟机的内核态中运行设备前端驱动,其中,所述设备前端驱动用于将数据转换成内核态数据;
在每个Qemu应用程序中运行设备驱动,其中,所述设备驱动用于将内核态数据转换成用户态数据;
在物理服务器的内核态中运行设备后端驱动,所述设备后端驱动用于将用户态数据转换成内核态数据。
在一些实施例中,所述装置还包括调用模块,所述调用模块配置用于:
需要访问物理服务器挂载的硬件设备时,虚拟机中的应用程序通过ioctl接口从用户态访问内核态的所述设备前端驱动,以向所述设备前端驱动发送调用请求。
在一些实施例中,所述数据交互模块进一步配置用于:
利用所述设备前端驱动将与调用请求相关的数据转换成内核态数据后写入到所述共享内存中,并通知所述Qemu应用程序去共享内存读取;
响应于Qemu应用程序读取完与调用请求相关的数据,则利用所述设备驱动将读取的数据转换为物理服务器上的用户态数据,并调用物理服务器上的ioctl接口将用户态的数据传递给物理服务器的所述设备后端驱动;
所述设备后端驱动接收到用户态的数据后转换成内核态数据,以使物理服务器根据转换后的内核态数据读写硬件设备的寄存器;
响应于物理服务器完成对硬件设备的寄存器的读写,由物理服务器将访问结果返回给对应的Qemu应用程序,再由对应的Qemu应用程序将所述访问结果返回给虚拟机中的应用程序。
根据本发明的第三方面,还提供了一种计算机设备,该计算机设备包括:
至少一个处理器;以及
存储器,存储器存储有可在处理器上运行的计算机程序,处理器执行程序时执行前述的半虚拟化实现方法。
根据本发明的第四方面,还提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时执行前述的半虚拟化实现方法。
上述一种半虚拟化实现方法,不再依赖于VirtIO框架,而是基于Qemu和共享内存实现了半虚拟化术,在模拟不同的硬件设备时更具灵活性;此外以共享内存的方式传递数据在处理多任务并发时有一定性能优势。
此外,本发明还提供了一种半虚拟化实现装置、一种计算机设备和一种计算机可读存储介质,同样能实现上述技术效果,这里不再赘述。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
图1为现有技术基于virtio框架实现半虚拟化的示意图;
图2为本发明一个实施例提供的一种半虚拟化实现方法的流程图;
图3为本发明一个实施例提供的基于Qemu实现半虚拟化的整体结构示意图;
图4为本发明一个实施例提供的虚拟机、Qemu以及物理服务器之间的数据交互示意图;
图5为本发明另一个实施例提供的一种半虚拟化实现装置的结构示意图;
图6为本发明另一个实施例中计算机设备的内部结构图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定,后续实施例对此不再一一说明。
为了方便理解,首先对本发明使用的技术名词进行如下说明:
Qemu,是一种遵从GPL许可证协议的、开源的虚拟化系统软件;
驱动程序:是指提供接口用来访问硬件设备的程序;
Host,是指物理机服务器;
Guest,是指运行在物理机上的虚拟机系统;
前端驱动,是指运行在虚拟机中的驱动程序;
后端驱动,是指运行在物理机中的驱动程序
全虚拟化技术,是指在虚拟机中完全虚拟出一个假设备,假设备完全模拟真设备的功能;
半虚拟化技术,是指在虚拟机中虚拟出假设备,并告知系统该设备是假的,通过定制化的方式,实现真设备的功能;性能相对全虚拟化要高;
KVM,是指linux内核中的虚拟化模块,提供虚拟功能接口;
ioctl,是指用户态应用程序访问内核态的接口方式。
在一个实施例中,请参照图2所示,本发明提供了一种半虚拟化实现方法100,具体来说,所述方法包括以下步骤:
步骤101,在物理服务器的用户态中运行若干Qemu应用程序;
步骤102,利用每个Qemu应用程序在进程空间中启动一个虚拟机,并在虚拟机启动时创建共享内存;
步骤103,响应于虚拟机中的应用程序请求访问物理服务器挂载的硬件设备时,则通过所述共享内存完成Qemu应用程序与虚拟机之间的数据交互。
上述一种半虚拟化实现方法,不再依赖于VirtIO框架,而是基于Qemu和共享内存实现了半虚拟化术,在模拟不同的硬件设备时更具灵活性;此外以共享内存的方式传递数据在处理多任务并发时有一定性能优势。
在一些实施例中,所述方法还包括:
在每个虚拟机的内核态中运行设备前端驱动,其中,所述设备前端驱动用于将数据转换成内核态数据;
在每个Qemu应用程序中运行设备驱动,其中,所述设备驱动用于将内核态数据转换成用户态数据;
在物理服务器的内核态中运行设备后端驱动,所述设备后端驱动用于将用户态数据转换成内核态数据。
在一些实例中,所述方法还包括:
需要访问物理服务器挂载的硬件设备时,虚拟机中的应用程序通过ioctl接口从用户态访问内核态的所述设备前端驱动,以向所述设备前端驱动发送调用请求。
在一些实施例中,前述步骤103中的通过所述共享内存完成Qemu应用程序与虚拟机之间的数据交互,包括:
利用所述设备前端驱动将与调用请求相关的数据转换成内核态数据后写入到所述共享内存中,并通知所述Qemu应用程序去共享内存读取;
响应于Qemu应用程序读取完与调用请求相关的数据,则利用所述设备驱动将读取的数据转换为物理服务器上的用户态数据,并调用物理服务器上的ioctl接口将用户态的数据传递给物理服务器的所述设备后端驱动;
所述设备后端驱动接收到用户态的数据后转换成内核态数据,以使物理服务器根据转换后的内核态数据读写硬件设备的寄存器;
响应于物理服务器完成对硬件设备的寄存器的读写,由物理服务器将访问结果返回给对应的Qemu应用程序,再由对应的Qemu应用程序将所述访问结果返回给虚拟机中的应用程序。
在又一个实施例中,为了便于理解本发明的方案,下面以作为Guest虚拟机系统与作为Host的物理机服务器使用的都是Ubuntu操作系统为例,可以理解的是其他现有操作系统也可以,本发明并不对其进行限制,仅用于举例说明。本实施例提供了基于Qemu的一种半虚拟化实现方法,请参照图3所示,本发明方法实现原理是基于Qemu开源模拟处理器软件,利用Qemu与kvm相结合,实现的半虚拟化技术,完成了在一台物理服务器上,多个虚拟机共享使用物理硬件的技术,大幅节省硬件资源,提高硬件资源利用率,各个虚拟机之间业务相互独立不冲突。具体来说该方法主要依赖以下三部分:设置Host端的设备后端驱动、Qemu应用程序和设置在Guest端的设备前端驱动,各部分的功能参考如下:
设备后端驱动,运行在物理服务器的内核空间中,负责与真实的硬件设备交互,如读写寄存器等,Host端的设备后端驱动还提供接口供应用层的应用程序访问。
Qemu应用程序,运行在物理服务器上的应用程序,负责模拟CPU、内存、硬件设备等,供虚拟机使用。并根据虚拟机的数据请求,调用物理服务器的内核接口。
设备前端驱动,运行在虚拟机里的内核态中,提供接口供虚拟机里的应用程序访问,并把应用程序的数据转化为内核态数据,写入到Qemu的共享内存中。
在具体实施过程中,虚拟机通过Qemu应用程序启动,运行在Qemu的进程空间中。虚拟机启动时,Qemu会创建一块比较大的共享内存供虚拟机使用,虚拟机系统与Qemu之间的数据交互,主要通过该共享内存传输。下面将结合图4详细说明虚拟机、Qemu以及物理服务器之间的数据交互流程:
步骤一,当虚拟机里的应用程序有访问设备的需求时,会通过ioctl方式,从用户态访问到内核态的前端设备驱动接口,前端设备驱动接收到调用请求后,把该请求的有关的数据,写入到共享内存中,然后通知Qemu去读取该部分数据;
步骤二,Qemu接收到虚拟机发送过来的IO请求后,根据请求信息,去对应的共享内存地址,读取相关数据,并把该部分数据转化为Host端用户态的数据,Qemu作为一个用户态的应用程序,通过调用物理机上的ioctl接口,把用户态的数据传递给物理机的后端驱动;
步骤三,后端驱动接收到用户态的Qemu的访问请求后,把对应数据转化为内核态的数据,根据业务需求读写物理设备寄存器,完成对硬件设备的访问。最终,将访问结果返回给Qemu应用程序,再由Qemu应用程序返回给虚拟机系统。
需要说明的是,在具体实施过程中,共享内存的使用可根据共享内存的大小划分为不同的区域,每个区域作为一个通道,总共N个通道,由于共享内存的区域与区域之间不存在冲突问题,在多任务时并发处理,互不干扰。
上述一种半虚拟化实现方法具体以下有益技术效果:一方面,不依赖于VirtIO框架,实现了半虚拟化的技术,在模拟不同的硬件设备时,更具灵活性。另一方面,在处理多任务并发时,有一定性能优势。通过空间换时间的方式和共享内存的方式传递数据,以共享内存分区域的方式处理并发,不再单纯的使用队列,具有较佳的灵活性。
在一些实施例中,请参照图5所示,本发明还提供了一种半虚拟化实现装置200,所述装置包括:
运行模块201,所述运行模块201配置用于在物理服务器的用户态中运行若干Qemu应用程序;
内存创建模块202,所述内存创建模块202配置用于利用每个Qemu应用程序在进程空间中启动一个虚拟机,并在虚拟机启动时创建共享内存;
数据交互模块203,所述数据交互模块203配置用于响应于虚拟机中的应用程序请求访问物理服务器挂载的硬件设备时,则通过所述共享内存完成Qemu应用程序与虚拟机之间的数据交互。
上述一种半虚拟化实现装置不再依赖于VirtIO框架,而是基于Qemu和共享内存实现了半虚拟化术,在模拟不同的硬件设备时更具灵活性;此外以共享内存的方式传递数据在处理多任务并发时有一定性能优势。
在一些实施例中,所述装置还包括驱动模块,所述驱动模块配置用于:
在每个虚拟机的内核态中运行设备前端驱动,其中,所述设备前端驱动用于将数据转换成内核态数据;
在每个Qemu应用程序中运行设备驱动,其中,所述设备驱动用于将内核态数据转换成用户态数据;
在物理服务器的内核态中运行设备后端驱动,所述设备后端驱动用于将用户态数据转换成内核态数据。
在一些实施例中,所述装置还包括调用模块,所述调用模块配置用于:
需要访问物理服务器挂载的硬件设备时,虚拟机中的应用程序通过ioctl接口从用户态访问内核态的所述设备前端驱动,以向所述设备前端驱动发送调用请求。
在一些实施例中,所述数据交互模块203进一步配置用于:
利用所述设备前端驱动将与调用请求相关的数据转换成内核态数据后写入到所述共享内存中,并通知所述Qemu应用程序去共享内存读取;
响应于Qemu应用程序读取完与调用请求相关的数据,则利用所述设备驱动将读取的数据转换为物理服务器上的用户态数据,并调用物理服务器上的ioctl接口将用户态的数据传递给物理服务器的所述设备后端驱动;
所述设备后端驱动接收到用户态的数据后转换成内核态数据,以使物理服务器根据转换后的内核态数据读写硬件设备的寄存器;
响应于物理服务器完成对硬件设备的寄存器的读写,由物理服务器将访问结果返回给对应的Qemu应用程序,再由对应的Qemu应用程序将所述访问结果返回给虚拟机中的应用程序。
需要说明的是,关于半虚拟化实现装置的具体限定可以参见上文中对半虚拟化实现方法的限定,在此不再赘述。上述半虚拟化实现装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
根据本发明的另一方面,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图请参照图6所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时实现以上所述的半虚拟化实现方法,具体来说,所述方法包括以下步骤:
在物理服务器的用户态中运行若干Qemu应用程序;
利用每个Qemu应用程序在进程空间中启动一个虚拟机,并在虚拟机启动时创建共享内存;
响应于虚拟机中的应用程序请求访问物理服务器挂载的硬件设备时,则通过所述共享内存完成Qemu应用程序与虚拟机之间的数据交互。
在一些实施例中,所述方法还包括:
在每个虚拟机的内核态中运行设备前端驱动,其中,所述设备前端驱动用于将数据转换成内核态数据;
在每个Qemu应用程序中运行设备驱动,其中,所述设备驱动用于将内核态数据转换成用户态数据;
在物理服务器的内核态中运行设备后端驱动,所述设备后端驱动用于将用户态数据转换成内核态数据。
在一些实施例中,所述方法还包括:
需要访问物理服务器挂载的硬件设备时,虚拟机中的应用程序通过ioctl接口从用户态访问内核态的所述设备前端驱动,以向所述设备前端驱动发送调用请求。
在一些实施例中,通过所述共享内存完成Qemu应用程序与虚拟机之间的数据交互,包括:
利用所述设备前端驱动将与调用请求相关的数据转换成内核态数据后写入到所述共享内存中,并通知所述Qemu应用程序去共享内存读取;
响应于Qemu应用程序读取完与调用请求相关的数据,则利用所述设备驱动将读取的数据转换为物理服务器上的用户态数据,并调用物理服务器上的ioctl接口将用户态的数据传递给物理服务器的所述设备后端驱动;
所述设备后端驱动接收到用户态的数据后转换成内核态数据,以使物理服务器根据转换后的内核态数据读写硬件设备的寄存器;
响应于物理服务器完成对硬件设备的寄存器的读写,由物理服务器将访问结果返回给对应的Qemu应用程序,再由对应的Qemu应用程序将所述访问结果返回给虚拟机中的应用程序。
根据本发明的又一方面,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以上所述的半虚拟化实现方法,具体来说,包括执行以下步骤:
在物理服务器的用户态中运行若干Qemu应用程序;
利用每个Qemu应用程序在进程空间中启动一个虚拟机,并在虚拟机启动时创建共享内存;
响应于虚拟机中的应用程序请求访问物理服务器挂载的硬件设备时,则通过所述共享内存完成Qemu应用程序与虚拟机之间的数据交互。
在一些实施例中,所述方法还包括:
在每个虚拟机的内核态中运行设备前端驱动,其中,所述设备前端驱动用于将数据转换成内核态数据;
在每个Qemu应用程序中运行设备驱动,其中,所述设备驱动用于将内核态数据转换成用户态数据;
在物理服务器的内核态中运行设备后端驱动,所述设备后端驱动用于将用户态数据转换成内核态数据。
在一些实施例中,所述方法还包括:
需要访问物理服务器挂载的硬件设备时虚拟机中的应用程序以通过ioctl接口从用户态访问内核态的所述设备前端驱动,以向所述设备前端驱动发送调用请求。
在一些实施例中,通过所述共享内存完成Qemu应用程序与虚拟机之间的数据交互,包括:
利用所述设备前端驱动将与调用请求相关的数据转换成内核态数据后写入到所述共享内存中,并通知所述Qemu应用程序去共享内存读取;
响应于Qemu应用程序读取完与调用请求相关的数据,则利用所述设备驱动将读取的数据转换为物理服务器上的用户态数据,并调用物理服务器上的ioctl接口将用户态的数据传递给物理服务器的所述设备后端驱动;
所述设备后端驱动接收到用户态的数据后转换成内核态数据,以使物理服务器根据转换后的内核态数据读写硬件设备的寄存器;
响应于物理服务器完成对硬件设备的寄存器的读写,由物理服务器将访问结果返回给对应的Qemu应用程序,再由对应的Qemu应用程序将所述访问结果返回给虚拟机中的应用程序。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种半虚拟化实现方法,其特征在于,所述方法包括:
在物理服务器的用户态中运行若干Qemu应用程序;
利用每个Qemu应用程序在进程空间中启动一个虚拟机,并在虚拟机启动时创建共享内存;
响应于虚拟机中的应用程序请求访问物理服务器挂载的硬件设备时,则通过所述共享内存完成Qemu应用程序与虚拟机之间的数据交互。
2.根据权利要求1所述的半虚拟化实现方法,其特征在于,所述方法还包括:
在每个虚拟机的内核态中运行设备前端驱动,其中,所述设备前端驱动用于将数据转换成内核态数据;
在每个Qemu应用程序中运行设备驱动,其中,所述设备驱动用于将内核态数据转换成用户态数据;
在物理服务器的内核态中运行设备后端驱动,所述设备后端驱动用于将用户态数据转换成内核态数据。
3.根据权利要求2所述的半虚拟化实现方法,其特征在于,所述方法还包括:
需要访问物理服务器挂载的硬件设备时,虚拟机中的应用程序通过ioctl接口从用户态访问内核态的所述设备前端驱动,以向所述设备前端驱动发送调用请求。
4.根据权利要求3所述的半虚拟化实现方法,其特征在于,通过所述共享内存完成Qemu应用程序与虚拟机之间的数据交互,包括:
利用所述设备前端驱动将与调用请求相关的数据转换成内核态数据后写入到所述共享内存中,并通知所述Qemu应用程序去共享内存读取;
响应于Qemu应用程序读取完与调用请求相关的数据,则利用所述设备驱动将读取的数据转换为物理服务器上的用户态数据,并调用物理服务器上的ioctl接口将用户态的数据传递给物理服务器的所述设备后端驱动;
所述设备后端驱动接收到用户态的数据后转换成内核态数据,以使物理服务器根据转换后的内核态数据读写硬件设备的寄存器;
响应于物理服务器完成对硬件设备的寄存器的读写,由物理服务器将访问结果返回给对应的Qemu应用程序,再由对应的Qemu应用程序将所述访问结果返回给虚拟机中的应用程序。
5.一种半虚拟化实现装置,其特征在于,所述装置包括:
运行模块,所述运行模块配置用于在物理服务器的用户态中运行若干Qemu应用程序;
内存创建模块,所述内存创建模块配置用于利用每个Qemu应用程序在进程空间中启动一个虚拟机,并在虚拟机启动时创建共享内存;
数据交互模块,所述数据交互模块配置用于响应于虚拟机中的应用程序请求访问物理服务器挂载的硬件设备时,则通过所述共享内存完成Qemu应用程序与虚拟机之间的数据交互。
6.根据权利要求5所述的半虚拟化实现装置,其特征在于,所述装置还包括驱动模块,所述驱动模块配置用于:
在每个虚拟机的内核态中运行设备前端驱动,其中,所述设备前端驱动用于将数据转换成内核态数据;
在每个Qemu应用程序中运行设备驱动,其中,所述设备驱动用于将内核态数据转换成用户态数据;
在物理服务器的内核态中运行设备后端驱动,所述设备后端驱动用于将用户态数据转换成内核态数据。
7.根据权利要求6所述的半虚拟化实现装置,其特征在于,所述装置还包括调用模块,所述调用模块配置用于:
需要访问物理服务器挂载的硬件设备时,虚拟机中的应用程序通过ioctl接口从用户态访问内核态的所述设备前端驱动,以向所述设备前端驱动发送调用请求。
8.根据权利要求7所述的半虚拟化实现装置,其特征在于,所述数据交互模块进一步配置用于:
利用所述设备前端驱动将与调用请求相关的数据转换成内核态数据后写入到所述共享内存中,并通知所述Qemu应用程序去共享内存读取;
响应于Qemu应用程序读取完与调用请求相关的数据,则利用所述设备驱动将读取的数据转换为物理服务器上的用户态数据,并调用物理服务器上的ioctl接口将用户态的数据传递给物理服务器的所述设备后端驱动;
所述设备后端驱动接收到用户态的数据后转换成内核态数据,以使物理服务器根据转换后的内核态数据读写硬件设备的寄存器;
响应于物理服务器完成对硬件设备的寄存器的读写,由物理服务器将访问结果返回给对应的Qemu应用程序,再由对应的Qemu应用程序将所述访问结果返回给虚拟机中的应用程序。
9.一种计算机设备,其特征在于,包括:
至少一个处理器;以及
存储器,所述存储器存储有可在所述处理器中运行的计算机程序,所述处理器执行所述程序时执行权利要求1-4任意一项所述的半虚拟化实现方法。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时执行权利要求1-4任意一项所述的半虚拟化实现方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310342064.9A CN116360925A (zh) | 2023-03-29 | 2023-03-29 | 一种半虚拟化实现方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310342064.9A CN116360925A (zh) | 2023-03-29 | 2023-03-29 | 一种半虚拟化实现方法、装置、设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116360925A true CN116360925A (zh) | 2023-06-30 |
Family
ID=86931107
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310342064.9A Pending CN116360925A (zh) | 2023-03-29 | 2023-03-29 | 一种半虚拟化实现方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116360925A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116578392A (zh) * | 2023-07-11 | 2023-08-11 | 天津卓朗昆仑云软件技术有限公司 | 虚拟机数据交互方法、系统及电子设备 |
-
2023
- 2023-03-29 CN CN202310342064.9A patent/CN116360925A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116578392A (zh) * | 2023-07-11 | 2023-08-11 | 天津卓朗昆仑云软件技术有限公司 | 虚拟机数据交互方法、系统及电子设备 |
CN116578392B (zh) * | 2023-07-11 | 2023-09-26 | 天津卓朗昆仑云软件技术有限公司 | 虚拟机数据交互方法、系统及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10191759B2 (en) | Apparatus and method for scheduling graphics processing unit workloads from virtual machines | |
JP5608243B2 (ja) | 仮想化環境においてi/o処理を行う方法および装置 | |
US20110153909A1 (en) | Efficient Nested Virtualization | |
US20120167082A1 (en) | Direct sharing of smart devices through virtualization | |
JP6458959B2 (ja) | 協調設計されたプロセッサ用動的言語アクセラレータ | |
US10417023B2 (en) | GPU simulation method | |
CN113778612A (zh) | 基于微内核机制的嵌入式虚拟化系统实现方法 | |
WO2019028682A1 (zh) | 一种多系统共享内存的管理方法及装置 | |
CN112352221A (zh) | 用以支持虚拟化环境中的ssd设备驱动器与物理ssd之间的sq/cq对通信的快速传输的共享存储器机制 | |
CN113326105B (zh) | 基于主机迁移的硬件设备配置方法、装置及设备 | |
CN105677491B (zh) | 一种数据传输方法及装置 | |
CN116360925A (zh) | 一种半虚拟化实现方法、装置、设备及介质 | |
WO2020177567A1 (zh) | 一种迁移数据的方法、装置及系统 | |
Diakhaté et al. | Efficient shared memory message passing for inter-VM communications | |
WO2018149157A1 (zh) | 一种vcpu线程的调度方法及装置 | |
CN113934504A (zh) | 一种系统以及中断处理方法 | |
WO2022083158A1 (zh) | 数据处理的方法、实例以及系统 | |
US9122549B2 (en) | Method and system for emulation of instructions and hardware using background guest mode processing | |
CN113568734A (zh) | 基于多核处理器的虚拟化方法、系统、多核处理器和电子设备 | |
CN113626131A (zh) | 实现热迁移的方法、芯片、板卡和存储介质 | |
CN116540929A (zh) | 磁盘阵列的虚拟化读取方法、装置、电子设备及存储介质 | |
CN115904634A (zh) | 资源管理方法、系统级芯片、电子组件及电子设备 | |
US11526358B2 (en) | Deterministic execution replay for multicore systems | |
US20120216189A1 (en) | Methods, Devices and Computer Program Products for Emulating a Physical Hard Drive as Multiple Virtual Hard Drives | |
US11119787B1 (en) | Non-intrusive hardware profiling |
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 |