一种驱动管理方法及宿主机与流程

文档序号:14687010发布日期:2018-06-15 04:16阅读:163来源:国知局

本发明涉及计算机技术领域,尤其涉及一种驱动管理方法及宿主机。



背景技术:

云计算平台可以基于虚拟化技术将各种物理资源进行虚拟形成虚拟机,每个虚拟机可以单独运行自己的操作系统和应用程序,目前,越来越多的业务正在逐步迁移到云计算平台供云计算平台管理的虚拟机来处理,云计算平台上很多业务存在计算量或者处理时延等特殊要求,因此虚拟机需要依赖于特定的硬件加速设备来处理这些业务,虚拟机(英文:Virtual Machine,简称:VM)调用硬件加速设备时需要用到该硬件加速设备的驱动,驱动方式包括如下两种:

前后端驱动方式:后端驱动部署于宿主机Host,Host通过硬件加速设备对应的设备驱动直接访问硬件加速设备;前端驱动部署于VM来为VM应用程序提供应用程序编程接口(英文:Application Programming Interface,简称:API)。VM通过API向Host发起加速请求,Host接收到该加速请求后通过该硬件加速设备的驱动调用该硬件加速设备,实现了VM对该硬件加速设备的间接调用。

硬件直通方式:将硬件加速设备整个直通到VM内部,VM上安装有硬件加速设备的驱动,该VM可以通过该驱动来调用硬件加速设备,如图1所示。

为了避免VM对硬件加速设备的直接耦合(即避免某个VM只能调用部分特定类型的硬件加速设备),在网络功能虚拟化(英文:Network Functions Virtualization,简称:NFV)标准IFA004中提出基于加速能力进行加速设备分配管理的技术,该技术主要思想是:云计算平台在调度启动VM时,根据VM的加速能力需求规格(如:100Mbps的数据加密标准(英文:Data Encryption Standard,简称:DES)的加速能力)分配对应能力的硬件加速设备,然后VM以前后端驱动方式,或者硬件直通方式调用该硬件加速设备。

以下详细介绍VM以硬件直通的方式调用硬件加速设备的过程,步骤如下:

1、VM预装多个驱动,每个驱动对应支持有限硬件型号的硬件加速设备;

2、云计算平台为该VM调度硬件资源时,选择具有对应型号的、空闲的、可直通的硬件加速设备,并将该硬件加速设备分配给该VM;

3、云计算平台启动VM并通过硬件直通方式将该硬件加速设备直通到VM;

4、VM检测到分配给自己的硬件加速设备后,可以从预装的多个驱动中选择与该硬件加速设备对应的驱动来调用该硬件加速设备。

请参见图2,图2为现有技术中的一种以硬件直通方式调用硬件加速设备的场景示意图。图2云计算平台中存在宿主机Host1、宿主机Host2、硬件加速设备A和硬件加速设备B。进一步地,虚拟机VM1预装了硬件加速设备A的驱动和硬件加速设备B的驱动;虚拟机VM2预装了硬件加速设备A和硬件加速设备B的驱动。经过云计算平台的调度,使VM1在Host1上运行并为该VM1分配硬件加速设备A,以及使VM2在Host 2上运行并为该VM2分配硬件加速设备B。这样一来,VM1可以基于该硬件加速设备A的驱动调用该硬件加速设备A,VM2可以基于该硬件加速设备B的驱动调用该硬件加速设备B。

现有技术的问题在于,为了确保VM可以调用云计算平台分配给该VM的每个硬件加速设备,该VM上需要预装每个硬件加速设备的驱动,预装较多的驱动会占用较多的存储资源,例如,占用较大的磁盘空间。



技术实现要素:

本发明实施例公开了一种驱动管理方法及宿主机,能够节省存储资源。

第一方面,本发明实施例提供了一种驱动管理方法,该方法包括:宿主机为该宿主机上的目标虚拟机分配第一硬件设备,该宿主机上部署有该第一硬件设备;该宿主机从预存的N个驱动包中获取该第一硬件设备的目标驱动包,该N个驱动包分别为N种类型的硬件设备的驱动包,该第一硬件设备的类型为该N种类型的中的一种,N为大于等于1的正整数;该宿主机将该目标驱动包注入该目标虚拟机以使该目标虚拟机能够读取该目标驱动包;该目标虚拟机安装该目标驱动包,安装该目标驱动包得到的驱动用于该目标虚拟机通过硬件直通方式调用该第一硬件设备。

通过执行上述步骤,该宿主机为该目标虚拟机分配第一硬件设备时,将该第一硬件设备对应的目标驱动包注入到该目标虚拟机可以存放的位置,相应地,该目标虚拟机读取并安装该目标驱动包以得到该第一硬件设备的驱动,然后基于该驱动调用该第一硬件设备;在此过程中,无需在该目标虚拟机中预装多个硬件设备各自对应的驱动包,而是为该目标虚拟机分配了哪个硬件设备则即时安装该硬件设备对应的驱动包,节省了该目标虚拟机的存储资源。另外,现有技术中预装的驱动包的总量是有限的,这就导致目标虚拟机只能访问有限的几个硬件设备,而本发明实施例中的虚拟机则具备调用任何硬件设备的能力,只需在调用某个硬件设备之前安装该硬件设备的驱动包即可。

结合第一方面,在第一方面的第一种可能的实现方式中,该目标虚拟机安装该目标驱动包之后,该方法还包括:该目标虚拟机卸载目标驱动并安装更新驱动包,该目标驱动为安装该目标驱动包得到的驱动,该更新驱动包为该目标驱动包的升级包或者该宿主机重新为该目标虚拟机分配的第二硬件设备的驱动包;当该更新驱动包为该目标驱动包的升级包时,安装该更新驱动包得到的驱动用于该目标虚拟机调用该第一硬件设备;当该目标驱动包为该宿主机重新为该目标虚拟机分配的第二硬件设备的驱动包时,安装该更新驱动包得到的驱动用于该目标虚拟机调用该第二硬件设备。

也即是说,本发明实施例支持驱动的卸载和更新,能够适应驱动升级的场景和因硬件设备更换而导致驱动更换的场景,提升了用户体验。

结合第一方面,或者第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,该宿主机为该宿主机上的目标虚拟机分配第一硬件设备,包括:该宿主机在启动目标虚拟机时为该目标虚拟机分配第一硬件设备。

也即是说,分配第一硬件设备以及选了第一硬件设备后目标虚拟机安装该第一硬件设备对应的驱动的相关操作的前提是启动宿主机,进一步明确本发明实施例安装直通的设备的驱动是实时进行的,而不是预装的。

结合第一方面,或者第一方面的第一种可能的实现方式,或者第一方面的第二种可能的实现方式,在第一方面的第三种可能的实现方式中,该宿主机将该目标驱动包注入该目标虚拟机以使该目标虚拟机能够读取该目标驱动包,包括:该宿主机将该目标驱动程序存放到该目标虚拟机的文件系统中供该目标虚拟机读取;或者将该目标驱动包存放到该宿主机上预设的共享内存中供该目标虚拟机读取。

结合第一方面,或者第一方面的第一种可能的实现方式,或者第一方面的第二种可能的实现方式,或者第一方面的第三种可能的实现方式,在第一方面的第四种可能的实现方式中,N种类型的硬件设备为N种类型的硬件加速设备。

目前,硬件加速设备在业内还未形成一个相对统一的标准,各个生产商生产出的硬件加速设备对应的驱动互补兼容,因此,要保证VM具备以硬件直通的方式调用大部分的硬件直通设备,就需要在该VM中预装大量的与各种硬件加速设备分别对应的驱动。也即是说,当该N种类型的硬件设备为N种类型的硬件加速设备时,由于预装驱动导致的占用存储资源较多的问题更为严重,因此,采用本发明实施例中实时安装驱动的方案节省存储资源的效果更明显。

第二方面,本发明实施例提供一种宿主机,该宿主机上运行有一个或多个虚拟机,其中,该宿主机用于为该宿主机上的目标虚拟机分配第一硬件设备,该宿主机上部署有该第一硬件设备;从预存的N个驱动包中获取该第一硬件设备的目标驱动包,该N个驱动包分别为N种类型的硬件设备的驱动包,该第一硬件设备的类型为该N种类型的中的一种,N为大于等于1的正整数;将该目标驱动包注入该目标虚拟机以使该目标虚拟机能够读取该目标驱动包。该虚拟机用于安装该目标驱动包,安装该目标驱动包得到的驱动用于该目标虚拟机通过硬件直通方式调用该第一硬件设备。

结合第二方面,在第二方面的第一种可能的实现方式中,该宿主机包括分配模块、驱动管理模块和驱动加载模块,其中,分配模块用于为该宿主机上的目标虚拟机分配第一硬件设备,该宿主机上部署有该第一硬件设备。驱动管理模块用于从预存的N个驱动包中获取该第一硬件设备的目标驱动包,该N个驱动包分别为N种类型的硬件设备的驱动包,该第一硬件设备的类型为该N种类型的中的一种,N为大于等于1的正整数。驱动管理模块还用于将该目标驱动包注入该目标虚拟机以使该目标虚拟机能够读取该目标驱动包。驱动加载模块用于安装该目标驱动包,安装该目标驱动包得到的驱动用于该目标虚拟机通过硬件直通方式调用该第一硬件设备。

通过运行上述单元,该宿主机为该目标虚拟机分配第一硬件设备时,将该第一硬件设备对应的目标驱动包注入到该目标虚拟机可以存放的位置,相应地,该目标虚拟机读取并安装该目标驱动包以得到该第一硬件设备的驱动,然后基于该驱动调用该第一硬件设备;在此过程中,无需在该目标虚拟机中预装多个硬件设备各自对应的驱动包,而是为该目标虚拟机分配了哪个硬件设备则即时安装该硬件设备对应的驱动包,节省了该目标虚拟机的存储资源。另外,现有技术中预装的驱动包的总量是有限的,这就导致目标虚拟机只能访问有限的几个硬件设备,而本发明实施例中的虚拟机则具备调用任何硬件设备的能力,只需在调用某个硬件设备之前安装该硬件设备的驱动包即可。

结合第二方面,在第二方面的第二种可能的实现方式中,该驱动加载模块还用于:卸载目标驱动并安装更新驱动包,该目标驱动为安装该目标驱动包得到的驱动,该更新驱动包为该目标驱动包的升级包或者该宿主机重新为该目标虚拟机分配的第二硬件设备的驱动包;当该更新驱动包为该目标驱动包的升级包时,安装该更新驱动包得到的驱动用于该目标虚拟机调用该第一硬件设备;当该目标驱动包为该宿主机重新为该目标虚拟机分配的第二硬件设备的驱动包时,安装该更新驱动包得到的驱动用于该目标虚拟机调用该第二硬件设备。

也即是说,本发明实施例支持驱动的卸载和更新,能够适应驱动升级的场景和因硬件设备更换而导致驱动更换的场景,提升了用户体验。

结合第二方面,或者第二方面的前述任意一种实现方式,在第二方面的第三种可能的实现方式中,该分配模块具体用于在启动目标虚拟机时为该目标虚拟机分配第一硬件设备。

也即是说,分配第一硬件设备以及选了第一硬件设备后目标虚拟机安装该第一硬件设备对应的驱动的相关操作的前提是启动宿主机,进一步明确本发明实施例安装直通的设备的驱动是实时进行的,而不是预装的。

结合第二方面,或者第二方面的前述任意一种实现方式,在第二方面的第四种可能的实现方式中,该驱动管理模块将该目标驱动包注入该目标虚拟机以使该目标虚拟机能够读取该目标驱动包,具体为:将该目标驱动程序存放到该目标虚拟机的文件系统中供该目标虚拟机读取;或者将该目标驱动包存放到该宿主机上预设的共享内存中供该目标虚拟机读取。

结合第二方面,或者第二方面的前述任意一种实现方式,在第二方面的第五种可能的实现方式中,N种类型的硬件设备为N种类型的硬件加速设备。

目前,硬件加速设备在业内还未形成一个相对统一的标准,各个生产商生产出的硬件加速设备对应的驱动互补兼容,因此,要保证VM具备以硬件直通的方式调用大部分的硬件直通设备,就需要在该VM中预装大量的与各种硬件加速设备分别对应的驱动。也即是说,当该N种类型的硬件设备为N种类型的硬件加速设备时,由于预装驱动导致的占用存储资源较多的问题更为严重,因此,采用本发明实施例中实时安装驱动的方案节省存储资源的效果更明显。

第三方面,本发明实施例提供一种宿主机,该宿主机包括处理器和存储器,该存储器用于存储数据和程序;该处理器调用该存储器中的程序,用于执行如下操作:为该宿主机上的目标虚拟机分配第一硬件设备,该宿主机上部署有该第一硬件设备;从预存的N个驱动包中获取该第一硬件设备的目标驱动包,该N个驱动包分别为N种类型的硬件设备的驱动包,该第一硬件设备的类型为该N种类型的中的一种,N为大于等于1的正整数;将该目标驱动包注入该目标虚拟机以使该目标虚拟机能够读取该目标驱动包;安装该目标驱动包,安装该目标驱动包得到的驱动用于该目标虚拟机通过硬件直通方式调用该第一硬件设备。

通过执行上述操作,该宿主机为该目标虚拟机分配第一硬件设备时,将该第一硬件设备对应的目标驱动包注入到该目标虚拟机可以存放的位置,相应地,该目标虚拟机读取并安装该目标驱动包以得到该第一硬件设备的驱动,然后基于该驱动调用该第一硬件设备;在此过程中,无需在该目标虚拟机中预装多个硬件设备各自对应的驱动包,而是为该目标虚拟机分配了哪个硬件设备则即时安装该硬件设备对应的驱动包,节省了该目标虚拟机的存储资源。另外,现有技术中预装的驱动包的总量是有限的,这就导致目标虚拟机只能访问有限的几个硬件设备,而本发明实施例中的虚拟机则具备调用任何硬件设备的能力,只需在调用某个硬件设备之前安装该硬件设备的驱动包即可。

结合第三方面,在第三方面的第一种可能的实现方式中,该处理器安装该目标驱动包之后,还用于卸载目标驱动并通过该目标虚拟机安装更新驱动包,该目标驱动为安装该目标驱动包得到的驱动,该更新驱动包为该目标驱动包的升级包或者该宿主机重新为该目标虚拟机分配的第二硬件设备的驱动包;当该更新驱动包为该目标驱动包的升级包时,安装该更新驱动包得到的驱动用于该目标虚拟机调用该第一硬件设备;当该目标驱动包为该宿主机重新为该目标虚拟机分配的第二硬件设备的驱动包时,安装该更新驱动包得到的驱动用于该目标虚拟机调用该第二硬件设备。

也即是说,本发明实施例支持驱动的卸载和更新,能够适应驱动升级的场景和因硬件设备更换而导致驱动更换的场景,提升了用户体验。

结合第三方面,或者第三方面的第一种可能的实现方式,在第三方面的第二种可能的实现方式中,该处理器为该宿主机上的目标虚拟机分配第一硬件设备,包括:在启动目标虚拟机时为该目标虚拟机分配第一硬件设备。

也即是说,分配第一硬件设备以及选了第一硬件设备后目标虚拟机安装该第一硬件设备对应的驱动的相关操作的前提是启动宿主机,进一步明确本发明实施例安装直通的设备的驱动是实时进行的,而不是预装的。

结合第三方面,或者第三方面的第一种可能的实现方式,或者第三方面的第二种可能的实现方式,在第三方面的第三种可能的实现方式中,该处理器将该目标驱动包注入该目标虚拟机以使该目标虚拟机能够读取该目标驱动包,包括:将该目标驱动程序存放到该目标虚拟机的文件系统中供该目标虚拟机读取;或者将该目标驱动包存放到该宿主机上预设的共享内存中供该目标虚拟机读取。

结合第三方面,或者第三方面的第一种可能的实现方式,或者第三方面的第二种可能的实现方式,或者第三方面的第三种可能的实现方式,在第三方面的第四种可能的实现方式中,N种类型的硬件设备为N种类型的硬件加速设备。

目前,硬件加速设备在业内还未形成一个相对统一的标准,各个生产商生产出的硬件加速设备对应的驱动互补兼容,因此,要保证VM具备以硬件直通的方式调用大部分的硬件直通设备,就需要在该VM中预装大量的与各种硬件加速设备分别对应的驱动。也即是说,当该N种类型的硬件设备为N种类型的硬件加速设备时,由于预装驱动导致的占用存储资源较多的问题更为严重,因此,采用本发明实施例中实时安装驱动的方案节省存储资源的效果更明显。

第四方面,本发明实施例中还提供一种计算机存储介质,该存储介质可以是非易失性的,即断电后内容不丢失。该存储介质中存储软件程序,该软件程序在被一个或多个处理器读取并执行时可实现第一方面或第一方面的任意一种实现方式提供的方法。

第五方面,本发明实施例中还提供一种宿主机,所述宿主机上运行有一个或多个虚拟机,所述宿主机用于为所述宿主机上的目标虚拟机分配第一硬件设备,所述宿主机上部署有所述第一硬件设备;从预存的N个驱动包中获取所述第一硬件设备的目标驱动包,所述N个驱动包分别为N种类型的硬件设备的驱动包,所述第一硬件设备的类型为所述N种类型的中的一种,N为大于等于1的正整数;将所述目标驱动包注入所述目标虚拟机以使所述目标虚拟机能够读取所并安装该目标驱动包,安装该目标驱动包得到的驱动用于该目标虚拟机通过硬件直通方式调用该第一硬件设备。

通过实施本发明实施例,该宿主机为该目标虚拟机分配第一硬件设备时,将该第一硬件设备对应的目标驱动包注入到该目标虚拟机可以存放的位置,相应地,该目标虚拟机读取并安装该目标驱动包以得到该第一硬件设备的驱动,然后基于该驱动调用该第一硬件设备;在此过程中,无需在该目标虚拟机中预装多个硬件设备各自对应的驱动包,而是为该目标虚拟机分配了哪个硬件设备则即时安装该硬件设备对应的驱动包,节省了该目标虚拟机的存储资源。另外,现有技术中预装的驱动包的总量是有限的,这就导致目标虚拟机只能访问有限的几个硬件设备,而本发明实施例中的虚拟机则具备调用任何硬件设备的能力,只需在调用某个硬件设备之前安装该硬件设备的驱动包即可。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。

图1是现有技术中的一种调用硬件设备的场景示意图;

图2是现有技术中的又一种调用硬件设备的场景示意图;

图3是本发明实施例提供的一种云计算平台的架构示意图;

图4是本发明实施例提供的一种宿主机的结构示意图;

图5是本发明实施例提供的一种驱动管理方法的流程示意图;

图6是本发明实施例提供的一种向目标虚拟机注入驱动包的流程示意图;

图7是本发明实施例提供的一种目标虚拟机安装驱动包的流程示意图;

图8是本发明实施例提供的一种目标虚拟调用第一硬件设备的流程示意图;

图9是本发明实施例提供的又一种宿主机的结构示意图。

具体实施方式

下面将结合附图对本发明实施例中的技术方案进行更清楚地描述。

请参见图3,图3是本发明实施例提供的一种云计算平台的架构示意图,该云计算平台包括由一个Manager主机和若干Host宿主机组成的集群,Manager主机负责管理该集群中的所有Host宿主机,每个Host负责管理该Host上的VM。Manager主机上部署了云VM管理组件Manager、每个Host宿主机部署了云VM管理组件Slave,云VM管理组件Manager与云VM管理组件Slave之间相互通信协作,完成集群管理。在每个Host宿主机部署直通设备管理组件以管理该Host宿主机的所有可直通的硬件设备(若该Host宿主机上的VM能够基于装在该VM上的某个硬件设备对应的驱动访问该某个硬件设备,则该某个硬件设备属于该Host宿主机的可直通的硬件设备),在每个VM内部部署直通设备应用组件与该直通设备管理组件协作以实现对直通设备的调用。VM监控器协助云VM管理组件Slave完成VM的启动、停止等生命周期管理。本发明的改进点主要体现在该Host宿主机,以下结合图4对该Host宿主机进行更细致的描述。

请参见图4,图4是本发明实施例提供的一种Host宿主机的内部结构示意图,该Host中有些模块为通过软件虚拟出来的功能模块,有些模块为实际的硬件;该Host中的各个模块的详细描述如下:

1、硬件设备:可以为硬件加速(英文:Hardware acceleration)设备(用于加速业务处理的设备)、鼠标、键盘、网卡等能够部署在该Host宿主机上的硬件,可以直通到VM内供VM使用。宿主机为VM分配硬件设备的功能模块可以称为分配模块,该分配模块的功能可以由下面描述的云VM管理模块实现,等等。

2、驱动包:存储于Host的可安装的驱动文件,每种硬件设备需要对应至少一个驱动包,可以理解的是,VM要顺利调用某个硬件设备需要用到该某个硬件设备对应的驱动包。

3、云VM管理模块:为部署于Host的软件功能模块,负责管理本Host的VM生命周期管理。

4、驱动管理模块:为部署于Host的软件功能模块,用于管理本Host的所有硬件设备的驱动包,包括向VM注入相应的驱动包。驱动管理模块和该云VM管理模块的组合可以看作是上述云VM管理组件Slave。

5、驱动加载模块:为部署于VM的软件功能模块,负责扫描Host注入的设备驱动包,并完成驱动包的安装、使能等。

6、驱动:为驱动加载模块安装驱动包得到的软件功能模块。

7、驱动接口:为署于VM的软件功能模块,应用程序可以通过该驱动接口调用已使能的硬件设备的驱动以实现对该硬件设备的调用。

8、注册表:为部署于VM的数据表,用于保存该VM的所有硬件设备的信息、该硬件设备对应的驱动的信息、该硬件设备的能力信息等等。

9、应用程序:部署于VM的软件功能模块,为硬件设备的使用者;VM调用或者使用硬件设备包括该VM上的应用程序调用或者使用硬件设备。

在本发明实施例中,Host宿主机基于上述各个模块在VM需要使用某个硬件设备时,向该VM注入该某个硬件设备的驱动包,相应地,该VM安装该驱动包得到该某个硬件设备的驱动,然后该VM基于该驱动调用该某个硬件设备。

需要说明的是,在实际应用中上述很多模块还可以被命名为其他名称;上述部分模块也可以进行合并,如果某两个模块合并那么合并得到的模块同时具备这两个模块各自所具备的功能;上述模块还可以细分为多个更小的模块,每个更小的模块各自具备细分之前的模块的一部分功能。以下结合上述模块参考图5对本发明实施例进行更细致的描述。

请参见图5,图5是本发明实施例提供的一种驱动管理方法的流程示意图,该方法大致包括步骤S501~S505。

步骤S501:宿主机为该宿主机上的目标虚拟机分配第一硬件设备。

具体地,该宿主机上可以部署虚拟机,部署的虚拟机的数量可以为一个也可以为多个,本发明实施例涉及到虚拟机的相关操作,为了便于理解后续将以该宿主机上的某一个虚拟机为例来进行描述,该某一个虚拟机可以称为目标虚拟机;当该宿主机上还存在其他虚拟机时,后续描述的目标虚拟机的相关特征同样适用于该其他虚拟机具备。

该目标虚拟机上安装有操作系统和应用程序,该应用程序运行的过程中需要调用该宿主机上的硬件设备来实现相应功能,例如,与网络相关的应用程序需要调用网卡使该目标虚拟机连接到网络中;再如,某些应用程序需要调用硬件加速设备(或称“模块”)来替代软件算法以充分利用硬件所固有的快速特性来提高应用程序的处理速度,等等。此处的网卡、硬件加速设备均属于部署在该宿主机上的硬件设备,该宿主机上部署的硬件设备的数量可以为一个也可以为多个,该宿主机会根据该目标虚拟机上的应用程序运行时的需要,为该目标虚拟机分配硬件设备,为了方便描述,可称分配给该目标虚拟机的硬件设备为第一硬件设备。

该宿主机为该目标虚拟机分配硬件设备时,可以根据自身维护的各个硬件设备的状态来分,例如,将未被目标虚拟机以外的虚拟机调用的硬件设备分配给该目标虚拟机;也可以根据该目标虚拟机的需求来分,通常来讲硬件设备的处理能力有高有低(例如,不同硬件加速设备之间的加速能力可能会存在区别),该宿主机可以预先获取该目标虚拟机的所期望的处理能力,然后选择能够满足该处理能力的硬件加速设备分配给该目标虚拟机。现有技术中,该宿主机为该目标虚拟机分配硬件设备所参照的规则还有很多,此处不再一一举例。

步骤S502:该宿主机从预存的N个驱动包中获取该第一硬件设备的目标驱动包。

具体地,当该宿主机上部署有N种类型的硬件设备时,该宿主机上也会存储有至少N个安装程序包,N为大于等于1的正整数,其中,不同类型的硬件设备对应的驱动包不同,相同类型的硬件设备对应的驱动包相同,有些硬件设备基于的标准、协议等相同,这些硬件设备可以由相同的驱动来调用,因此可以将这些硬件设备归为相同类型的硬件设备。可以理解为,该宿主机中有各个硬件设备与各个驱动包之间的对应关系,因此该宿主机确定了分配给该目标虚拟机的第一硬件设备之后,就可以基于该对应关系确定该第一硬件设备对应的驱动包,在本发明实施例中,称该第一硬件设备对应的驱动包为目标驱动包。在实际应用中国,硬件设备的驱动包可能会出现更新的情况,在这种情况下,该目标驱动包可以具体指该第一硬件设备最新的驱动包。

步骤S503:该宿主机将该目标驱动包注入该目标虚拟机以使该目标虚拟机能够读取该目标驱动包。

具体地,该宿主机将该目标驱动包注入到(也可以称“存储到”、“存放到”等)预先指定的位置,例如,将该目标驱动程序存放到该目标虚拟机的文件系统中供该目标虚拟机读取;再如,将该目标驱动包存放到该宿主机上预设的共享内存中供该目标虚拟机读取。需要说明的是,该目标虚拟机可以从该预先指定的位置中读取信息,当该目标驱动包注入到该预先指定的位置时,该目标虚拟机即可读取到该目标驱动包。

以下结合图6举例讲述向目标虚拟机注入目标驱动包的过程,过程如下:

a、云VM管理模块收到来自外部的启动Guest的请求消息。

b、云VM管理模块创建Guest对应的VM实例,该实例包含文件系统,创建的VM实例可以称为目标VM(即“目标虚拟机”)。

c、云VM管理模块为该目标VM分配直通的硬件设备,分配的硬件设备为第一硬件设备。

d、云VM管理模块通知驱动管理模块对该目标VM进行驱动包的注入。

e、驱动管理模块根据分配给该VM的硬件设备选择该硬件设备对应的驱动包,选择的驱动包可以称为目标驱动包,然后将该目标驱动包注入到指定的位置(例如,写入该目标VM的文件系统的指定路径,或者写入到Host宿主机的共享内存),使得该目标VM可以读取到。

f、云VM管理模块启动该目标VM,并将该第一硬件设备直通到该目标VM。

可以理解的是,图6所描述的只是一种可能的实现方式,其他可能的实现方式此处不再一一举例。

步骤S504:该目标虚拟机读取该目标驱动包并安装该目标驱动包。

具体地,安装该目标驱动包会得到该第一硬件设备的驱动,以下结合图7举例讲述目标虚拟机如何安装目标驱动包,流程如下:

i、VM在初始化阶段激活驱动加载模块。

j、驱动加载模块扫描指定的位置以获取注入的驱动包。

k、驱动加载模块安装获取的驱动包以得到驱动;

l、驱动加载模块使能该驱动;

m、该驱动检测对应硬件设备的信息,例如,该硬件设备的能力;

n、驱动加载模块将驱动获取的硬件设备的信息注册到注册表以供查询。

可以理解的是,由于前面步骤中已经将该目标驱动包注入到了指定的位置,因此图7的流程也会获取到该目标驱动包,安装该目标驱动包以得到目标驱动,通过目标驱动获取第一硬件设备的信息,将第一硬件设备的信息注册到该注册表。可以理解的是,图7所描述的只是一种可能的实现方式,其他可能的实现方式此处不再一一举例。

步骤S505:该目标虚拟机基于该第一硬件设备的驱动调用该第一硬件设备,调用该第一硬件设备的方式可以为硬件直通的方式。

具体的,该目标虚拟机调用该第一硬件设备往往是由该目标虚拟机上的应用程序来触发的,以下结合图8举例讲述该目标虚拟机如何调用该第一硬件设备,图8中大致包括打开第一硬件设备、向第一硬件设备获取处理数据和关闭第一硬件设备这三个过程,具体流程如下:

r、应用程序向驱动接口发送打开硬件设备的请求,该请求中携带所需的能力规格等信息(例如,DES加减密能力);驱动接口根据该应用程序所需的能力规格,从该注册表中查找与该能力规格相匹配的第一硬件设备的信息以及该第一硬件设备对应的目标驱动的信息;该驱动接口触发该目标驱动,相应地,该目标驱动打开该第一硬件设备。另外,驱动接口还要向该应用程序反馈该第一硬件设备的句柄。

s、应用程序向驱动接口发送第一硬件设备的句柄和业务数据;该驱动接口根据该第一硬件设备的句柄确定要用到的驱动为目标驱动,然后将该业务数据传递到该目标驱动;该目标驱动将该业务数据传递到该第一硬件设备;第一硬件设备对该业务数据进行处理以得到处理结果,并将该处理结果反馈给该目标驱动;该目标驱动将该处理结果传递给该驱动接口;该驱动接口将该处理结果传递给该应用程序。

t、应用程序向驱动接口发送第一硬件设备的句柄和关闭请求;该驱动接口根据该第一硬件设备的句柄确定要用到的驱动为目标驱动,然后请求该目标驱动关闭第一硬件设备,相应地,该目标驱动关闭该第一硬件设备。

可以理解的是,图8所描述的只是一种可能的实现方式,其他可能的实现方式此处不再一一举例。

以上结合步骤S501~S505讲述了硬件设备的分配、驱动的注入安装、硬件设备的调用等过程,在这个过程中,某些环节还存在其他可选的实现方案,以下大致介绍一下几种可选的实现方案。

在一种可选的方案中,该宿主机具体在启动目标虚拟机时为该目标虚拟机分配该第一硬件设备;或者该宿主机还可以在目标虚拟机运行过程中实时检测该目标虚拟机是否需要使用硬件设备,若检测出该目标虚拟机需要使用硬件设备则为该目标虚拟机分配该第一硬件设备;这两种可选方案均更明确地表明,安装驱动包是根据需要实时进行的而不是预装的。

在一种可选的方案中,本发明实施例描述到的N种类型的硬件设备可以具体为N种类型的硬件加速设备,目前,硬件加速设备在业内还未形成一个相对统一的标准,各个生产商生产出的硬件加速设备对应的驱动互补兼容,因此,要保证VM具备以硬件直通的方式调用大部分的硬件直通设备,就需要在该VM中预装大量的与各种硬件加速设备分别对应的驱动。也即是说,当该N种类型的硬件设备为N种类型的硬件加速设备时,由于预装驱动导致的占用存储资源较多的问题更为严重,因此,采用本发明实施例中实时安装驱动的方案节省存储资源的效果更明显。

在一种可选的方案中,本发明实施例还可以包括如下步骤:该目标虚拟机卸载目标驱动并安装更新驱动包,该目标驱动为安装该目标驱动包得到的驱动。

在实际应用中,可能会遇到该第一硬件设备的驱动包(即目标驱动包)升级的情况,也可能遇到该宿主机为该目标虚拟机重新分配硬件设备的情况(即该第一硬件设备不再是分配给该目标虚拟机的硬件设备),可称重新分配的硬件设备为第二硬件设备。为了适应这些情况,更新驱动包可以为该目标驱动包的升级包或者该宿主机重新为该目标虚拟机分配的第二硬件设备的驱动包。该更新驱动包注入、安装等的实现可以参照上面对目标驱动包的描述。可选的,该目标虚拟机可以将此前注入到自身的目标驱动包删除,尤其在该更新驱动包为该目标驱动包的升级包时,注入该更新驱动包后该目标驱动包的用处可能不大。

可以理解的是,当该更新驱动包为该目标驱动包的升级包时,安装该更新驱动包得到的驱动用于该目标虚拟机调用该第一硬件设备;当该目标驱动包为该宿主机重新为该目标虚拟机分配的第二硬件设备的驱动包时,安装该更新驱动包得到的驱动用于该目标虚拟机调用该第二硬件设备。

在图5所描述的方法中,该宿主机为该目标虚拟机分配第一硬件设备时,将该第一硬件设备对应的目标驱动包注入到该目标虚拟机可以存放的位置,相应地,该目标虚拟机读取并安装该目标驱动包以得到该第一硬件设备的驱动,然后基于该驱动调用该第一硬件设备;在此过程中,无需在该目标虚拟机中预装多个硬件设备各自对应的驱动包,而是为该目标虚拟机分配了哪个硬件设备则即时安装该硬件设备对应的驱动包,节省了该目标虚拟机的存储资源。另外,现有技术中预装的驱动包的总量是有限的,这就导致目标虚拟机只能访问有限的几个硬件设备,而本发明实施例中的虚拟机则具备调用任何硬件设备的能力,只需在调用某个硬件设备之前安装该硬件设备的驱动包即可。

上述详细阐述了本发明实施例的方法,为了便于更好地实施本发明实施例的上述方案,相应地,下面提供了本发明实施例的装置。

请参见图9,图9是本发明实施例提供的一种宿主机90,该宿主机90包括处理器901和存储器902,该处理器901和存储器902通过总线相互连接。

存储器902包括但不限于是随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或者快闪存储器)、或便携式只读存储器(CD-ROM),该存储器902用于相关指令及数据。

处理器901可以是一个或多个中央处理器(英文:Central Processing Unit,简称:CPU),在处理器901是一个CPU的情况下,该CPU可以是单核CPU,也可以是多核CPU。

该宿主机90中的处理器901用于读取该存储器902中存储的程序代码,执行以下操作:

为该宿主机上的目标虚拟机分配第一硬件设备,该宿主机上部署有该第一硬件设备;

从预存的N个驱动包中获取该第一硬件设备的目标驱动包,该N个驱动包分别为N种类型的硬件设备的驱动包,该第一硬件设备的类型为该N种类型的中的一种,N为大于等于1的正整数;

将该目标驱动包注入该目标虚拟机以使该目标虚拟机能够读取该目标驱动包;

安装该目标驱动包,安装该目标驱动包得到的驱动用于该目标虚拟机通过硬件直通方式调用该第一硬件设备。

通过执行上述操作,该宿主机为该目标虚拟机分配第一硬件设备时,将该第一硬件设备对应的目标驱动包注入到该目标虚拟机可以存放的位置,相应地,该目标虚拟机读取并安装该目标驱动包以得到该第一硬件设备的驱动,然后基于该驱动调用该第一硬件设备;在此过程中,无需在该目标虚拟机中预装多个硬件设备各自对应的驱动包,而是为该目标虚拟机分配了哪个硬件设备则即时安装该硬件设备对应的驱动包,节省了该目标虚拟机的存储资源。另外,现有技术中预装的驱动包的总量是有限的,这就导致目标虚拟机只能访问有限的几个硬件设备,而本发明实施例中的虚拟机则具备调用任何硬件设备的能力,只需在调用某个硬件设备之前安装该硬件设备的驱动包即可。

在一种可选的方案中,该处理器901安装该目标驱动包之后,还用于卸载目标驱动并安装更新驱动包,该目标驱动为安装该目标驱动包得到的驱动,该更新驱动包为该目标驱动包的升级包或者该宿主机重新为该目标虚拟机分配的第二硬件设备的驱动包;当该更新驱动包为该目标驱动包的升级包时,安装该更新驱动包得到的驱动用于该目标虚拟机调用该第一硬件设备;当该目标驱动包为该宿主机重新为该目标虚拟机分配的第二硬件设备的驱动包时,安装该更新驱动包得到的驱动用于该目标虚拟机调用该第二硬件设备。

也即是说,本发明实施例支持驱动的卸载和更新,能够适应驱动升级的场景和因硬件设备更换而导致驱动更换的场景,提升了用户体验。

在又一种可选的方案中,该处理器901为该宿主机上的目标虚拟机分配第一硬件设备,包括:在启动目标虚拟机时为该目标虚拟机分配第一硬件设备。

也即是说,分配第一硬件设备以及选了第一硬件设备后目标虚拟机安装该第一硬件设备对应的驱动的相关操作的前提是启动宿主机,进一步明确本发明实施例安装直通的设备的驱动是实时进行的,而不是预装的。

在又一种可选的方案中,该处理器901将该目标驱动包注入该目标虚拟机以使该目标虚拟机能够读取该目标驱动包,包括:将该目标驱动程序存放到该目标虚拟机的文件系统中供该目标虚拟机读取;或者将该目标驱动包存放到该宿主机上预设的共享内存中供该目标虚拟机读取。

在又一种可选的方案中,N种类型的硬件设备为N种类型的硬件加速设备。

目前,硬件加速设备在业内还未形成一个相对统一的标准,各个生产商生产出的硬件加速设备对应的驱动互补兼容,因此,要保证VM具备以硬件直通的方式调用大部分的硬件直通设备,就需要在该VM中预装大量的与各种硬件加速设备分别对应的驱动。也即是说,当该N种类型的硬件设备为N种类型的硬件加速设备时,由于预装驱动导致的占用存储资源较多的问题更为严重,因此,采用本发明实施例中实时安装驱动的方案节省存储资源的效果更明显。

需要说明的是,各个操作的具体实现还可以对应参照图5所示的方法实施例的相应描述。

在图9所描述的宿主机90中,该宿主机为该目标虚拟机分配第一硬件设备时,将该第一硬件设备对应的目标驱动包注入到该目标虚拟机可以存放的位置,相应地,该目标虚拟机读取并安装该目标驱动包以得到该第一硬件设备的驱动,然后基于该驱动调用该第一硬件设备;在此过程中,无需在该目标虚拟机中预装多个硬件设备各自对应的驱动包,而是为该目标虚拟机分配了哪个硬件设备则即时安装该硬件设备对应的驱动包,节省了该目标虚拟机的存储资源。另外,现有技术中预装的驱动包的总量是有限的,这就导致目标虚拟机只能访问有限的几个硬件设备,而本发明实施例中的虚拟机则具备调用任何硬件设备的能力,只需在调用某个硬件设备之前安装该硬件设备的驱动包即可。

综上所述,通过实施本发明实施例,该宿主机为该目标虚拟机分配第一硬件设备时,将该第一硬件设备对应的目标驱动包注入到该目标虚拟机可以存放的位置,相应地,该目标虚拟机读取并安装该目标驱动包以得到该第一硬件设备的驱动,然后基于该驱动调用该第一硬件设备;在此过程中,无需在该目标虚拟机中预装多个硬件设备各自对应的驱动包,而是为该目标虚拟机分配了哪个硬件设备则即时安装该硬件设备对应的驱动包,节省了该目标虚拟机的存储资源。另外,现有技术中预装的驱动包的总量是有限的,这就导致目标虚拟机只能访问有限的几个硬件设备,而本发明实施例中的虚拟机则具备调用任何硬件设备的能力,只需在调用某个硬件设备之前安装该硬件设备的驱动包即可。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。

以上实施例仅揭露了本发明中较佳实施例,不能以此来限定本发明之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本发明权利要求所作的等同变化,仍属于发明所涵盖的范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1