虚拟机的设备直通方法、设备及存储介质转让专利
申请号 : CN202010621974.7
文献号 : CN113296876B
文献日 : 2022-05-06
发明人 : 查斌 , 刘奖
申请人 : 阿里巴巴集团控股有限公司
摘要 :
权利要求 :
1.一种虚拟机的设备直通方法,应用于虚拟机监视器,其特征在于,所述虚拟机上运行有遵循第一协议的驱动程序;所述方法包括:接收虚拟机通过第一协议访问主机上的设备的第一请求,所述设备遵循第二协议;所述设备在所述虚拟机中呈现为遵循所述第一协议的设备;所述第一协议与所述第二协议不同;
根据所述第一协议和所述第二协议的语义对应关系,确定所述第一请求在所述第二协议的规范下对应的设备访问方式;
根据所述设备访问方式,向所述主机访问所述设备。
2.根据权利要求1所述的方法,其特征在于,根据所述第一协议和所述第二协议的语义对应关系,确定所述第一请求在所述第二协议的规范下对应的设备访问方式,包括:根据所述第一协议和所述第二协议的语义对应关系,将所述第一请求转换为与所述第二协议适配的第二访问请求;
生成与所述第二访问请求对应的访问命令,并根据所述访问命令访问所述设备。
3.根据权利要求2所述的方法,其特征在于,根据所述第一协议和所述第二协议的语义对应关系,将所述第一请求,转换为与所述第二协议适配的第二访问请求,包括:确定所述第一请求中对第一存储空间的访问操作;
根据所述第一存储空间在所述第一协议中的功能定义,在所述第二协议中,确定与所述第一存储空间的功能定义对应的第二存储空间;
将所述第一请求中对所述第一存储空间的访问操作,转换为对所述第二存储空间的访问操作,以得到所述第二访问请求。
4.根据权利要求3所述的方法,其特征在于,生成与所述第二访问请求对应的访问命令,并根据所述访问命令访问所述设备,包括:根据所述第二访问请求中对所述第二存储空间的访问操作,生成对所述第二存储空间的访问命令。
5.根据权利要求4所述的方法,其特征在于,根据所述设备访问方式,向所述主机访问所述设备,包括:
确定所述第二存储空间的访问命令对应的vfio接口;
调用所述vfio接口,向所述主机访问所述设备。
6.根据权利要求3‑5任一项所述的方法,其特征在于,所述第一协议为mmio协议,所述第二协议为pci协议;
所述第一存储空间为所述mmio协议定义的寄存器,所述第二存储空间为pci协议定义的数据数据结构的配置空间。
7.根据权利要求6所述的方法,其特征在于,根据所述第一协议和所述第二协议的语义对应关系,确定所述第一请求在所述第二协议的规范下对应的设备访问方式之前,还包括:对所述mmio协议进行语义解析,以获取所述mmio协议定义的多个寄存器和所述多个寄存器各自的功能定义;以及,
对所述pci协议进行语义解析,以获取所述pci协议定义的多个配置空间和所述多个配置空间各自的功能定义;
根据所述多个寄存器各自的功能定义以及所述多个配置空间各自的功能定义,确定功能定义对等的寄存器和配置空间,并建立所述功能定义对等的寄存器和配置空间的对应关系。
8.根据权利要求1‑5任一项所述方法,其特征在于,所述设备在所述虚拟机中呈现为遵循所述第一协议的块设备或网络设备。
9.一种虚拟机的设备直通方法,应用于虚拟机,其特征在于,所述虚拟机上运行有遵循第一协议的驱动程序;所述方法包括:确定主机提供的至少一个设备,所述至少一个设备遵循第二协议;所述至少一个设备在所述虚拟机中呈现为遵循所述第一协议的设备;所述第一协议与所述第二协议不同;
根据设备使用需求,从所述至少一个设备确定待访问的任一设备;
通过所述遵循第一协议的驱动程序,向虚拟机监视器发送访问所述设备的第一请求,以使所述虚拟机监视器根据所述第一协议和所述第二协议的语义对应关系确定所述第一请求在所述第二协议的规范下对应的设备访问方式并根据所述设备访问方式向所述主机访问所述设备。
10.一种电子设备,其特征在于,包括:存储器和处理器;
所述存储器用于存储一条或多条计算机指令;
所述处理器用于执行所述一条或多条计算机指令以用于:执行权利要求1‑9任一项所述的虚拟机的设备直通方法。
11.一种存储有计算机程序的计算机可读存储介质,其特征在于,计算机程序被处理器执行时能够实现权利要求1‑9任一项所述的虚拟机的设备直通方法。
说明书 :
虚拟机的设备直通方法、设备及存储介质
技术领域
背景技术
同时,安全沙箱占用的资源少,具有较快的启动速度。
发明内容
议的语义对应关系,确定所述第一请求在所述第二协议的规范下对应的设备访问方式;根
据所述设备访问方式,向所述主机访问所述设备。
问的任一设备;通过所述遵循第一协议的驱动程序,向虚拟机监视器发送访问所述设备的
请求,以使所述虚拟机监视器根据所述第一协议和所述第二协议的语义对应关系访问所述
设备。
申请实施例提供的虚拟机的设备直通方法。
的访问。基于该第二协议的规范下的访问方式,可访问遵循第二协议的设备。进而,可在主
机提供的设备遵循的协议与虚拟机的驱动采用的协议不同的情况下,灵活地实现虚拟机与
主机上的设备之间的直通,无需在虚拟机中增加与设备遵循的协议对应的驱动,有利于虚
拟机更加精简化、轻量化。
附图说明
具体实施方式
部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做
出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
虚拟机内核中,可通过virtio‑pci driver(pci设备的驱动)来驱动pci设备。但是这种方式
中,pci设备模型较为繁重,且virtio‑pci driver的驱动代码也较为复杂,不利于将安全沙
箱精简化。
备或代码,例如传统vm中具有的pcie设备、键盘鼠标等设备,使用了遵循virtio协议的mmio
设备。基于virtio‑mmio实现的安全沙箱较为简单、安全,它将所有控制流相关的操作下放
到vmm中来实现,在容器内部的虚拟机内核中只保留数据流相关的操作,实现了沙箱的精简
化。
时,无法通过pci设备直通来达到与物理设备等同的性能。
安全沙箱的结构可如图3所示,从上到下依次是:虚拟机内核、虚拟机监视器以及主机。
实施例,使得主机上遵循第二协议的设备在虚拟机中可呈现为遵循第一协议的设备,并且,
虚拟机可基于第一协议对该遵循第二协议的设备进行驱动。
和第二协议中,具有相同语义含义的不同字段之间的对应关系、具有相同语义含义的不同
结构之间的对应关系、具有相同功能定义的不同存储空间之间的对应关系、具有相同功能
定义的不同接口之间的对应关系等等,本实施例包含但不限于此。
者写操作,本实施例不做限制。
应的访问命令。基于该访问命令,可在主机上访问遵循第二协议的设备。
问。基于该第二协议的规范下的访问方式,可访问遵循第二协议的设备。进而,可在主机提
供的设备遵循的协议与虚拟机的驱动采用的协议不同的情况下,灵活地实现虚拟机与主机
上的设备之间的直通,无需在虚拟机中增加与设备遵循的协议对应的驱动,有利于虚拟机
更加精简化、轻量化。
于此,可在虚拟机通过第一协议访问主机上遵循第二协议的设备时,根据虚拟机的访问请
求中的存储空间的语义含义,将该存储空间映射到设备的存储空间,以实现设备的驱动。以
下将结合图4以及图5进行示例性说明。
中,虚拟机使用主机上的设备时,可向虚拟机监视器发送设备访问请求。
采用第一协议请求访问的存储空间描述为第一空间。
请求将指定的配置信息写入设备的第一存储空间中。又例如,在另一些情况下,虚拟机可向
虚拟机监视器请求读取设备的当前配置信息,例如设备的IO地址信息、队列信息等等,不再
赘述。
空间的功能定义确定。其中,确定两种协议该存储空间上的对应关系的实施方式可基于对
两种协议进行语义分析实现,将在后续进行介绍。
的存储空间描述为第二存储空间。
机上的设备可以识别的操作。
可实现高效的设备驱动。
访问操作。当虚拟机基于上述方式灵活访问主机上的设备时,虚拟机的性能可以得到极大
提升,甚至可达到与物理机同等的性能。
driver,主机提供的设备为pci设备。其中,pci设备可包括:网卡(network card)、块设备
(block device)、内存膨胀设备(memory ballooning)、控制台(console)、小型计算机系统
接口主机设备(Small Computer System Interface host,SCSI host)、熵源(entropy
source)、9P传输设备(9P transport)等等。上述pci设备在虚拟机中可呈现为mmio模型中
的块存储设备和/或网络设备。
前,虚拟机监视器可基于mmio协议和pci协议各自表达的协议内容,建立mmio协议和pci协
议的语义对应关系,以供后续使用。
析,以获取pci协议定义的多个配置空间和该多个配置空间各自的功能定义。接下来,可根
据该多个寄存器各自的功能定义以及该多个配置空间各自的功能定义,确定功能定义对等
的寄存器和配置空间。
B1的对应关系;可在mmio协议中获取功能定义为设备标识(Device ID)的寄存器A2,在pce
协议中获取功能定义为设备标识(Device ID)的配置空间B2,并建立寄存器A2和配置空间
B2的对应关系;可在mmio协议中获取功能定义为设备状态字(Status)的寄存器A3,在pce协
议中获取功能定义为设备状态字(Status)的配置空间B3,并建立寄存器A3和配置空间B3的
对应关系;可在mmio协议中获取功能定义为设备命令(Command)的寄存器A4,在pce协议中
获取功能定义为设备命令(Command)的配置空间B4,并建立寄存器A4和配置空间B4的对应
关系;同理,可获取mmio协议中的其他寄存器与pci协议中的其他配置空间的对应关系,不
再一一进行赘述。
0x008 0x1000~0x107F Device ID
的配置空间。并将虚拟机基于mmio协议访问寄存器的操作,转换为基于pci协议访问配置空
间的操作。
语义对应关系,并由用户写入虚拟机监视器,本实施例不做限制。
访问操作,生成对应的访问命令。该访问命令可以是读pci设备的配置空间的命令,或者可
以是写pci设备的配置空间的命令,根据实际需求而定,本实施例不做限制。
备模型较为精简,可节省guest对资源的占用。例如,在一实例中,通过对比virtio‑pci方案
与virtio‑mmio方案,得到如下对比结果:virtio‑pci方案的代码文件数量是161个文件,代
码行78K左右,virtio‑mmio方案的代码文件数量1个文件,代码500行左右。基于上述对比结
果可知,本方案实现了代码的大幅度精简,减少了许多设备的驱动,在加固了安全性的同
时,使得编译后的guest kernel也实现轻量化。
的数据量为8‑9K,而模拟机mmio设备需要的数据量则小于1K。因此,可同时实现虚拟机监视
器的精简化、轻量化。
例如,在一种场景下,主机提供有mmio设备以及pci设备,guest kernel中运行有virtio‑
mmio驱动。基于本实施例提供的技术方案,guest kernel可使用一种精简的驱动,同时实现
mmio设备的直通以及pci设备的直通。在实际运行中,guest kernel可根据需求,选择使用
mmio设备或pci设备,极大提升了虚拟机的性能,使其性能更加接近物理机。
循第一协议的驱动程序对主机提供的设备进行驱动。在这种方式中,虚拟机中不再需要对
应地新增遵循第二协议的驱动程序,有利于虚拟机的精简化。
设备。基于此,虚拟机可基于遵循mmio协议的驱动程(例如virtio‑mmio驱动)序来驱动主机
上的pci设备。
核可进一步精简化、轻量化。
安全沙箱与serverless(无服务器)产品中。例如,可用于搭建微虚拟机(micro‑vm)、可应用
于弹性容器实例ECI(Elastic Container Instance,弹性容器实例)产品中,或者用于服务
serverless的容器编排场景中,不再赘述。
A;又比如,步骤201和202的执行主体可以为设备A,步骤203的执行主体可以为设备B;等等。
执行,操作的序号如201、202等,仅仅是用于区分开各个不同的操作,序号本身不代表任何
的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或
并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、
模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。
令,联系人数据,电话簿数据,消息,图片,视频等。
只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,
磁盘或光盘。
一协议和所述第二协议的语义对应关系,确定所述第一请求在所述第二协议的规范下对应
的设备访问方式;根据所述设备访问方式,向所述主机访问所述设备。
第一协议和所述第二协议的语义对应关系,将所述第一请求,转换为与所述第二协议适配
的第二访问请求;生成与所述第二访问请求对应的访问命令,并根据所述访问命令访问所
述设备。
请求中对第一存储空间的访问操作;根据所述第一存储空间在所述第一协议中的功能定
义,在所述第二协议中,确定与所述第一存储空间的功能定义对应的第二存储空间;将所述
第一请求中对所述第一存储空间的访问操作,转换为对所述第二存储空间的访问操作,以
得到所述第二访问请求。
访问操作,生成对所述第二存储空间的访问命令。
所述主机访问所述设备。
的配置空间。
mmio协议进行语义解析,以获取所述mmio协议定义的多个寄存器和所述多个寄存器各自的
功能定义;以及,对所述pci协议进行语义解析,以获取所述pci协议定义的多个配置空间和
所述多个配置空间各自的功能定义;根据所述多个寄存器各自的功能定义以及所述多个配
置空间各自的功能定义,确定功能定义对等的寄存器和配置空间,并建立所述功能定义对
等的寄存器和配置空间的对应关系。
图7所示组件。
5G,或它们的组合。在一个示例性实施例中,通信组件经由广播信道接收来自外部广播管理
系统的广播信号或广播相关信息。在一个示例性实施例中,通信组件可基于近场通信(NFC)
技术、射频识别(RFID)技术、红外数据协会(IrDA)技术、超宽带(UWB)技术、蓝牙(BT)技术和
其他技术来实现。
摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感
器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时
间和压力。
关联的组件。
问。基于该第二协议的规范下的访问方式,可访问遵循第二协议的设备。进而,可在主机提
供的设备遵循的协议与虚拟机的驱动采用的协议不同的情况下,灵活地实现虚拟机与主机
上的设备之间的直通,无需在虚拟机中增加与设备遵循的协议对应的驱动,有利于虚拟机
更加精简化、轻量化。
使用需求,从所述至少一个设备确定待访问的任一设备;通过所述遵循第一协议的驱动程
序,向虚拟机监视器发送访问所述设备的请求,以使所述虚拟机监视器根据所述第一协议
和所述第二协议的语义对应关系访问所述设备。具体可参考前述实施例的记载,此处不再
赘述。
施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机
可用存储介质(包括但不限于磁盘存储器、CD‑ROM、光学存储器等)上实施的计算机程序产
品的形式。
程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序
指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产
生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实
现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或
多个方框中指定的功能。
其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一
个方框或多个方框中指定的功能的步骤。
示例。
计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动
态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除
可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD‑ROM)、
数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备
或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算
机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要
素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要
素的过程、方法、商品或者设备中还存在另外的相同要素。
替换、改进等,均应包含在本申请的权利要求范围之内。