发明内容
为了解决相关技术中的问题,本公开实施例提供一种虚拟化方法、装置、电子设备、介质及资源虚拟化系统。
第一方面,本公开实施例提供了一种虚拟化方法。
具体地,该虚拟化方法包括:
建立中间设备与外接硬件之间的第一映射关系;
为虚拟机创建虚拟资源,并建立所述中间设备和所述虚拟资源之间的第二映射关系;以及
基于所述第一映射关系和所述第二映射关系,通过所述虚拟资源向所述虚拟机提供所述外接硬件的硬件资源。
结合第一方面,本公开在第一方面的第一种实现方式中,所述第一映射关系包括以下任意一种或多种的组合:
一个中间设备与一个外接硬件的硬件资源之间的映射关系;
不同中间设备通过时间段划分的方式与同一外接硬件的不同硬件资源之间的映射关系;
不同中间设备通过空间划分的方式与同一外接硬件的不同硬件资源之间的映射关系;
同一中间设备与多个外接硬件的硬件资源之间的映射关系。
结合第一方面或第一方面的第一种实现方式,本公开在第一方面的第二种实现方式中,所述基于所述第一映射关系和所述第二映射关系,通过所述虚拟资源向所述虚拟机提供所述外接硬件的硬件资源,包括:
响应于虚拟机对所述虚拟资源的调用,基于所述第二映射关系确定与所述虚拟资源对应的中间设备;
基于所述第一映射关系,通过与所述虚拟资源对应的中间设备调用所述外接硬件,产生处理结果;
基于所述第二映射关系,将所述处理结果通过所述中间设备发送到所述虚拟机。
结合第一方面的第二种实现方式,本公开在第一方面的第三种实现方式中,所述将所述处理结果通过所述中间设备发送到所述虚拟机,包括:
所述外接硬件将所述处理结果按第一传输协议封装并发送到所述中间设备;
所述中间设备解析接收到的数据,将所述处理结果按第二传输协议封装并发送到所述虚拟机。
结合第一方面的第三种实现方式,本公开在第一方面的第四种实现方式中,所述外接硬件将所述处理结果按第一传输协议封装并发送到所述中间设备,包括:
截获所述外接硬件发出的信息;
在仅有一个与所述外接硬件对应的中间设备处于运行状态的情况下,将所截获的信息发送至处于运行状态的中间设备;
在多个与所述外接硬件对应的中间设备处于运行状态的情况下,解析所截获的信息以确定目标中间设备,并将所截获的信息发送至所述目标中间设备。
结合第一方面的第三种实现方式,本公开在第一方面的第五种实现方式中,所述中间设备解析接收到的数据,将所述处理结果按第二传输协议封装并发送到所述虚拟机,包括:
所述中间设备解析接收到的数据,通过直接存储器访问、远程直接存储器访问、内存映射I/O中的至少一种,经地址转换后,将所述处理结果写入所述虚拟机驻留的主机的物理地址空间。
第二方面,本公开实施例提供了一种虚拟化方法。
具体地,该虚拟化方法包括:
建立中间设备与PCIe设备之间的第一映射关系;
为虚拟机创建虚拟资源,并建立所述中间设备和所述虚拟资源之间的第二映射关系;以及
基于所述第一映射关系和所述第二映射关系,通过所述虚拟资源向所述虚拟机提供所述PCIe设备的硬件资源。
第三方面,本公开实施例提供了一种虚拟化装置。
具体地,该虚拟化装置包括:
建立模块,被配置为建立中间设备与外接硬件之间的第一映射关系;
创建模块,被配置为为虚拟机创建虚拟资源,并建立所述中间设备和所述虚拟资源之间的第二映射关系;以及
提供模块,被配置为基于所述第一映射关系和所述第二映射关系,通过所述虚拟资源向所述虚拟机提供所述外接硬件的硬件资源。
结合第三方面,本公开在第三方面的第一种实现方式中,所述第一映射关系包括以下任意一种或多种的组合:
一个中间设备与一个外接硬件的硬件资源之间的映射关系;
不同中间设备通过时间段划分的方式与同一外接硬件的不同硬件资源之间的映射关系;
不同中间设备通过空间划分的方式与同一外接硬件的不同硬件资源之间的映射关系;
同一中间设备与多个外接硬件的硬件资源之间的映射关系。
结合第三方面或第三方面的第一种实现方式,本公开在第三方面的第二种实现方式中,所述提供模块包括:
确定子模块,被配置为响应于虚拟机对所述虚拟资源的调用,基于所述第二映射关系确定与所述虚拟资源对应的中间设备;
调用子模块,被配置为基于所述第一映射关系,通过与所述虚拟资源对应的中间设备调用所述外接硬件,产生处理结果;
发送子模块,被配置为基于所述第二映射关系,将所述处理结果通过所述中间设备发送到所述虚拟机。
结合第三方面的第二种实现方式,本公开在第三方面的第三种实现方式中,所述发送子模块包括:
第一发送单元,被配置为通过所述外接硬件将所述处理结果按第一传输协议封装并发送到所述中间设备;
第二发送单元,被配置为通过所述中间设备解析接收到的数据,将所述处理结果按第二传输协议封装并发送到所述虚拟机。
结合第三方面的第三种实现方式,本公开在第三方面的第四种实现方式中,所述第一发送单元包括:
截获子单元,被配置为截获所述外接硬件发出的信息;
第一发送子单元,被配置为在仅有一个与所述外接硬件对应的中间设备处于运行状态的情况下,将所截获的信息发送至处于运行状态的中间设备;
第二发送子单元,被配置为在多个与所述外接硬件对应的中间设备处于运行状态的情况下,解析所截获的信息以确定目标中间设备,并将所截获的信息发送至所述目标中间设备。
结合第三方面的第三种实现方式,本公开在第三方面的第五种实现方式中,所述第二发送单元被配置为:
通过所述中间设备解析接收到的数据,通过直接存储器访问、远程直接存储器访问、内存映射I/O中的至少一种,经地址转换后,将所述处理结果写入所述虚拟机驻留的主机的物理地址空间。
第四方面,本公开实施例提供了一种电子设备,包括存储器和处理器,所述存储器用于存储一条或多条计算机指令,所述一条或多条计算机指令被所述处理器执行以实现如第一方面、第一方面的第一种至第五种实现方式或第二方面中任一项所述的方法。
第五方面,本公开实施例中提供了一种计算机可读存储介质,其上存储有计算机指令,该计算机指令被处理器执行时实现如第一方面、第一方面的第一种至第五种实现方式或第二方面中任一项所述的方法。
第六方面,本公开实施例中提供了一种资源虚拟化系统。
具体地,该资源虚拟化系统包括目标侧设备,所述目标侧设备包括:
硬件接口,用于接入外接硬件;
中间设备,用于存储与所述硬件接口连接的外接硬件之间的第一映射关系,响应于来自发起侧设备的硬件资源调用请求,基于所述第一映射关系,调用对应的外接硬件,并将所述外接硬件返回的处理结果发送至所述发起侧设备。
结合第六方面,本公开在第六方面的第一种实现方式中,所述第一映射关系包括以下任意一种或多种的组合:
一个中间设备与一个外接硬件的硬件资源之间的映射关系;
不同中间设备通过时间段划分的方式与同一外接硬件的不同硬件资源之间的映射关系;
不同中间设备通过空间划分的方式与同一外接硬件的不同硬件资源之间的映射关系;
同一中间设备与多个外接硬件的硬件资源之间的映射关系。
结合第六方面,本公开在第六方面的第二种实现方式中,所述目标侧设备还包括:
截获模块,用于截获从所述硬件接口传入的信息;
第一发送模块,用于在仅有一个与所述硬件接口对应的中间设备处于运行状态的情况下,将所截获的信息发送至所述处于运行状态的中间设备;
第二发送模块,用于在多个与所述硬件接口对应的中间设备处于运行状态的情况下,解析所截获的信息以确定目标中间设备,并将所截获的信息发送至所述目标中间设备。
结合第六方面、第六方面的第一种或第二种实现方式,本公开在第六方面的第三种实现方式中,该资源虚拟化系统还包括:
服务器,其上运行一个或多个虚拟机;
所述发起侧设备,与所述服务器连接;以及
数据交换设备,用于建立所述发起侧设备与所述目标侧设备之间的通信链路。
结合第六方面的第三种实现方式,本公开在第六方面的第四种实现方式中,所述服务器还包括输入输出内存管理单元,所述发起侧设备包括:
单根IO虚拟化模块,与所述输入输出内存管理单元连接,并用于建立与多个中间设备之间的第二映射关系,其中,在接收到所述虚拟机发送的硬件资源调用请求的情况下,基于所述第二映射关系,通过对应的中间设备调用所述外接硬件的硬件资源。
结合第六方面的第四种实现方式,本公开在第六方面的第五种实现方式中,所述目标侧设备包括第一网络设备,所述发起侧设备包括第二网络设备;
所述中间设备还用于为解析来自所述外接硬件的数据以获取处理结果,通过直接存储器访问的方式将所述处理结果写入所述第一网络设备的缓冲区;
所述第一网络设备用于为通过远程直接存储器访问和内存映射I/O的方式将所述处理结果通过所述数据交换设备发送至所述第二网络设备;
所述第二网络设备通过直接存储器访问的方式,并经所述输入输出内存管理单元执行地址转换后,将所述处理结果写入所述服务器的存储介质。
结合第六方面,本公开在第六方面的第六种实现方式中,所述硬件接口为PCIe接口,所述外界硬件包括具有PCIe接口的硬件设备。
根据本公开实施例提供的技术方案,通过建立中间设备与外接硬件之间的第一映射关系;为虚拟机创建虚拟资源,并建立所述中间设备和所述虚拟资源之间的第二映射关系;以及基于所述第一映射关系和所述第二映射关系,通过所述虚拟资源向所述虚拟机提供所述外接硬件的硬件资源,从而对不支持SR-IOV机制的外接硬件实现虚拟化支持,提高该些不支持SR-IOV的机制的外界硬件的虚拟化效率。
根据本公开实施例提供的技术方案,通过所述第一映射关系包括以下任意一种或多种的组合:一个中间设备与一个外接硬件的硬件资源之间的映射关系;不同中间设备通过时间段划分的方式与同一外接硬件的不同硬件资源之间的映射关系;不同中间设备通过空间划分的方式与同一外接硬件的不同硬件资源之间的映射关系;同一中间设备与多个外接硬件的硬件资源之间的映射关系,从而能够实现硬件资源池化,并且可以对硬件资源进行更小粒度的切分。
根据本公开实施例提供的技术方案,通过所述基于所述第一映射关系和所述第二映射关系,通过所述虚拟资源向所述虚拟机提供所述外接硬件的硬件资源,包括:响应于虚拟机对所述虚拟资源的调用,基于所述第二映射关系确定与所述虚拟资源对应的中间设备;基于所述第一映射关系,通过与所述虚拟资源对应的中间设备调用所述外接硬件,产生处理结果;基于所述第二映射关系,将所述处理结果通过所述中间设备发送到所述虚拟机,从而对不支持SR-IOV机制的外接硬件实现虚拟化支持,提高该些不支持SR-IOV的机制的外界硬件的虚拟化效率。
根据本公开实施例提供的技术方案,通过所述将所述处理结果通过所述中间设备发送到所述虚拟机,包括:所述外接硬件将所述处理结果按第一传输协议封装并发送到所述中间设备;所述中间设备解析接收到的数据,将所述处理结果按第二传输协议封装并发送到所述虚拟机,通过在中间设备对数据重新封装,相比采用固有的第一传输协议传输而言,可以降低数据的冗余,从而提高传输效率,进而提高整个虚拟化系统的工作效率。
根据本公开实施例提供的技术方案,通过所述外接硬件将所述处理结果按第一传输协议封装并发送到所述中间设备,包括:截获所述外接硬件发出的信息;根据所述第一映射关系,在仅有一个与所述外接硬件对应的中间设备处于运行状态的情况下,将所截获的信息发送至处于运行状态的中间设备;根据所述第一映射关系,在多个与所述外接硬件对应的中间设备处于运行状态的情况下,解析所截获的信息以确定目标中间设备,并将所截获的信息发送至所述目标中间设备,从而能够准确定位处理结果所对应的目标中间设备,以便通过第二映射关系传递到特定的虚拟机,实现不同虚拟机之间的物理隔离。
根据本公开实施例提供的技术方案,通过所述中间设备解析接收到的数据,将所述处理结果按第二传输协议封装并发送到所述虚拟机,包括:所述中间设备解析接收到的数据,通过直接存储器访问、远程直接存储器访问、内存映射I/O中的至少一种,经地址转换后,将所述处理结果写入所述虚拟机驻留的主机的物理地址空间,从而能够将处理结果直接写入存储器,避免了占用虚拟机管理器和CPU的资源,减少了虚拟机中断产生的开销。
根据本公开实施例提供的技术方案,通过建立中间设备与PCIe设备之间的第一映射关系;为虚拟机创建虚拟资源,并建立所述中间设备和所述虚拟资源之间的第二映射关系;以及基于所述第一映射关系和所述第二映射关系,通过所述虚拟资源向所述虚拟机提供所述PCIe设备的硬件资源,从而对不支持SR-IOV机制的外接硬件实现虚拟化支持,提高该些不支持SR-IOV的机制的外界硬件的虚拟化效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
具体实施方式
下文中,将参考附图详细描述本公开的示例性实施例,以使本领域技术人员可容易地实现它们。此外,为了清楚起见,在附图中省略了与描述示例性实施例无关的部分。
在本公开中,应理解,诸如“包括”或“具有”等的术语旨在指示本说明书中所公开的特征、数字、步骤、行为、部件、部分或其组合的存在,并且不欲排除一个或多个其他特征、数字、步骤、行为、部件、部分或其组合存在或被添加的可能性。
另外还需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本公开。
如上文所述,当前云计算环境下,外接硬件的池化、虚拟化和细粒度资源划分受到了广泛关注。本发明人发现,在外接硬件不支持SR-IOV(Single-root I/Ovirtualization,单根I/O虚拟化)机制时,外接硬件的虚拟化是一个比较大的挑战,目前的虚拟化机制效率较低。
例如,目前没有SR-IOV功能的PCIe设备需要采用MDEV(medium device)驱动的方式来实现设备的虚拟化,虚拟机(VM,Virtual Machine)对于PCIe设备的配置空间和基地址寄存器(BAR,base address register)空间的访问由VFIO MDEV(Virtual FunctionInput/Output medium device)仿真:
1)对配置空间的访问由VFIO MDEV转换为对真实配置空间的访问;
2)对MSI-X(Message Signaled Interrupt-X)空间的访问被VFIO MDEV截获后,通过中断注入实现中断虚拟化;
3)写入的数据如果是GPA(Guest Physical Address,虚拟器物理地址),那么MDEV对该数据进行扫描,调用副设备的IOMMU(Input/Output Memory Management Unit输入输出内存管理单元)Group将该地址转换为HPA(Host Physical Address,主机物理地址),然后,再将该HPA转换为虚拟的GPA,利用虚拟的GPA设置IOMMU,PCIe设备对VM的访问通过IOMMU进行。
这种虚拟化方式的缺点:1)需要CPU核资源参与虚拟化,带来额外的开销;2)IO命令中的DMA地址需要在MDEV驱动中经过两次转换,即从GVA(Guest Virtual Address,虚拟器虚拟地址)到GPA,再从GPA到HPA,不能利用IOMMU自身提供的IO虚拟化能力,同时增加了延迟开销;3)中断虚拟化需要频繁VM Exit/VM Entry切换,带来相应的性能损失;4)缺少物理隔离;5)管控对用户使用情况不感知。
此外,目前的外接硬件的池化方式通常使用外接硬件的接口固有的规范在网络中传输,例如,对于PCIe设备,通过PCIe TLP(Transaction Layer Packet事务层数据包)的协议将数据打包并在网络中传输,其优点是驱动和用户应用无侵入,但会带来以下缺点:1)网络带宽利用率较低,同时,延迟增加也会对延迟敏感应用带来较大压力;2)为了在前端CPU上挂载多个PCIe设备,需要进行PCIe BRIDGE的虚拟,增加延迟,同时预留多个PCIE EP(EndPoint)设备BDF(Bus,Device,Function,总线/设备/功能的标识符),增加硬件设备开销;3)PCIe设备只能整个与前端的某个PCIe EP进行绑定,无法进行更细粒度的切分,例如不能将一个PCIe设备分配给不同的前端Host使用;4)池化卡不做任何虚拟化的卸载,虚拟化损失+池化带来的损失可能会叠加放大。
本公开实施例提供了一种虚拟化方法,通过建立中间设备与外接硬件之间的第一映射关系;为虚拟机创建虚拟资源,并建立所述中间设备和所述虚拟资源之间的第二映射关系;以及基于所述第一映射关系和所述第二映射关系,通过所述虚拟资源向所述虚拟机提供所述外接硬件的硬件资源,从而对不支持SR-IOV机制的外接硬件实现虚拟化支持,提高该些不支持SR-IOV的机制的外界硬件的虚拟化效率。
图1示出根据本公开实施例的虚拟化方法的系统架构的示意图。
如图1所示,该系统架构可以包括服务器、发起侧、目标侧以及在发起侧和目标侧之间设置的数据交换设备。
根据本公开实施例,发起侧与服务器连接,所述服务器运行一个或多个虚拟机。虚拟资源例如PF和VF被呈现在虚拟机中以供虚拟机用户使用。
根据本公开实施例,在目标侧,一个或多个外接硬件通过插槽插接在目标侧机柜的背板上,目标侧设有多个中间设备,中间设备用于代替外接硬件与SR-IOV创建的虚拟资源建立连接,由于中间设备可支持SR-IOV机制,而中间设备又与外接硬件建立映射关系,从而不支持SR-IOV的外接硬件也能够因此实现SR-IOV的功能。
根据本公开实施例,发起侧和目标侧之间通过数据交换设备连接,例如高速光纤交换机等。
根据本公开实施例,通过SR-IOV机制实现IO设备的虚拟化,并通过CPU中的IOMMU进行地址转换,从而实现数据的直通,不再需要VMM(Virtual Machine Manager,虚拟机管理器)参与,通过硬件的方式对VMM的功能卸载,提高了虚拟系统的工作效率。
此外,通过中间设备解耦SR-IOV创建的虚拟功能和外接硬件,由于中间设备可以各种自由的方式与外接硬件之间建立映射关系,因而实现外接硬件的硬件资源的池化功能,并且可以对硬件资源进行更小粒度的切分。
上述系统架构例如可以设置在云计算中心的机房中,为远程用户提供资源租用的服务。
需要注意的是,图1所示仅为可以应用本公开实施例的场景的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他设备、系统、环境或场景。
图2示出根据本公开实施例的虚拟化方法的流程图。
如图2所示,该方法包括操作S210~S230。
在操作S210,建立中间设备与外接硬件之间的第一映射关系;
在操作S220,为虚拟机创建虚拟资源,并建立所述中间设备和所述虚拟资源之间的第二映射关系;以及
在操作S230,基于所述第一映射关系和所述第二映射关系,通过所述虚拟资源向所述虚拟机提供所述外接硬件的硬件资源。
根据本公开实施例,中间设备可以包括处理单元和存储单元,处理单元例如可以包括通用微处理器、指令集处理器或相关芯片组、专用微处理器(例如,专用集成电路(ASIC)、现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA))等等,存储单元例如可以包括随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)等等。
根据本公开实施例,外接硬件例如可以包括PCIe设备,即满足PCIe接口规范的设备,例如具有PCIe接口的处理设备(CPU、GPU等)、存储设备(包括磁盘阵列RAID等)、网络设备(例如网卡)等等。相应地,外接硬件的硬件资源例如可以包括运算资源、存储资源和网络资源等。例如,在外接硬件为GPU的情况下,外接硬件的硬件资源为该GPU的运算资源;在外接硬件为存储设备的情况下,外接硬件的硬件资源为该存储设备的存储资源;在外接硬件为网络设备的情况下,外接硬件的硬件资源为该网络设备的网络资源。
根据本公开实施例,与相关技术通过软件实现MDEV的技术不同,本公开实施例的中间设备以硬件方式实现类似MDEV设备的功能。由于第一映射关系可被存储在中间设备中,在接收到bar空间的访问请求时只需要根据第一映射关系即可定位对应的外接硬件,不需要对外接硬件的bar空间进行扫描以进行irq(中断请求)的虚拟化,有效提高了虚拟化机制的效率。
根据本公开实施例,在操作S220,发起侧以SR-IOV虚拟化的方式呈现多个虚拟资源,如图1所示的PF(Physical Functions,物理功能)和VF(Virtual Functions,虚拟功能)。
根据本公开实施例,外接硬件在根据中间设备提供的内存地址通过PCIe r/w TLP请求访问Host内存空间时,需要知道该中间设备所对应的PF/VF所处的节点(用UUID标志,每个UUID唯一标识一个节点),以及在节点上对应的PF/VF,目标侧可以保存这些信息和本地中间设备的设备号(mdev_id)的映射关系,即第二映射关系。
从而,在操作S230,目标侧的外接硬件可以基于该第一映射关系和第二映射关系,通过虚拟资源VF/PF向所述虚拟机VM提供硬件资源。
根据本公开实施例提供的技术方案,通过建立中间设备与外接硬件之间的第一映射关系;为虚拟机创建虚拟资源,并建立所述中间设备和所述虚拟资源之间的第二映射关系;以及基于所述第一映射关系和所述第二映射关系,通过所述虚拟资源向所述虚拟机提供所述外接硬件的硬件资源,从而对不支持SR-IOV机制的外接硬件实现虚拟化支持,提高该些不支持SR-IOV的机制的外界硬件的虚拟化效率。
根据本公开实施例,所述第一映射关系包括以下任意一种或多种的组合:
一个中间设备与一个外接硬件的硬件资源之间的映射关系;
不同中间设备通过时间段划分的方式与同一外接硬件的不同硬件资源之间的映射关系;
不同中间设备通过空间划分的方式与同一外接硬件的不同硬件资源之间的映射关系;
同一中间设备与多个外接硬件的硬件资源之间的映射关系。
根据本公开实施例,在外接硬件支持的情况下,既可以将一个外接硬件分配给一个中间设备,也可以将一个外接硬件分配给多个中间设备,还可以将多个外接硬件分配给一个中间设备。以上方式之间可以组合,例如,一部分外接硬件与中间设备一一对应,一部分外接硬件与中间设备之间是多对一的关系,另一部分外接硬件与中间设备之间是一对多的关系。通过以上方式可以实现更自由的硬件资源池化,并且可以对硬件资源进行更小粒度的切分。
其中,在一个外接硬件与多个中间设备对应的情况下,涉及到硬件资源的分割。
根据本公开实施例,可以采用时间段划分的方式,将一个外接硬件的硬件资源划分为多个部分,例如,对于诸如GPU等处理器的运算资源而言,可以将一个时间周期划分为多个时间段,从而可以将不同时间段的运算资源分配给不同的中间设备。例如,每个时间周期被分为10个时间段,可以按照时间段将GPU的运算资源分配给10个中间设备,GPU工作时,仅在相应的时间段处理对应的中间设备提交的运算任务。
根据本公开实施例,也可以采用空间划分的方式,将一个外接硬件的硬件资源划分为多个部分,例如,对于存储设备而言,可以按照存储设备中的部分存储单元分配给一个中间设备,另一部分存储单元分配给另一个中间设备。这种方式同样可以应用于GPU,例如,可以按照GPU中的计算单元的排布,将一个GPU划分为多个区域,按照区域将GPU的运算资源分配给中间设备,在GPU工作时,不同区域的计算单元用于处理不同中间设备的运算任务。
根据本公开实施例,管理人员可以对用户进行资源配置,但是不被用户感知。例如,用户需要一个GPU的10%的运算资源,可以通过时间或空间划分,为一个中间设备分配10%的运算资源,并建立虚拟资源与该中间设备对应,以便在虚拟机中呈现该运算资源。又如,用户需要10个GPU的运算资源,可以将10个GPU分配给一个或多个中间设备,并建立一个或多个虚拟资源与该中间设备对应,以便在虚拟机中呈现。
根据本公开实施例提供的技术方案,通过所述第一映射关系包括以下任意一种或多种的组合:一个中间设备与一个外接硬件的硬件资源之间的映射关系;不同中间设备通过时间段划分的方式与同一外接硬件的不同硬件资源之间的映射关系;不同中间设备通过空间划分的方式与同一外接硬件的不同硬件资源之间的映射关系;同一中间设备与多个外接硬件的硬件资源之间的映射关系,从而能够实现硬件资源池化,并且可以对硬件资源进行更小粒度的切分。
在虚拟机中呈现虚拟资源后,用户可以通过对该虚拟资源的调用实现相应的功能。
图3示出根据本公开实施例的提供硬件资源的流程图。
如图3所示,该方法可以包括操作S310~S330。
在操作S310,响应于虚拟机对所述虚拟资源的调用,基于所述第二映射关系确定与所述虚拟资源对应的中间设备;
在操作S320,基于所述第一映射关系,通过与所述虚拟资源对应的中间设备调用所述外接硬件,产生处理结果;
在操作S330,基于所述第二映射关系,将所述处理结果通过所述中间设备发送到所述虚拟机。
根据本公开实施例提供的技术方案,通过所述基于所述第一映射关系和所述第二映射关系,通过所述虚拟资源向所述虚拟机提供所述外接硬件的硬件资源,包括:响应于虚拟机对所述虚拟资源的调用,基于所述第二映射关系确定与所述虚拟资源对应的中间设备;基于所述第一映射关系,通过与所述虚拟资源对应的中间设备调用所述外接硬件,产生处理结果;基于所述第二映射关系,将所述处理结果通过所述中间设备发送到所述虚拟机,从而对不支持SR-IOV机制的外接硬件实现虚拟化支持,提高该些不支持SR-IOV的机制的外界硬件的虚拟化效率。
如上文所述,目前的外接硬件的池化方式通常使用外接硬件的接口固有的规范在网络中传输,例如,对于PCIe设备,通过PCIe TLP的协议将数据打包并在网络中传输,导致网络带宽利用率较低,同时,延迟增加也会对延迟敏感应用带来较大压力。
本公开实施例针对上述内容进行了优化,下面结合图4进行介绍。
图4示出根据本公开实施例的发送处理结果到虚拟机的流程图。
如图4所示,该方法可以包括操作S410和S420。
在操作S410,所述外接硬件将所述处理结果按第一传输协议封装并发送到所述中间设备;
在操作S420,所述中间设备解析接收到的数据,将所述处理结果按第二传输协议封装并发送到所述虚拟机。
根据本公开实施例,外接硬件由于接口的限制,只能按照固有协议传出数据,例如PCIe设备只能通过TLP的方式传出数据。该外接硬件固有的传输协议即为第一传输协议。而到达host主机需要通过网络传输,专为设备内部的总线设计的传输协议在应用于网络传输时,由于存在过多冗余导致网络带宽利用率较低。因此,本公开实施例通过在中间设备处解析接收到的数据,将其按照与第一传输协议不同的第二传输协议通过网络传输至host主机,可以有效提高带宽利用率,降低延迟。其中,第二传输协议可以是通用的网络传输协议,也可以是专门设计的传输协议。
根据本公开实施例提供的技术方案,通过所述将所述处理结果通过所述中间设备发送到所述虚拟机,包括:所述外接硬件将所述处理结果按第一传输协议封装并发送到所述中间设备;所述中间设备解析接收到的数据,将所述处理结果按第二传输协议封装并发送到所述虚拟机,通过在中间设备对数据重新封装,相比采用固有的第一传输协议传输而言,可以降低数据的冗余,从而提高传输效率,进而提高整个虚拟化系统的工作效率。
根据本公开实施例,在操作S410,外接硬件向目标侧设备发送数据时,目标侧需要确认外接硬件发出的数据对应的是哪个中间设备的请求,下面参考图5所示意的实施例进行说明。
图5示出根据本公开实施例的外接硬件将处理结果发送到中间设备的流程图。
如图5所示,该方法可以包括操作S510~S540。
在操作S510,截获所述外接硬件发出的信息;
在操作S520,确定是否仅有一个与所述外接硬件对应的中间设备处于运行状态,若是,则执行操作S530,否则执行操作S540;
在操作S530,将所截获的信息发送至处于运行状态的中间设备;
在操作S540,解析所截获的信息以确定目标中间设备,并将所截获的信息发送至所述目标中间设备。
根据本公开实施例,在目标侧的中间设备和外接硬件之间还可以设有虚拟功能模块PF,例如可以通过软件、硬件或软件硬件相结合的方式实现。该PF例如可以截获PCIe设备发出的PCIe TLP,并分析该TLP对应的是哪个中间设备的请求。
根据本公开实施例,在当前只有一个中间设备处于运行状态的情况下,由于中间设备的调度由目标侧控制,目标侧可以直接确定该中间设备就是当前接收到的PCIe TLP对应的中间设备。
根据本公开实施例,在当前有多个中间设备处于运行状态的情况下,由于PCIe设备调度哪个中间设备是由PCIe设备决定的,此时只有PCIe设备知道当前发出的PCIe TLP对应于哪个中间设备。为了让目标侧的PF感知该信息,可以定义第一传输协议中的不使用的一位或多位,用于标识与处理结果对应的中间设备。例如,PCIe设备可以将所对应的中间设备的信息(mdev_id)保存到所发出的PCIe r/w TLP请求的地址域中不使用的高位,外接硬件在向中间设备发送处理结果时,通过该些位置的数值标识与处理结果对应的中间设备,从而目标侧能够通过识别该些位置的数值,将所述处理结果准确地转发到对应的中间设备。又如,在PCIe设备支持PASID前缀的情况下,也可以将mdev_id保存到PASID域中。
需要注意的是,上述S530和S540之间是选择关系,在实际实施过程中,也可以仅实现其中的一种,例如,可以仅实现S540而不实现S530。
根据本公开实施例提供的技术方案,通过所述外接硬件将所述处理结果按第一传输协议封装并发送到所述中间设备,包括:截获所述外接硬件发出的信息;在仅有一个与所述外接硬件对应的中间设备处于运行状态的情况下,将所截获的信息发送至处于运行状态的中间设备;在多个与所述外接硬件对应的中间设备处于运行状态的情况下,解析所截获的信息以确定目标中间设备,并将所截获的信息发送至所述目标中间设备,从而能够准确定位处理结果所对应的目标中间设备,以便通过第二映射关系传递到特定的虚拟机,实现不同虚拟机之间的物理隔离。
根据本公开实施例,所述中间设备解析接收到的数据,将所述处理结果按第二传输协议封装并发送到所述虚拟机,包括:
所述中间设备解析接收到的数据,通过直接存储器访问(DMA)、远程直接存储器访问RDMA、内存映射I/O(MMIO)中的至少一种,经地址转换后,将所述处理结果写入所述虚拟机驻留的主机的物理地址空间。
根据本公开实施例,由于采用了SR-IOV的功能,可以利用IOMMU实现GPA到HPA地址的转换,从而可以通过直接访问的方式将数据写入内存,而无需通过虚拟机管理器VMM。
根据本公开实施例,中间设备可以通过DMA的方式将数据写入目标侧的网卡的缓冲区,然后通过RDMA和MMIO代替TLP在网络间传输,到达发起侧后,再通过DMA的方式直接写入内存。IOMMU可以设置在发起侧或目标侧,用于完成地址的转换。
根据本公开实施例提供的技术方案,通过所述中间设备解析接收到的数据,将所述处理结果按第二传输协议封装并发送到所述虚拟机,包括:所述中间设备解析接收到的数据,通过直接存储器访问、远程直接存储器访问、内存映射I/O中的至少一种,经地址转换后,将所述处理结果写入所述虚拟机驻留的主机的物理地址空间,从而能够将处理结果直接写入存储器,避免了占用虚拟机管理器和CPU的资源,减少了虚拟机中断产生的开销。
根据以上各个实施例提供的技术方案,利用硬件卸载实现不支持SR-IOV机制的设备的直通式虚拟化支持以及外接硬件的硬件资源的细粒度切分,实现外接硬件的池化部署,可广泛应用于云计算环境。
在SR-IOV虚拟化支持下,可由IOMMU来完成GPA到HPA地址的转换,避免了多次地址转换所需要的CPU开销,以及虚拟化所需要的CPU开销;中断虚拟化可以尽量利用硬件的中断虚拟化能力,减少了MDEV虚拟化下VM-Exit带来的开销。
中间设备和外接硬件对虚拟机用户透明,运维管理简单,可以支持裸金属;对于不同的虚拟机用户实现物理隔离,保证了安全性,并有利于将加速设备的部署快速融合到当前管控环境中。
在此机制下,硬件加速设备可以专注于算法的加速实现,将虚拟化、池化的需求与加速引擎的设计进行了很好的解耦。
本公开实施例还提供了一种虚拟化方法,包括:
建立中间设备与PCIe设备之间的第一映射关系;
为虚拟机创建虚拟资源,并建立所述中间设备和所述虚拟资源之间的第二映射关系;以及
基于所述第一映射关系和所述第二映射关系,通过所述虚拟资源向所述虚拟机提供所述PCIe设备的硬件资源。
根据本公开实施例提供的技术方案,通过建立中间设备与PCIe设备之间的第一映射关系;为虚拟机创建虚拟资源,并建立所述中间设备和所述虚拟资源之间的第二映射关系;以及基于所述第一映射关系和所述第二映射关系,通过所述虚拟资源向所述虚拟机提供所述PCIe设备的硬件资源,从而对不支持SR-IOV机制的外接硬件实现虚拟化支持,提高该些不支持SR-IOV的机制的外界硬件的虚拟化效率。
图6示出根据本公开实施例的虚拟化装置的框图。其中,该装置可以通过软件、硬件或者两者的结合实现成为电子设备的部分或者全部。
如图6所示,所述虚拟化装置600包括建立模块610、创建模块620以及提供模块630。
建立模块610,被配置为建立中间设备与外接硬件之间的第一映射关系;
创建模块620,被配置为为虚拟机创建虚拟资源,并建立所述中间设备和所述虚拟资源之间的第二映射关系;以及
提供模块630,被配置为基于所述第一映射关系和所述第二映射关系,通过所述虚拟资源向所述虚拟机提供所述外接硬件的硬件资源。
根据本公开实施例提供的技术方案,通过建立模块,被配置为建立中间设备与外接硬件之间的第一映射关系;创建模块,被配置为为虚拟机创建虚拟资源,并建立所述中间设备和所述虚拟资源之间的第二映射关系;以及提供模块,被配置为基于所述第一映射关系和所述第二映射关系,通过所述虚拟资源向所述虚拟机提供所述外接硬件的硬件资源,从而对不支持SR-IOV机制的外接硬件实现虚拟化支持,提高该些不支持SR-IOV的机制的外界硬件的虚拟化效率。
根据本公开实施例,所述第一映射关系包括以下任意一种或多种的组合:
一个中间设备与一个外接硬件的硬件资源之间的映射关系;
不同中间设备通过时间段划分的方式与同一外接硬件的不同硬件资源之间的映射关系;
不同中间设备通过空间划分的方式与同一外接硬件的不同硬件资源之间的映射关系;
同一中间设备与多个外接硬件的硬件资源之间的映射关系。
根据本公开实施例提供的技术方案,通过所述第一映射关系包括以下任意一种或多种的组合:一个中间设备与一个外接硬件的硬件资源之间的映射关系;不同中间设备通过时间段划分的方式与同一外接硬件的不同硬件资源之间的映射关系;不同中间设备通过空间划分的方式与同一外接硬件的不同硬件资源之间的映射关系;同一中间设备与多个外接硬件的硬件资源之间的映射关系,从而能够实现硬件资源池化,并且可以对硬件资源进行更小粒度的切分。
图7示出根据本公开实施例的提供模块630的框图。
如图7所示,该提供模块630可以包括确定子模块710、调用子模块720以及发送子模块730。
确定子模块710,被配置为响应于虚拟机对所述虚拟资源的调用,基于所述第二映射关系确定与所述虚拟资源对应的中间设备;
调用子模块720,被配置为基于所述第一映射关系,通过与所述虚拟资源对应的中间设备调用所述外接硬件,产生处理结果;
发送子模块730,被配置为基于所述第二映射关系,将所述处理结果通过所述中间设备发送到所述虚拟机。
根据本公开实施例提供的技术方案,通过确定子模块,被配置为响应于虚拟机对所述虚拟资源的调用,基于所述第二映射关系确定与所述虚拟资源对应的中间设备;调用子模块,被配置为基于所述第一映射关系,通过与所述虚拟资源对应的中间设备调用所述外接硬件,产生处理结果;发送子模块,被配置为基于所述第二映射关系,将所述处理结果通过所述中间设备发送到所述虚拟机,从而对不支持SR-IOV机制的外接硬件实现虚拟化支持,提高该些不支持SR-IOV的机制的外界硬件的虚拟化效率。
图8示出根据本公开实施例的发送子模块730的框图。
如图8所示,该发送子模块730可以包括第一发送单元810和第二发送单元820。
第一发送单元810,被配置为通过所述外接硬件将所述处理结果按第一传输协议封装并发送到所述中间设备;
第二发送单元820,被配置为通过所述中间设备解析接收到的数据,将所述处理结果按第二传输协议封装并发送到所述虚拟机。
根据本公开实施例提供的技术方案,通过第一发送单元,被配置为通过所述外接硬件将所述处理结果按第一传输协议封装并发送到所述中间设备;第二发送单元,被配置为通过所述中间设备解析接收到的数据,将所述处理结果按第二传输协议封装并发送到所述虚拟机,通过在中间设备对数据重新封装,相比采用固有的第一传输协议传输而言,可以降低数据的冗余,从而提高传输效率,进而提高整个虚拟化系统的工作效率。
图9示出根据本公开实施例的第一发送单元810的框图。
如图9所示,该第一发送单元810包括截获子单元910、第一发送子单元920以及第二发送子单元930。其中,第一发送单元810也可以仅包括第一发送子单元920和第二发送子单元930中的其中之一。
截获子单元910,被配置为截获所述外接硬件发出的信息;
第一发送子单元920,被配置为在仅有一个与所述外接硬件对应的中间设备处于运行状态的情况下,将所截获的信息发送至处于运行状态的中间设备;
第二发送子单元930,被配置为在多个与所述外接硬件对应的中间设备处于运行状态的情况下,解析所截获的信息以确定目标中间设备,并将所截获的信息发送至所述目标中间设备。
根据本公开实施例提供的技术方案,通过截获子单元,被配置为截获所述外接硬件发出的信息;第一发送子单元,被配置为在仅有一个与所述外接硬件对应的中间设备处于运行状态的情况下,将所截获的信息发送至处于运行状态的中间设备;第二发送子单元,被配置为在多个与所述外接硬件对应的中间设备处于运行状态的情况下,解析所截获的信息以确定目标中间设备,并将所截获的信息发送至所述目标中间设备,从而能够准确定位处理结果所对应的目标中间设备,以便通过第二映射关系传递到特定的虚拟机,实现不同虚拟机之间的物理隔离。
根据本公开实施例,所述第二发送单元被配置为通过所述中间设备解析接收到的数据,通过直接存储器访问、远程直接存储器访问、内存映射I/O中的至少一种,经地址转换后,将所述处理结果写入所述虚拟机驻留的主机的物理地址空间。
根据本公开实施例提供的技术方案,通过第二发送单元被配置为通过所述中间设备解析接收到的数据,将所述处理结果按第二传输协议封装并发送到所述虚拟机,包括:所述中间设备解析接收到的数据,通过直接存储器访问、远程直接存储器访问、内存映射I/O中的至少一种,经地址转换后,将所述处理结果写入所述虚拟机驻留的主机的物理地址空间,从而能够将处理结果直接写入存储器,避免了占用虚拟机管理器和CPU的资源,减少了虚拟机中断产生的开销。
本公开还公开了一种电子设备,图10示出根据本公开实施例的电子设备的框图。
如图10所示,所述电子设备1000包括存储器1001和处理器1002,其中,存储器1001用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器1002执行以实现如下操作:
建立中间设备与外接硬件之间的第一映射关系;
为虚拟机创建虚拟资源,并建立所述中间设备和所述虚拟资源之间的第二映射关系;以及
基于所述第一映射关系和所述第二映射关系,通过所述虚拟资源向所述虚拟机提供所述外接硬件的硬件资源。
根据本公开实施例,所述第一映射关系包括以下任意一种或多种的组合:
一个中间设备与一个外接硬件的硬件资源之间的映射关系;
不同中间设备通过时间段划分的方式与同一外接硬件的不同硬件资源之间的映射关系;
不同中间设备通过空间划分的方式与同一外接硬件的不同硬件资源之间的映射关系;
同一中间设备与多个外接硬件的硬件资源之间的映射关系。
根据本公开实施例,所述基于所述第一映射关系和所述第二映射关系,通过所述虚拟资源向所述虚拟机提供所述外接硬件的硬件资源,包括:
响应于虚拟机对所述虚拟资源的调用,基于所述第二映射关系确定与所述虚拟资源对应的中间设备;
基于所述第一映射关系,通过与所述虚拟资源对应的中间设备调用所述外接硬件,产生处理结果;
基于所述第二映射关系,将所述处理结果通过所述中间设备发送到所述虚拟机。
根据本公开实施例,所述将所述处理结果通过所述中间设备发送到所述虚拟机,包括:
所述外接硬件将所述处理结果按第一传输协议封装并发送到所述中间设备;
所述中间设备解析接收到的数据,将所述处理结果按第二传输协议封装并发送到所述虚拟机。
根据本公开实施例,所述外接硬件将所述处理结果按第一传输协议封装并发送到所述中间设备,包括:
截获所述外接硬件发出的信息;
在仅有一个与所述外接硬件对应的中间设备处于运行状态的情况下,将所截获的信息发送至处于运行状态的中间设备;
在多个与所述外接硬件对应的中间设备处于运行状态的情况下,解析所截获的信息以确定目标中间设备,并将所截获的信息发送至所述目标中间设备。
根据本公开实施例,所述中间设备解析接收到的数据,将所述处理结果按第二传输协议封装并发送到所述虚拟机,包括:
所述中间设备解析接收到的数据,通过直接存储器访问、远程直接存储器访问、内存映射I/O中的至少一种,经地址转换后,将所述处理结果写入所述虚拟机驻留的主机的物理地址空间。
或者,所述一条或多条计算机指令被所述处理器1002执行以实现如下操作:
建立中间设备与PCIe设备之间的第一映射关系;
为虚拟机创建虚拟资源,并建立所述中间设备和所述虚拟资源之间的第二映射关系;以及
基于所述第一映射关系和所述第二映射关系,通过所述虚拟资源向所述虚拟机提供所述PCIe设备的硬件资源。
图11示出适于实现本公开实施例的虚拟化方法和装置的计算机系统的结构示意图。
如图11所示,计算机系统1100包括处理单元1101,其可以根据存储在只读存储器(ROM)1102中的程序或者从存储部分1108加载到随机访问存储器(RAM)1103中的程序而执行上述实施例中的各种处理。在RAM 1103中,还存储有系统1100操作所需的各种程序和数据。处理单元1101、ROM 1102以及RAM 1103通过总线1104彼此相连。输入/输出(I/O)接口1105也连接至总线1104。
以下部件连接至I/O接口1105:包括键盘、鼠标等的输入部分1106;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分1107;包括硬盘等的存储部分1108;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分1109。通信部分1109经由诸如因特网的网络执行通信处理。驱动器1110也根据需要连接至I/O接口1105。可拆卸介质1111,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1110上,以便于从其上读出的计算机程序根据需要被安装入存储部分1108。其中,所述处理单元1101可实现为CPU、GPU、TPU、FPGA、NPU等处理单元。
特别地,根据本公开的实施例,上文描述的方法可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括有形地包含在及其可读介质上的计算机程序,所述计算机程序包含用于执行上述方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分1109从网络上被下载和安装,和/或从可拆卸介质1111被安装。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的单元或模块可以通过软件的方式实现,也可以通过可编程硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定。
作为另一方面,本公开实施例还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中电子设备或计算机系统中所包含的计算机可读存储介质;也可以是单独存在,未装配入设备中的计算机可读存储介质。计算机可读存储介质存储有一个或者一个以上程序,所述程序被一个或者一个以上的处理器用来执行描述于本公开的方法。
作为另一方面,本公开实施例还提供了一种资源虚拟化系统。
该资源虚拟化系统包括目标侧设备,所述目标侧设备包括:
硬件接口,用于接入外接硬件;
中间设备,用于存储与所述硬件接口连接的外接硬件之间的第一映射关系,响应于来自发起侧设备的硬件资源调用请求,基于所述第一映射关系,调用对应的外接硬件,并将所述外接硬件返回的处理结果发送至所述发起侧设备。
请返回参考图1。如图1所示,该服务器集群包括目标侧设备(图1中简称为目标侧),目标侧设备上设有一个或多个硬件接口,用于接入外接硬件。目标侧设备用于通过该些外接硬件向发起侧设备,尤其是发起侧设备的虚拟机,提供硬件资源。
根据本公开实施例,多个中间设备设置在该目标侧设备中,中间设备中存储有与硬件接口连接的外接硬件之间的第一映射关系,当接收到来自发起侧设备的硬件资源调用请求时,可以调用对应的外接硬件。每个中间设备存储的第一映射关系可以仅包括该中间设备对应的硬件接口的信息,而不包括其他中间设备对应的硬件接口的信息;也可以是完整的映射关系,即全部中间设备与硬件接口之间的映射关系,例如可以保存为映射表的形式。
根据本公开实施例,该中间设备在从对应的硬件接口接收到数据的情况下,可以将数据发送回发起侧设备,以响应该硬件资源调用请求。
根据本公开实施例提供的技术方案,通过中间设备实现硬件卸载,提供所述外接硬件的硬件资源,从而对不支持SR-IOV机制的外接硬件实现虚拟化支持,提高该些不支持SR-IOV的机制的外界硬件的虚拟化效率。
根据本公开实施例,所述第一映射关系包括以下任意一种或多种的组合:
一个中间设备与一个外接硬件的硬件资源之间的映射关系;
不同中间设备通过时间段划分的方式与同一外接硬件的不同硬件资源之间的映射关系;
不同中间设备通过空间划分的方式与同一外接硬件的不同硬件资源之间的映射关系;
同一中间设备与多个外接硬件的硬件资源之间的映射关系。
根据本公开实施例,所述目标侧设备还包括:
截获模块,用于截获从所述硬件接口传入的信息;
第一发送模块,用于在仅有一个与所述硬件接口对应的中间设备处于运行状态的情况下,将所截获的信息发送至所述处于运行状态的中间设备;
第二发送模块,用于在多个与所述硬件接口对应的中间设备处于运行状态的情况下,解析所截获的信息以确定目标中间设备,并将所截获的信息发送至所述目标中间设备。
根据本公开实施例,目标侧设备可以创建一个或多个与硬件接口对应的一个或多个PF。该一个或多个PF与中间设备之间具有对应关系,例如,在PF与硬件接口具有一一对应关系的情况下,PF与中间设备之间的对应关系即为上述第一映射关系。
如果PF对应多个中间设备,需要确定从硬件接口返回的数据交给哪个中间设备。该PF可以实现为一个功能模块或者通过分解实现为多个功能模块,例如截获模块、第一发送模块和第二发送模块,以定位中间设备的功能。其中,截获模块用于截获从所述硬件接口传入的信息;第一发送模块,用于在仅有一个对应的中间设备处于工作状态的情况下,直接将信息交给该中间设备;第二发送模块,用于在有多个对应的中间设备处于工作状态的情况下,对接收到的信息进行解析,根据解析结果确定交给哪个中间设备。
根据本公开实施例提供的技术方案,通过第一功能模块定位处理结果所对应的目标中间设备,以便将处理结果准确地传递到特定的虚拟机,实现不同虚拟机之间的物理隔离。
根据本公开实施例,所述资源虚拟化系统还包括:
服务器,其上运行一个或多个虚拟机;
所述发起侧设备(图1中简称为发起侧),与所述服务器连接;以及
数据交换设备,用于建立所述发起侧设备与所述目标侧设备之间的通信链路。
根据本公开实施例,所述服务器还包括输入输出内存管理单元,所述发起侧设备包括:
单根IO虚拟化(SR-IOV)模块,与所述输入输出内存管理单元(IOMMU,图中未示出)连接,并用于建立与多个中间设备之间的第二映射关系,其中,在接收到所述虚拟机发送的硬件资源调用请求的情况下,基于所述第二映射关系,通过对应的中间设备调用所述外接硬件的硬件资源。
根据本公开实施例,发起侧可以通过SR-IOV机制创建与所述中间设备对应的一个或多个PF或VF。进而,在虚拟机发起硬件资源调用请求时,可以通过PF或VF以及所述中间设备调用所述外接硬件的硬件资源。
根据本公开实施例,所述目标侧设备包括第一网络设备,所述发起侧设备包括第二网络设备;
所述中间设备还用于解析来自所述外接硬件的数据以获取处理结果,通过直接存储器访问的方式将所述处理结果写入所述第一网络设备的缓冲区;
所述第一网络设备用于通过远程直接存储器访问和内存映射I/O的方式将所述处理结果通过所述数据交换设备发送至所述第二网络设备;
所述第二网络设备通过直接存储器访问的方式,并经所述输入输出内存管理单元执行地址转换后,将所述处理结果写入所述服务器的存储介质。
根据本公开实施例,第一网络设备和第二网络设备例如可以是目标侧设备和发起侧设备上的网卡,在目标侧设备或发起侧设备的内部,网卡与内存之间通过DMA的方式交换数据,而在第一网络设备和第二网络设备之间,通过RDMA和MMIO的方式传输数据,实现数据的交互。
根据本公开实施例,所述硬件接口为PCIe接口,所述外界硬件包括具有PCIe接口的硬件设备,例如具有PCIe接口的GPU等。当然,本公开实施例并不限于此,该硬件接口还可以是遵循其它系统总线或外部总线规范的接口,例如ISA总线、PCI总线、AGP总线、IDE总线、SATA总线、SCSI总线或USB总线等。
以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。