一种加载驱动程序的方法和服务器与流程

文档序号:12718896阅读:505来源:国知局
本发明涉及网络通信技术,尤其涉及一种加载驱动程序的方法和服务器。
背景技术
::随着网络功能虚拟化(英文:networkfunctionsvirtualization,简称NFV)技术的迅速发展,NFV硬件加速成为了一个重要的研究方向。NFV硬件加速是指把一些虚拟网络功能由专门的硬件而不是由通用计算机运行软件来实现,以提升所述虚拟网络功能的性能。当前采用单根输入输出虚拟化(英文:singlerootI/Ovirtualization,简称:SR-IOV)技术实现NFV硬件加速。SR-IOV技术是一种基于硬件的虚拟化解决方案,SR-IOV技术允许在虚拟机之间高效共享快捷外围组件接口(英文:peripheralcomponentinterfaceexpress,简称:PCIe)设备。一个具有SR-IOV能力(英文:capability)且具有物理功能(英文:physicalfunction,简称:PF)的PCIe设备可以虚拟出最多64000个虚拟功能(英文:virtualfunction,简称:VF),。所述VF是指能够执行网络功能的组件,每个VF在执行网络功能之前,都需要安装对应所述网络功能的驱动程序。所述PCIe设备和VF执行相同的网络功能。现有技术中提供了一种为PCIe设备加载驱动程序的方法。服务器扫描每个PCIe总线上的设备,为扫描到的每个PCIe设备建立一个描述所述PCIe设备的数据结构,记为dev,并将所述dev顺序添加到PCIe总线描述符对应的设备列表上。如图1所示,假设服务器扫描到了三个PCIe设备,这三个PCIe设备的数据结构分别为dev1,dev2和dev3。当所述服务器获取到(例如,从光盘中读取到或者从厂商的网站上下载)新的PCIe驱动程序时,为所述PCIe驱动程序建立一个描述所述PCIe驱动程序的数据结构,记为pci_driver,所述pci_driver的设备标识表(id_table)包括所述PCIe 驱动程序可以驱动的所有PCIe设备的设备标识(英文:identifier,简称:ID)所述,其中,所述PCIe设备的ID包括厂商标识(英文:vendorID)和设备标识(英文:deviceID);一个设备ID用来标识一类PCIe设备。所述id_table是根据厂商的预先配置生成的。所述服务器将所述pci_driver添加到所述PCIe总线描述符对应的驱动程序列表上。图1中服务器总共获取到两个PCIe驱动程序。最后,依次用所述pci_driver的id_table中的ID匹配所述设备列表中的各设备的ID,当所述pci_driver的id_table中的一个ID与设备列表中的某个PCIe设备的ID相同时,则关联所述PCIe设备与所述PCIe驱动程序,即将所述PCIe设备写入所述PCIe驱动程序的设备列表。所述PCIe驱动程序的设备列表中的所有设备都可以加载所述PCIe驱动程序。例如图1中,dev1和dev2都可以使用驱动程序A,dev3可以使用驱动程序B。上述方式使用PCIe设备的设备ID来确定一个PCIe设备可以加载哪个PCIe驱动程序,而在SR-IOV场景下,由一个物理PCIe设备虚拟出的多个VF具有相同的设备ID,因此,无法针对由同一个物理PCIe设备虚拟出的不同VF加载不同的PCIe驱动程序。技术实现要素:本发明提供了一种加载驱动程序的方法和服务器,能够为由同一个物理PCIe设备虚拟出的不同VF加载不同的PCIe驱动程序。本发明第一方面提供了一种加载驱动程序的方法,所述方法由服务器实现,所述方法包括:接收业务需求,所述业务需求包括指定功能对应的第一功能描述;根据所述业务需求以及第一映射表,确定所述第一功能描述对应的第一全局索引;其中,所述第一映射表的每个表项包括全局索引和虚拟功能VF的功能描述的对应关系;所述VF是PCIe设备虚拟化时提供的功能;所述全局索引为在所述PCIe设备上有效的所述VF的标识;根据所述第一全局索引和第二映射表,确定所述第一功能描述对应的第一全局VF标识;其中,所述第二映射表的每个表项包括全局索引与全局VF 标识的对应关系;所述第一全局VF标识用于标识第一VF在所述PCIe设备上的位置;确定所述业务需求对应的VM;为所述指定功能分配所述VM下的第一本地索引,并建立所述第一本地索引与所述第一功能描述的第一对应关系;将所述第一对应关系发送给所述VM,所述第一对应关系用于使所述VM根据所述第一对应关系为所述第一VF加载所述指定功能的驱动程序。基于所述第一方面,在所述第一方面的第一种实现方式中,当确定所述业务需求对应的VM后,所述方法还包括:关联所述第一全局VF标识和所述VM,以使所述VM启动时能够探知到对应所述第一全局VF标识的VF并使用所述VF。基于所述第一方面的第一种实现方式,在所述第一方面的第二种实现方式中,所述第一映射表的每个表项还包括VF的状态,用于标识所述VF是否已经被分配;所述方法还包括:存储所述第一全局索引与所述VM的对应关系;当确定所述VM成功启动后,根据所述第一全局索引与所述VM的对应关系,更新所述第一映射表,将所述第一全局索引对应的VF标记为已分配。基于所述第一方面,所述第一方面的第一种实现方式或第二种实现方式,在所述第一方面的第三种实现方式中,所述方法还包括:通过解析所述PCIe设备的配置文件获取所述第一映射表;或接收控制器发送的、由所述控制器生成的所述第一映射表;以及获取所述PCIe设备上的每个VF的全局VF标识,根据每个VF的全局VF标识以及所述第一映射表,生成所述第二映射表。本发明第二方面提供了另一种加载驱动程序的方法,所述方法由服务器实现,所述方法包括:接收第一本地索引以及指定功能的第一功能描述的第一对应关系;其中,所述第一本地索引为分配给虚拟机VM的第一虚拟功能VF的标识,所述第 一本地索引只在所述VM下有效;确定所述第一本地索引对应的第一本地VF标识;其中,所述第一本地VF标识用于标识所述第一VF在所述VM上的位置;根据所述第一对应关系以及所述第一本地VF标识,建立所述第一功能描述与所述第一本地VF标识的第二对应关系;根据所述第二对应关系为所述第一VF加载所述指定功能的驱动程序。基于所述第二方面,在所述第二方面的第一种实现方式中,所述确定所述第一本地索引对应的第一本地VF标识包括:查找本地索引-本地VF标识映射表确定所述第一本地索引对应的所述第一本地VF标识,所述本地索引-本地VF标识映射表的每个表项包括所述VM所使用的VF的本地索引和本地VF标识的对应关系。基于所述第二方面的第一种实现方式,在所述第二方面的第二种实现方式中,所述方法还包括:确定关联到所述VM的全局VF标识,根据所述全局VF标识获取PCIe设备上分配给所述VM的每个VF的本地索引以及本地VF标识,根据所述每个VF的本地索引以及本地VF标识,建立所述本地索引-本地VF标识映射表。基于所述第二方面,所述第二方面的第一种实现方式或第二种实现方式,在所述第二方面的第三种实现方式中,所述根据所述第二对应关系为所述第一VF加载所述指定功能的驱动程序包括:运行驱动程序加载命令,所述驱动程序加载命令包括所述第一功能描述和所述第一本地VF标识,当根据所述第一本地VF标识确定所述VM使用了所述第一VF时,根据所述第一功能描述确定所述指定功能的驱动程序,为所述第一VF加载所述驱动程序。本发明第三方面提供了一种服务器,所述服务器包括:接收单元,用于接收业务需求,所述业务需求包括指定功能对应的第一功能描述;确定单元,用于:根据所述业务需求以及第一映射表,确定所述第一功能描述对应的第一全局索引;其中,所述第一映射表的每个表项包括全局索引和虚拟功能VF的功能描述的对应关系;所述VF是PCIe设备虚拟化时提供的功能;所述全局索引为在所述PCIe设备上有效的所述VF的标识;根据所述第一全局索引和第二映射表,确定所述第一功能描述对应的第一全局VF标识;其中,所述第二映射表的每个表项包括全局索引与全局VF标识的对应关系;所述第一全局VF标识用于标识第一VF在所述PCIe设备上的位置;并且,确定所述业务需求对应的VM;分配单元,用于为所述指定功能分配所述VM下的第一本地索引,并建立所述第一本地索引与所述第一功能描述的第一对应关系;发送单元,用于将所述第一对应关系发送给所述VM,所述第一对应关系用于使所述VM根据所述第一对应关系为所述第一VF加载所述指定功能的驱动程序。基于所述第三方面,在所述第三方面的第一种实现方式中,所述服务器还包括:关联单元,用于关联所述第一全局VF标识和所述VM,以使所述VM启动时能够探知到对应所述第一全局VF标识的VF并使用所述VF。基于所述第三方面的第一种实现方式,在所述第三方面的第二种实现方式中,所述第一映射表的每个表项还包括VF的状态,用于标识所述VF是否已经被分配;所述服务器还包括:存储单元,用于存储所述第一全局索引与所述VM的对应关系;更新单元,用于当确定所述VM成功启动后,根据所述第一全局索引与所述VM的对应关系,更新所述第一映射表,将所述第一全局索引对应的VF标记为已分配。基于所述第三方面,所述第三方面的第一种实现方式或第二种实现方式,在所述第一方面的第三种实现方式中,所述服务器还包括:获取单元,用于通过解析所述PCIe设备的配置文件获取所述第一映射表;或接收控制器发送的、由所述控制器生成的所述第一映射表;以及生成单元,用于获取所述PCIe设备上的每个VF的全局VF标识,根据每个VF的全局VF标识以及所述第一映射表,生成所述第二映射表。基于所述第三方面或所述第三方面的实现方式中的任意一种,所述服务器还包括监视器,上述各实现方式中的任意一个单元均属于所述监视器。所述服务器还包括PCIe插槽,用于连接所述PCIe设备。本发明第四方面提供了一种服务器,所述服务器包括:接收单元,用于接收第一本地索引以及指定功能的第一功能描述的第一对应关系;其中,所述第一本地索引为分配给虚拟机VM的第一虚拟功能VF的标识,所述第一本地索引只在所述VM下有效;确定单元,用于确定所述第一本地索引对应的第一本地VF标识;其中,所述第一本地VF标识用于标识所述第一VF在所述VM上的位置;建立单元,用于根据所述第一对应关系以及所述第一本地VF标识,建立所述第一功能描述与所述第一本地VF标识的第二对应关系;加载单元,用于根据所述第二对应关系为所述第一VF加载所述指定功能的驱动程序。基于所述第四方面,在所述第四方面的第一种实现方式中,所述确定单元用于查找本地索引-本地VF标识映射表确定所述第一本地索引对应的第一本地VF标识,所述本地索引-本地VF标识映射表的每个表项包括所述VM所使用的VF的本地索引和本地VF标识的对应关系。基于所述第四方面的第一种实现方式,在所述第四方面的第二种实现方式中,所述建立单元还用于确定关联到所述VM的全局VF标识,根据所述全局VF标识获取PCIe设备上分配给所述VM的每个VF的本地索引以及本地VF标识,根据所述每个VF的本地索引以及本地VF标识,建立所述本地索引-本地VF标识映射表。基于所述第四方面,所述第四方面的第一种实现方式或第二种实现方式, 在所述第四方面的第三种实现方式中,所述加载单元用于运行驱动程序加载命令,所述驱动程序加载命令包括所述第一功能描述和所述第一本地VF标识,当根据所述第一本地VF标识确定所述VM使用了所述第一VF时,根据所述第一功能描述确定所述指定功能的驱动程序,为所述第一VF加载所述驱动程序。基于所述第四方面或所述第四方面的实现方式中的任意一种,所述服务器还包括虚拟机,上述各实现方式中的任意一个单元均属于所述虚拟机。所述服务器还包括PCIe插槽,用于连接所述PCIe设备。本发明第五方面提供了一种非易失性媒介,所述非易失性媒介包括一段或多段代码,当所述一段或多段代码被处理器执行时,可以实现上述第一方面所述的加载驱动程序的方法。本发明第六方面提供了一种非易失性媒介,所述非易失性媒介包括一段或多段代码,当所述一段或多段代码被处理器执行时,可以实现上述第二方面所述的加载驱动程序的方法。本发明中,预先为服务器上插入的PCIe设备的每个虚拟功能VF建立全局索引和全局VF标识,当所述服务器收到包括指定功能对应的第一功能描述的业务需求时,确定所述第一功能描述对应的第一全局索引,以及所述第一功能描述对应的第一全局VF标识,所述第一全局VF标识用于识别第一VF在所述PCIe设备上的位置;确定所述业务需求对应的VM,关联所述第一全局VF标识和所述VM,为所述指定功能分配所述VM下的第一本地索引,建立所述第一本地索引与所述第一功能描述的对应关系,并将所述对应关系发送给所述VM。所述VM根据所述对应关系确定所述第一本地索引对应的第一本地VF标识,建立所述第一功能描述与所述第一本地VF标识的第二对应关系,根据所述第二对应关系为所述第一VF加载所述指定功能的驱动程序。通过本发明,能够为一个PCIe设备上虚拟出的具有不同功能的VF加载不同的驱动程序。并且,所述业务需求中的指定功能的第一功能描述可以由用户根据需要任意设置,能够适应用户不断变化的功能和性能要求,提高了业务 部署的灵活性和可扩展性。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍。图1为现有技术中为PCIe设备加载驱动程序的过程示意图;图2为本发明实施例提供的系统架构示意图;图3为本发明实施例提供的加载驱动程序的方法的流程示意图;图4A为服务器生成的第一映射表的结构示意图;图4B为更新后的第一映射表的结构示意图;图5为服务器生成的第二映射表的结构示意图;图6为服务器生成的第三映射表的结构示意图;图7为VM生成的第四映射表的结构示意图;图8为VM生成的第五映射表的结构示意图;图9为服务器中的hypervisor的结构示意图;图10为图9中的服务器的结构示意图;图11为服务器中的VM的结构示意图;图12为图11中的服务器的结构示意图。具体实施方式以下结合附图对本发明进行详细描述。图2所示,为本发明实施例提供的系统架构示意图。所述系统至少包括服务器10和至少一个PCIe设备20。其中,所述服务器10和所述PCIe设备20均具有SR-IOV能力。所述服务器10至少包括一个PCIe插槽,用于连接所述PCIe设备20,即使所述PCIe设备20通过所述PCIe插槽接入所述服务器10。所述服务器10还包括监视器(hypervisor),所述监视器可以在所述服务器10中创建出多个虚拟机(英文:virtualmachine,简称:VM),记为 VM11到VM1m。所述PCIe设备可以利用虚拟化技术生成多个VF,记为VF11到VF1n。一个VF的功能与另一个VF的功能可以相同,也可以不同。例如,图2中,VF21的功能为密钥计算(英文:DHcalc),VF22的功能为负载均衡(英文:loadbalancing,简称:LB),VF23和VF2n的功能为因特网协议安全(英文:InternetProtocolsecurity,简称:IPsec)。一个VM可以使用一个或多个VF为用户提供服务。服务器10可以接收用户终端30发送的各种业务需求。所述用户终端30可以是通用计算机,也可以是网络管理系统。所述用户终端30可以直接向所述服务器10发送所述业务需求。所述系统还可以包括控制器40,这种情况下,所述用户终端30也可以通过控制器40向所述服务器10发送所述业务需求。所述服务器10还包括接口(图中未示出),所述接口用于与所述用户终端30和所述控制器40通信。当所述系统运行时,可以为所述PCIe设备20虚拟出的提供不同功能的VF加载不同的驱动程序。如图3所示,为本发明实施例提供的一种加载驱动程序的方法的流程示意图。所述方法由图2中的服务器10实现。在步骤301中,所述服务器获取所述服务器的PCIe插槽上连接的PCIe设备的第一映射表,所述第一映射表的每个表项包括全局索引与VF功能描述的对应关系。所述服务器可以通过解析所述PCIe设备的配置文件(所述配置文件可以是由厂商提供的)来获取全局索引-VF功能描述映射表(第一映射表),也可以从控制器40接收所述控制器40已经生成的第一映射表。所述第一映射表中,一个VF的功能描述包括所述VF能够提供的功能。所述全局索引为在所述PCIe设备上有效的所述VF的标识,所述VF的标识具体可以为所述VF的编号。本发明实施例中的所有编号都可以从零开始。每个表项中的全局索引在所述PCIe设备上唯一对应所述表项中的VF。所述 第一映射表还可以包括VF的状态,所述VF的状态包括该VF是否已经被分配给某个VM。如图4所示,为图2中的PCIe设备20的第一映射表的结构示意图。从图4可知,所述PCIe设备支持DHcalc,LB,IPsec转发等N个VF,每个VF对应不同的全局索引(即使提供相同功能的两个VF也对应不同的全局索引),并且在初始状态下,每个VF都没有被分配给VM使用。在步骤302中,所述服务器获取所述PCIe设备上的每个VF的全局VF标识,根据每个VF的全局VF标识以及所述第一映射表,生成第二映射表,所述第二映射表的每个表项包括全局索引与全局VF标识的对应关系。其中,所述第二映射表的一个表项中的全局索引和全局VF标识对应相同的VF。当PCIe设备通过PCIe插槽连接到所述服务器后,所述服务器扫描所述PCIe设备,以获取所述PCIe设备上每个VF的全局VF标识,得到全局索引-全局VF标识映射表(第二映射表)。其中,所述PCIe设备上的VF的数量与所述第一映射表中全局索引的数量相同。所述VF可以由厂商预先在所述PCIe设备上设置,或者由所述PCIe设备根据获取到的配置文件自动生成。其中,每个全局VF标识用于唯一标识一个VF在PCIe设备上的位置。所述全局VF标识可以包括总线(bus)标识,设备(device)标识和功能(function)标识,简称为BDF。在一个实施例中,为了实现方便,所述总线标识为所述服务器为连接所述PCIe设备的总线分配的编号,所述设备标识为所述服务器为所述PCIe设备分配的编号,所述功能标识为所述VF在所述PCIe设备上的编号。假设所述PCIe设备对应的PCIe总线的总线标识为06,设备标识为10,功能标识为被扫描到的VF的编号,则所述第二映射表的结构可以如图5所示。其中,步骤301和302只需要在PCIe设备20被插入服务器时,服务器执行一次。因此,对于本发明的某些应用场景来说,并不是必然发生的。在步骤303中,所述服务器接收业务需求,所述业务需求包括指定功能对应的第一功能描述。其中,所述业务需求可以是通过命令行配置的,也可以是用户终端发送的,还可以是通过本领域普通技术人员知晓的其他方式获取的,图3以用户终端发送所述业务需求为例。在一个场景中,所述业务需求为用户提出的功能需求。在另一个场景中,所述业务需求可以是创建VM的需求,所述业务需求除所述第一功能描述外,还包括创建VM所需要的其他参数,例如VM名称,所需要的内存,用于创建VM的镜像文件的名称等。所述第一功能描述为所述用户终端希望所述VM能够提供的功能。在另一个场景中,所述业务需求可以是为已经存在的VM增加功能的需求,所述业务需求除所述第一功能描述外,还包括VM的标识,此时,所述指定功能为所述用户终端希望所述VM新增的功能。所述指定功能可以为一个或多个,相应地,所述第一功能描述可以为一个或多个。此外,所述业务需求还可以包括所述指定功能的性能描述,所述性能描述为所述指定功能的性能需求。在步骤304中,所述服务器根据所述业务需求以及所述第一映射表,确定所述第一功能描述对应的第一全局索引,根据所述第一全局索引和所述第二映射表,确定所述第一功能描述对应的第一全局VF标识。所述第一全局VF标识用于标识第一VF在所述PCIe设备上的位置。例如,当所述第一功能描述为DHcalc时,所述服务器查找图4所示的第一映射表,得到第一全局索引0,然后根据第一全局索引0查找图5所示的第二映射表,得到功能DHcalc对应的第一全局VF标识为06.10.0。本步骤中,所述服务器根据所述第一功能描述顺序查找第一映射表,确定所述第一映射表中尚未分配的对应所述第一功能描述的第一VF功能描述,得到所述VF功能描述的全局索引。例如,所述第一功能描述为IPsec转发时,如果所述全局索引为2的“IPsec转发”对应的VF没有被分配时,所述服务器确定所述指定功能能够使用的VF的全局索引为3,当所述全局 索引为2的“IPsec转发”对应的VF已经被分配时,所述服务器确定所述指定功能能够使用的VF的全局索引为N-1。在步骤305中,所述服务器确定所述业务需求对应的VM。当所述业务需求是创建VM的需求时,所述服务器根据所述业务需求包括的参数创建VM,所述创建的VM即为所述业务需求对应的VM。当所述业务需求是为已经存在的VM增加指定功能时,所述服务器根据所述业务需求中的VM的标识确定所述业务需求对应的VM。当确定所述业务需求对应的VM后,所述服务器还可以关联所述第一全局VF标识和所述VM。,所述服务器关联所述第一全局VF标识和所述VM的目的在于,使所述VM启动时能够探知到对应所述第一全局VF标识的第一VF并使用所述第一VF。所述服务器还可以存储所述第一全局索引与所述VM的对应关系。这样,当所述服务器确定所述VM成功启动(可以是在VM加载驱动程序之前,也可以是在VM加载驱动程序之后),所述服务器还可以根据所述第一全局索引与所述VM的对应关系更新所述第一映射表,即在所述第一映射表中将所述第一全局索引对应的VF标记为已分配。这样,就可以避免后续所述服务器将已经分配给某个VM的VF再分配给其他的VM。例如,图4B中,所述服务器将全局索引为2的VF分配给一个VM,当所述VM成功启动后,所述服务器在所述第一映射表中将全局索引为2的VF标记为已分配。其中,所述服务器可以主动探知到所述VM成功启动,也可以根据所述VM发送的确认消息确定所述VM成功启动。在步骤306中,所述服务器为所述第一功能描述分配所述VM下的第一本地索引,并建立所述第一本地索引与所述第一功能描述的第一对应关系。当所述指定功能为多个时,所述服务器需要为每个指定功能分配所述VM下的第一本地索引,并将每个第一功能描述与对应的第一本地索引添加 到所述VM对应的本地索引-VF映射表(以下也可以称为“第三映射表”)中。所述第三映射表的每个表项包括本地索引和功能描述的对应关系。所述本地索引为分配给所述VM的VF的标识,只在所述VM下有效。所述本地索引可以为所述VF的编号。当所述业务需求为创建VM的需求,且所述业务需求中的指定功能的功能描述包括“DHcalc”和“IPsec”转发时,所述服务器先创建一个VM,然后根据所述“DHcalc”和“IPsec转发”查找第一映射表,得到全局索引0和全局索引2,然后根据全局索引0和全局索引2查找第二映射表,得到对应的全局VF标识分别为06:10.0和06:10.2,所述服务器将全局VF标识06:10.0和06:10.2关联到所述VM。所述服务器为第一功能描述(即第一映射表中的VF功能描述)“DHcalc”和“IPsec转发”依次分配所述VM下的本地索引,并在第三映射表分别中存储第一功能描述“DHcalc”和“IPsec转发”及其对应的本地索引,这样,可以得到如图6所示的第三映射表。由于所述VM只需要“DHcalc”和“IPsec转发”这两种功能,则在所述服务器为所述VM建立的第三映射表中,依次为“DHcalc”和“IPsec转发”这两个功能的功能描述分配只在所述VM下有效的本地索引0和本地索引1。在步骤307中,所述服务器将所述第一本地索引以及所述第一功能描述的第一对应关系发送给所述VM。所述第一本地索引以及所述第一功能描述的第一对应关系用于使所述VM根据所述对应关系为所述VF加载所述指定功能的驱动程序。其中,将所述第一本地索引以及所述第一功能描述的第一对应关系发送给所述VM具体可以是直接将所述第一对应关系发送给所述VM或将所述对应关系添加到所述第三映射表中,并将所述第三映射表发送给所述VM。当所述业务需求是创建VM的需求时,可选地,所述服务器将多个第一功能描述的对应关系添加到所述第三映射表中,并通过所述第三映射表一次性将所有对应关系发送给所述VM。当所述业务需求是为已经存在的VM增加指定 功能的需求时,可选地,所述服务器直接将所述对应关系发送给所述VM。在步骤308中,所述VM收到所述第一本地索引以及所述第一功能描述的第一对应关系后,确定所述第一本地索引对应的第一本地VF标识。步骤308之前,所述方法还包括:所述VM确定分配给所述VM的每个VF的本地VF标识,建立本地索引-本地VF标识映射表(以下称为第四映射表),所述第四映射表的每个表项包括所述VM下的本地索引和本地VF标识的对应关系,其中每个表项对应一个VF。当VM启动后,所述VM根据步骤305中的所述第一全局VF标识扫描所述PCIe设备(当存储多个第一全局VF标识时,如果所述多个第一全局VF标识为不同PCIe设备下的全局VF标识,则扫描每个PCIe设备),得到分配给所述VM的每个VF的本地索引,以及每个VF在所述VM下的本地VF标识,根据所述每个VF的本地索引以及本地VF标识,建立所述本地索引-本地VF标识映射表。一个本地标识用于唯一标识一个VF在所述VM上的位置。所述本地VF标识可以包括总线标识,设备标识和功能描述。对于一个被所述VM使用的VF来说,所述总线标识为所述VM为连接所述VF所在的PCIe设备的总线分配的编号;所述设备标识为所述VM为所述PCIe设备分配的编号;所述功能标识为所述VM为所述VF分配的,在所述PCIe设备下有效的编号。VM在获取到其所使用的所有VF的本地VF标识后,根据扫描顺序为每个本地VF标识分配本地索引,并建立所述第四映射表。由于所述服务器和所述VM采用的扫描原则相同。因此,所述服务器和所述VM为同一个VF分配的本地索引相同。假设所述PCIe设备在所述VM上的本地总线标识为01,本地设备标识为00,所述VM使用了两个分别支持“DHcalc”和“IPsec转发”功能的VF,并且为“DHcalc”功能分配的功能标识为0,为“IPsec转发”功能分配的功能标识为1,则第四映射表可以如图7所示,其中包括本地索引0和本地VF标识01:00.0的对应关系,以及本地索引1和本地VF标识01:00.1的对应关系。所述VM根据所述第一本地索引确定所述第一本地索引对应的第一本地VF标识可以是所述VM根据所述第一本地索引查找所述第四映射表,得到所述第一本地索引对应的第一本地VF标识。在步骤309中,所述VM根据所述第一本地索引与所述第一功能描述的第一对应关系以及所述第一本地VF标识,建立所述第一功能描述与所述第一本地VF标识的第二对应关系。所述VM可以生成VF-本地VF标识映射表(以下称为第五映射表),并在第五映射表中添加所述第一功能描述和所述第一本地VF标识的第二对应关系。如图8所示,为所述VM生成的第五映射表的结构示意图,其中包括本地VF标识01:00.0和VF功能描述“DHcalc”的对应关系,以及本地VF标识01:00.1和VF功能描述“IPsec转发”的对应关系。在步骤310中,所述VM根据所述第二对应关系为所述第一VF加载所述指定功能的驱动程序。当所述第一功能描述为多个,并且所述多个第一功能描述的对应关系被写入所述第五映射表时,所述VM根据所述对应关系为所述第一VF加载所述指定功能的驱动程序包括:所述VM根据所述第五映射表依次为每个VF加载每个第一功能描述对应的指定功能的驱动程序。在加载驱动程序时,所述VM运行驱动程序加载命令,所述驱动程序加载命令包括所述第一功能描述和所述第一本地VF标识,当根据所述第一本地VF标识确定所述VM使用了所述第一VF时,根据所述第一功能描述确定所述指定功能的驱动程序,为所述第一VF加载所述驱动程序。具体来说,所述VM根据所述第一全局VF标识扫描所述PCIe设备时,可以生成与
背景技术
:类似的设备列表,所述设备列表中的每个VF由所述VF的本地VF标识(即本地BDF)识别。当加载驱动程序时,所述VM先向所述驱动程序发送包括所述第一功能描述和所述第一本地VF标识的驱动程序加载命令,然后,所述VM根据所述第一本地VF标识查找所述设备列表, 当在所述设备列表中查找到所述第一本地VF标识时,根据所述第一功能描述获取所述指定功能的驱动程序。在步骤311中,当所述VM为所述第一VF加载了所述指定功能的驱动程序后,所述VM向所述服务器发送通知消息,所述通知消息用于通知所述服务器所述指定功能对应的驱动程序已经成功加载到所述VM上。其中,步骤311为可选步骤。上述步骤301-307可以由服务器中的hypervisor来实现,而步骤308-311可以由VM来实现。如图9所示,在一个实施方式中,所述hypervisor包括:获取单元901,用于执行步骤301;生成单元902,用于执行步骤302;接收单元903,用于执行步骤303;确定单元904,用于执行步骤304和305;分配单元905,用于执行步骤306中为所述第一功能描述分配所述VM下的第一本地索引的步骤;存储单元906,用于存储所述第一本地索引与所述第一功能描述的对应关系;发送单元907,用于执行步骤307。关于上述各单元的具体实现细节,可以参考图3中各步骤的描述。在一个实现方式中,所述hypervisor还可以包括关联单元908,用于关联所述全局VF标识和所述VM,以使所述VM启动时能够探知到对应所述全局VF标识的VF并使用所述VF。在另一个实现方式中,,所述hypervisor还可以包括更新单元909,用于在确定所述VM成功启动后,更新所述第一映射表。所述更新单元909可以是根据所述接收单元909接收的确认消息确定所述VM成功启动,也可以是根据所述hypervisor主动探知到的其他信息确定所述VM成功启动。由于hypervisor部署在服务器上,图9中的各单元也位于所述hypervisor所 在的服务器上。因此,本发明还提供一种包括上述各单元的服务器。在一个实施方式中,上述各单元全部由硬件实现。在另一个实施方式中,上述各单元分别对应一段代码,如图10所示,上述各单元对应的代码可以共同存储在服务器1000的一个非易失性媒介1001(英文:non-transitorymedia)上,也可以分别存储在所述服务器的多个非易失性媒介上,所述非易失性媒介可以为存储器(图中以一个存储器作为示例)。所述服务器还包括一个处理器1002,用于调用所述各单元对应的代码,以实现上述步骤301-307。如图11所示,在一个实施方式中,所述VM包括:接收单元1101,用于接收服务器发送的第一本地索引以及第一功能描述的对应关系;确定单元1102,用于执行步骤308;建立单元1103,用于执行步骤309,建立所述第一功能描述与所述第一本地VF标识的第二对应关系;加载单元1104,用于执行步骤310。进一步地,所述VM还可以包括发送单元1105,用于执行步骤311。于上述各单元的具体实现细节,可以参考图3中各步骤的描述。此外,所述建立单元1103还可以用于建立本地索引_本地VF标识映射表,具体过程可以参考对图3的描述。所述VM还可以包括存储单元1106,用于存储所述本地索引_本地VF标识映射表,则所述确定单元具体用于查找所述存储本地索引-本地VF标识映射表确定所述本地索引对应的本地VF标识,所述本地索引-本地VF标识映射表的每个表项包括所述VM所使用的VF的本地索引和本地VF标识的对应关系。如果有需要,所述存储单元1106还可以存储所述第二对应关系。由于VM部署在服务器上,图11中的各单元也位于所述VM所在的服务器上。因此,本发明还提供一种包括上述各单元的服务器。在一个实施方式中,上述各单元全部由硬件实现。在另一个实施方式中,上述各单元分别对应一段代码,如图12所示,上述各单元对应的代码可以共同存储在服务器1200的一 个非易失性媒介1201上,也可以分别存储在所述服务器的多个非易失性媒介上,所述非易失性媒介可以为存储器(图中以一个存储器作为示例)。所述服务器还包括一个处理器1202,用于调用所述各单元对应的代码,以实现上述步骤308-311。其中,上述服务器1000和上述服务器1200均为服务器10的具体实现形式。因此,上述服务器1000和上述服务器1200均包括至少包括一个PCIe插槽,并具有SR-IOV能力。本发明上述各实现方式属于同一发明构思,因此各实现方式可以互相参考引用。本发明实施例中,预先为服务器上插入的PCIe设备的每个虚拟功能VF建立全局索引和全局VF标识,当所述服务器收到包括指定功能对应的第一功能描述的业务需求时,确定所述第一功能描述对应的第一全局索引,以及所述第一功能描述对应的第一全局VF标识,所述第一全局VF标识用于识别第一VF在所述PCIe设备上的位置;确定所述业务需求对应的VM,关联所述第一全局VF标识和所述VM,为所述指定功能分配所述VM下的第一本地索引,建立所述第一本地索引与所述第一功能描述的对应关系,并将所述对应关系发送给所述VM。所述VM根据所述对应关系确定所述第一本地索引对应的第一本地VF标识,建立所述第一功能描述与所述第一本地VF标识的第二对应关系,根据所述第二对应关系为所述第一VF加载所述指定功能的驱动程序。通过本发明,能够为一个PCIe设备上虚拟出的具有不同功能的VF加载不同的驱动程序。并且,所述业务需求中的指定功能的第一功能描述可以由用户根据需要任意设置,能够适应用户不断变化的功能和性能要求,提高了业务部署的灵活性和可扩展性。以上所述仅是本发明的可选实施方式,应当指出,对于本
技术领域
:的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1