CN115185647B - virtio设备直通方法及相关装置 - Google Patents
virtio设备直通方法及相关装置 Download PDFInfo
- Publication number
- CN115185647B CN115185647B CN202211117077.8A CN202211117077A CN115185647B CN 115185647 B CN115185647 B CN 115185647B CN 202211117077 A CN202211117077 A CN 202211117077A CN 115185647 B CN115185647 B CN 115185647B
- Authority
- CN
- China
- Prior art keywords
- virtual machine
- virtio
- dpu
- data
- equipment
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0803—Configuration setting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45595—Network integration; Enabling network access in virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/509—Offload
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Stored Programmes (AREA)
Abstract
本申请实施例公开了一种virtio设备直通方法及相关装置,方法包括:DPU智能网卡在计算节点上创建virtio设备;将virtio设备的直通信息发送给虚拟机构建平台,其中,直通信息用于虚拟机构建平台在构建目标虚拟机时,识别virtio设备,并将virtio设备分配给目标虚拟机使用;接收第一数据和第二数据,并通过块设备处理第一数据以及通过网络设备处理第二数据。采用本申请实施例,能够通过DPU虚拟化virtio设备直通给虚拟机,将网络以及存储数据卸载到DPU处理,有利于对虚拟网络和虚拟存储的扩展应用。
Description
技术领域
本申请涉及智能网卡领域,具体涉及一种virtio设备直通方法及相关装置。
背景技术
随着云计算技术、5G、人工智能、边缘计算等下一代信息技术的发展,人们对于虚拟化技术的需求越来越大,云计算和虚拟化技术的出现扩展了网络、存储在虚拟机内的应用,但是在云计算节点物理服务器的硬件资源有限,对于虚拟机的扩展应用限制很大。
发明内容
本申请实施例提供了一种virtio设备直通方法及相关装置,能够通过DPU虚拟化virtio设备直通给虚拟机,将网络以及存储数据卸载到DPU处理,有利于对虚拟网络和虚拟存储的扩展应用。
第一方面,本申请实施例提供了一种virtio设备直通方法,应用于DPU智能网卡,所述DPU智能网卡与虚拟机构建平台中的计算节点的物理服务器连接,所述计算节点为所述虚拟机构建平台中多个计算节点中任意一个,所述DPU智能网卡包括块设备、网络设备和虚拟设备创建模块,所述方法包括:
在所述计算节点上创建virtio设备,其中,所述virtio设备包括第一virtio设备和第二virtio设备;
将所述virtio设备的直通信息发送给所述虚拟机构建平台,其中,所述直通信息用于所述虚拟机构建平台在构建目标虚拟机时,识别所述virtio设备,并将所述virtio设备分配给所述目标虚拟机使用,所述目标虚拟机用于将所述第一virtio设备对应的第一数据发送到所述DPU智能网卡的所述虚拟设备创建模块以及将所述第二virtio设备对应的第二数据发送到所述虚拟设备创建模块;
接收所述第一数据和所述第二数据,并通过所述块设备处理所述第一数据以及通过所述网络设备处理所述第二数据。
第二方面,本申请实施例提供了一种virtio设备直通方法,应用于虚拟机构建平台,所述虚拟机构建平台中的计算节点的物理服务器与DPU智能网卡连接,所述计算节点为所述虚拟机构建平台中多个计算节点中任意一个,所述DPU智能网卡包括块设备、网络设备和虚拟设备创建模块,所述方法包括:
确定目标虚拟机规格;
根据所述目标虚拟机规格,构建目标虚拟机;
接收所述DPU智能网卡发送的直通信息;
根据所述直通信息,识别所述DPU智能网卡在所述计算节点上创建的virtio设备,并将所述virtio设备分配给所述目标虚拟机使用,其中,所述virtio设备包括第一virtio设备和第二virtio设备,所述目标虚拟机用于将所述第一virtio设备对应的第一数据发送到所述DPU智能网卡的所述虚拟设备创建模块以及将所述第二virtio设备对应的第二数据发送到所述虚拟设备创建模块,所述第一数据用于所述块设备处理,所述第二数据用于所述网络设备处理。
第三方面,本申请实施例提供了一种virtio设备直通装置,应用于DPU智能网卡,所述DPU智能网卡与虚拟机构建平台中的计算节点的物理服务器连接,所述计算节点为所述虚拟机构建平台中多个计算节点中任意一个,所述DPU智能网卡包括块设备、网络设备和虚拟设备创建模块,所述装置包括:创建单元、传输单元和处理单元,其中,
所述创建单元,用于在所述计算节点上创建virtio设备,其中,所述virtio设备包括第一virtio设备和第二virtio设备;
所述传输单元,用于将所述virtio设备的直通信息发送给所述虚拟机构建平台,其中,所述直通信息用于所述虚拟机构建平台在构建目标虚拟机时,识别所述virtio设备,并将所述virtio设备分配给所述目标虚拟机使用,所述目标虚拟机用于将所述第一virtio设备对应的第一数据发送到所述DPU智能网卡的所述虚拟设备创建模块以及将所述第二virtio设备对应的第二数据发送到所述虚拟设备创建模块;
所述处理单元,用于接收所述第一数据和所述第二数据,并通过所述块设备处理所述第一数据以及通过所述网络设备处理所述第二数据。
第四方面,本申请实施例提供了一种virtio设备直通装置,应用于虚拟机构建平台,所述虚拟机构建平台中的计算节点的物理服务器与DPU智能网卡连接,所述计算节点为所述虚拟机构建平台中多个计算节点中任意一个,所述DPU智能网卡包括块设备、网络设备和虚拟设备创建模块,所述装置包括:确定单元、构建单元、接收单元和分配单元,其中,
所述确定单元,用于确定目标虚拟机规格;
所述构建单元,用于根据所述目标虚拟机规格,构建目标虚拟机;
所述接收单元,用于接收所述DPU智能网卡发送的直通信息;
所述分配单元,用于根据所述直通信息,识别所述DPU智能网卡在所述计算节点上创建的virtio设备,并将所述virtio设备分配给所述目标虚拟机使用,其中,所述virtio设备包括第一virtio设备和第二virtio设备,所述目标虚拟机用于将所述第一virtio设备对应的第一数据发送到所述DPU智能网卡的所述虚拟设备创建模块以及将所述第二virtio设备对应的第二数据发送到所述虚拟设备创建模块,所述第一数据用于所述块设备处理,所述第二数据用于所述网络设备处理。
第五方面,本申请实施例提供了一种电子设备,包括处理器、存储器、通信接口,以及一个或多个程序,所述一个或多个程序被存储在所述存储器中,并且被配置由所述处理器执行,所述程序包括用于执行如本申请实施例第一方面或者第二方面任一方法中所描述的部分或全部步骤。
第六方面,本申请实施例提供了一种计算机可读存储介质,其中,上述计算机可读存储介质存储用于电子数据交换的计算机程序,其中,上述计算机程序使得计算机执行如本申请实施例第一方面或者第二方面任一方法中所描述的部分或全部步骤。
可以看出,本申请实施例中,DPU智能网卡在虚拟机构建平台的计算节点上创建virtio设备,其中,virtio设备包括第一virtio设备和第二virtio设备,并将virtio设备的直通信息发送给虚拟机构建平台,其中,直通信息用于虚拟机构建平台在构建目标虚拟机时,识别virtio设备,并将virtio设备分配给目标虚拟机使用,目标虚拟机用于利用第一virtio设备将第一virtio设备对应的第一数据发送到DPU智能网卡的虚拟设备创建模块以及利用第二virtio设备将第二virtio设备对应的第二数据发送到虚拟设备创建模块,最后,DPU智能网卡接收第一数据和第二数据,并通过块设备处理第一数据以及通过网络设备处理第二数据。如此,实现了将虚拟机的网络以及存储数据卸载到DPU处理,有利于节省CPU等芯片的硬件资源。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a是本申请实施例提供的一种virtio设备直通系统的架构示意图;
图1b是本申请实施例提供的另一种virtio设备直通系统的架构示意图;
图1c是本申请实施例提供的另一种virtio设备直通系统的架构示意图;
图2是本申请实施例提供的一种virtio设备直通方法的流程示意图;
图3是本申请实施例提供的另一种virtio设备直通方法的流程示意图;
图4是本申请实施例提供的一种virtio设备直通方法的交互示意图;
图5是本申请实施例提供的一种电子设备的结构示意图;
图6是本申请实施例提供的另一种电子设备的结构示意图;
图7是本申请实施例提供的一种virtio设备直通装置的示意图;
图8是本申请实施例提供的另一种virtio设备直通装置的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
本申请实施例所涉及到的电子设备可以包括各种具有无线通信功能的手持设备、车载设备、可穿戴设备、计算设备或连接到无线调制解调器的其他处理设备,以及各种形式的用户设备(User Equipment,UE),移动台(Mobile Station,MS),终端设备(terminaldevice)等等。为方便描述,上面提到的设备统称为电子设备。在本申请中,上述电子设备可以包括芯片,例如,该芯片可包括DPU(Data Processing Unit,智能网卡)或者装载有虚拟机构建平台。
在一种可能的示例中,电子设备还可包括第一芯片和第二芯片,其中,第一芯片可以是DPU(Data Processing Unit,智能网卡),第二芯片可以是中央处理器(CentralProcessing Unit,CPU),该CPU中可装载虚拟机构建平台。
1)DPU(Data Processing Unit,智能网卡),DPU是一种以数据为中心构造的专用处理器,采用软件定义技术路线支撑基础设施层资源虚拟化,支持存储、安全、服务质量管理等基础设施层的功能,DPU最直接的作用是作为中央处理器(Central Processing Unit,CPU)的卸载引擎,接管网络虚拟化、硬件资源池化等基础设施层服务,释放CPU的算力到上层应用。
2)虚拟机(Virtual Machine)指通过软件模拟的具有硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。在创建虚拟机时,需要将实体机的部分硬盘和内存容量作为虚拟机的硬盘和内存容量。在一些示例中,上述虚拟机可以在云计算管理平台的计算节点上构建,例如:在OpenStack的计算节点物理服务器上构建虚拟机。
3)OpenStack是一个开源的云计算管理平台项目,是一系列软件开源项目的组合,它为私有云和公有云提供可扩展的弹性的云计算服务。OpenStack包括控制节点和多个计算节点,可在计算节点物理服务器上构建虚拟机。
4)Virtio是半虚拟化hypervisor中位于设备之上的抽象层,它为半虚拟化提供了一系列通用设备仿真的接口。Virtio架构包括前端驱动和后端驱动,前端驱动在客户机操作系统中实现,运行在虚拟机中,后端驱动在hypervisor中实现,前端驱动负责对虚拟机提供统一的接口,后端驱动负责适配不同的物理硬件设备,前端驱动设备包括:virtio-blk设备、virtio-net设备、virtio-pci设备、virtio-ballon设备、virtio-scsi设备,virtio-blk设备用于块设备,virtio-net设备用于网络设备,并且每个前端驱动对应一个后端驱动,其中,hypervisor又称虚拟机监视器(Virtual Machine Monitor,VMM),是用来建立与执行虚拟机的软件、固件或者硬件,每个virtio设备对应有PCI(PeripheralComponentInterconnect,外围部件互联)信息,可根据PCI信息识别具体的某个virtio设备,virtio-blk设备和virtio-net设备也对应有各自的PCI信息。
目前,现有 OpenStack 对接智能网卡,通过实现neutron组件的ovs agent对特定智能网卡的兼容实现网络功能,扩展性差,只能实现网络功能加载到虚拟机,不能同时将存储的虚拟化加载到虚拟机,并且OpenStack计算节点的硬件资源是有限的,在计算节点构建的虚拟机没有足够的硬件资源可以使用。
针对上述问题,本申请提出一种virtio设备直通方法及相关装置,下面进行详细说明。
请参阅图1a,图1a是本申请实施例提供的一种virtio设备直通系统的架构示意图,该系统架构可包括DPU智能网卡100a和虚拟机构建平台100b,其中,该DPU智能网卡100a包括虚拟设备创建模块101、块设备102和网络设备103,该虚拟机构建平台100b包括计算节点104和控制节点105。
其中,DPU智能网卡100a与虚拟机构建平台100b中的计算节点104的物理服务器连接。
其中,虚拟设备创建模块101用于在虚拟机构建平台100b的计算节点104上创建virtio设备,如图1b所示,虚拟设备创建101可在计算节点104上创建一个或者多个virtio设备,virtio设备包括第一virtio设备和第二virtio设备。
其中,虚拟机由控制节点105控制在计算节点104上构建,可构建一个或者多个虚拟机,该计算节点104和控制节点105可接收上述virtio设备的直通信息,控制节点105可根据该直通信息识别计算节点104上的virtio设备,并将该virtio设备分配给计算节点104上的虚拟机使用,如图1c所示,在计算节点上构建的虚拟机可使用控制节点105分配给其的一个或者多个virtio设备。
其中,虚拟机构建平台100b上可存在多个计算节点104,每一计算节点104都可以用于虚拟机的构建以及virtio设备的创建。
其中,块设备102和网络设备103可用于对virtio设备对应的数据进行处理,第一virtio设备对应第一数据,第二virtio设备对应第二数据。
在一种可能的示例中,虚拟机构建平台100b发送virtio设备创建需求到DPU智能网卡100a,DPU智能网卡100a根据该virtio设备创建需求,在虚拟机构建平台100b的计算节点104上创建一个或者多个virtio设备,并将上述virtio设备的直通信息发送给计算节点104和控制节点105,控制节点根据该直通信息识别计算节点104上的virtio设备,并将该virtio设备分配给计算节点104上的虚拟机使用,虚拟机利用第一virtio设备将第一virtio设备对应的第一数据发送到DPU智能网卡100a的虚拟设备创建模块101以及利用第二virtio设备将第二virtio设备对应的第二数据发送到虚拟设备创建模块101,虚拟设备创建模块101将第一数据和第二数据分别发送到块设备102和网络设备103处理。如此,实现了将虚拟机的网络以及存储数据卸载到DPU处理,有利于节省CPU等芯片的硬件资源。
需要说明的是,在本申请中多个可指两个或两个以上,后续不再赘述。
请参阅图2,图2是本申请实施例提供的一种virtio设备直通方法的流程示意图,应用于DPU智能网卡,所述DPU智能网卡与虚拟机构建平台中的计算节点的物理服务器连接,所述计算节点为所述虚拟机构建平台中多个计算节点中任意一个,所述DPU智能网卡包括块设备、网络设备和虚拟设备创建模块,如图所示,本virtio设备直通方法包括以下操作。
S201、在所述计算节点上创建virtio设备,其中,所述virtio设备包括第一virtio设备和第二virtio设备。
其中,该计算节点为该虚拟机构建平台中多个计算节点中的任意一个。
其中,该第一virtio设备可以是virtio-blk设备,该第二virtio设备可以是virtio-net设备,virtio-blk设备用于块设备,virtio-net设备用于网络设备。
其中,DPU智能网卡的虚拟设备创建模块在虚拟机构建平台上的计算节点物理服务器上创建一个或者多个virtio设备,虚拟机构建平台可以是OpenStack。
其中,虚拟设备创建模块可以通过FPGA(Field Programmable Gate Arry,现场可编程门列阵)技术实现。DPU可以在可编程FPGA单元中自定义软件的计算层,例如,该软件可以是虚拟设备创建模块,可用于支持DPU创建virtio设备。
S202、将所述virtio设备的直通信息发送给所述虚拟机构建平台,其中,所述直通信息用于所述虚拟机构建平台在构建目标虚拟机时,识别所述virtio设备,并将所述virtio设备分配给所述目标虚拟机使用,所述目标虚拟机用于将所述第一virtio设备对应的第一数据发送到所述DPU智能网卡的所述虚拟设备创建模块以及将所述第二virtio设备对应的第二数据发送到所述虚拟设备创建模块。
其中,第一数据可以是存储数据,第二数据可以是网络数据流量。
其中,直通信息是virtio设备的PCI信息,虚拟机构建平台可以根据virtio设备的PCI信息识别找到该virtio设备,虚拟设备创建模块在创建virtio设备时,将virtio设备的直通信息发送到计算节点(可以是如图1a所示的计算节点104,后续不再赘述),计算节点再将直通信息发送到虚拟机构建平台的控制节点(可以是如图1a所示的控制节点105,后续不再赘述),计算节点和控制节点在接收到直通信息后,分别配置该直通信息到数据库,此时,虚拟机构建平台要重启相关服务,查看相关服务状态,同时查看数据库中是否存在该直通信息,控制节点要根据直通信息获知该virtio设备的virtio设备类型,确定该virtio设备是virtio-blk设备还是virtio-net设备,以便于在计算节点控制构建虚拟机时分配给虚拟机需要的设备类型以及使虚拟机能够接管该virtio设备。
其中,virtio-blk设备与虚拟设备创建模块通过接口连接,虚拟机可利用virtio-blk设备将存储数据通过该接口发送到虚拟设备创建模块,再由虚拟设备创建模块将该存储数据发送到块设备进行存储,其中,可以是基于SPDK的框架实现PMD轮询读写该块设备,实现用户态数据加速转发;virtio-net设备也与虚拟设备创建模块通过接口连接,虚拟机可利用virtio-net设备将网络数据流量通过该接口发送到虚拟设备创建模块,再由虚拟设备创建模块将该网络数据流量发送到网络设备进行处理,其中,可以是基于OVS-DPDK的框架实现PMD轮询读写该网络设备,实现用户态数据加速转发。
S203、接收所述第一数据和所述第二数据,并通过所述块设备处理所述第一数据以及通过所述网络设备处理所述第二数据。
其中,DPU智能网卡中的virtio设备创建模块接收该第一数据和第二数据,并把该第一数据发送到DPU智能网卡中的块设备,把该第二数据发送到DPU智能网卡中的网络设备,块设备和网络设备分别在接收到该第一数据和第二数据后,分别处理该第一数据和第二数据。
可以看出,本申请实施例中,DPU智能网卡在虚拟机构建平台的计算节点上创建virtio设备,其中,virtio设备包括第一virtio设备和第二virtio设备,并将virtio设备的直通信息发送给虚拟机构建平台,其中,直通信息用于虚拟机构建平台在构建目标虚拟机时,识别virtio设备,并将virtio设备分配给目标虚拟机使用,目标虚拟机用于将第一virtio设备对应的第一数据发送到DPU智能网卡的虚拟设备创建模块以及将第二virtio设备对应的第二数据发送到虚拟设备创建模块,最后,DPU智能网卡接收第一数据和第二数据,并通过块设备处理第一数据以及通过网络设备处理第二数据。如此,实现了将虚拟机的网络以及存储数据卸载到DPU处理,有利于节省CPU等芯片的硬件资源。
在一个可能的示例中,所述在所述计算节点上创建virtio设备,上述方法可包括如下步骤:接收所述虚拟机构建平台发送的virtio设备创建需求;根据所述virtio设备创建需求,确定virtio设备类型,其中,所述virtio设备类型包括第一virtio设备类型和第二virtio设备类型;根据所述virtio设备类型,创建至少一个所述第一virtio设备和/或至少一个所述第二virtio设备。
其中,virtio设备创建需求包括virtio设备创建类型以及数量。
其中,虚拟机构建平台在创建虚拟机之前,控制节点会分析创建虚拟机所需要的virtio设备类型以及数量以形成virtio设备创建需求,将该设备创建需求通过计算节点发送到DPU智能网卡的虚拟设备创建模块。
其中,虚拟设备创建模块可在计算节点创建至少一个第一virtio设备,也可创建至少一个第二virtio设备,也可创建至少一个第一virtio设备和至少一个第二virtio设备。
其中,虚拟设备创建模块既可在计算节点物理服务器上创建virtio设备,也可删除virtio设备,实现对虚拟virtio设备资源的合理规划,以提高虚拟机网络存储功能以及释放虚拟机构建平台硬件资源。
具体实现中,DPU智能网卡的虚拟设备创建模块接收到计算节点发送的virtio设备创建需求之后,分析该virtio设备创建需求以确定要创建的virtio设备类型以及数量,得到结论之后在计算节点物理服务器上创建一个或者多个virtio-blk设备和/或一个或者多个virtio-net设备。
可见,在本示例中,可根据虚拟机构建平台发送的virtio设备需求创建虚拟机构建平台需要的virtio设备类型以及数量,有利于对虚拟virtio设备资源进行合理规划。
在一个可能的示例中,所述根据所述virtio设备类型,创建至少一个所述第一virtio设备和/或至少一个所述第二virtio设备,上述方法可包括如下步骤:根据所述virtio设备类型,获取所述第一virtio设备和所述第二virtio设备对应的设备参数,其中,设备参数包括第一设备参数和第二设备参数,第一virtio设备与所述第一设备参数相对应,第二virtio设备与所述第二设备参数相对应;根据所述设备参数,确定相对应的类初始化函数、对象初始化函数和设备实现函数;根据相对应的所述类初始化函数、所述对象初始化函数和所述设备实现函数,创建至少一个所述第一virtio设备和/或至少一个所述第二virtio设备。
其中,创建virtio设备的流程可以分为三个步骤类初始化、对象创建和设备实现,每个步骤会分别涉及到类初始化函数、对象初始化函数和设备实现函数的调用。
其中,第一virtio设备和第二virtio设备对应不同的设备参数,第一virtio设备对应第一设备参数,第二virtio设备对应第二设备参数。当确定设备参数之后,根据上述参数去查找具体的virtio设备对应的类初始化函数、对象初始化函数以及设备实现函数,并调用该virtio设备对应的类初始化函数、对象初始化函数以及设备实现函数来创建该virtio设备。
其中,确定类初始化函数是一个实现类的继承关系的过程,通过调用父类函数的实现,来实现子类函数初始化,继承关系如下:从DeviceClass到PCIDeviceClass到VirtioPCIClass,其中,virtio-net设备和virtio-blk设备要从不同的父对象调用对应的class-init函数来实现继承,实现继承可利用C语言、C++语言、Python等计算机语言来实现。
其中,对象创建过程是调用instance-init函数以触发对象的初始化得到对象初始化函数。
其中,设备实现过程是通过触发调用realize函数实现virtio-net设备或者virtio-blk设备的初始化,完成virtio-net设备或者virtio-blk设备的创建。
具体实现中,DPU智能网卡中的虚拟设备创建模块先确定要创建的virtio-net设备或者virtio-blk设备对应的参数,利用device-init-func函数来调用父类函数实现子类函数初始化,实现子类函数初始化之后再进行对象创建过程,调用instance-init函数以触发对象的初始化得到对象初始化函数,完成对象创建,最后,通过触发调用realize函数实现virtio-net设备或者virtio-blk设备的初始化,完成virtio-net设备或者virtio-blk设备的创建。
可见,本示例实现了DPU智能网卡在虚拟机构建平台中的计算节点物理服务器上创建virtio设备,有利于后续将该virtio设备直通给计算节点物理服务器上的虚拟机使用,实现将虚拟机的网络、存储功能卸载到DPU智能网卡处理。
在一个可能的示例中,直通信息包括至少以下一种:PCI设备别名、产品标识、厂商标识和PCI设备类型。
其中,厂商标识(Vender ID)、PCI设备别名、PCI设备类型和产品标识(ProductID)被DPU智能网卡发送到虚拟机构建平台之后,计算节点会配置厂商标识(Vender ID)、PCI设备别名和产品标识配置到计算节点的配置空间,控制节点会接收计算节点上报的PCI资源,包括上述直通信息,并将直通信息上传到数据库,在控制节点配置PCI设备类型。
可见,该直通信息有利于虚拟机构建平台精准识别DPU智能网卡在虚拟机构建平台中计算节点物理服务器上创建的virtio设备。
请参阅图3,图3是本申请实施例提供的另一种virtio设备直通方法的流程示意图,应用于虚拟机构建平台,所述虚拟机构建平台中的计算节点的物理服务器与DPU智能网卡连接,所述计算节点为所述虚拟机构建平台中多个计算节点中任意一个,所述DPU智能网卡包括块设备、网络设备和虚拟设备创建模块,如图所示,本virtio设备直通方法包括以下操作。
S301、确定目标虚拟机规格。
其中,虚拟机构建平台可以是电子设备中装载的云计算管理平台,例如:OpenStack,该虚拟机构建平台包括控制节点和多个计算节点,可在计算节点物理服务器上构建虚拟机。
其中,虚拟机构建平台中的计算节点的物理服务器与该DPU智能网卡连接,计算节点为虚拟机构建平台中多个计算节点中任意一个,DPU智能网卡包括块设备、网络设备和虚拟设备创建模块。
其中,虚拟机构建平台中的控制节点可确定目标虚拟机规格,创建虚拟机规格要确定多个参数,该多个参数至少包括以下一种:类型、CPU架构、启动源、规格名称、vCPU个数、内存和系统卷等。这些参数可以是系统默认的,也可以是人为预设的,在此不做限定,其中,vCPU是指虚拟处理器,是相对于物理CPU的一个概念,位于虚拟机内部。
具体实现中,虚拟机构建平台中的控制节点确定包括类型、CPU架构、启动源、规格名称、vCPU个数、内存和系统卷等在内的多个参数之后,创建目标虚拟机规格。
S302、根据所述目标虚拟机规格,构建目标虚拟机。
其中,虚拟机可接管该虚拟机构建平台中控制节点分配给该虚拟机的硬件资源,接管的该硬件资源只有该虚拟机能够使用,其他虚拟机、该虚拟机构建平台以及其他设备都不能使用该硬件资源。另外,DPU智能网卡在该虚拟机构建平台中的计算节点物理服务器上创建的virtio设备,可被该计算节点物理服务器上的虚拟机接管使用。
其中,控制节点控制计算节点在其物理服务器上构建目标虚拟机,其中DPU创建的virtio设备和该目标虚拟机在同一个计算节点的物理服务器上。
具体实现中,虚拟机构建平台中的计算节点控制与DPU智能网卡连接的计算节点在其物理服务器上根据目标虚拟机规格,构建目标虚拟机。
S303、接收所述DPU智能网卡发送的直通信息。
其中,虚拟机构建平台中的计算节点(该计算节点为DPU智能网卡创建的virtio设备所在的计算节点)接收DPU智能网卡中的虚拟设备创建模块发送的直通信息,该直通信息是虚拟设备创建模块在该计算节点物理服务器上创建的virtio设备的对应的直通信息。
S304、根据所述直通信息,识别所述DPU智能网卡在所述计算节点上创建的virtio设备,并将所述virtio设备分配给所述目标虚拟机使用,其中,所述virtio设备包括第一virtio设备和第二virtio设备,所述目标虚拟机用于将所述第一virtio设备对应的第一数据发送到所述DPU智能网卡的所述虚拟设备创建模块以及将所述第二virtio设备对应的第二数据发送到所述虚拟设备创建模块,所述第一数据用于所述块设备处理,所述第二数据用于所述网络设备处理。
其中,第一virtio设备和第二virtio设备分别是virtio-blk设备和virtio-net设备,第一virtio设备和第二virtio设备与DPU智能网卡中的虚拟设备创建模块有第一通信接口和第二通信接口,用于分别传输该第一数据和第二数据,第一virtio设备对应第一通信接口,第二virtio设备对应第二通信接口。
其中,目标虚拟机可通过第一virtio设备的第一通信接口将第一virtio设备对应的存储数据,即第一数据,发送到该虚拟设备创建模块,目标虚拟机可通过第二virtio设备的第二通信接口将第二virtio设备对应的网络数据流量,即第二数据,发送到该虚拟设备创建模块。
其中,第一数据由虚拟设备创建模块发送到块设备,由该块设备进行处理,第二数据由虚拟设备创建模块发送到网络设备,由该网络设备进行处理。
具体实现中,虚拟设备创建模块在创建virtio设备时,将virtio设备的直通信息发送到虚拟机构建平台中的计算节点,计算节点再将直通信息发送到虚拟机构建平台的控制节点,计算节点和控制节点在接收到直通信息后,分别配置该直通信息到数据库,此时,虚拟机构建平台重启相关服务,查看相关服务状态,同时查看数据库中是否存在该直通信息,控制节点根据直通信息获知该virtio设备的virtio设备类型,确定该virtio设备是virtio-blk设备还是virtio-net设备,在计算节点控制构建虚拟机时分配给虚拟机需要的设备类型以及使虚拟机能够接管该virtio设备。
可以看出,本申请实施例所描述的一种virtio设备直通方法,虚拟机构建平台可确定目标虚拟机规格;根据所述目标虚拟机规格,构建目标虚拟机;接收所述DPU智能网卡发送的直通信息;根据所述直通信息,识别所述DPU智能网卡在所述计算节点上创建的virtio设备,并将所述virtio设备分配给所述目标虚拟机使用,其中,所述virtio设备包括第一virtio设备和第二virtio设备,所述目标虚拟机用于将所述第一virtio设备对应的第一数据发送到所述DPU智能网卡的所述虚拟设备创建模块以及将所述第二virtio设备对应的第二数据发送到所述虚拟设备创建模块,所述第一数据用于所述块设备处理,所述第二数据用于所述网络设备处理。如此,实现了将虚拟机的网络以及存储数据卸载到DPU处理,有利于节省CPU等芯片的硬件资源。
在一个可能的示例中,所述根据所述目标虚拟机规格,构建目标虚拟机,上述方法可包括如下步骤:获取与所述目标虚拟机规格相对应的目标虚拟机镜像;创建目标网络;根据所述目标虚拟机规格、所述目标虚拟机镜像和所述目标网络,构建所述目标虚拟机。
其中,虚拟机正常落地运行离不开网络支持,因此要创建目标网络,创建目标网络包括创建桥接网络、创建子网和验证桥接网络和子网,在创建桥接网络过程包括与计算节点在项目之间共享配置文件名称、自定义网络名称和实现控制端自有和计算节点共有。
其中,构建虚拟机过程还包括创建一个安全组,创建安全组的过程包括:创建安全组、添加规则和web端验证安全组。
其中,在命令启动虚拟机之前,要进行最终验证,其中最终验证过程包括:列出虚拟机类型、列出可用镜像、列出可用网络、列出可用安全组和确认以上步骤全部可用能执行成功且正常输出。
其中,构建的目标虚拟机和该virtio设备在虚拟机构建平台中的同一个计算节点物理服务器上。
具体实现中,虚拟机构建平台先创建目标虚拟机规格,再创建目标网络,再创建安全组,最后命令启动目标虚拟机进行如下操作:选择目标虚拟机镜像、选择目标虚拟机规格、选择目标网络、选择安全组、启动目标虚拟机和验证目标虚拟机运行正常。成功启动目标虚拟机,并且目标虚拟机能够正常运行即表示目标虚拟机构建完成。
可见,在计算节点物理服务器上构建虚拟机有利于使虚拟机接管DPU智能网卡在计算节点物理服务器上创建的virtio设备,从而实现将网络数据流量和/或存储数据卸载到DPU智能网卡进行处理。
在一个可能的示例中,上述方法还可包括如下步骤:构建虚拟机管理模块,所述虚拟机管理模块用于在所述直通信息和所述目标虚拟机的内部设备的设备信息存在冲突时,修正所述内部设备的设备信息。
其中,虚拟机内部设备的设备信息包括PCI信息,该PCI信息可包括PCI设备别名、产品标识、厂商标识和PCI设备类型。
其中,虚拟机管理模块由虚拟机构建平台中的控制节点在虚拟机所在的计算节点物理服务器上控制构建,虚拟机管理模块可以是libvirt模块,libvilit模块可以获取虚拟机内部设备的PCI信息,并可从该控制节点和计算节点的数据库中获取该直通信息,并比对该直通信息和虚拟机内部设备的PCI信息,若直通信息和虚拟机内部设备的PCI信息相同,则会影响虚拟机对于内部设备和直通的virtio设备的使用,导致虚拟机无法正常启动使用。
具体实现中,控制节点在目标虚拟机所在的计算节点物理服务器上控制构建虚拟机管理模块,虚拟机管理模块从计算节点获取到目标虚拟机内部设备的PCI信息,从计算节点或者控制节点获取该直通信息,并比对该直通信息和目标虚拟机内部设备的PCI信息,当直通信息和目标虚拟机的内部设备的PCI信息相同影响目标虚拟机正常启动运作时,能够修改目标虚拟机内部设备的PCI信息。
可见,构建虚拟机管理模块能够消除目标虚拟机内部设备和直通的virtio设备在使用上的冲突,有利于确保目标虚拟机能够正常启动运行。
请参阅图4,图4是本申请实施例提供的一种virtio设备直通方法的交互示意图,如图所示,本virtio设备直通方法包括以下操作。
S401、虚拟机构建平台发送virtio设备创建需求到DPU智能网卡。
其中,虚拟机构建平台可通过Restful来实现与DPU智能网卡的通信,虚拟机构建平台中的控制节点和计算节点通过Restful和RPC(Remote Procedure Call)来进行通信和数据传输,其中,RPC是远程过程调用,通信双方通过约定的接口以类似本地方法调用的方式来进行交互,Restful是一种网络应用程序的设计风格和开发方式,是基于HTTP,用于约束客户端和服务器交互,例如:HTTP协议使用同一个URL地址,通过GET、POST、PUT、DELETE等方式实现数据查询、提交、删除等。
其中,控制节点可在控制创建虚拟机之前,自动分析虚拟机正常启动运行所需要的virtio设备,并因此生成创建虚拟机的virtio设备需求,由控制节点发送到与该DPU智能网卡连接的计算节点,再由该计算节点发送到DPU智能网卡中的虚拟设备创建模块。
S402、DPU智能网卡接收所述虚拟机构建平台发送的virtio设备创建需求。
S403、DPU智能网卡在所述计算节点上创建virtio设备,其中,所述virtio设备包括第一virtio设备和第二virtio设备。
S404、DPU智能网卡将所述virtio设备的直通信息发送给所述虚拟机构建平台。
S405、虚拟机构建平台确定目标虚拟机规格。
S406、虚拟机构建平台根据所述目标虚拟机规格,构建目标虚拟机。
S407、虚拟机构建平台接收所述DPU智能网卡发送的直通信息。
S408、虚拟机构建平台根据所述直通信息,识别所述DPU智能网卡在所述计算节点上创建的virtio设备,并将所述virtio设备分配给所述目标虚拟机使用,其中,所述virtio设备包括第一virtio设备和第二virtio设备,所述目标虚拟机用于将所述第一virtio设备对应的第一数据发送到所述DPU智能网卡的所述虚拟设备创建模块以及将所述第二virtio设备对应的第二数据发送到所述虚拟设备创建模块,所述第一数据用于所述块设备处理,所述第二数据用于所述网络设备处理。
其中,上述步骤S402-S404可参考图2所描述的virtio设备直通方法中的步骤S201- S203及其相关描述,上述步骤S405-S408可参考图3所描述的virtio设备直通方法中的步骤S301- S304及其相关描述,在此不再赘述。
可以看出,本申请实施例中,DPU智能网卡在虚拟机构建平台的计算节点上创建virtio设备,其中,virtio设备包括第一virtio设备和第二virtio设备,并将virtio设备的直通信息发送给虚拟机构建平台,其中,直通信息用于虚拟机构建平台在构建目标虚拟机时,识别virtio设备,并将virtio设备分配给目标虚拟机使用,目标虚拟机用于将第一virtio设备对应的第一数据发送到DPU智能网卡的虚拟设备创建模块以及将第二virtio设备对应的第二数据发送到虚拟设备创建模块,最后,DPU智能网卡接收第一数据和第二数据,并通过块设备处理第一数据以及通过网络设备处理第二数据。如此,实现了将虚拟机的网络以及存储数据卸载到DPU处理,有利于节省CPU等芯片的硬件资源。
请参阅图5,图5是本申请实施例提供的一种电子设备的结构示意图,如图所示,所述电子设备应用于DPU智能网卡,所述DPU智能网卡与虚拟机构建平台中的计算节点的物理服务器连接,所述计算节点为所述虚拟机构建平台中多个计算节点中任意一个,所述DPU智能网卡包括块设备、网络设备和虚拟设备创建模块,该电子设备包括处理器、存储器、通信接口以及一个或多个程序,其中,上述一个或多个程序被存储在上述存储器中,上述一个或多个程序被配置由上述处理器执行以下步骤的指令:
在所述计算节点上创建virtio设备,其中,所述virtio设备包括第一virtio设备和第二virtio设备;
将所述virtio设备的直通信息发送给所述虚拟机构建平台,其中,所述直通信息用于所述虚拟机构建平台在构建目标虚拟机时,识别所述virtio设备,并将所述virtio设备分配给所述目标虚拟机使用,所述目标虚拟机用于将所述第一virtio设备对应的第一数据发送到所述DPU智能网卡的所述虚拟设备创建模块以及将所述第二virtio设备对应的第二数据发送到所述虚拟设备创建模块;
接收所述第一数据和所述第二数据,并通过所述块设备处理所述第一数据以及通过所述网络设备处理所述第二数据。
可以看出,本申请实施例所描述的电子设备,可在虚拟机构建平台的计算节点上创建virtio设备,其中,virtio设备包括第一virtio设备和第二virtio设备,并将virtio设备的直通信息发送给虚拟机构建平台,其中,直通信息用于虚拟机构建平台在构建目标虚拟机时,识别virtio设备,并将virtio设备分配给目标虚拟机使用,目标虚拟机用于将第一virtio设备对应的第一数据发送到DPU智能网卡的虚拟设备创建模块以及将第二virtio设备对应的第二数据发送到虚拟设备创建模块,最后,DPU智能网卡接收第一数据和第二数据,并通过块设备处理第一数据以及通过网络设备处理第二数据。如此,实现了将虚拟机的网络以及存储数据卸载到DPU处理,有利于节省CPU等芯片的硬件资源。
在一个可能的示例中,在所述计算节点上创建virtio设备方面,上述程序包括用于执行以下步骤的指令:
接收所述虚拟机构建平台发送的virtio设备创建需求;
根据所述virtio设备创建需求,确定virtio设备类型,其中,所述virtio设备类型包括第一virtio设备类型和第二virtio设备类型;
根据所述virtio设备类型,创建至少一个所述第一virtio设备和/或至少一个所述第二virtio设备。
在一个可能的示例中,在根据所述virtio设备类型,创建至少一个所述第一virtio设备和/或至少一个所述第二virtio设备方面,上述程序包括用于执行以下步骤的指令:
根据所述virtio设备类型,获取所述第一virtio设备和所述第二virtio设备对应的设备参数,其中,设备参数包括第一设备参数和第二设备参数,第一virtio设备与所述第一设备参数相对应,第二virtio设备与所述第二设备参数相对应;
根据所述设备参数,确定相对应的类初始化函数、对象初始化函数和设备实现函数;
根据相对应的所述类初始化函数、所述对象初始化函数和所述设备实现函数,创建至少一个所述第一virtio设备和/或至少一个所述第二virtio设备。
请参阅图6,图6是本申请实施例提供的另一种电子设备的结构示意图,如图所示,所述电子设备应用于虚拟机构建平台,所述虚拟机构建平台中的计算节点的物理服务器与DPU智能网卡连接,所述计算节点为所述虚拟机构建平台中多个计算节点中任意一个,所述DPU智能网卡包括块设备、网络设备和虚拟设备创建模块,该电子设备包括处理器、存储器、通信接口以及一个或多个程序,其中,上述一个或多个程序被存储在上述存储器中,上述一个或多个程序被配置由上述处理器执行以下步骤的指令:
确定目标虚拟机规格;
根据所述目标虚拟机规格,构建目标虚拟机;
接收所述DPU智能网卡发送的直通信息;
根据所述直通信息,识别所述DPU智能网卡在所述计算节点上创建的virtio设备,并将所述virtio设备分配给所述目标虚拟机使用,其中,所述virtio设备包括第一virtio设备和第二virtio设备,所述目标虚拟机用于将所述第一virtio设备对应的第一数据发送到所述DPU智能网卡的所述虚拟设备创建模块以及将所述第二virtio设备对应的第二数据发送到所述虚拟设备创建模块,所述第一数据用于所述块设备处理,所述第二数据用于所述网络设备处理。
可以看出,本申请实施例描述的电子设备,可确定目标虚拟机规格;根据所述目标虚拟机规格,构建目标虚拟机;接收所述DPU智能网卡发送的直通信息;根据所述直通信息,识别所述DPU智能网卡在所述计算节点上创建的virtio设备,并将所述virtio设备分配给所述目标虚拟机使用,其中,所述virtio设备包括第一virtio设备和第二virtio设备,所述目标虚拟机用于将所述第一virtio设备对应的第一数据发送到所述DPU智能网卡的所述虚拟设备创建模块以及将所述第二virtio设备对应的第二数据发送到所述虚拟设备创建模块,所述第一数据用于所述块设备处理,所述第二数据用于所述网络设备处理。如此,实现了将虚拟机的网络以及存储数据卸载到DPU处理,有利于节省CPU等芯片的硬件资源。
在一个可能的示例中,在根据所述目标虚拟机规格,构建目标虚拟机方面,上述程序包括用于执行以下步骤的指令:
获取与所述目标虚拟机规格相对应的目标虚拟机镜像;
创建目标网络;
根据所述目标虚拟机规格、所述目标虚拟机镜像和所述目标网络,构建所述目标虚拟机。
在一个可能的示例中,上述程序还包括用于执行以下步骤的指令:
构建虚拟机管理模块,所述虚拟机管理模块用于在所述直通信息和所述目标虚拟机的内部设备的设备信息存在冲突时,修正所述内部设备的设备信息。
上述主要从方法侧执行过程的角度对本申请实施例的方案进行了介绍。可以理解的是,电子设备为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所提供的实施例描述的各示例的单元及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例可以根据上述方法示例对电子设备进行功能单元的划分,例如,可以对应各个功能划分各个功能单元,也可以将两个或两个以上的功能集成在一个处理单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。需要说明的是,本申请实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
在采用对应各个功能划分各个功能模块的情况下,图7给出了一种virtio设备直通装置的示意图,如图7所示,所述装置应用于DPU智能网卡,所述DPU智能网卡与虚拟机构建平台中的计算节点的物理服务器连接,所述计算节点为所述虚拟机构建平台中多个计算节点中任意一个,所述DPU智能网卡包括块设备、网络设备和虚拟设备创建模块,该virtio设备直通装置700可以包括:创建单元701、传输单元702和处理单元703,其中,
所述创建单元701,用于在所述计算节点上创建virtio设备,其中,所述virtio设备包括第一virtio设备和第二virtio设备;
所述传输单元702,用于将所述virtio设备的直通信息发送给所述虚拟机构建平台,其中,所述直通信息用于所述虚拟机构建平台在构建目标虚拟机时,识别所述virtio设备,并将所述virtio设备分配给所述目标虚拟机使用,所述目标虚拟机用于将所述第一virtio设备对应的第一数据发送到所述DPU智能网卡的所述虚拟设备创建模块以及将所述第二virtio设备对应的第二数据发送到所述虚拟设备创建模块;
所述处理单元703,用于接收所述第一数据和所述第二数据,并通过所述块设备处理所述第一数据以及通过所述网络设备处理所述第二数据。
可以看出,本申请实施例描述的virtio设备直通装置,可在虚拟机构建平台的计算节点上创建virtio设备,其中,virtio设备包括第一virtio设备和第二virtio设备,并将virtio设备的直通信息发送给虚拟机构建平台,其中,直通信息用于虚拟机构建平台在构建目标虚拟机时,识别virtio设备,并将virtio设备分配给目标虚拟机使用,目标虚拟机用于将第一virtio设备对应的第一数据发送到DPU智能网卡的虚拟设备创建模块以及将第二virtio设备对应的第二数据发送到虚拟设备创建模块,最后,DPU智能网卡接收第一数据和第二数据,并通过块设备处理第一数据以及通过网络设备处理第二数据。如此,实现了将虚拟机的网络以及存储数据卸载到DPU处理,有利于节省CPU等芯片的硬件资源。
在一个可能的示例中,在所述计算节点上创建virtio设备方面,所述创建单元701具体用于:
接收所述虚拟机构建平台发送的virtio设备创建需求;
根据所述virtio设备创建需求,确定virtio设备类型,其中,所述virtio设备类型包括第一virtio设备类型和第二virtio设备类型;
根据所述virtio设备类型,创建至少一个所述第一virtio设备和/或至少一个所述第二virtio设备。
在一个可能的示例中,在根据所述virtio设备类型,创建至少一个所述第一virtio设备和/或至少一个所述第二virtio设备方面,所述创建单元701具体用于:
根据所述virtio设备类型,获取所述第一virtio设备和所述第二virtio设备对应的设备参数,其中,设备参数包括第一设备参数和第二设备参数,第一virtio设备与所述第一设备参数相对应,第二virtio设备与所述第二设备参数相对应;
根据所述设备参数,确定相对应的类初始化函数、对象初始化函数和设备实现函数;
根据相对应的所述类初始化函数、所述对象初始化函数和所述设备实现函数,创建至少一个所述第一virtio设备和/或至少一个所述第二virtio设备。
图8给出了另一种virtio设备直通装置的示意图,如图8所示,所述装置应用于虚拟机构建平台,所述虚拟机构建平台中的计算节点的物理服务器与DPU智能网卡连接,所述计算节点为所述虚拟机构建平台中多个计算节点中任意一个,所述DPU智能网卡包括块设备、网络设备和虚拟设备创建模块,该virtio设备直通装置800可以包括:确定单元801、构建单元802、接收单元803和分配单元804,其中,
所述确定单元801,用于确定目标虚拟机规格;
所述构建单元802,用于根据所述目标虚拟机规格,构建目标虚拟机;
所述接收单元803,用于接收所述DPU智能网卡发送的直通信息;
所述分配单元804,用于根据所述直通信息,识别所述DPU智能网卡在所述计算节点上创建的virtio设备,并将所述virtio设备分配给所述目标虚拟机使用,其中,所述virtio设备包括第一virtio设备和第二virtio设备,所述目标虚拟机用于将所述第一virtio设备对应的第一数据发送到所述DPU智能网卡的所述虚拟设备创建模块以及将所述第二virtio设备对应的第二数据发送到所述虚拟设备创建模块,所述第一数据用于所述块设备处理,所述第二数据用于所述网络设备处理。
可以看出,本申请实施例描述的virtio设备直通装置,可确定目标虚拟机规格;根据所述目标虚拟机规格,构建目标虚拟机;接收所述DPU智能网卡发送的直通信息;根据所述直通信息,识别所述DPU智能网卡在所述计算节点上创建的virtio设备,并将所述virtio设备分配给所述目标虚拟机使用,其中,所述virtio设备包括第一virtio设备和第二virtio设备,所述目标虚拟机用于将所述第一virtio设备对应的第一数据发送到所述DPU智能网卡的所述虚拟设备创建模块以及将所述第二virtio设备对应的第二数据发送到所述虚拟设备创建模块,所述第一数据用于所述块设备处理,所述第二数据用于所述网络设备处理。如此,实现了将虚拟机的网络以及存储数据卸载到DPU处理,有利于节省CPU等芯片的硬件资源。
在一个可能的示例中,在根据所述目标虚拟机规格,构建目标虚拟机方面,所述构建单元802具体用于:
获取与所述目标虚拟机规格相对应的目标虚拟机镜像;
创建目标网络;
根据所述目标虚拟机规格、所述目标虚拟机镜像和所述目标网络,构建所述目标虚拟机。
在一个可能的示例中,所述构建单元802还具体用于:
构建虚拟机管理模块,所述虚拟机管理模块用于在所述直通信息和所述目标虚拟机的内部设备的设备信息存在冲突时,修正所述内部设备的设备信息。
需要说明的是,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
本实施例提供的电子设备,用于执行上述virtio设备直通方法,因此可以达到与上述实现方法相同的效果。
本申请实施例还提供一种计算机存储介质,其中,该计算机存储介质存储用于电子数据交换的计算机程序,该计算机程序使得计算机执行如上述方法实施例中记载的任一方法的部分或全部步骤,上述计算机包括电子设备。
本申请实施例还提供一种计算机程序产品,上述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,上述计算机程序可操作来使计算机执行如上述方法实施例中记载的任一方法的部分或全部步骤。该计算机程序产品可以为一个软件安装包,上述计算机包括控制平台。
本申请实施例还提供一种芯片,该芯片包括处理器,可用于执行指令,在上述处理器执行指令的情况下,使得上述芯片可以实现上述方法实施例中记载的任一方法的部分或全部步骤。可选地,该芯片还可以包括通信接口,该通信接口可用于接收信号或者发送信号。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
上述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例上述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器、随机存取器、磁盘或光盘等。
以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (9)
1.一种virtio设备直通方法,其特征在于,应用于DPU智能网卡,所述DPU智能网卡与虚拟机构建平台中的计算节点的物理服务器连接,所述计算节点为所述虚拟机构建平台中多个计算节点中任意一个,所述DPU智能网卡包括块设备、网络设备和虚拟设备创建模块,包括:
在所述计算节点上创建virtio设备,其中,所述virtio设备包括第一virtio设备和第二virtio设备;
将所述virtio设备的直通信息发送给所述虚拟机构建平台,其中,所述直通信息用于所述虚拟机构建平台在构建目标虚拟机时,识别所述virtio设备,并将所述virtio设备分配给所述目标虚拟机使用,所述目标虚拟机用于将所述第一virtio设备对应的第一数据发送到所述DPU智能网卡的所述虚拟设备创建模块以及将所述第二virtio设备对应的第二数据发送到所述虚拟设备创建模块,其中,所述虚拟机构建平台用于构建虚拟机管理模块,所述虚拟机管理模块用于在所述直通信息和所述目标虚拟机的内部设备的设备信息存在冲突时,修正所述内部设备的设备信息;
接收所述第一数据和所述第二数据,并通过所述块设备处理所述第一数据以及通过所述网络设备处理所述第二数据。
2.根据权利要求1所述的方法,其特征在于,所述在所述计算节点上创建virtio设备,包括:
接收所述虚拟机构建平台发送的virtio设备创建需求;
根据所述virtio设备创建需求,确定virtio设备类型,其中,所述virtio设备类型包括第一virtio设备类型和第二virtio设备类型;
根据所述virtio设备类型,创建至少一个所述第一virtio设备和/或至少一个所述第二virtio设备。
3.根据权利要求2所述的方法,其特征在于,所述根据所述virtio设备类型,创建至少一个所述第一virtio设备和/或至少一个所述第二virtio设备,包括:
根据所述virtio设备类型,获取所述第一virtio设备和/或所述第二virtio设备对应的设备参数,其中,设备参数包括第一设备参数和第二设备参数,第一virtio设备与所述第一设备参数相对应,第二virtio设备与所述第二设备参数相对应;
根据所述设备参数,确定相对应的类初始化函数、对象初始化函数和设备实现函数;
根据相对应的所述类初始化函数、所述对象初始化函数和所述设备实现函数,创建至少一个所述第一virtio设备和/或至少一个所述第二virtio设备。
4.根据权利要求1所述的方法,其特征在于,所述直通信息包括至少以下一种:PCI设备别名、产品标识、厂商标识和PCI设备类型。
5.一种virtio设备直通方法,其特征在于,应用于虚拟机构建平台,所述虚拟机构建平台中的计算节点的物理服务器与DPU智能网卡连接,所述计算节点为所述虚拟机构建平台中多个计算节点中任意一个,所述DPU智能网卡包括块设备、网络设备和虚拟设备创建模块,所述方法包括:
确定目标虚拟机规格;
根据所述目标虚拟机规格,构建目标虚拟机;
接收所述DPU智能网卡发送的直通信息;
根据所述直通信息,识别所述DPU智能网卡在所述计算节点上创建的virtio设备,并将所述virtio设备分配给所述目标虚拟机使用,其中,所述virtio设备包括第一virtio设备和第二virtio设备,所述目标虚拟机用于将所述第一virtio设备对应的第一数据发送到所述DPU智能网卡的所述虚拟设备创建模块以及将所述第二virtio设备对应的第二数据发送到所述虚拟设备创建模块,所述第一数据用于所述块设备处理,所述第二数据用于所述网络设备处理;
构建虚拟机管理模块,所述虚拟机管理模块用于在所述直通信息和所述目标虚拟机的内部设备的设备信息存在冲突时,修正所述内部设备的设备信息。
6.根据权利要求5所述的方法,其特征在于,所述根据所述目标虚拟机规格,构建目标虚拟机,包括:
获取与所述目标虚拟机规格相对应的目标虚拟机镜像;
创建目标网络;
根据所述目标虚拟机规格、所述目标虚拟机镜像和所述目标网络,构建所述目标虚拟机。
7.一种virtio设备直通装置,其特征在于,应用于DPU智能网卡,所述DPU智能网卡与虚拟机构建平台中的计算节点的物理服务器连接,所述计算节点为所述虚拟机构建平台中多个计算节点中任意一个,所述DPU智能网卡包括块设备、网络设备和虚拟设备创建模块,所述virtio设备直通装置,包括:创建单元、传输单元和处理单元,其中,
所述创建单元,用于在所述计算节点上创建virtio设备,其中,所述virtio设备包括第一virtio设备和第二virtio设备;
所述传输单元,用于将所述virtio设备的直通信息发送给所述虚拟机构建平台,其中,所述直通信息用于所述虚拟机构建平台在构建目标虚拟机时,识别所述virtio设备,并将所述virtio设备分配给所述目标虚拟机使用,所述目标虚拟机用于将所述第一virtio设备对应的第一数据发送到所述DPU智能网卡的所述虚拟设备创建模块以及将所述第二virtio设备对应的第二数据发送到所述虚拟设备创建模块,其中,所述虚拟机构建平台用于构建虚拟机管理模块,所述虚拟机管理模块用于在所述直通信息和所述目标虚拟机的内部设备的设备信息存在冲突时,修正所述内部设备的设备信息;
所述处理单元,用于接收所述第一数据和所述第二数据,并通过所述块设备处理所述第一数据以及通过所述网络设备处理所述第二数据。
8.一种电子设备,其特征在于,包括处理器、存储器、通信接口,以及一个或多个程序,所述一个或多个程序被存储在所述存储器中,并且被配置由所述处理器执行,所述程序包括用于执行如权利要求1-4或5-6任一项所述的方法中的步骤的指令。
9.一种计算机可读存储介质,其特征在于,存储用于电子数据交换的计算机程序,其中,所述计算机程序使得计算机执行如权利要求1-4或5-6任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211117077.8A CN115185647B (zh) | 2022-09-14 | 2022-09-14 | virtio设备直通方法及相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211117077.8A CN115185647B (zh) | 2022-09-14 | 2022-09-14 | virtio设备直通方法及相关装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115185647A CN115185647A (zh) | 2022-10-14 |
CN115185647B true CN115185647B (zh) | 2022-12-20 |
Family
ID=83524233
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211117077.8A Active CN115185647B (zh) | 2022-09-14 | 2022-09-14 | virtio设备直通方法及相关装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115185647B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117992171A (zh) * | 2022-10-27 | 2024-05-07 | 深圳云豹智能有限公司 | 一种云数据中心管理系统及电子设备 |
CN116881001B (zh) * | 2023-07-04 | 2024-03-01 | 中科驭数(北京)科技有限公司 | 多dpu宿主机的云平台的管控方法、装置、设备及介质 |
CN117009032A (zh) * | 2023-07-04 | 2023-11-07 | 中科驭数(北京)科技有限公司 | 虚拟化设备配置方法、装置、设备及介质 |
CN117215730B (zh) * | 2023-11-08 | 2024-02-23 | 北京火山引擎科技有限公司 | 数据传输方法、装置、设备及存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108847975A (zh) * | 2018-06-12 | 2018-11-20 | 京信通信系统(中国)有限公司 | 基于nfv架构的通信方法、装置、计算机设备及介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110955517B (zh) * | 2019-09-03 | 2021-08-20 | 华为技术有限公司 | 报文转发的方法、计算机设备和中间设备 |
CN114528032A (zh) * | 2020-10-30 | 2022-05-24 | 华为云计算技术有限公司 | 一种服务器系统以及数据处理的方法 |
CN114553635B (zh) * | 2022-02-18 | 2023-03-24 | 珠海星云智联科技有限公司 | Dpu网络设备中的数据处理方法、数据交互方法及产品 |
CN114679349B (zh) * | 2022-03-29 | 2023-07-21 | 新华三技术有限公司 | 一种数据通信方法及装置 |
-
2022
- 2022-09-14 CN CN202211117077.8A patent/CN115185647B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108847975A (zh) * | 2018-06-12 | 2018-11-20 | 京信通信系统(中国)有限公司 | 基于nfv架构的通信方法、装置、计算机设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN115185647A (zh) | 2022-10-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115185647B (zh) | virtio设备直通方法及相关装置 | |
US20240272930A1 (en) | Method and Apparatus for Creating Virtual Machine | |
EP3595244B1 (en) | Network slice management method, unit and system | |
US9667749B2 (en) | Client-initiated leader election in distributed client-server systems | |
CN107959582B (zh) | 一种切片实例的管理方法及装置 | |
CN107566541A (zh) | 容器网络资源分配方法、系统、存储介质和电子设备 | |
EP3249871A1 (en) | Method and device for updating network service descriptor | |
CN111221618B (zh) | 一种容器化虚拟网络功能的部署方法和装置 | |
CN112740642B (zh) | 通信方法及多接入边缘计算服务器 | |
WO2019137516A1 (zh) | 网络切片部署方法及其装置 | |
CN109995552B (zh) | Vnf服务实例化方法及装置 | |
CN109600769B (zh) | 通信方法及装置 | |
US11483178B2 (en) | Customer activation on edge computing environment | |
CN112035121A (zh) | 一种边缘应用部署方法及系统 | |
CN109120444A (zh) | 云资源管理方法、处理器以及存储介质 | |
CN109857464B (zh) | 用于平台部署与操作移动操作系统的系统及其方法 | |
CN111130820B (zh) | 集群管理方法、装置及计算机系统 | |
CN110869919B (zh) | 用于远程节点发现、通信信道确认和连接的方法 | |
CN114650223A (zh) | 一种Kubernetes集群的网络配置方法、装置及电子设备 | |
US11888700B2 (en) | Method and apparatus for fine-grained isolation in CN NSS domain of E2E network slice | |
CN113342457A (zh) | 基于Eureka服务注册与发现的Kubernetes调度方法 | |
CN109660575B (zh) | Nfv业务部署的实现方法和装置 | |
CN115185637A (zh) | PaaS组件管理端和虚拟机代理的通信方法及装置 | |
CN115550313A (zh) | 外接设备的通信方法、装置、电子设备和存储介质 | |
CN112532405A (zh) | 软件定义网络sdn网络构建方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |