专利名称:虚拟机集群的模拟输入输出方法、装置及系统的利记博彩app
技术领域:
本发明属于虚拟机技术领域,尤其涉及虚拟机(Virtual Machine,VM)集群的模拟输入/输出(Input/Output,I/O)方法、装置及系统。
背景技术:
虚拟I/O服务器(Virtual I/O Server, V10S)是一种用在虚拟化系统中为VM提供共享I/o服务和模拟I/O服务的装置,其作为当前流行的云计算平台的底层重要支撑技术之一,直接影响着VM的I/O性能,且其实现架构的复杂度会直接影响整个虚拟化系统的
复杂度。在例如云计算中心等大型数据处理环境下,运行着由多台服务器、网络设备及存储设备组成的集群,且通过在服务器上部署虚拟化软件,使得整个集群可以创建上千甚至上万个VM。在上述场景下,每个VM的模拟I/O都是由其所在服务器上的VIOS提供的,这就意味着必须在每个服务器上构造一个设备模拟器(Device Model, DM),且每台服务器都必须维护该DM运行产生的的软件堆栈,这种架构需要每台服务器均耗费资源来运行功能相同的模块,增加了 VM集群的软件复杂性,加大了 VM集群的资源开销。
发明内容
本发明实施例的目的在于提供VM集群的模拟I/O方法及服务器,旨在解决现有的VM集群需要在其每台服务器均构造一个DM,导致VM集群的软件复杂性增加,资源开销加大的问题。第一方面,所述VM集群的模拟I/O方法包括:第一服务器接收第二服务器的模拟I/o处理指令,所述第二服务器中集成了所述VM集群中所有VM的设备模拟器DM,所述模拟I/O处理指令由所述DM生成;所述第一服务器根据所述模拟I/O处理指令对所述模拟I/O处理指令指示的VM进行状态更新。在第一方面的第一种可能的实现方式中,所述第一服务器和所述第二服务器通过快速外围组件互连PCIE的非透明桥NTB通信,所述模拟I/O处理指令包括VM标识,在第一服务器接收第二服务器的模拟I/O处理指令之后,所述第一服务器根据所述模拟I/O处理指令对所述模拟I/O处理指令指示的VM进行状态更新之前,所述方法还包括:所述第一服务器根据所述VM标识确定所述模拟I/O处理指令指示的VM。结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,在所述第一服务器接收第二服务器的模拟I/o处理指令之前,所述方法还包括:所述第一服务器将所述VM的模拟I/O访问指令封装成模拟I/O请求包,所述模拟I/O请求包包括所述VM标识;所述第一服务器将所述模拟I/O请求包发送至所述第二服务器,所述模拟I/O请求包被所述第二服务器用于根据所述VM标识传送至所述VM对应的所述DM进行I/O处理。在第一方面的第三种可能的实现方式中,所述第一服务器和所述第二服务器通过远程内存直接访问RDMA通信,在第一服务器接收第二服务器的模拟I/O处理指令之后,在所述第一服务器根据所述模拟I/o处理指令对所述模拟I/O处理指令指示的VM进行状态更新之前,所述方法还包括:所述第一服务器确定存储所述模拟I/O处理指令的所述第一服务器的内存地址;所述第一服务器将所述第一服务器的内存地址转换成VM的内存地址;所述第一服务器将所述VM的内存地址对应的VM确定为所述模拟I/O处理指令指示的VM。第二方面,所述VM集群的模拟I/O方法包括:第二服务器获取设备模拟器DM生成的模拟I/o处理指令,所述第二服务器中集成了所述VM集群中所有VM的DM ;所述第二服务器发送所述模拟I/O处理指令,所述模拟I/O处理指令被第一服务器用于对所述模拟I/O处理指令指示的所述VM进行状态更新。在第二方面的第一种可能的实现方式中,所述第一服务器和所述第二服务器通过快速外围组件互连PCIE的非透明桥NTB通信,所述模拟I/O处理指令包括所述第一服务器的NTB端口标识和所述VM的VM标识,所述第二服务器发送所述模拟I/O处理指令包括:所述第二服务器根据所述NTB端口标识将所述模拟I/O处理指令发送至所述第一服务器;所述VM标识被所述第一服务器用于确定所述模拟I/O处理指令指示的所述VM。结合第二方面或者第二方面的第一种可能的实现方式,在第二种可能的实现方式中,在所述第二服务器获取设备模拟器DM生成的模拟I/O处理指令之前,还包括:所述第二服务器接收所述第一服务器发送的模拟I/O请求包,所述模拟I/O请求包包括所述VM的VM标识;所述第二服务器根据所述VM标识,将所述模拟I/O请求包发送至所述VM对应的所述DM进行I/O处理。在第二方面的第三种可能的实现方式中,所述第一服务器和所述第二服务器通过远程内存直接访问RDMA通信,所述第二服务器发送所述模拟I/O处理指令包括:所述第二服务器将所述模拟I/O处理指令发送至所述第一服务器的内存地址,所述第一服务器的内存地址通过所述第一服务器将所述VM的内存地址转换得到。第三方面,所述服务器包括:第一接收单元,用于接收第二服务器的模拟I/O处理指令,所述第二服务器中集成了所述VM集群中所有VM的设备模拟器DM,所述模拟I/O处理指令由所述DM生成;状态更新单元,用于接收所述第一接收单元发送的所述模拟I/O处理指令,根据所述模拟I/O处理指令对所述模拟I/O处理指令指示的VM进行状态更新。在第三方面的第一种可能的实现方式中,所述第一服务器和所述第二服务器通过快速外围组件互连PCIE的非透明桥NTB通信,所述模拟I/O处理指令包括VM标识,所述服务器还包括:第一 VM确定单元,用于根据所述VM标识确定所述模拟I/O处理指令指示的VM。结合第三方面的第一种可能的实现方式,在第二种可能的实现方式中,所述服务器还包括:封装单元,用于将所述VM的模拟I/O访问指令封装成模拟I/O请求包,所述模拟I/O请求包包括所述VM标识;第一发送单元,用于接收所述封装单元发送的所述模拟I/O请求包,将所述模拟I/O请求包发送至所述第二服务器,所述模拟I/O请求包被所述第二服务器用于根据所述VM标识传送至所述VM对应的所述DM进行I/O处理。在第三方面的第三种可能的实现方式中,所述第一服务器和所述第二服务器通过远程内存直接访问RDMA通信,所述服务器还包括:内存地址确定单元,用于所述第一服务器确定存储所述模拟I/O处理指令的所述第一服务器的内存地址;转换单元,用于接收所述内存地址确定单元发送的所述第一服务器的内存地址,将所述第一服务器的内存地址转换成VM的内存地址;第二 VM确定单元,用于接收所述转换单元发送的所述VM的内存地址,将所述VM的内存地址对应的VM确定为所述模拟I/O处理指令指示的VM。第四方面,所述服务器包括:获取单元,用于获取设备模拟器DM生成的模拟I/O处理指令,所述服务器中集成了所述VM集群中所有VM的DM ;第二发送单元,用于接收所述获取单元,发送的所述模拟I/O处理指令,发送所述模拟I/O处理指令,所述模拟I/O处理指令被第一服务器用于对所述模拟I/O处理指令指示的所述VM进行状态更新。在第四方面的第一种可能的实现方式中,所述服务器和所述第一服务器通过快速外围组件互连PCIE的非透明桥NTB通信,所述模拟I/O处理指令包括所述第一服务器的NTB端口标识和所述VM的VM标识,所述第二发送单元具体用于:根据所述NTB端口标识将所述模拟I/O处理指令发送至所述第一服务器;所述VM标识被所述第一服务器用于确定所述模拟I/O处理指令指示的所述VM。结合第四方面或者第四方面的第一种可能的实现方式,在第二种可能的实现方式中,所述服务器还包括:第二接收单元,用于接收所述第一服务器发送的模拟I/O请求包,所述模拟I/o请求包包括所述VM的VM标识;第三发送单元,用于接收所述第二接收单元发送的所述模拟I/O请求包,根据所述VM标识,将所述模拟I/O请求包发送至所述VM对应的所述DM进行I/O处理。在第四方面的第三种可能的实现方式中,所述服务器和所述第一服务器通过远程内存直接访问RDMA通信,所述第二发送单元具体用于:将所述模拟I/O处理指令发送至所述第一服务器的内存地址,所述第一服务器的内存地址通过所述第一服务器将所述VM的内存地址转换得到。在本发明实施例中,通过将VM集群中所有VM的DM均集中运行在一台服务器上,并利用PCIE的NTB机制或者RDMA机制实现各VM所在服务器与DM所在服务器之间的通信,以实现VM的模拟1/0,有效简化了 VM集群的软件架构,提高了 VM集群的资源利用率。
图1是现有技术提供的VM集群硬件架构的结构框图;图2是本发明实施例提供的VM集群的模拟I/O方法第一服务器的实现流程图;图3是本发明另一实施例提供的VM集群的模拟I/O方法第一服务器的实现流程图;图4是本发明另一实施例提供的VM集群的模拟I/O方法第一服务器的实现流程图;图5是本发明另一实施例提供的VM集群的模拟I/O方法第一服务器的实现流程图;图6是本发明另一实施例提供的VM集群的模拟I/O方法第一服务器的实现流程图;图7是本发明实施例提供的VM集群的模拟I/O方法第二服务器的实现流程图;图8是本发明另一实施例提供的VM集群的模拟I/O方法第二服务器的实现流程图;图9是本发明另一实施例提供的VM集群的模拟I/O方法第二服务器的实现流程图;图10是本发明实施例提供的VM集群的模拟I/O装置的结构框图;图11是本发明实施例提供的VM集群的模拟I/O装置的硬件结构框图。
具体实施例方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。在本发明实施例中,通过将VM集群中所有VM的DM均集中运行在一台服务器上,并利用快速外围组件互连(Peripheral Component Interconnect Express, PCIE)的非透明桥(Non-Transparent Bridge,NTB)机制或者远程直接内存访问(Remote Direct MemoryAccess, RDMA)机制实现各VM所在服务器与DM所在服务器之间的通信,以实现VM的模拟1/0,有效简化了 VM集群的软件架构,提高了 VM集群的资源利用率。图1示出了本发明实施例提供的VM集群硬件架构的结构框图,为了便于说明,仅不出了与本实施例相关的部分。参照图1,该VM集群包括多台第一服务器11、一台第二服务器12以及交换设备13。其中,每个第一服务器11均集成了其自身相应的硬件平台,该硬件平台包括了中央处理器(Central Processing Unit, CPU)、内存、网卡、存储设备、主机总线适配器(HostBus Adapter, HBA)及互联设备等高速1/0设备111,还包括了键盘、鼠标、显示卡及串口等低速1/0设备(又称模拟1/0设备)112。上述高速1/0设备111及低速设备112均可以作为1/0资源被每台第一服务器11上创建的VM所共享。在本实施例中,VM集群中每个VM所对应的DM均集中运行在第二服务器12上,以对低速I/o设备111进行纯软件方式模拟。与此同时,每台第一服务器11均通过交换设备13与第二服务器12进行通信,交换设备13主要通过连接在每个第一服务器11与第二服务器12之间的NTB或者通过RDMA控制器来完成数据报文的转发,以实现VM的模拟1/0。以下结合具体的实施例来对本发明图1实施例所述的VM集群中VM的模拟1/0的方法进行详细阐述,首先阐述以图1所示的任意一个第一服务器11作为执行主体的相关实施例:图2示出了本发明实施例提供的VM集群的模拟1/0方法第一服务器的实现流程,详述如下:在步骤S201中,第一服务器接收第二服务器的模拟1/0处理指令,该第二服务器中集成了 VM集群中所有VM的DM,其中,模拟1/0处理指令由DM生成。在本实施例中,通过在VM集群中选择一台服务器作为第二服务器,来集中运行VM集群中所有VM的DM,当任意一台第一服务器上有VM被创建时,则相应地在第二服务器上创建该VM对应的DM。DM在VM运行过程中模拟相应的1/0过程,并由第二服务器将DM模拟1/0过程所产生的模拟1/0处理指令发送给第一服务器。第二服务器发送模拟1/0处理指令可以包括但不限于以下几种情况:1、第一服务器上的VM发起模拟1/0请求,第二服务器上该VM对应的DM根据该模拟I/o请求进行I/O处理后,由第二服务器发送相应的模拟I/O处理指令;2、第二服务器上的DM直接向其对应的VM发起中断,第二服务器发送该中断的模拟I/O处理指令;3、第二服务器上的DM对其对应的VM进行的其他I/O处理,第二服务器发送相应的模拟I/o处理指令。作为本发明的一个实施例,第一服务器与第二服务器之间可以通过PCIE的NTB机制进行通信,第二服务器根据NTB提供的地址窗口机制,来向第一服务器发送模拟I/O处理指令。在本实施例中,NTB机制预先设置好地址转换规则,把一个服务器发往另一个服务器的数据报文的地址进行转换,转换为不会与其他服务器的地址空间相冲突的地址,由此基于PCIE总线来为服务器与服务器之间提供高带宽和低延时的通信链路。因此,在本实施例所述VM集群中的每个第一服务器与第二服务器均具备独立的NTB端口和相应的NTB端口标识,每个NTB端口标识用于唯一指示一个NTB端口,从而使得第二服务器在发送模拟I/O处理指令时,能够根据唯一的NTB端口标识来区分VM集群中不同的第一服务器。在本实施例中,第二服务器基于NTB机制向第一服务器发送模拟I/O处理指令的具体实现流程将在后续实施例中进行详细阐述,在此不赘述。作为本发明的另一实施例,第二服务器还可以通过RDMA机制来将模拟I/O处理指令发送给第一服务器,其具体实现流程将在后续实施例中进行详细阐述,在此不赘述。在步骤S202中,第一服务器根据模拟I/O处理指令对该模拟I/O处理指令指示的VM进行状态更新。在本实施例中,当第一服务器接收到来自第二服务器的模拟I/O处理指令后,则根据该模拟I/o处理指令中所包含的VM指示信息,来对该模拟I/O处理指令指示的VM的虚拟化CPU进行重新调度,从而实现该VM状态的更新。作为本发明的一个实施例,当第一服务器与第二服务器之间基于PCIE的NTB机制进行通信时,则模拟I/o处理指令中的VM指示信息包括VM标识,该VM标识用于唯一标识一个VM,由该VM对应的DM在生成模拟I/O处理指令时进行添加,以使第一服务器能够根据该VM标识区分出该模拟I/O处理指令是发送给第一服务器中的哪个VM。作为本发明的另一实施例,当第一服务器与第二服务器之间基于RDMA机制进行通信时,则模拟I/O处理指令会直接发送到其指示的VM的内存物理地址中,因此,第一服务器根据读取该模拟I/O处理指令的物理地址,即可以判断出该模拟I/O处理指令所指示的VM,从而根据模拟I/O处理指令对该VM进行虚拟化状态的更新。因此,在本实施例中,VM集群中所有第一服务器上的所有VM对应的DM均运行在一台第二服务器上,基于PCIE的NTB机制或者RDMA机制来对不同VM的模拟I/O指令流进行区分,从而无需在每台服务器上均构建相应的模拟环境,大大简化了 VM集群的软件架构,提高了 VM集群的资源利用率。图3示出了本发明另一实施例提供的VM集群的模拟I/O方法第一服务器的实现流程,在本实施例中,第一服务器和第二服务器基于PCIE的NTB进行通信,详述如下:在步骤S301中,第一服务器接收第二服务器的模拟I/O处理指令,该模拟I/O处理指令中包括VM标识。
在本实施例中,由于DM是对应于第一服务器中的VM所创建的,因此,当第二服务器中的DM进行I/O模拟时,其生成的模拟I/O处理指令中包括了其对应的VM的VM标识。在步骤S302中,第一服务器根据该VM标识确定VM。在步骤S303中,第一服务器根据模拟I/O处理指令对该VM进行状态更新。由于每台第一服务器中的VM可能会有若干个,则对第一服务器接收到模拟I/O指令时,可以根据该模拟I/o指令中的VM标识,确定出该模拟I/O指令所指示的VM,从而根据该模拟I/O指令对确定出的VM进行状态更新。图3所述实施例可以适用于上述第二服务器向第一服务器发送模拟I/O处理指令的三种情况,而针对上述情况I,进一步地,如图4所示,在步骤S301之前,还包括:在步骤S401中,第一服务器将VM的I/O访问指令封装成模拟I/O请求包,该模拟I/O请求包包括所述VM标识。在本实施例中,对于每台第一服务器,当创建在其之上的VM访问低速I/O设备时,会发起相应的模拟I/o访问指令,该模拟I/O访问指令中包含了 VM需要访问的低速I/O设备的内存映射(Memory mapping I/O,丽10)空间或者端口地址空间。此时,第一服务器截获该条模拟I/O访问指令。当截获了 VM的模拟I/O访问指令后,第一服务器将该模拟I/O访问指令中的操作数和操作码等I/O访问信息进行译码,并为该模拟I/O访问指令添加该VM的VM标识,从而完成对该模拟I/O指令的封装,生成模拟I/O请求包,以使该模拟I/O请求包能够与其他VM的模拟I/O请求包区分开来。在步骤S402中,第一服务器将模拟I/O请求包发送至第二服务器,该模拟I/O请求包被第二服务器用于根据VM标识发送至VM对应的DM进行I/O处理。在本实施例中,第一服务器根据第二服务器的NTB端口标识,将封装后的模拟I/O请求包通过相应的NTB发送至第二服务器,以使第二服务器根据该I/O请求包中的VM标识,将该I/O请求包发送至该VM对应的DM中进行处理。因此,在本发明实施例中,基于PCIE的NTB机制,能够实现将VM集群中所有VM对应的DM均集中运行在一台第二服务器上,对VM的模拟I/O请求进行处理,或者向VM直接发起中断,有效简化了 VM集群的软件架构,提高了 VM集群的资源利用率。图5示出了本发明另一实施例提供的VM集群的模拟I/O方法第一服务器的实现流程,在本实施例中,第一服务器和第二服务器基于RDMA机制进行通信,详述如下:在步骤S501中,第一服务器从第一服务器的内存中接收第二服务器的模拟I/O处理指令。在本实施例中,PCIE交换机直接将模拟I/O处理指令由第二服务器的内存中拷贝至第一服务器的内存中,其中,目的地址即为第一服务器中VM对应的内存地址。具体地,如图6所示,在步骤S501之前,还包括:步骤S601:第一服务器从RDMA控制器中获取VM的内存地址。该VM的内存地址由VM对RDMA控制器编程,填写相应的描述符生成。步骤S602:第一服务器将VM的内存地址转换成第一服务器的内存地址。在步骤S502中,第一服务器确定存储模拟I/O处理指令的第一服务器的内存地址。在步骤S503中,第一服务器将第一服务器的内存地址转换成VM的内存地址。
在步骤S504中,第一服务器将VM的内存地址对应的VM确定为该模拟I/O处理指令指示的VM。在步骤S505中,第一服务器根据模拟I/O处理指令对该模拟I/O处理指令指示的VM进行状态更新。上述通过RDMA通信来完成VM状态更新适用于当DM直接向其对应的VM发起中断的情况,由此,即可以利用PCIE交换机的RDMA功能直接在两个服务器之间实现内存拷贝,完成模拟I/O处理指令的发送,实现VM状态更新。以下阐述以图1所示的第二服务器12作为执行主体的相关实施例:图7示出了本发明实施例提供的VM集群的模拟I/O方法第二服务器的实现流程,详述如下:在步骤S701中,第二服务器获取DM生成的模拟I/O处理指令,其中,第二服务器中集成了 VM集群中所有VM的DM。在步骤S702中,第二服务器发送模拟I/O处理指令,该模拟I/O处理指令被第一服务器用于对模拟I/o处理指令指示的VM进行虚拟化状态更新。作为本发明的一个实施例,当第一服务器和第二服务器通过PCIE的NTB机制进行通信时,DM生成的模拟I/O处理指令中令包括了第一服务器的NTB端口标识和VM的VM标识,其中,NTB端口标识能够使得第二服务器将该模拟I/O处理指令发送至相应的第一服务器,而VM标识被第一服务器用于确定该模拟I/O处理指令指示的VM。进一步地,当该模拟I/O处理指令是由DM根据其对应的VM发起的模拟I/O请求进行I/o处理后生成时,如图8所示,在步骤S701之前,还包括:在步骤S801中,第二服务器接收第一服务器发送的模拟I/O请求包,该模拟I/O请求包包括VM的VM标识。在步骤S802中,第二服务器根据该VM标识,将该模拟I/O请求包发送至VM对应的DM进行I/O处理。作为本发明的另一实施例,当第一服务器和第二服务器通过DRMA机制进行通信时,如图9所示,步骤S702具体为:第二服务器将模拟I/O处理指令发送至第一服务器的内存地址,其中,第一服务器的内存地址通过第一服务器将VM的内存地址转换得到。该实现原理已在本发明图5及图6所示实施例中进行详细阐述,在此不赘述。在本发明实施例中,通过将VM集群中所有VM的DM均集中运行在一台服务器上,并利用PCIE的NTB机制或者RDMA机制实现各VM所在服务器与DM所在服务器之间的通信,以实现VM的模拟1/0,有效简化了 VM集群的软件架构,提高了 VM集群的资源利用率。图10示出了本发明实施例提供的VM集群的模拟输入输出I/O装置的结构框图,该装置分别位于第一服务器和第二服务器上,用于分别运行本发明图2至图9实施例所述的VM集群的模拟I/O方法。为了便于说明,仅示出了与本实施例相关的部分。参照图10,在第一服务器上,该装置包括:第一接收单元1001,接收第二服务器的模拟I/O处理指令,所述第二服务器中集成了所述VM集群中所有VM的设备模拟器DM,所述模拟I/O处理指令由所述DM生成。状态更新单元1002,接收所述第一接收单元1001发送的所述模拟I/O处理指令,根据所述模拟I/o处理指令对所述模拟I/O处理指令指示的VM进行状态更新。可选地,所述第一服务器和所述第二服务器通过PCIE的NTB通信,所述模拟I/O处理指令包括VM标识,所述第一服务器还包括:第一 VM确定单元,根据所述VM标识确定所述模拟I/O处理指令指示的VM。可选地,所述第一服务器还包括:封装单元,将所述VM的模拟I/O访问指令封装成模拟I/O请求包,所述模拟I/O请求包包括所述VM标识。第一发送单元,接收所述封装单元发送的所述模拟I/O请求包,将所述模拟I/O请求包发送至所述第二服务器,所述模拟I/o请求包被所述第二服务器用于根据所述VM标识传送至所述VM对应的所述DM进行I/O处理。可选地,所述第一服务器和所述第二服务器通过RDMA通信,所述第一服务器还包括:内存地址确定单元,所述第一服务器确定存储所述模拟I/O处理指令的所述第一服务器的内存地址。转换单元,接收所述内存地址确定单元发送的所述第一服务器的内存地址,将所述第一服务器的内存地址转换成VM的内存地址。第二 VM确定单元,用于接收所述转换单元发送的所述VM的内存地址,将所述VM的内存地址对应的VM确定为所述模拟I/O处理指令指示的VM。在第二服务器上,包括:获取单元1003,获取设备模拟器DM生成的模拟I/O处理指令,所述服务器中集成了所述VM集群中所有VM的DM ;第二发送单元1004,接收所述获取单元1003发送的所述模拟I/O处理指令,发送所述模拟I/o处理指令,所述模拟I/O处理指令被第一服务器用于对所述模拟I/O处理指令指示的所述VM进行状态更新。可选地,所述二服务器和所述第一服务器通过PCIE的NTB通信,所述模拟I/O处理指令包括所述第一服务器的NTB端口标识和所述VM的VM标识,所述第二发送单元1004具体用于:根据所述NTB端口标识将所述模拟I/O处理指令发送至所述第一服务器;所述VM标识被所述第一服务器用于确定所述模拟I/O处理指令指示的所述VM。可选地,所述第二服务器还包括:第二接收单元,接收所述第一服务器发送的模拟I/O请求包,所述模拟I/O请求包包括所述VM的VM标识。第三发送单元,接收所述第二接收单元发送的所述模拟I/O请求包,根据所述VM标识,将所述模拟I/o请求包发送至所述VM对应的所述DM进行I/O处理。可选地,所述第二服务器和所述第一服务器通过远程内存直接访问RDMA通信,所述第二发送单元1004具体用于:将所述模拟I/O处理指令发送至所述第一服务器的内存地址,所述第一服务器的内存地址通过所述第一服务器将所述VM的内存地址转换得到。
图11示出了本发明实施例提供的VM集群的模拟输入输出I/O装置的硬件结构框图,该装置分别位于第一服务器和第二服务器上,用于分别运行本发明图2至图9实施例所述的VM集群的模拟I/O方法。为了便于说明,仅示出了与本实施例相关的部分。参照图11,在第一服务器中,包括:第一处理器1101,第一通信接口 1102,第一存储器1103,第一总线1104。第一处理器1101,第一通信接口 1102,第一存储器1103通过第一总线1104完成
相互间的通信。第一通信接口 1102,用于接收第二服务器的模拟I/O处理指令,所述第二服务器中集成了所述VM集群中所有VM的设备模拟器DM,所述模拟I/O处理指令由所述DM生成。第一处理器1101,用于执行程序,具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。第一处理器1101可能是一个中央处理器,或者是特定集成电路(ApplicationSpecific Integrated Circuit, ASIC),或者是被配置成实施本发明实施例的一个或多个集成电路。第一存储器1103,用于存放程序。第一存储器1103可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。程序具体可以用于:根据所述模拟I/O处理指令对所述模拟I/O处理指令指示的VM进行状态更新。可选地,所述第一服务器和所述第二服务器通过PCIE的NTB通信,所述模拟I/O处理指令包括VM标识,所述程序还用于:根据所述VM标识确定所述模拟I/O处理指令指示的VM。可选地,所述程序还用于:将所述VM的模拟I/O访问指令封装成模拟I/O请求包,所述模拟I/O请求包包括所述VM标识。第一通信接口 1102,还用于将所述模拟I/O请求包发送至所述第二服务器,所述模拟I/o请求包被所述第二服务器用于根据所述VM标识传送至所述VM对应的所述DM进行I/O处理。可选地,所述第一服务器和所述第二服务器通过RDMA通信,所述程序还用于:确定存储所述模拟I/O处理指令的所述第一服务器的内存地址。将所述第一服务器的内存地址转换成VM的内存地址。将所述VM的内存地址对应的VM确定为所述模拟I/O处理指令指示的VM。在第二服务器中,包括:第二处理器1105,第二通信接口 1106,第二存储器1107,第二总线1108。第二处理器1105,第二通信接口 1106,第二存储器1107通过第二总线1108完成
相互间的通信。第二处理器1105,用于执行程序,具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。
第二处理器1105可能是一个中央处理器,或者是特定集成电路(ApplicationSpecific Integrated Circuit, ASIC),或者是被配置成实施本发明实施例的一个或多个集成电路。第二存储器1107,用于存放程序。第二存储器1107可能包含高速RAM存储器,也可能还包括非易失性存储器(non-vo latile memory ),例如至少一个磁盘存储器。程序具体可以用于:获取设备模拟器DM生成的模拟I/O处理指令,所述服务器中集成了所述VM集群中所有VM的DM。第二通信接口 1106,用于发送所述模拟I/O处理指令,所述模拟I/O处理指令被第一服务器用于对所述模拟I/o处理指令指示的所述VM进行状态更新。可选地,所述二服务器和所述第一服务器通过PCIE的NTB通信,所述模拟I/O处理指令包括所述第一服务器的NTB端口标识和所述VM的VM标识,所述第二通信接口 1106具体用于:根据所述NTB端口标识将所述模拟I/O处理指令发送至所述第一服务器。所述VM标识被所述第一服务器用于确定所述模拟I/O处理指令指示的所述VM。可选地,第二通信接口 1106还用于:接收所述第一服务器发送的模拟I/O请求包,所述模拟I/O请求包包括所述VM的VM标识。根据所述VM标识,将所述模拟I/O请求包发送至所述VM对应的所述DM进行I/O处理。可选地,所述第二服务器和所述第一服务器通过远程内存直接访问RDMA通信,第二通信接口 1106具体用于:将所述模拟I/O处理指令发送至所述第一服务器的内存地址,所述第一服务器的内存地址通过所述第一服务器将所述VM的内存地址转换得到。在本发明实施例中,通过将VM集群中所有VM的DM均集中运行在一台服务器上,并利用PCIE的NTB机制或者RDMA机制实现各VM所在服务器与DM所在服务器之间的通信,以实现VM的模拟1/0,有效简化了 VM集群的软件架构,提高了 VM集群的资源利用率。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种虚拟机VM集群的模拟输入输出I/O方法,其特征在于,包括: 第一服务器接收第二服务器的模拟I/O处理指令,所述第二服务器中集成了所述VM集群中所有VM的设备模拟器DM,所述模拟I/O处理指令由所述DM生成; 所述第一服务器根据所述模拟I/O处理指令对所述模拟I/O处理指令指示的VM进行状态更新。
2.按权利要求1所述的方法,其特征在于,所述第一服务器和所述第二服务器通过快速外围组件互连PCIE的非透明桥NTB通信,所述模拟I/O处理指令包括VM标识, 在第一服务器接收第二服务器的模拟I/O处理指令之后,所述第一服务器根据所述模拟I/O处理指令对所述模拟I/O处理指令指示的VM进行状态更新之前,所述方法还包括:所述第一服务器根据所述VM标识确定所述模拟I/O处理指令指示的VM。
3.按权利要求2所述的方法,其特征在于,在所述第一服务器接收第二服务器的模拟I/O处理指令之前,所述方法还包括: 所述第一服务器将所述VM的模拟I/O访问指令封装成模拟I/O请求包,所述模拟I/O请求包包括所述VM标识; 所述第一服务器将所述模拟I/O请求包发送至所述第二服务器,所述模拟I/O请求包被所述第二服务器用于根据所述VM标识传送至所述VM对应的所述DM进行I/O处理。
4.按权利要求1所述的方法,其特征在于,所述第一服务器和所述第二服务器通过远程内存直接访问RDMA通信, 在第一服务器接收第二服务器的模拟I/O处理指令之后,在所述第一服务器根据所述模拟I/O处理指令对所述模拟I/O处理指令指示的VM进行状态更新之前,所述方法还包括: 所述第一服务器确定存储所述模拟I/o处理指令的所述第一服务器的内存地址; 所述第一服务器将所述第一服务器的内存地址转换成VM的内存地址; 所述第一服务器将所述VM的内存地址对应的VM确定为所述模拟I/O处理指令指示的VM。
5.一种虚拟机VM集群的模拟输入输出I/O方法,其特征在于,包括: 第二服务器获取设备模拟器DM生成的模拟I/O处理指令,所述第二服务器中集成了所述VM集群中所有VM的DM ; 所述第二服务器发送所述模拟I/O处理指令,所述模拟I/O处理指令被第一服务器用于对所述模拟I/O处理指令指示的所述VM进行状态更新。
6.按权利要求5所述的方法,其特征在于,所述第一服务器和所述第二服务器通过快速外围组件互连PCIE的非透明桥NTB通信,所述模拟I/O处理指令包括所述第一服务器的NTB端口标识和所述VM的VM标识,所述第二服务器发送所述模拟I/O处理指令包括: 所述第二服务器根据所述NTB端口标识将所述模拟I/O处理指令发送至所述第一服务器; 所述VM标识被所述第一服务器用于确定所述模拟I/O处理指令指示的所述VM。
7.按权利要求5或6所述的方法,其特征在于,在所述第二服务器获取设备模拟器DM生成的模拟I/O处理指令之前,还包括: 所述第二服务器接收所述第一服务器发送的模拟I/o请求包, 所述模拟I/O请求包包括所述VM的VM标识; 所述第二服务器根据所述VM标识,将所述模拟I/O请求包发送至所述VM对应的所述DM进行I/O处理。
8.按权利要求5所述的方法,其特征在于,所述第一服务器和所述第二服务器通过远程内存直接访问RDMA通信,所述第二服务器发送所述模拟I/O处理指令包括: 所述第二服务器将所述模拟I/O处理指令发送至所述第一服务器的内存地址,所述第一服务器的内存地址通过所述第一服务器将所述VM的内存地址转换得到。
9.一种服务器,其特征在于,包括: 第一接收单元,用于接收第二服务器的模拟I/O处理指令,所述第二服务器中集成了所述VM集群中所有VM的设备模拟器DM,所述模拟I/O处理指令由所述DM生成; 状态更新单元,用于接收所述第一接收单元发送的所述模拟I/O处理指令,根据所述模拟I/O处理指令对所述模拟I/O处理指令指示的VM进行状态更新。
10.按权利要求9所述的服务器,其特征在于,所述服务器和所述第二服务器通过快速外围组件互连PCIE的非透明桥NTB通信,所述模拟I/O处理指令包括VM标识, 所述服务器还包括: 第一 VM确定单元,用于根据所述VM标识确定所述模拟I/O处理指令指示的VM。
11.按权利要求10所述的服务器,其特征在于,所述服务器还包括: 封装单元,用于将所述VM的模拟I/O访问指令封装成模拟I/O请求包,所述模拟I/O请求包包括所述VM标识; 第一发送单元,用于接收所述封装单元发送的所述模拟I/O请求包,将所述模拟I/O请求包发送至所述第二服务器,所述模拟I/O请求包被所述第二服务器用于根据所述VM标识传送至所述VM对应的所述DM进行I/O处理。
12.按权利要求9所述的服务器,其特征在于,所述服务器和所述第二服务器通过远程内存直接访问RDMA通信, 所述服务器还包括: 内存地址确定单元,用于所述第一服务器确定存储所述模拟I/O处理指令的所述第一服务器的内存地址; 转换单元,用于接收所述内存地址确定单元发送的所述第一服务器的内存地址,将所述第一服务器的内存地址转换成VM的内存地址; 第二 VM确定单元,用于接收所述转换单元发送的所述VM的内存地址,将所述VM的内存地址对应的VM确定为所述模拟I/O处理指令指示的VM。
13.一种服务器,其特征在于,包括: 获取单元,用于获取设备模拟器DM生成的模拟I/O处理指令,所述服务器中集成了所述VM集群中所有VM的DM ; 第二发送单元,用于接收所述获取单元发送的所述模拟I/O处理指令,发送所述模拟I/O处理指令,所述模拟I/O处理指令被第一服务器用于对所述模拟I/O处理指令指示的所述VM进行状态更新。
14.按权利要求13所述的服务器,其特征在于,所述服务器和所述第一服务器通过快速外围组件互连PCIE的非透明桥NTB通信,所述模拟I/O处理指令包括所述第一服务器的NTB端口标识和所述VM的VM标识,所述第二发送单元具体用于: 根据所述NTB端口标识将所述模拟I/O处理指令发送至所述第一服务器; 所述VM标识被所述第一服务器用于确定所述模拟I/O处理指令指示的所述VM。
15.按权利要求13或14所述的服务器,其特征在于,所述服务器还包括: 第二接收单元,用于接收所述第一服务器发送的模拟I/O请求包,所述模拟I/O请求包包括所述VM的VM标识; 第三发送单元,用于接收所述第二接收单元发送的所述模拟I/O请求包,根据所述VM标识,将所述模拟I/O请求包发送至所述VM对应的所述DM进行I/O处理。
16.按权利要求13所述的方法,其特征在于,所述服务器和所述第一服务器通过远程内存直接访问RDMA通信,所述第二发送单元具体用于: 将所述模拟I/O处理指令发送至所述第一服务器的内存地址,所述第一服务器的内存地址通过所述第一服务器将所述VM的内存地址转换得到。
全文摘要
本发明适用于虚拟机技术领域,提供了虚拟机集群的模拟输入输出方法、装置及系统,包括第一服务器接收第二服务器的模拟I/O处理指令,所述第二服务器中集成了所述VM集群中所有VM的设备模拟器DM,所述模拟I/O处理指令由所述DM生成;所述第一服务器根据所述模拟I/O处理指令对所述模拟I/O处理指令指示的VM进行虚拟化状态更新。在本发明实施例中,通过将VM集群中所有VM的DM均集中运行在一台服务器上,并利用PCIE的NTB机制或者RDMA机制实现各VM所在服务器与DM所在服务器之间的通信,以实现VM的模拟I/O,有效简化了VM集群的软件架构,提高了VM集群的资源利用率。
文档编号G06F9/455GK103092676SQ201310001398
公开日2013年5月8日 申请日期2013年1月4日 优先权日2013年1月4日
发明者邱军 申请人:华为技术有限公司