PCI设备映射方法、装置、设备及存储介质转让专利

申请号 : CN202110649232.X

文献号 : CN113111025B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张勇游仁均冯杰

申请人 : 深圳市科力锐科技有限公司

摘要 :

本发明公开了一种PCI设备映射方法、装置、设备及存储介质。该方法包括:与目标主机进行通信,扫描目标主机上连接的PCI设备,获取对应的目标主机硬件标识和目标主机分配资源并存储至预设存储区域,在获取到虚拟机启动指令时,基于虚拟化引擎扫描预设存储区域,将待映射设备映射至虚拟机,以使虚拟机分配虚拟机硬件标识以及虚拟机分配资源,根据目标主机硬件标识、虚拟机硬件标识、目标主机分配资源及虚拟机分配资源构建标识及资源映射表,根据映射表把虚拟机对映射设备的操作转换成目标主机对物理设备的操作。实现了在当前主机的虚拟机上对目标主机上连接的PCI设备的虚拟挂接,解决了当前主机的虚拟机无法访问其他主机PCI设备的问题。

权利要求 :

1.一种PCI设备映射方法,其特征在于,所述PCI设备映射方法包括:当前主机与目标主机进行通信,以扫描目标主机上连接的若干PCI设备;

获取所述PCI设备对应的目标主机硬件标识以及目标主机分配资源,并将获取到的目标主机硬件标识以及目标主机分配资源存储至预设存储区域;

在获取到虚拟机启动指令时,基于虚拟化引擎扫描所述预设存储区域,确定待映射设备对应的目标主机硬件标识以及目标主机分配资源,将所述待映射设备映射至虚拟机中,以使虚拟机对所述待映射设备分配虚拟机硬件标识以及虚拟机分配资源,其中,所述虚拟机的宿主机为所述当前主机;

基于所述虚拟化引擎根据所述待映射设备对应的目标主机硬件标识以及虚拟机硬件标识构建标识映射表,根据所述标识映射表、所述目标主机分配资源以及所述虚拟机分配资源构建资源映射表,以实现在虚拟机上对目标主机上连接的PCI设备进行映射。

2.如权利要求1所述的PCI设备映射方法,其特征在于,所述基于所述虚拟化引擎根据所述待映射设备对应的目标主机硬件标识以及虚拟机硬件标识构建标识映射表,根据所述标识映射表、所述目标主机分配资源以及所述虚拟机分配资源构建资源映射表之后,所述方法还包括:

通过所述虚拟机加载操作系统,以使所述操作系统自动加载所述待映射设备对应的驱动程序,通过所述驱动程序对所述目标主机上连接的PCI设备进行配置;

通过所述驱动程序与配置好的PCI设备进行交互。

3.如权利要求2所述的PCI设备映射方法,其特征在于,所述通过所述驱动程序与配置好的PCI设备进行交互之后,所述方法还包括:基于所述虚拟化引擎获取所述虚拟机上运行的驱动程序发送的目标指令,确定所述目标指令触发的第一资源信息;

根据所述虚拟机分配资源确定所述第一资源信息对应的第一虚拟机硬件标识;

根据所述标识映射表确定所述第一虚拟机硬件标识对应的第一目标主机硬件标识;

根据所述资源映射表确定所述第一资源信息对应的第一目标主机分配资源;

通知所述目标主机根据所述第一目标主机硬件标识以及所述第一目标主机分配资源向对应的第一PCI设备发送所述目标指令。

4.如权利要求3所述的PCI设备映射方法,其特征在于,所述通知所述目标主机根据所述第一目标主机硬件标识以及所述第一目标主机分配资源向对应的第一PCI设备发送所述目标指令之后,所述方法还包括:

基于所述虚拟化引擎接收所述目标主机的事件信息,所述事件信息包含所述第一PCI设备在所述目标主机上触发的第二资源信息;

根据所述目标主机分配资源确定所述第二资源信息对应的第二目标主机硬件标识;

根据所述标识映射表确定所述第二目标主机硬件标识对应的第二虚拟机硬件标识;

根据所述资源映射表确定所述第二资源信息对应的第二虚拟机分配资源;

根据所述第二虚拟机硬件标识触发所述第二虚拟机分配资源,以使所述虚拟机上运行的驱动程序获取所述第一PCI设备反馈的所述事件信息。

5.如权利要求4所述的PCI设备映射方法,其特征在于,所述根据所述第二虚拟机硬件标识触发所述第二虚拟机分配资源,以使所述虚拟机上运行的驱动程序获取所述第一PCI设备反馈的所述事件信息之后,所述方法还包括:基于所述虚拟化引擎获取所述虚拟机上运行的驱动程序发送的查看事件内容指令,确定所述查看事件内容指令触发的第三资源信息;

根据所述虚拟机分配资源确定所述第三资源信息对应的第三虚拟机硬件标识;

根据所述标识映射表确定所述第三虚拟机硬件标识对应的第三目标主机硬件标识;

根据所述资源映射表确定所述第三资源信息对应的第三目标主机分配资源;

通知所述目标主机根据所述第三目标主机硬件标识以及所述第三目标主机分配资源读取所述查看事件内容指令对应的结果数据;

接收所述目标主机反馈的所述结果数据,并将所述结果数据反馈至所述虚拟机上运行的驱动程序。

6.如权利要求5所述的PCI设备映射方法,其特征在于,所述接收所述目标主机反馈的所述结果数据,并将所述结果数据反馈至所述虚拟机上运行的驱动程序之后,所述方法还包括:

基于所述虚拟化引擎获取所述虚拟机上运行的驱动程序发送的获取数据指令,确定所述获取数据指令触发的第四资源信息,其中,所述虚拟机上运行的驱动程序对所述结果数据进行分析,得到分析结果,在所述分析结果为存在待读取数据时,发送获取数据指令;

根据所述虚拟机分配资源确定所述第四资源信息对应的第四虚拟机硬件标识;

根据所述标识映射表确定所述第四虚拟机硬件标识对应的第四目标主机硬件标识;

根据所述资源映射表确定所述第四资源信息对应的第四目标主机分配资源;

通知所述目标主机根据所述第四目标主机硬件标识以及所述第四目标主机分配资源读取相应的数据;

接收所述目标主机反馈的所述数据,并将所述数据反馈至所述虚拟机上运行的驱动程序。

7.如权利要求1‑6中任一项所述的PCI设备映射方法,其特征在于,所述获取所述PCI设备对应的目标主机硬件标识以及目标主机分配资源,并将获取到的目标主机硬件标识以及目标主机分配资源存储至预设存储区域,包括:获取所述PCI设备对应的目标主机硬件标识以及目标主机分配资源;

获取删除指令,根据所述删除指令删除当前PCI设备对应的当前硬件标识以及当前主机分配资源信息,将剩余的目标主机硬件标识以及目标主机分配资源存储至预设存储区域。

8.一种PCI设备映射装置,其特征在于,所述PCI设备映射装置包括:扫描模块,用于与目标主机进行通信,以扫描目标主机上连接的若干PCI设备;

获取模块,用于获取所述PCI设备对应的目标主机硬件标识以及目标主机分配资源,并将获取到的目标主机硬件标识以及目标主机分配资源存储至预设存储区域;

映射模块,用于在获取到虚拟机启动指令时,基于虚拟化引擎扫描所述预设存储区域,确定待映射设备对应的目标主机硬件标识以及目标主机分配资源,将所述待映射设备映射至虚拟机中,以使虚拟机对所述待映射设备分配虚拟机硬件标识以及虚拟机分配资源,其中,所述虚拟机的宿主机为当前主机;

所述映射模块,还用于基于所述虚拟化引擎根据所述待映射设备对应的目标主机硬件标识以及虚拟机硬件标识构建标识映射表,根据所述标识映射表、所述目标主机分配资源以及所述虚拟机分配资源构建资源映射表,以实现在虚拟机上对目标主机上连接的PCI设备进行映射。

9.一种PCI设备映射设备,其特征在于,所述设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的PCI设备映射程序,所述PCI设备映射程序配置为实现如权利要求1至7中任一项所述的PCI设备映射方法。

10.一种存储介质,其特征在于,所述存储介质上存储有PCI设备映射程序,所述PCI设备映射程序被处理器执行时实现如权利要求1至7中任一项所述的PCI设备映射方法。

说明书 :

PCI设备映射方法、装置、设备及存储介质

技术领域

[0001] 本发明涉及计算机技术领域,尤其涉及一种PCI设备映射方法、装置、设备及存储介质。

背景技术

[0002] 现在的虚拟化技术,通过vt‑d、vfio等技术,可以将host机(主机)的PCI(Peripheral Component Interconnection,周边元件扩展接口)设备直接透传guest机(虚
拟机)排他使用,以获得更好的性能,而对于其他host机上的pci设备,则无法进行透传。如
果要使用其他host机上的pci设备、以及挂接在pci桥上的usb设备、PS/2接口设备以及ISA
设备等设备,只能通过层层虚拟化的方式实现,实现复杂,工作量大。
[0003] 上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。

发明内容

[0004] 本发明的主要目的在于提供一种PCI设备映射方法、装置、设备及存储介质,旨在解决当前主机上的虚拟机无法访问其他主机PCI设备的技术问题。
[0005] 为实现上述目的,本发明提供了一种PCI设备映射方法,所述方法包括以下步骤:
[0006] 与目标主机进行通信,以扫描目标主机上连接的若干PCI设备;
[0007] 获取所述PCI设备对应的目标主机硬件标识以及目标主机分配资源,并将获取到的目标主机硬件标识以及目标主机分配资源存储至预设存储区域;
[0008] 在获取到虚拟机启动指令时,基于虚拟化引擎扫描所述预设存储区域,确定待映射设备对应的目标主机硬件标识以及目标主机分配资源,将所述待映射设备映射至所述虚
拟机中,以使虚拟机对所述待映射设备分配虚拟机硬件标识以及虚拟机分配资源;
[0009] 基于所述虚拟化引擎根据所述待映射设备对应的目标主机硬件标识以及虚拟机硬件标识构建标识映射表,根据所述标识映射表、所述目标主机分配资源以及所述虚拟机
分配资源构建资源映射表,以实现在虚拟机上对目标主机上连接的PCI设备进行映射。
[0010] 可选地,所述基于所述虚拟化引擎根据所述待映射设备对应的目标主机硬件标识以及虚拟机硬件标识构建标识映射表,根据所述标识映射表、所述目标主机分配资源以及
所述虚拟机分配资源构建资源映射表之后,所述方法还包括:
[0011] 通过所述虚拟机加载操作系统,以使所述操作系统自动加载所述待映射设备对应的驱动程序,通过所述驱动程序对所述目标主机上连接的PCI设备进行配置;
[0012] 通过所述驱动程序与配置好的PCI设备进行交互。
[0013] 可选地,所述通过所述驱动程序与配置好的PCI设备进行交互之后,所述方法还包括:
[0014] 基于所述虚拟化引擎获取所述虚拟机上运行的驱动程序发送的目标指令,确定所述目标指令触发的第一资源信息;
[0015] 根据所述虚拟机分配资源确定所述第一资源信息对应的第一虚拟机硬件标识;
[0016] 根据所述标识映射表确定所述第一虚拟机硬件标识对应的第一目标主机硬件标识;
[0017] 根据所述资源映射表确定所述第一资源信息对应的第一目标主机分配资源;
[0018] 通知所述目标主机根据所述第一目标主机硬件标识以及所述第一目标主机分配资源向对应的第一PCI设备发送所述目标指令。
[0019] 可选地,所述通知所述目标主机根据所述第一目标主机硬件标识以及所述第一目标主机分配资源向对应的第一PCI设备发送所述目标指令之后,所述方法还包括:
[0020] 基于所述虚拟化引擎接收所述目标主机的事件信息,所述事件信息包含所述第一PCI设备在所述目标主机上触发的第二资源信息;
[0021] 根据所述目标主机分配资源确定所述第二资源信息对应的第二目标主机硬件标识;
[0022] 根据所述标识映射表确定所述第二目标主机硬件标识对应的第二虚拟机硬件标识;
[0023] 根据所述资源映射表确定所述第二资源信息对应的第二虚拟机分配资源;
[0024] 根据所述第二虚拟机硬件标识触发所述第二虚拟机分配资源,以使所述虚拟机上运行的驱动程序获取所述第一PCI设备反馈的所述事件信息。
[0025] 可选地,所述根据所述第二虚拟机硬件标识触发所述第二虚拟机分配资源,以使所述虚拟机上运行的驱动程序获取所述第一PCI设备反馈的所述事件信息之后,所述方法
还包括:
[0026] 基于所述虚拟化引擎获取所述虚拟机上运行的驱动程序发送的查看事件内容指令,确定所述查看事件内容指令触发的第三资源信息;
[0027] 根据所述虚拟机分配资源确定所述第三资源信息对应的第三虚拟机硬件标识;
[0028] 根据所述标识映射表确定所述第三虚拟机硬件标识对应的第三目标主机硬件标识;
[0029] 根据所述资源映射表确定所述第三资源信息对应的第三目标主机分配资源;
[0030] 通知所述目标主机根据所述第三目标主机硬件标识以及所述第三目标主机分配资源读取所述查看事件内容指令对应的结果数据;
[0031] 接收所述目标主机反馈的所述结果数据,并将所述结果数据反馈至所述虚拟机上运行的驱动程序。
[0032] 可选地,所述接收所述目标主机反馈的所述结果数据,并将所述结果数据反馈至所述虚拟机上运行的驱动程序之后,所述方法还包括:
[0033] 基于所述虚拟化引擎获取所述虚拟机上运行的驱动程序发送的获取数据指令,确定所述获取数据指令触发的第四资源信息,其中,所述虚拟机上运行的驱动程序对所述结
果数据进行分析,得到分析结果,在所述分析结果为存在待读取数据时,发送获取数据指
令;
[0034] 根据所述虚拟机分配资源确定所述第四资源信息对应的第四虚拟机硬件标识;
[0035] 根据所述标识映射表确定所述第四虚拟机硬件标识对应的第四目标主机硬件标识;
[0036] 根据所述资源映射表确定所述第四资源信息对应的第四目标主机分配资源;
[0037] 通知所述目标主机根据所述第四目标主机硬件标识以及所述第四目标主机分配资源读取相应的数据;
[0038] 接收所述目标主机反馈的所述数据,并将所述数据反馈至所述虚拟机上运行的驱动程序。
[0039] 可选地,所述获取所述PCI设备对应的目标主机硬件标识以及目标主机分配资源,并将获取到的目标主机硬件标识以及目标主机分配资源存储至预设存储区域,包括:
[0040] 获取所述PCI设备对应的目标主机硬件标识以及目标主机分配资源;
[0041] 获取删除指令,根据所述删除指令删除当前PCI设备对应的当前硬件标识以及当前主机分配资源信息,将剩余的目标主机硬件标识以及目标主机分配资源存储至预设存储
区域。
[0042] 此外,为实现上述目的,本发明还提出一种PCI设备映射装置,所述PCI设备映射装置包括:
[0043] 扫描模块,用于与目标主机进行通信,以扫描目标主机上连接的若干PCI设备;
[0044] 获取模块,用于获取所述PCI设备对应的目标主机硬件标识以及目标主机分配资源,并将获取到的目标主机硬件标识以及目标主机分配资源存储至预设存储区域;
[0045] 映射模块,用于在获取到虚拟机启动指令时,基于虚拟化引擎扫描所述预设存储区域,确定待映射设备对应的目标主机硬件标识以及目标主机分配资源,将所述待映射设
备映射至所述虚拟机中,以使虚拟机对所述待映射设备分配虚拟机硬件标识以及虚拟机分
配资源;
[0046] 所述映射模块,还用于基于所述虚拟化引擎根据所述待映射设备对应的目标主机硬件标识以及虚拟机硬件标识构建标识映射表,根据所述标识映射表、所述目标主机分配
资源以及所述虚拟机分配资源构建资源映射表,以实现在虚拟机上对目标主机上连接的
PCI设备进行映射。
[0047] 此外,为实现上述目的,本发明还提出一种PCI设备映射设备,所述PCI设备映射设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的PCI设备映射程
序,所述PCI设备映射程序配置为实现如上文所述的PCI设备映射方法的步骤。
[0048] 此外,为实现上述目的,本发明还提出一种存储介质,所述存储介质上存储有PCI设备映射程序,所述PCI设备映射程序被处理器执行时实现如上文所述的PCI设备映射方法
的步骤。
[0049] 本发明通过与目标主机进行通信,以扫描目标主机上连接的若干PCI设备;获取PCI设备对应的目标主机硬件标识以及目标主机分配资源,并将获取到的目标主机硬件标
识以及目标主机分配资源存储至预设存储区域;在获取到虚拟机启动指令时,基于虚拟化
引擎扫描预设存储区域,确定待映射设备对应的目标主机硬件标识以及目标主机分配资
源,将待映射设备映射至虚拟机中,以使虚拟机对待映射设备分配虚拟机硬件标识以及虚
拟机分配资源;基于虚拟化引擎根据待映射设备对应的目标主机硬件标识以及虚拟机硬件
标识构建标识映射表,根据标识映射表、目标主机分配资源以及虚拟机分配资源构建资源
映射表,以实现在虚拟机上对目标主机上连接的PCI设备进行映射。通过上述方式,通过网
络在当前主机的虚拟机上对目标主机上连接的PCI设备进行映射,构建目标主机硬件标识
以及虚拟机硬件标识对应的标识映射表,构建目标主机分配资源以及虚拟机分配资源对应
的资源映射表,基于虚拟化引擎根据标识映射表和资源映射表将虚拟机对映射PCI设备的
操作转换成目标主机对物理PCI设备的操作。实现了在当前主机的虚拟机上对目标主机上
连接的PCI设备的虚拟挂接,解决了当前主机上的虚拟机无法访问其他主机PCI设备的问
题。

附图说明

[0050] 图1是本发明实施例方案涉及的硬件运行环境的PCI设备映射设备的结构示意图;
[0051] 图2为本发明PCI设备映射方法第一实施例的流程示意图;
[0052] 图3为本发明PCI设备映射方法一实施例的PCI设备映射结构示意图;
[0053] 图4为本发明PCI设备映射方法第二实施例的流程示意图;
[0054] 图5为本发明PCI设备映射装置第一实施例的结构框图。
[0055] 本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

[0056] 应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
[0057] 参照图1,图1为本发明实施例方案涉及的硬件运行环境的PCI设备映射设备结构示意图。
[0058] 如图1所示,该PCI设备映射设备可以包括:处理器1001,例如中央处理器(Central Processing Unit,CPU),通信总线1002、用户接口1003,网络接口1004,存储器1005。其中,
通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏
(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接
口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如无线保真
(Wireless‑Fidelity,Wi‑Fi)接口)。存储器1005可以是高速的随机存取存储器(Random 
Access Memory,RAM)存储器,也可以是稳定的非易失性存储器(Non‑Volatile Memory,
NVM),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
[0059] 本领域技术人员可以理解,图1中示出的结构并不构成对PCI设备映射设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
[0060] 如图1所示,作为一种存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及PCI设备映射程序。
[0061] 在图1所示的PCI设备映射设备中,网络接口1004主要用于与网络服务器进行数据通信;用户接口1003主要用于与用户进行数据交互;本发明PCI设备映射设备中的处理器
1001、存储器1005可以设置在PCI设备映射设备中,所述PCI设备映射设备通过处理器1001
调用存储器1005中存储的PCI设备映射程序,并执行本发明实施例提供的PCI设备映射方
法。
[0062] 本发明实施例提供了一种PCI设备映射方法,参照图2,图2为本发明一种PCI设备映射方法第一实施例的流程示意图。
[0063] 本实施例中,所述PCI设备映射方法包括以下步骤:
[0064] 步骤S10:与目标主机进行通信,以扫描目标主机上连接的若干PCI设备。
[0065] 可以理解的是,本实施例的执行主体为PCI设备映射设备,所述PCI设备映射设备可以是与当前主机以及目标主机连接的设备,也可以为安装有PCI设备映射程序的当前主
机,本实施例对此不加以限制。本实施例以当前主机为例进行说明。
[0066] 需要说明的是,当前主机是指运行虚拟机的计算机,目标主机是指将PCI设备映射出去的计算机,例如,把计算机A的PCI设备映射给计算机B的虚拟机,那么计算机A就是目标
主机,计算机B就是当前主机。
[0067] 应当理解的是,PCI:全称是Peripheral Component Interconnect,是一种计算机连接外围设备的总线。在实施例中PCI总线是一个统称,包括PCI、PCI‑X以及PCI‑E总线,本
实施例的PCI设备包括PCI设备、PCI‑X设备以及PCI‑E设备。
[0068] 需要说明的是,现有的X86体系计算机的外围设备基本都是连接在PCI总线或者子总线上,形成一个树形结构,计算机上的程序通过IO端口、MMIO、BIOS中断服务以及硬件中
断和总线上的设备进行交互,程序与设备交互可以做到枚举设备、配置设备、往设备写数据
以及从设备读数据。在具体实现中计算机程序会通过“配置地址寄存器”(CONFIG_ADDRESS,
即IO端口0xCF8)和“配置数据寄存器”(CONFIG_DATA,即IO端口0xCFC)来枚举PCI设备,查询
PCI设备的资源配置,以及修改PCI设备的资源配置。资源配置信息即本实施例的主机分配
资源信息中包含了该设备需要用到的IO端口号、MMIO的内存地址以及硬件中断信息。另外,
计算机程序还可以通过ECAM机制(本质上就是读写MMIO)去枚举PCI设备,查询PCI设备的资
源配置,以及修改PCI设备的资源配置。
[0069] 应当理解的是,IO端口(I/O端口)是计算机总线上外围设备的地址集合,计算机程序通过IO端口跟外围的设备进行通信。BIOS中断服务程序是计算机软件、硬件之间的一个
编程接口,计算机程序可以通过这些编程接口跟外围设备进行通信。BIOS中断服务本质上
就是对IO端口读写操作的封装,计算机程序可以通过对端口的读写实现BIOS中断服务调用
的功能。MMIO全称是Memory‑mapped I/O,即内存映射I/O(或者内存映射IO),可以把PCI设
备的一部分存储区域、寄存器映射到CPU的内存地址空间,CPU可以像访问普通内存一样去
访问PCI设备的存储区域、寄存器。ECAM:全称是Enhanced Configuration Access 
Mechanism,是访问PCI‑E设备配置空间一种机制,通过MMIO把PCI‑E设备的配置空间映射到
CPU的内存地址空间,计算机程序可以像访问普通内存一样去访问PCI‑E的配置空间。
[0070] 需要说明的是,本实施例通过与目标主机进行通信,通知目标主机扫描PCI总线上的所有PCI设备,得到每个PCI设备的总线号、设备号、功能号等信息,以实现扫描目标主机
上连接的若干PCI设备。
[0071] 步骤S20:获取所述PCI设备对应的目标主机硬件标识以及目标主机分配资源,并将获取到的目标主机硬件标识以及目标主机分配资源存储至预设存储区域。
[0072] 可以理解的是,目标主机硬件标识为目标主机连接的PCI设备的“总线号:设备号:功能号”,目标主机通过目标主机硬件标识操作对应的外围设备,主机分配资源信息为目标
主机访问PCI设备时需要用到的IO端口号、MMIO的内存地址以及硬件中断信息,目标主机通
过计算机程序查询PCI设备的主机分配资源信息,将主机分配资源信息反馈给当前主机。
[0073] 需要说明的是,计算机开机的时候,主板上的固件程序(如BIOS以及UEFI固件)会扫描计算机上的外围PCI设备,分配资源(如IO端口、MMIO、硬件中断资源等),生成ACPI表、
SMBIOS表、ECAM配置空间表……。在本实施例中,通过与目标主机通信,扫描目标主机上的
PCI设备,获取所有PCI设备的IO端口、MMIO以及硬件中断等资源信息,存储至预设存储区
域。
[0074] 具体地,所述步骤S20,包括:获取所述PCI设备对应的目标主机硬件标识以及目标主机分配资源;获取删除指令,根据所述删除指令删除当前PCI设备对应的当前硬件标识以
及当前主机分配资源信息,将剩余的目标主机硬件标识以及目标主机分配资源存储至预设
存储区域。
[0075] 应当理解的是,对于某些不能映射的设备,需要从扫描结果中剔除,例如目标主机上有2个网卡,其中一个用于设备映射的网络通信,那么这个网卡需要剔除掉,不能映射给
虚拟机使用。因此,本实施例在接收到删除指令时,对PCI设备对应的信息进行删除,避免将
不能映射的设备映射给虚拟机使用。
[0076] 步骤S30:在获取到虚拟机启动指令时,基于虚拟化引擎扫描所述预设存储区域,确定待映射设备对应的目标主机硬件标识以及目标主机分配资源,将所述待映射设备映射
至所述虚拟机中,以使虚拟机对所述待映射设备分配虚拟机硬件标识以及虚拟机分配资
源。
[0077] 需要说明的是,虚拟机启动的时候,基于虚拟化引擎执行虚拟固件程序,虚拟固件程序(即虚拟BIOS以及虚拟UEFI)也会执行类似BIOS以及UEFI固件的行为。虚拟固件程序扫
描出来的PCI设备包括两部分:在虚拟机上虚拟的PCI设备、目标主机映射过来的设备(也就
是步骤S10中目标主机的扫描结果)。另外,虚拟固件程序生成的ACPI表、SMBIOS表、ECAM配
置空间表……也携带有映射PCI设备信息。
[0078] 需要说明的是,虚拟机固件程序对映射的设备进行资源配置,虚拟机分配资源包括虚拟机固件程序分配的IO端口、MMIO以及硬件中断等资源信息。
[0079] 步骤S40:基于所述虚拟化引擎根据所述待映射设备对应的目标主机硬件标识以及虚拟机硬件标识构建标识映射表,根据所述标识映射表、所述目标主机分配资源以及所
述虚拟机分配资源构建资源映射表,以实现在虚拟机上对目标主机上连接的PCI设备进行
映射。
[0080] 可以理解的是,在执行完虚拟固件程序之后,基于虚拟化引擎根据所有待映射设备的目标主机硬件标识以及虚拟机硬件标识生成标识映射表,如表1所示,表1为映射标识
示意表,映射标识表中包含了所有映射PCI设备在目标主机端的硬件标识和在虚拟机端的
硬件标识,其中,每一行代表一个映射设备,硬件标识的表示方法为:“总线号:设备号.功能
号”(16进制)。以2号映射设备为例进行说明,将目标主机端0号总线2号插槽上的PCI设备映
射到了虚拟机的0号总线a号插槽上,功能号维持不变。
[0081] 表1:
[0082]序号 目标主机硬件标识 虚拟机硬件标识
1 00:01.0 00:02.0
2 00:02.0 00:a0.0
3 0f:01.0 0e:01.0
…… …… ……
[0083] 需要说明的是,目标主机给连接的PCI设备所分配的目标主机分配资源以表格形式进行说明,例如,目标主机给2号映射设备分配的目标主机分配资源如表2所示,表2为目
标主机分配资源示意表(包含2个MMIO资源)。
[0084] 表2:
[0085]资源类型 分配资源
IO端口 0x5060‑0x507F
MMIO1 0xB25000‑0xB25FFF
MMIO2 0xC25000‑0xC25FFF
中断信号 0xFFFFFFDD
[0086] 可以理解的是,虚拟机给映射设备所分配的虚拟机分配资源以表格形式进行说明,例如,虚拟机给2号映射设备分配的虚拟机分配资源如表3所示,表3为虚拟机分配资源
示意表(包含2个MMIO资源)。
[0087] 表3:
[0088] 资源类型 分配资源IO端口 0x4060‑0x407F
MMIO1 0xA25000‑0xA25FFF
MMIO2 0xE25000‑0xE25FFF
中断信号 0xFFFFFFAA
[0089] 应当理解的是,基于虚拟化引擎根据映射标识表以及目标主机分配资源、虚拟机分配资源,为每一个待映射设备生成资源映射表,如表4所示,表4为2号映射设备对应的资
源映射表。
[0090] 表4:
[0091] 资源类型 目标主机分配资源 虚拟机分配资源IO端口 0x5060‑0x507F 0x4060‑0x407F
MMIO1 0xB25000‑0xB25FFF 0xA25000‑0xA25FFF
MMIO2 0xC25000‑0xC25FFF 0xE25000‑0xE25FFF
中断信号 0xFFFFFFDD 0xFFFFFFAA
[0092] 需要说明的是,在基于虚拟化引擎生成所有映射设备的资源映射表后,将CPU执行权交给虚拟机的引导程序,以加载操作系统。在操作系统启动之后,自动加载PCI设备的驱
动程序,基于驱动程序通过读写IO端口、MMIO与设备交互,例如初始化和配置PCI设备,让
PCI设备执行某些操作等。当虚拟机上运行的设备驱动程序读写IO端口、MMIO这些资源时,
读写行为会被虚拟化引擎捕获,基于虚拟化引擎根据虚拟机分配资源确定该资源对应的虚
拟机硬件标识,根据标识映射表确定对应的目标主机硬件标识,根据资源映射表确定对应
的目标主机分配资源,根据目标主机分配资源以及目标主机硬件标识对相应的资源执行读
写操作,实现操作重定向。例如,虚拟机的驱动程序对0x4060到0x407F这个范围的IO端口执
行写入操作,通知设备发送数据,这个写入操作以及写入的内容(假设是“abcdefg”)被虚拟
化引擎捕获,基于虚拟化引擎根据虚拟机资源分配得知该资源是属于2号映射设备的,该映
射设备的虚拟机硬件标识是“00:a0.0”,通过资源映射表可知目标主机端对应的IO端口范
围是0x5060到0x507F。接下来,基于虚拟化引擎通过网络通知目标主机对0x5060到0x507F
这个范围的端口执行相应的写入操作(写入的数据也是“abcdefg”),实现写操作的重定向,
通过这种方式,虚拟机可以通过目标主机的PCI设备发送数据。
[0093] 参照图3,图3为本发明PCI设备映射方法一实施例的PCI设备映射结构示意图;通过虚拟PCI‑PCI桥将目标主机的PCI设备映射到虚拟机根总线上,虚拟机在与目标主机连接
的PCI设备交互时,对IO端口的读写、MMIO的读写、BIOS中断服务的调用、硬件中断的触发等
操作依据映射表进行重定向,将虚拟机访问PCI设备对应的BIOS中断服务号转换成主机访
问PCI设备对应的端口号以进行读写。通过把其他主机的PCI设备映射给当前主机上的虚拟
机,以达到虚拟机使用其他主机PCI设备(包括挂接在PCI桥上的其他总线的设备)的目的。
[0094] 本实施例通过与目标主机进行通信,以扫描目标主机上连接的若干PCI设备;获取PCI设备对应的目标主机硬件标识以及目标主机分配资源,并将获取到的目标主机硬件标
识以及目标主机分配资源存储至预设存储区域;在获取到虚拟机启动指令时,基于虚拟化
引擎扫描预设存储区域,确定待映射设备对应的目标主机硬件标识以及目标主机分配资
源,将待映射设备映射至虚拟机中,以使虚拟机对待映射设备分配虚拟机硬件标识以及虚
拟机分配资源;基于虚拟化引擎根据待映射设备对应的目标主机硬件标识以及虚拟机硬件
标识构建标识映射表,根据标识映射表、目标主机分配资源以及虚拟机分配资源构建资源
映射表,以实现在虚拟机上对目标主机上连接的PCI设备进行映射。通过上述方式,通过网
络在当前主机的虚拟机上对目标主机上连接的PCI设备进行映射,构建目标主机硬件标识
以及虚拟机硬件标识对应的标识映射表,构建目标主机分配资源以及虚拟机分配资源对应
的资源映射表,基于虚拟化引擎根据标识映射表和资源映射表将虚拟机对映射PCI设备的
操作转换成目标主机对物理PCI设备的操作。实现了在当前主机的虚拟机上对目标主机上
连接的PCI设备的虚拟挂接,解决了当前主机上的虚拟机无法访问其他主机PCI设备的问
题。
[0095] 参考图4,图4为本发明一种PCI设备映射方法第二实施例的流程示意图。
[0096] 基于上述第一实施例,本实施例PCI设备映射方法的所述步骤S40之后,所述方法还包括:
[0097] 步骤S401:通过所述虚拟机加载操作系统,以使所述操作系统自动加载所述待映射设备对应的驱动程序,通过所述驱动程序对所述目标主机上连接的PCI设备进行配置。
[0098] 可以理解的是,操作系统启动之后会自动加载PCI设备对应的驱动程序,虚拟机上运行的驱动程序通过IO端口以及MMIO的读写操作,对PCI设备进行配置。配置完毕之后,虚
拟机上运行的驱动程序通过读写IO端口以及读写MMIO通知PCI设备去执行特定操作,如通
知网卡去发送数据包;发送完毕之后网卡会通过硬件中断告知驱动程序发送完毕,驱动程
序在硬件中断的回调函数中去读取IO端口以及MMIO的状态,获得数据包的发送结果,如发
送成功或者失败。
[0099] 需要说明的是,本实施例虚拟机的操作系统启动后,加载虚拟PCI设备对应的驱动程序,驱动程序通过读写IO端口以及读写MMIO以实现配置,在驱动程序读写IO端口以及读
写MMIO时,虚拟化引擎根据映射表转化为目标主机上的读写IO端口以及读写MMIO操作,从
而实现对目标主机对应PCI设备进行配置。
[0100] 步骤S402:通过所述驱动程序与配置好的PCI设备进行交互。
[0101] 进一步地,所述步骤S402之后,所述方法还包括:
[0102] 步骤S403:基于所述虚拟化引擎获取所述虚拟机上运行的驱动程序发送的目标指令,确定所述目标指令触发的第一资源信息。
[0103] 可以理解的是,第一资源信息为虚拟机与第一虚拟PCI设备交互时响应目标指令的IO端口以及MMIO等资源信息。第一资源信息、第二资源信息、第三资源信息以及第四资源
信息用于互相区分,同理地,第一虚拟机硬件标识、第二虚拟机硬件标识、第三虚拟机硬件
标识以及第四虚拟机硬件标识用于互相区分,第一虚拟机分配资源、第二虚拟机分配资源、
第三虚拟机分配资源以及第四虚拟机分配资源用于互相区分。
[0104] 步骤S404:根据所述虚拟机分配资源确定所述第一资源信息对应的第一虚拟机硬件标识。
[0105] 步骤S405:根据所述标识映射表确定所述第一虚拟机硬件标识对应的第一目标主机硬件标识。
[0106] 步骤S406:根据所述资源映射表确定所述第一资源信息对应的第一目标主机分配资源。
[0107] 步骤S407:通知所述目标主机根据所述第一目标主机硬件标识以及所述第一目标主机分配资源向对应的第一PCI设备发送所述目标指令。
[0108] 需要说明的是,当虚拟机上运行的设备驱动程序读写第一资源信息对应的端口时,虚拟化引擎根据映射表转换成在目标主机对第一目标主机分配资源对应的端口进行读
写操作。在具体实现中,当虚拟机上运行的设备驱动程序读写IO端口、MMIO等资源时,读写
行为被虚拟化引擎捕获,基于虚拟化引擎根据资源分配表确定该资源对应的虚拟机硬件标
识,根据标识映射表确定对应的目标主机硬件标识以及根据资源映射表确定对应的目标主
机分配资源信息,根据目标主机分配资源以及目标主机硬件标识对相应的资源执行读写操
作,实现操作重定向。
[0109] 应当理解的是,虚拟机上运行的设备驱动程序通过第一资源信息向目标主机上运行的PCI设备发送目标指令,当虚拟化引擎捕获到目标指令以及第一资源信息(IO端口、
MMIO等端口信息)时,根据资源映射表将第一资源信息转换成目标主机访问PCI设备对应的
第一目标主机分配资源,根据标识映射表将第一资源信息对应的第一虚拟机硬件标识转换
成目标主机与PCI设备连接的第一目标主机硬件标识,通知目标主机根据第一目标主机硬
件标识寻址,以确定第一PCI设备,根据第一目标主机分配资源发送目标指令给第一PCI设
备。
[0110] 以2号映射设备发送数据为例进行说明:虚拟机的驱动程序对0x4060到0x407F这个范围的IO端口执行写入操作,通知设备发送数据,这个写入操作以及写入的内容(假设是
“abcdefg”)被虚拟化引擎捕获,基于虚拟化引擎根据虚拟机资源分配得知该资源是属于2
号映射设备的,该映射设备的虚拟机硬件标识是“00:a0.0”,通过资源映射表可知目标主机
端对应的IO端口范围是0x5060到0x507F。接下来,基于虚拟化引擎通过网络通知目标主机
对0x5060到0x507F这个范围的端口执行相应的写入操作(写入的数据也是“abcdefg”),实
现写操作的重定向,通过这种方式,虚拟机可以通过目标主机的PCI设备发送数据。
[0111] 在一实施例中,所述步骤S407之后,所述方法还包括:基于所述虚拟化引擎接收所述目标主机的事件信息,所述事件信息包含所述第一PCI设备在所述目标主机上触发的第
二资源信息;根据所述目标主机分配资源确定所述第二资源信息对应的第二目标主机硬件
标识;根据所述标识映射表确定所述第二目标主机硬件标识对应的第二虚拟机硬件标识;
根据所述资源映射表确定所述第二资源信息对应的第二虚拟机分配资源;根据所述第二虚
拟机硬件标识触发所述第二虚拟机分配资源,以使所述虚拟机上运行的驱动程序获取所述
第一PCI设备反馈的所述事件信息。
[0112] 需要说明的是,以PCI网卡为例进行说明,虚拟机的网卡驱动程序可以通过读写IO端口、MMIO通知目标主机的网卡发送数据;如果目标主机的网卡收到了数据,PCI网卡可以
通过中断信号通知虚拟机的网卡驱动程序来读取,具体过程为,目标主机的网卡收到数据
包之后,通过中断通知目标主机,目标主机通过网络将中断信息告知虚拟化引擎,由虚拟化
引擎在虚拟PCI总线上触发相应的中断,以通知虚拟机驱动程序虚拟网卡设备收到了数据,
当虚拟机驱动程序从虚拟网卡读取数据的时候,虚拟化引擎会捕获读操作,通知目标主机
把物理网卡收到的数据传输过来,然后虚拟化引擎再把数据返回给虚拟机驱动程序。
[0113] 具体地,所述根据所述第二虚拟机硬件标识触发所述第二虚拟机分配资源,以使所述虚拟机上运行的驱动程序获取所述第一PCI设备反馈的所述事件信息之后,所述方法
还包括:基于所述虚拟化引擎获取所述虚拟机上运行的驱动程序发送的查看事件内容指
令,确定所述查看事件内容指令触发的第三资源信息;根据所述虚拟机分配资源确定所述
第三资源信息对应的第三虚拟机硬件标识;根据所述标识映射表确定所述第三虚拟机硬件
标识对应的第三目标主机硬件标识;根据所述资源映射表确定所述第三资源信息对应的第
三目标主机分配资源;通知所述目标主机根据所述第三目标主机硬件标识以及所述第三目
标主机分配资源读取所述查看事件内容指令对应的结果数据;接收所述目标主机反馈的所
述结果数据,并将所述结果数据反馈至所述虚拟机上运行的驱动程序。
[0114] 以2号映射设备接收数据为例进行说明:当目标主机的“00:02.0”这个PCI设备(2号映射设备对应的PCI设备端)收到数据时,在目标主机的PCI总线上触发一个信号为
0xFFFFFFDD的硬件中断,目标主机的操作系统收到这个信号时,通过网络通知虚拟化引擎:
目标主机PCI总线上有设备触发了0xFFFFFFDD中断信号。基于虚拟化引擎根据目标主机分
配资源确定该信号属于2号映射设备的,根据资源映射表确定该硬件中断对应的虚拟机端
中断信号为0xFFFFFFAA,在虚拟的PCI总线上触发一个信号为0xFFFFFFAA的硬件中断,以通
知运行于虚拟机上的驱动程序该设备发生了某个事件。驱动程序通过读IO端口(0x4060‑
0x407F)、MMIO(0xA25000‑0xA25FFF、0xE25000‑0xE25FFF)等资源获知事件的具体内容,这
些读取操作被虚拟化引擎捕获,基于虚拟化引擎通知目标主机读取相应的IO端口(0x5060‑
0x507F)、MMIO(0xB25000‑0xB25FFF、0xC25000‑0xC25FFF)等资源,把读取到的结果返回给
虚拟化引擎,虚拟化引擎将读取到的结果返回给虚拟机上运行的驱动程序。
[0115] 进一步地,所述接收所述目标主机反馈的所述结果数据,并将所述结果数据反馈至所述虚拟机上运行的驱动程序之后,所述方法还包括:基于所述虚拟化引擎获取所述虚
拟机上运行的驱动程序发送的获取数据指令,确定所述获取数据指令触发的第四资源信
息,其中,所述虚拟机上运行的驱动程序对所述结果数据进行分析,得到分析结果,在所述
分析结果为存在待读取数据时,发送获取数据指令;根据所述虚拟机分配资源确定所述第
四资源信息对应的第四虚拟机硬件标识;根据所述标识映射表确定所述第四虚拟机硬件标
识对应的第四目标主机硬件标识;根据所述资源映射表确定所述第四资源信息对应的第四
目标主机分配资源;通知所述目标主机根据所述第四目标主机硬件标识以及所述第四目标
主机分配资源读取相应的数据;接收所述目标主机反馈的所述数据,并将所述数据反馈至
所述虚拟机上运行的驱动程序。
[0116] 在具体实现中,驱动程序分析虚拟机反馈的结果数据,在确定设备有数据可以读取时,发送获取数据指令,此时,驱动程序通过读取操作(例如,2号映射设备对应的读取
MMIO(0xA25000‑0xA25FFF、0xE25000‑0xE25FFF)操作)获取数据,该读取操作被虚拟机引擎
捕获,基于虚拟机引擎将该读取操作重定向为目标主机相应的读取操作(例如,目标主机读
取MMIO(0xB25000‑0xB25FFF、0xC25000‑0xC25FFF)),以获取设备收到的数据,虚拟机引擎
获取目标主机反馈的数据,将读数据返回给虚拟机上运行的驱动程序。
[0117] 本实施例通过虚拟机加载操作系统,以使操作系统自动加载待映射设备对应的驱动程序,通过驱动程序对目标主机上连接的PCI设备进行配置;通过驱动程序与配置好的
PCI设备进行交互;基于虚拟化引擎获取虚拟机上运行的驱动程序发送的目标指令,确定目
标指令触发的第一资源信息;根据虚拟机分配资源确定第一资源信息对应的第一虚拟机硬
件标识;根据标识映射表确定第一虚拟机硬件标识对应的第一目标主机硬件标识;根据资
源映射表确定第一资源信息对应的第一目标主机分配资源;通知目标主机根据第一目标主
机硬件标识以及第一目标主机分配资源向对应的第一PCI设备发送目标指令。通过上述方
式,虚拟机上运行的驱动程序与PCI设备交互时触发对应的资源信息,基于虚拟化引擎将资
源信息重定向为目标主机与目标主机连接的PCI设备交互时触发的主机分配资源,从而实
现将目标主机的PCI设备映射给当前主机上运行的虚拟机,方便虚拟机对目标主机的PCI设
备以及子设备进行使用,解决了当前主机上的虚拟机无法访问其他主机PCI设备的问题。
[0118] 此外,本发明实施例还提出一种存储介质,所述存储介质上存储有PCI设备映射程序,所述PCI设备映射程序被处理器执行时实现如上文所述的PCI设备映射方法的步骤。
[0119] 参照图5,图5为本发明PCI设备映射装置第一实施例的结构框图。
[0120] 如图5所示,本发明实施例提出的PCI设备映射装置包括:
[0121] 扫描模块10,用于与目标主机进行通信,以扫描目标主机上连接的若干PCI设备。
[0122] 获取模块20,用于获取所述PCI设备对应的目标主机硬件标识以及目标主机分配资源,并将获取到的目标主机硬件标识以及目标主机分配资源存储至预设存储区域。
[0123] 映射模块30,用于在获取到虚拟机启动指令时,基于虚拟化引擎扫描所述预设存储区域,确定待映射设备对应的目标主机硬件标识以及目标主机分配资源,将所述待映射
设备映射至所述虚拟机中,以使虚拟机对所述待映射设备分配虚拟机硬件标识以及虚拟机
分配资源。
[0124] 所述映射模块40,还用于基于所述虚拟化引擎根据所述待映射设备对应的目标主机硬件标识以及虚拟机硬件标识构建标识映射表,根据所述标识映射表、所述目标主机分
配资源以及所述虚拟机分配资源构建资源映射表,以实现在虚拟机上对目标主机上连接的
PCI设备进行映射。
[0125] 应当理解的是,以上仅为举例说明,对本发明的技术方案并不构成任何限定,在具体应用中,本领域的技术人员可以根据需要进行设置,本发明对此不做限制。
[0126] 本实施例通过与目标主机进行通信,以扫描目标主机上连接的若干PCI设备;获取PCI设备对应的目标主机硬件标识以及目标主机分配资源,并将获取到的目标主机硬件标
识以及目标主机分配资源存储至预设存储区域;在获取到虚拟机启动指令时,基于虚拟化
引擎扫描预设存储区域,确定待映射设备对应的目标主机硬件标识以及目标主机分配资
源,将待映射设备映射至虚拟机中,以使虚拟机对待映射设备分配虚拟机硬件标识以及虚
拟机分配资源;基于虚拟化引擎根据待映射设备对应的目标主机硬件标识以及虚拟机硬件
标识构建标识映射表,根据标识映射表、目标主机分配资源以及虚拟机分配资源构建资源
映射表,以实现在虚拟机上对目标主机上连接的PCI设备进行映射。通过上述方式,通过网
络在当前主机的虚拟机上对目标主机上连接的PCI设备进行映射,构建目标主机硬件标识
以及虚拟机硬件标识对应的标识映射表,构建目标主机分配资源以及虚拟机分配资源对应
的资源映射表,基于虚拟化引擎根据标识映射表和资源映射表将虚拟机对映射PCI设备的
操作转换成目标主机对物理PCI设备的操作。实现了在当前主机的虚拟机上对目标主机上
连接的PCI设备的虚拟挂接,解决了当前主机上的虚拟机无法访问其他主机PCI设备的问
题。
[0127] 需要说明的是,以上所描述的工作流程仅仅是示意性的,并不对本发明的保护范围构成限定,在实际应用中,本领域的技术人员可以根据实际的需要选择其中的部分或者
全部来实现本实施例方案的目的,此处不做限制。
[0128] 另外,未在本实施例中详尽描述的技术细节,可参见本发明任意实施例所提供的PCI设备映射方法,此处不再赘述。
[0129] 在一实施例中,所述PCI设备映射装置还包括交互模块;
[0130] 所述交互模块,用于通过所述虚拟机加载操作系统,以使所述操作系统自动加载所述待映射设备对应的驱动程序,通过所述驱动程序对所述目标主机上连接的PCI设备进
行配置,通过所述驱动程序与配置好的PCI设备进行交互。
[0131] 在一实施例中,所述交互模块,还用于基于所述虚拟化引擎获取所述虚拟机上运行的驱动程序发送的目标指令,确定所述目标指令触发的第一资源信息,根据所述虚拟机
分配资源确定所述第一资源信息对应的第一虚拟机硬件标识,根据所述标识映射表确定所
述第一虚拟机硬件标识对应的第一目标主机硬件标识,根据所述资源映射表确定所述第一
资源信息对应的第一目标主机分配资源,通知所述目标主机根据所述第一目标主机硬件标
识以及所述第一目标主机分配资源向对应的第一PCI设备发送所述目标指令。
[0132] 在一实施例中,所述交互模块,还用于基于所述虚拟化引擎接收所述目标主机的事件信息,所述事件信息包含所述第一PCI设备在所述目标主机上触发的第二资源信息,根
据所述目标主机分配资源确定所述第二资源信息对应的第二目标主机硬件标识,根据所述
标识映射表确定所述第二目标主机硬件标识对应的第二虚拟机硬件标识,根据所述资源映
射表确定所述第二资源信息对应的第二虚拟机分配资源,根据所述第二虚拟机硬件标识触
发所述第二虚拟机分配资源,以使所述虚拟机上运行的驱动程序获取所述第一PCI设备反
馈的所述事件信息。
[0133] 在一实施例中,所述交互模块,还用于基于所述虚拟化引擎获取所述虚拟机上运行的驱动程序发送的查看事件内容指令,确定所述查看事件内容指令触发的第三资源信
息,根据所述虚拟机分配资源确定所述第三资源信息对应的第三虚拟机硬件标识,根据所
述标识映射表确定所述第三虚拟机硬件标识对应的第三目标主机硬件标识,根据所述资源
映射表确定所述第三资源信息对应的第三目标主机分配资源,通知所述目标主机根据所述
第三目标主机硬件标识以及所述第三目标主机分配资源读取所述查看事件内容指令对应
的结果数据,接收所述目标主机反馈的所述结果数据,并将所述结果数据反馈至所述虚拟
机上运行的驱动程序。
[0134] 在一实施例中,所述交互模块,还用于基于所述虚拟化引擎获取所述虚拟机上运行的驱动程序发送的获取数据指令,确定所述获取数据指令触发的第四资源信息,其中,所
述虚拟机上运行的驱动程序对所述结果数据进行分析,得到分析结果,在所述分析结果为
存在待读取数据时,发送获取数据指令,根据所述虚拟机分配资源确定所述第四资源信息
对应的第四虚拟机硬件标识,根据所述标识映射表确定所述第四虚拟机硬件标识对应的第
四目标主机硬件标识,根据所述资源映射表确定所述第四资源信息对应的第四目标主机分
配资源,通知所述目标主机根据所述第四目标主机硬件标识以及所述第四目标主机分配资
源读取相应的数据,接收所述目标主机反馈的所述数据,并将所述数据反馈至所述虚拟机
上运行的驱动程序。
[0135] 在一实施例中,所述获取模块20,还用于获取所述PCI设备对应的目标主机硬件标识以及目标主机分配资源,获取删除指令,根据所述删除指令删除当前PCI设备对应的当前
硬件标识以及当前主机分配资源信息,将剩余的目标主机硬件标识以及目标主机分配资源
存储至预设存储区域。
[0136] 此外,需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要
素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统
所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在
包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
[0137] 上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
[0138] 通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下
前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做
出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质
(如只读存储器(Read Only Memory,ROM)/RAM、磁碟、光盘)中,包括若干指令用以使得一台
终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方
法。
[0139] 以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技
术领域,均同理包括在本发明的专利保护范围内。