法律状态公告日
法律状态信息
法律状态
2013-05-08
授权
授权
2011-03-30
实质审查的生效 IPC(主分类):G06F9/455 申请日:20101015
实质审查的生效
2011-02-16
公开
公开
技术领域
本发明涉及计算机处理技术领域,尤其是涉及一种虚拟机技术,其中客户机操作系统在计算设备的虚拟机中运行,更具体地说,是涉及此类虚拟机环境中的在虚拟机监控器之外进行输入输出(I/O)设备虚拟化的方法。
背景技术
在以往的虚拟化环境中,客户虚拟机(Guest Virtual Machine)简称为客户机,客户机操作系统(Guest Operating Systems)运行在虚拟机中,虚拟机监控器(Virtual Machine Monitor)管理所有的硬件资源,并提供虚拟的硬件环境以供客户机操作系统运行,所有的虚拟机都运行在虚拟机监控器(VMM)之上,具体结构如图1所示。
在具有硬件辅助的虚拟化技术的处理器平台上,客户机操作系统不需要修改一些敏感指令就可直接运行于虚拟机之中。
通过虚拟化技术,在一组硬件上可以同时运行多个客户机,从而提高了硬件资源的利用率,同时减少了电力消耗和存放设备的空间等需求。所有的客户机由虚拟机监控器(VMM)统一管理,并确保它们之间的隔离性。
虚拟机监控器(VMM)管理整个系统的所有资源,响应和处理所有客户机的I/O请求,使得虚拟机监控器(VMM)软件体积庞大,组织复杂,这对安全性和隔离性都形成了不稳定的因素。按照功能来分解虚拟机监控器(VMM),降低虚拟机监控器(VMM)的复杂度和软件体积,把一些较为独立的功能提取出来作为独立的虚拟机运行,这是目前技术改进的方向。
发明内容
本发明提供一种在虚拟机监控器(VMM)外进行输入输出(I/O)虚拟化的虚拟机系统,基于硬件辅助型的虚拟化技术的处理器平台,把输入输出(I/O)的处理和共享这部分的功能从虚拟机监控器(VMM)中提取出来,在运行于虚拟机监控器(VMM)之上的特权客户虚拟机中进行输入输出(I/O)的处理、共享、调度,完成I/O虚拟化的功能,这个特权客户虚拟机称为输入输出虚拟机(IOVM:I/O Virtual Machine),这样可以获得更好的隔离性和安全性,同时能降低虚拟机监控器(VMM)的负担。
一种在虚拟机监控器(VMM)之外进行输入输出(I/O)虚拟化的虚拟机系统,基于硬件辅助型的虚拟化技术的处理器平台,包括虚拟机监控器(VMM),所述的虚拟机监控器设有若干个输入输出虚拟机(IOVM),由输入输出虚拟机(IOVM)来处理客户机的所有I/O操作和设备共享;若干个输入输出虚拟机(IOVM)由虚拟机监控器(VMM)来管理和调度;输入输出虚拟机(IOVM)和虚拟机监控器(VMM)之间设有域间通信机制和内存共享机制,由虚拟机监控器(VMM)管理域间通信机制和内存共享机制,增加和删除内存共享块都需要虚拟机监控器(VMM)来审核。
所述的一个输入输出虚拟机(IOVM)可以为多个客户虚拟机提供服务,一个客户虚拟机的不同的I/O请求可以由不同的输入输出虚拟机(IOVM)来处理,通过虚拟机监控器(VMM)的I/O虚拟化管理程序来设定。
所述的客户虚拟机和提供服务的输入输出虚拟机(IOVM)运行在两个不同的计算机上,输入输出虚拟机(IOVM)通过网络提供I/O服务。
本发明的输入输出虚拟机(IOVM)的设计,可以通过网络,跨越单台计算机硬件。使得在需要的情况下,在本地计算机上运行的虚拟机监控器(VMM)可以通过网络向运行在其他计算机上的虚拟机监控器(VMM)申请输入输出虚拟机(IOVM)服务,并将相应的I/O需求转发过去,由其他计算机上的输入输出虚拟机(IOVM)进行处理。
在基于硬件辅助型虚拟化技术的处理器平台上的虚拟化系统中,客户虚拟机产生的I/O请求将会被虚拟机监控器(VMM)发现,由虚拟机监控器(VMM)根据客户虚拟机的I/O请求的类型和相关的信息来决定如何分配相应的输入输出虚拟机(IOVM),若在本地计算机上没有相应的可用的输入输出虚拟机(IOVM)、或者无法在本地计算机上再创建新的输入输出虚拟机(IOVM)、或者本机上I/O设备资源不足、或者计算资源负载均衡调度的需要等情况下,本地的虚拟机监控器(VMM)可用通过网络向远程的计算机中可以分配相应的输入输出虚拟机(IOVM)服务的计算机申请所需的输入输出虚拟机(IOVM)服务,若申请获得满足,本地的虚拟机监控器(VMM)就把相应的I/O请求转发过去,本地的虚拟机监控器(VMM)再将远程的输入输出虚拟机(IOVM)返回的结果转发给相应的客户虚拟机,通过网络提供输入输出虚拟机(IOVM)由远程的计算机上输入输出虚拟机(IOVM)进行相应的处理,远程的计算机上的输入输出虚拟机(IOVM)完成相应的处理之后将结果返回本地服务的过程就完成了。
这个过程中,输入输出虚拟机(IOVM)的分配对客户虚拟机是透明的,输入输出虚拟机(IOVM)是否运行在本机上,客户虚拟机并不知晓。
由虚拟机监控器(VMM)中相应的I/O虚拟化管理程序的来决定让哪一个输入输出虚拟机(IOVM)来为当前提出I/O请求的客户虚拟机提供服务,包括本地计算机上运行的输入输出虚拟机(IOVM)和通过网络向其他计算机申请的输入输出虚拟机(IOVM)服务。
所述的输入输出虚拟机(IOVM)是作为独立的客户机运行在虚拟机监控器(VMM)之上,输入输出虚拟机(IOVM)的架构包括:内核部分,标准C库,TCP/IP协议栈,设备模型,后端驱动,域间通信机制,域间内存共享;
(1)输入输出虚拟机(IOVM)的内核部分,细分为多个功能模块,包括进程管理调度、进程间通信、内存管理、文件系统、设备驱动;这些模块组成输入输出虚拟机(IOVM)的操作系统内核。
(2)后端驱动和设备模型用于接收和处理来自客户机的I/O请求。来自客户机的I/O操作请求被虚拟机监控器(VMM)截获之后,由虚拟机监控器(VMM)分发到相应的输入输出虚拟机(IOVM),在输入输出虚拟机(IOVM)中由相应的的后端驱动接收这些请求,后端驱动分析请求,决定是由设备模型进行处理还是由本地驱动进行处理,并且完成相应的I/O操作,然后再把处理结果通过虚拟机监控器(VMM)返回给客户机。
(3)标准C库提供基本的程序运行库。
(4)TCP/IP协议栈提供了网络功能所须的协议栈。
(5)域间通信机制用于处理虚拟机监控器(VMM)和输入输出虚拟机(IOVM)之间的通信和数据传递。
所述的域间通信机制(IDC:Inter-Domain Communication)存在于输入输出虚拟机(IOVM)和虚拟机监控器(VMM)之间,提供输入输出虚拟机(IOVM)和虚拟机监控器(VMM)之间的通信。
因为域间通信机制只存在于输入输出虚拟机(IOVM)和虚拟机监控器(VMM)之间,因此对输入输出虚拟机(IOVM)而言域间通信机制的目标对象只能是虚拟机监控器(VMM),因此无需指定目标对象。对虚拟机监控器(VMM)而言,系统中会存在一个到多个输入输出虚拟机(IOVM),因此,虚拟机监控器(VMM)需要根据输入输出虚拟机(IOVM)列表来指定域间通信机制的目标对象。
限制域间通信机制(IDC)的消息内容不超过32个字节(Byte),这样便于将IA32体系结构中的8个通用寄存器用于传递域间通信机制(IDC)消息,从而提高域间通信机制(IDC)的性能。因为VMCS中的客户机状态域(Guest-state area)中并不包括通用寄存器和浮点寄存器,它们的保存和恢复由虚拟机监控器(VMM)决定。因而,在产生VM-Exit、VM-Entry的时候,使得在虚拟机监控器(VMM)和输入输出虚拟机(IOVM)之间完成地址空间切换的时候,通用寄存器的内容可以保留,使得数据可以通过通用寄存器在虚拟机监控器(VMM)和输入输出虚拟机(IOVM)之间传递而且性能非常好。
对于超过32个字节的消息的传递,使用域间内存共享机制。
(6)域间内存共享机制用于处理虚拟机监控器(VMM)和输入输出虚拟机(IOVM)之间的数据传递。
所述的域间内存共享机制只存在于虚拟机监控器(VMM)和输入输出虚拟机(IOVM)之间。需要虚拟机监控器(VMM)和输入输出虚拟机(IOVM)的协同设计,使得存在于输入输出虚拟机(IOVM)和虚拟机监控器(VMM)之间的域间内存共享机制的实现比较容易而且效率较高,便于实现数据共享。
将输入输出虚拟机(IOVM)的需要被共享的内存地址空间映射到虚拟机监控器(VMM)的内存地址空间,实现域间内存共享。可以有多个域间内存共享区域,可以根据内存资源来调节和限制总的域间内存共享的大小的最大上限。
在硬件辅助型虚拟化技术处理器平台的支持下,把外部设备相关的的I/O处理和I/O共享的功能从虚拟机监控器(VMM)中提取出来,放到输入输出虚拟机(IOVM)中来运行。
本发明主要技术效果包括:
1.通过提出输入输出虚拟机(IOVM)的设计,在虚拟机监控器(VMM)之外进行输入输出设备的虚拟化(I/O Virtualization)。输入输出虚拟机(IOVM)作为特权虚拟机运行在虚拟机监控器(VMM)之上。客户机的I/O请求由虚拟机监控器(VMM)转发给输入输出虚拟机(IOVM)来处理,在虚拟化技术的以往的实现方式中客户机的I/O请求由虚拟机监控器(VMM)处理。这样可以获得更好的隔离性和安全性,同时能降低虚拟机监控器(VMM)的负担
2.本发明的输入输出虚拟机(IOVM)具有通过网络提供I/O服务的能力,使得客户机的I/O请求和I/O处理可以在不同的计算机上通过网络协作完成,使得I/O处理可以达到跨越单台计算机硬件的目的,以往的虚拟机系统的I/O处理受限于本机的计算机硬件资源,而通过网络提供I/O服务的输入输出虚拟机(IOVM)可以突破本机的计算机硬件资源的限制,例如,当本机空闲的硬盘空间已经不能满足I/O需求的时候,虚拟机监控器(VMM)可以通过网络向远程的计算机申请所需的输入输出虚拟机(IOVM)服务,若申请获得满足,本地的虚拟机监控器(VMM)就把相应的I/O请求转发过去,待远程计算机上的输入输出虚拟机(IOVM)处理完成后,本地的虚拟机监控器(VMM)再将远程的输入输出虚拟机(IOVM)返回的结果转发给相应的客户虚拟机。
3.本发明提出了虚拟机监控器(VMM)和输入输出虚拟机(IOVM)之间通信的方法,包括域间通信机制(IDC)和域间内存共享机制,域间通信机制(IDC)在产生VM-Exit、VM-Entry的时候使用通用寄存器来传递数据,因为VMCS(Virtual-Machine Control Structure)中的客户机状态域(Guest-state area)中并不包括通用寄存器和浮点寄存器,它们的保存和恢复由虚拟机监控器(VMM)决定。因而,在产生VM-Exit、VM-Entry的时候,使得在虚拟机监控器(VMM)和输入输出虚拟机(IOVM)之间完成地址空间切换的时候,通用寄存器的内容可以保留,使得数据可以通过通用寄存器在虚拟机监控器(VMM)和输入输出虚拟机(IOVM)之间传递而且性能非常好。
域间内存共享机制是将输入输出虚拟机(IOVM)的需要被共享的内存地址空间映射到虚拟机监控器(VMM)的内存地址空间,实现域间内存共享。输入输出虚拟机(IOVM)的内存地址中要被共享的部分和虚拟机监控器(VMM)的内存地址中需要共享的部分指向同一份物理内存,使得两者之间的内存共享避免拷贝,获得较高的效率。
附图说明
图1为现有技术的虚拟机系统的结构组成示意图。
图2为本发明的虚拟机系统的结构组成示意图。
图3为本发明通过网络提供服务的虚拟机系统的结构组成示意图。
图4为本发明的输入输出虚拟机(IOVM)的架构示意图。
图5为本发明的客户机I/O请求获得输入输出虚拟机(IOVM)处理的流程图。
图6为本发明的域间内存共享机制的内存地址空间映射的示意图。
图7为本发明的虚拟机监控器(VMM)分配输入输出虚拟机(IOVM)的流程。
具体实施方式
如图2所示,一种在虚拟机监控器(VMM)之外进行输入输出(I/O)虚拟化的虚拟机系统,基于硬件辅助型的虚拟化技术的处理器平台:
客户虚拟机A产生了一个I/O请求,由VMM捕获,VMM根据这个I/O请求的类型和相关信息,分配IOVM 1来处理这个I/O请求。
客户虚拟机A产生的另一个I/O请求,由VMM捕获,VMM根据这个I/O请求的类型和相关信息,分配IOVM 2来处理这个I/O请求。
客户虚拟机B产生的I/O请求,由VMM捕获,VMM根据这个I/O请求的类型和相关信息,分配IOVM 2来处理这个I/O请求。
来自一个客户虚拟机的多个的I/O请求可以由1个或者1个以上的IOVM来处理。来自客户机A的I/O请求和来自客户机B的I/O请求可以由同一个IOVM来处理。由VMM决定客户机的I/O请求由哪一个IOVM来处理。
该虚拟机系统,需要硬件辅助型的虚拟化技术的处理器,例如英特尔公司的支持VT技术的处理器。
如图3所示,在需要通过网络向其他计算机申请输入输出虚拟机(IOVM)服务的情形下,客户虚拟机B的I/O请求被VMM 1捕获,由VMM 1通过网络向运行在其他计算机上的VMM 2申请输入输出虚拟机(IOVM)服务,若申请成功,则VMM 1通过网络将相应的I/O请求转给VMM 2,VMM 2再决定分配IOVM 2来处理相应的I/O请求,IOVM 2处理完成后将结果返回给VMM 2,VMM 2再通过网络将执行的结果返回到VMM 1,VMM 1再将结果返回给客户虚拟机B。
如图4所示,IOVM的架构包括多个模块:内核、域间通信、域间内存共享、标准C库、TCP/IP协议栈、后端驱动和设备模型。
IOVM内核细分为多个子模块,包括:进程管理和调度、进程间通信、内存管理、驱动程序、文件系统。这几个子模块完成操作系统的基本功能,包括:进程的创建、管理和调度、终止;内存的分配和回收;驱动外部设备;文件系统提供创建、修改、删除文件以及文件的组织和目录结构的管理功能。
域间通信和域间内存共享,用于VMM和IOVM之间的数据传递和共享。
标准C库提供程序运行所需的基本的C运行库。TCP/IP协议栈提供相应的网络通信所需的功能。
客户机的I/O操作请求被VMM截获之后,由VMM分发到相应的IOVM,在IOVM中由相应的的后端驱动接收这些请求,后端驱动分析这些I/O请求,并决定是由设备模型进行处理还是由本地驱动进行处理。
如图6所示,将输入输出虚拟机(IOVM)的需要被共享的内存地址空间映射到虚拟机监控器(VMM)的内存地址空间,实现域间内存共享。可以有多个域间内存共享区域,可以根据内存资源来调节和限制总的域间内存共享的大小的最大上限。
本发明的工作流程为:
硬件自检之后,虚拟机监控器(VMM)先启动,虚拟机监控器(VMM)启动完成之后再启动至少一个输入输出虚拟机(IOVM),然后再根据需求启动一个或者多个客户虚拟机。虚拟机监控器(VMM)可以根据客户虚拟机的需求动态地增加或者减少输入输出虚拟机(IOVM)的数量,但至少有一个输入输出虚拟机(IOVM)在运行。
其中,客户机I/O请求获得输入输出虚拟机(IOVM)处理的流程如图5所示。客户虚拟机产生I/O请求;VMM捕获客户虚拟机的I/O请求;VMM根据客户虚拟机的I/O请求的类型和相关信息,决定分配给哪一个IOVM去处理;VMM把客户虚拟机的I/O请求转发给指定的IOVM;IOVM处理客户虚拟机的I/O请求,并将结果返回给VMM;VMM验证IOVM返回的结果,并将其转发给相应的客户虚拟机,若验证失败做相应的异常处理;客户虚拟机获得I/O处理的结果。
其中,虚拟机监控器(VMM)根据客户虚拟机的I/O请求来分配输入输出虚拟机(IOVM)的流程如图7所示。VMM根据客户机的I/O请求的类型和相关信息,决定分配给哪一个IOVM去处理;是否能分配本机上的IOVM来处理?是,指定本机上的某个IOVM来处理;否,根据远程I/O服务器列表,依次寻找可以提供相应的IOVM服务的远程计算机;是否找到合适的I/O服务器?是,指定远程计算机上的某个IOVM来处理;否,返回VMM根据客户机的I/O请求的类型和相关信息,决定分配给哪一个IOVM去处理。
机译: 能够通过完善的虚拟化方法将VMM性能提高到半虚拟化水平的来宾操作系统中驱动室内虚拟机监控器的虚拟机系统及其控制方法
机译: 计算机系统,虚拟机监控器和虚拟机监控器的调度方法
机译: 计算机系统,虚拟机监控器以及虚拟机监控器的调度方法