CN117992182A - 虚拟云主机的启动方法、装置、处理设备及存储介质 - Google Patents

虚拟云主机的启动方法、装置、处理设备及存储介质 Download PDF

Info

Publication number
CN117992182A
CN117992182A CN202410108140.4A CN202410108140A CN117992182A CN 117992182 A CN117992182 A CN 117992182A CN 202410108140 A CN202410108140 A CN 202410108140A CN 117992182 A CN117992182 A CN 117992182A
Authority
CN
China
Prior art keywords
cloud host
template
virtual cloud
information
starting
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.)
Pending
Application number
CN202410108140.4A
Other languages
English (en)
Inventor
杨云鹏
邱春武
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sina Technology China Co Ltd
Original Assignee
Sina Technology China Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Sina Technology China Co Ltd filed Critical Sina Technology China Co Ltd
Priority to CN202410108140.4A priority Critical patent/CN117992182A/zh
Publication of CN117992182A publication Critical patent/CN117992182A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45575Starting, stopping, suspending or resuming virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances

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 Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Abstract

本公开实施例公开了一种虚拟云主机的启动方法、装置、处理设备及存储介质。所述方法包括:获取已启动的第一虚拟云主机的第一信息,所述第一信息包含与使用设备关联的属性信息,所述设备与所述第一虚拟云主机之间直通;基于所述第一信息生成设备的模板,所述模板用于引导虚拟云主机的启动;基于所述模板,启动第二虚拟云主机,以使所述设备与启动后的所述第二虚拟云主机之间能够直通。如此,可以基于生成的模板启动第二虚拟云主机,相较于基于BIOS或者bootloader的启动方式,能够快速地实现第二虚拟云主机与所述设备之间的直通,过程会更加简单,能够快速地实现虚拟云主机的启动,快速响应云业务的需求。

Description

虚拟云主机的启动方法、装置、处理设备及存储介质
技术领域
本公开涉及且不限于云技术领域,尤其涉及一种虚拟云主机的启动方法、装置、处理设备及存储介质。
背景技术
在云场景中,经常需要秒级启动上万个服务,具有快速响应业务的计算能力的需求。虚拟云主机的启动是一个复杂的过程,该过程包括基本输入输出系统(BIOS,BaseInput Output System)或者统一可扩展固件接口(UEFI,Unified Extensible FirmwareInterface)阶段的硬件上电自检(POST,Power On Self Test)、初始化一些基本的硬件设置、引导加载程序、内核启动等多个过程,这会导致系统启动缓慢。
发明内容
有鉴于此,本公开实施例公开了一种虚拟云主机的启动方法、装置、处理设备及存储介质,以至少实现快速地启动虚拟云主机。
根据本公开实施例的第一方面,提供一种虚拟云主机的启动方法,所述方法包括:
获取已启动的第一虚拟云主机的第一信息,所述第一信息包含与使用设备关联的属性信息,所述设备与所述第一虚拟云主机之间直通;
基于所述第一信息生成设备的模板,所述模板用于引导虚拟云主机的启动;
基于所述模板,启动第二虚拟云主机,以使所述设备与启动后的所述第二虚拟云主机之间直通。
在一些实施例中,所述方法还包括:
响应于所述第一信息的更新,基于更新后的所述第一信息更新所述模板。
在一些实施例中,
所述基于所述第一信息生成设备的模板,包括:
基于所述第一信息包含的所述属性信息,以及预先设置的设备对应的参考模板,生成设备的模板;
其中,所述参考模板包括设备属性与特征链接之间的映射关系,所述特征链接用于连接到所述设备。
在一些实施例中,所述第一信息为所述设备的寄存器信息。
在一些实施例中,所述方法还包括:
针对所述模板执行预定操作,所述预定该操作包括以下至少之一:
创建模板实例;
删除模板;
更新模板;
管理所述模板的生命周期。
在一些实施例中,在针对所述模板执行预定操作之前,所述方法还包括:
接收云平台发送的第二信息,所述第二信息用于指示对所述模板执行所述预定操作。
在一些实施例中,在基于所述模板,启动第二虚拟云主机之前,所述方法还包括:
响应于用于生成虚拟云主机的请求,生成所述第二虚拟云主机;将元数据注入所述模板中,所述元数据包括用于在所述第二虚拟云主机被启动后,所述第二虚拟云主机访问所述设备的入口的数据。
在一些实施例中,所述基于所述模板,启动第二虚拟云主机,包括:
基于所述模板中元数据确定所述第二虚拟云主机访问所述设备的入口;基于所述入口,启动所述第二虚拟云主机与所述设备之间的直通。
在一些实施例中,在启动所述第二虚拟云主机之前,所述方法还包括:
建立所述模板的存储空间与为所述第二虚拟云主机分配的内存之间的映射关系;
其中,在启动所述第二虚拟云主机过程中,所述第二虚拟云主机基于所述映射关系获取所述存储空间中的所述模板的数据。
根据本公开实施例的第二方面,提供一种虚拟云主机的启动装置,所述装置包括:
获取模块,被配置为:获取已启动的第一虚拟云主机的第一信息,所述第一信息包含与使用设备关联的属性信息,所述设备与所述第一虚拟云主机之间直通;
生成模块,被配置为:基于所述第一信息生成设备的模板,所述模板用于引导虚拟云主机的启动;
启动模块,被配置为:基于所述模板,启动第二虚拟云主机以使所述设备与启动后的所述第二虚拟云主机之间直通。
根据本公开实施例的第三方面,提供一种处理设备,所述处理设备包括:
存储器,用于存储可执行程序;
处理器,用于执行所述存储器中存储的可执行程序时,实现如本公开实施例中任一所述的方法。
根据本公开实施例的第四方面,提供一种计算机存储介质,所述计算机存储介质存储有可执行程序,所述可执行程序被处理器执行时,实现如本公开实施例中任一所述的方法。
本公开实施例中,获取已启动的第一虚拟云主机的第一信息,所述第一信息包含与使用设备关联的属性信息,所述设备与所述第一虚拟云主机之间直通。如此,可以获取到与所述设备直通的第一虚拟云主机的属性信息,该属性信息是与使用设备相关联的。基于所述第一信息生成设备的模板,所述模板用于引导虚拟云主机的启动。如此,可以获得基于属性信生成的设备的模板。基于所述模板,启动第二虚拟云主机,以使所述设备与启动后的所述第二虚拟云主机之间直通。如此,可以基于生成的模板启动第二虚拟云主机,相较于基于BIOS或者bootloader的启动方式,能够快速地实现第二虚拟云主机与所述设备之间的直通,过程会更加简单,能够快速地实现虚拟云主机的启动,快速响应云业务的需求。
附图说明
图1为根据一示例性实施例示出的一种启动方法的流程示意图。
图2为根据一示例性实施例示出的一种启动方法的流程示意图。
图3为根据一示例性实施例示出的一种虚拟云主机的启动方法的流程示意图。
图4为根据一示例性实施例示出的一种结构体的示意图。
图5为根据一示例性实施例示出的一种云平台系统的示意图。
图6为根据一示例性实施例示出的一种虚拟操作系统的示意图。
图7为根据一示例性实施例示出的一种虚拟云主机的启动方法的流程示意图。
图8为根据一示例性实施例示出的一种虚拟云主机的启动装置的示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,所描述的实施例不应视为对本发明的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
在以下的描述中,所涉及的术语“第一\第二\第三”仅仅是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本发明实施例能够以除了在这里图示或描述的以外的顺序实施。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本发明实施例的目的,不是旨在限制本发明。
为了更好地理解本公开实施例,以下通过示例性实施例对相关技术中的场景进行说明:
在一些实施例中,Linux系统的启动过程简化后,可以分为4个阶段:
阶段1:加载基本输入/输出系统(BIOS,Base Input Output System)的硬件执行自行测试;依据设置获得一个可启动的设备。
阶段2:读取并执行启动设备内主引导记录(MBR,Master Boot Record)/统一可扩展固件接口(UEFI,Unified Extensible Firmware Interface)的引导加载程序bootloader(就是grub2等程序);
阶段3:依据引导设置加载内核kernel。kernel会开始检测硬件与加载驱动程序;
阶段4:在硬件驱动成功后,kernel会主动调用初始化init进程,例如,使用比较多的进程是systemd。
需要说明的是,这个启动过程比较复杂,特别是在硬件设备比较多的场景下。例如,占用的内存比较大,需要所有的内存空间初始化为0;物理设备的直通,通常需要输入输出存储管理单元(IOMMU,Input/Output Memory Management Unit)映射到虚拟云主机的内存空间,这段内存空间的地址在分配阶段需要固定下来。
在一些实施例中,在云场景中,经常需要秒级启动上万个服务,快速响应业务的计算能力的需求,虚拟云主机的启动是一个复杂的过程,该过程包括BIOS或者UEFI阶段的上电自检、初始化一些基本的硬件设置、引导加载程序、内核启动等多个过程,导致系统启动缓慢。
为了解决启动速度的问题,提供以下实施例:
在一些实施例中,简化bootloader、kernel的加载和初始化过程。通常引导加载程序包括许多仅用于引导所必须的功能。用较少的功能编译bootloader。并且优化所需的功能。调整引导加载程序以获得最快的性能。通常使用在嵌入式设备的场景,不适合云计算场景,云计算场景更多的是虚拟设备的引导和初始化。
在一些实施例中,容器化部署安全容器。容器是一种沙盒技术,主要目的是为了将应用运行在其中,与外界隔离;及方便这个沙盒可以被转移到其它宿主机器。本质上,它是一个特殊的进程。通过名称空间(Namespace)、控制组(Control groups)和切根(chroot)技术等把资源、文件、设备、状态和配置划分到一个独立的空间。容器没有引导的过程,是所谓的“开箱即用”的业务部署方式。
在一些实施例中,BIOS或者bootloader的复杂性不允许业务用户去很容易地定制自己的引导脚本、修复问题、构建自己的运行时环境和用自己的密钥去刷入固件,而需要等待供应商的更新。BIOS或者bootloader让系统的启动从未优化的几分钟到优化后的几十秒,这样的优化对于业务来说,和理想的几秒钟的差距还有一个数量级。并且bootloader和中央处理器(CPU,Central Processing Unit)的体系架构相关,精简指令的芯片(ARM,Advanced RISC Machines)CPU和X86_64CPU的bootloader不通用,可移植型差,对于运维人员的工作是一种严重的负担。
在一些实施例中,网卡、图形处理器(GPU,Graphics Processing Unit)、NVMe(是Non-Volatile Memory express非易失性内存主机控制器接口规范的简称)直通设备的初始化的时间比较长,需要进行内存的预分配、IOMMU的映射等复杂程序,容易出现各种类型的问题。
在一些实施例中,容器化部署更为轻量化,部署启动快,常被认为是容器的核心优势之一。但是事实并非总是如此,本地镜像实例化成容器的时间很短,即“热启动”;而在本地无镜像情况下的“冷启动”,需要先从镜像仓库下载镜像并解压缩后才能拉起容器,受网络和磁盘性能影响较大,耗时数分钟;大规模批量冷启动甚至可能导致注册表Registry因网络拥堵而无法响应。并且容器需要应用的更新适配,在单根输入输出虚拟化(SR-IOV,Single Root I/OVirtualization)场景下虚拟设备(VF,Virtual Function)个数和容器的密度之间的不匹配,也不能提供理想的业务密度。即使最近比较新的安全容器技术,也同样面对设备直通的问题,虽然安全容器在启动时间上依然保持了较大的优势,但通常类似kata的安全容器对外部外设部件互连标准(PCI,Peripheral Component Interconnect)的支持比较弱,难以适应各种类型的直通设备,特别是有些设备还需要定制的驱动。
在一些实施例中,通过虚拟化设备的内存映射,绕过BIOS和bootloader阶段,通过批量化、大规模的高性能云主机的部署,同时兼容各种类型云主机,提供不同设备支持的了扩展性,兼容ARM、X86_64系统架构。
在一些实施例中,请参见图1,示出了相关技术中的云主机启动的示意图;请参见图2,示出了本公开中云主机启动的示意图。
如图3所示,本公开实施例中提供了一种虚拟云主机的启动方法,所述方法包括:
步骤S31、获取已启动的第一虚拟云主机的第一信息,所述第一信息包含与使用设备关联的属性信息,所述设备与所述第一虚拟云主机之间直通;
步骤S32、基于所述第一信息生成设备的模板;
步骤S33、基于所述模板的引导,启动第二虚拟云主机,以使所述设备与启动后的所述第二虚拟云主机之间直通。
本公开实施例可以应用于实现虚拟云主机的模块、装置和设备中,例如,可以是终端中,也可以是服务器中,在此不做限定,需要说明的是,模块可以是功能模块。
在一些实施例中,本公开涉及的虚拟云主机可以是基于内核内建的虚拟机(KVM,Kernel-based Virtual Machine)。
在一些实施例中,本公开中的虚拟云主机的启动方法可以应用于以下至少之一的设备直通场景:单根I/O虚拟化(SRIOV,Single Root I/O Virtualization)、非易失性高速传输总线(NVMe,Non-Volatile Memory express)和虚拟的图像处理单元(vGPU,virtualGraphics Processing Unit)。需要说明的是,设备直通是指将主机上的物理设备直接呈现给一台虚拟机,虚拟机可以直接访问该设备资源的一种使用方式。使用设备直通的方式可以让虚拟机获得良好的I/O性能。
在一些实施例中,第一虚拟云主机可以是当前已经创建的原始云主机。示例性地,可以是某个kubernates集群中当前的主机。
在一些实施例中,所述设备与所述第一虚拟云主机之间直通。示例性地,所述第一虚拟云主机与至少一个设备之间直通。当然也可以理解为,所述第一虚拟云主机与至少一个设备的硬件资源之间直通,在此不做限定。
需要说明的是,所述设备与所述第一虚拟云主机之间直通的前提条件是所述第一虚拟云主机具备与所述设备直通的能力,即所述第一虚拟云主机支持所述设备与所述第一虚拟云主机之间直通。
在一些实施例中,第一信息包含与使用设备关联的属性信息。属性信息可以是设备的特征信息,例如,设备的资源信息和参数信息等。示例性地,属性信息可以是设备的寄存器信息,例如,可以是PCI的配置空间(Configuration Space)信息。
在一些实施例中,可以通过文件FW_CFG_FILE_DIR(固件配置文件指引)这个约定的数据项得到所有FWCfgFiles(固件配置文件)数据。该结构体为一个目录,包含一类设备的所有属性。在一些实施例中,该目录可以根据实际硬件类型需求扩展。
在一些实施例中,设备可以是fw_cfg(固件配置)设备。fw_cfg设备使用FWCfgState(固件配置状态)结构体表示,其中有一个二维数组entries(入口)成员用来保存数据。entries的第一维有两个元素,分别表示与架构相关的数据和通用数据。
在一些实施例中,基于fw_cfg扩展的nevis_fw可以是模板的管理设备。
在一些实施例中,通过nevis_fw应用程序接口(API,Application ProgrammingInterface),访问第一虚拟云主机的设备,使用dump_device操作获得第一虚拟云主机的设备树(device tree)和对应的设备属性信息。
在一些实施例中,获取已启动的第一虚拟云主机的第一信息,所述第一信息包含与使用设备关联的属性信息,所述设备与所述第一虚拟云主机之间直通。基于所述第一信息生成设备的模板,所述模板用于引导虚拟云主机的启动。响应于所述第一信息的更新,基于更新后的所述第一信息更新所述模板。基于所述模板,启动第二虚拟云主机,以使所述设备与启动后的所述第二虚拟云主机之间直通。
在一些实施例中,获取已启动的第一虚拟云主机的第一信息,所述第一信息包含与使用设备关联的属性信息,所述设备与所述第一虚拟云主机之间直通。建立参考模板中特征链接与所述属性信息之间的映射关系;基于所述参考模板,得到所述设备的模板;所述模板用于引导虚拟云主机的启动。基于所述模板,启动第二虚拟云主机,以使所述设备与启动后的所述第二虚拟云主机之间直通。
在一些实施例中,获取已启动的第一虚拟云主机的第一信息,所述第一信息包含与使用设备关联的属性信息,所述设备与所述第一虚拟云主机之间直通。基于所述第一信息包含的所述属性信息,以及预先设置的设备对应的参考模板,生成设备的模板;其中,所述参考模板包括设备属性与特征链接之间的映射关系,所述特征链接用于连接到所述设备;所述模板用于引导虚拟云主机的启动。基于所述模板,启动第二虚拟云主机,以使所述设备与启动后的所述第二虚拟云主机之间直通。
在一些实施例中,可以将该设备属性信息存储到对应的链接链表(与参考模板对应)中。
在一些实施例中,请参见图4,FWCfgEntry类型链接到FWCfgState设备中。
在一些实施例中,不同的虚拟云主机的属性信息(例如pciconfiguration space)大部分类型都是相同的,只有部分不同的指标需要清空clear_entry_data,并作为占位符使用,以便后续快速启动虚拟云主机使用。
在一些实施例中,获取已启动的第一虚拟云主机的第一信息,所述第一信息包含与使用设备关联的属性信息,所述设备与所述第一虚拟云主机之间直通。基于所述第一信息生成设备的模板,所述模板用于引导虚拟云主机的启动。针对所述模板执行预定操作,所述预定该操作包括以下至少之一:创建模板实例;删除模板;更新模板;管理所述模板的生命周期。基于所述模板,启动第二虚拟云主机,以使所述设备与启动后的所述第二虚拟云主机之间能够直通。
在一些实施例中,获取已启动的第一虚拟云主机的第一信息,所述第一信息包含与使用设备关联的属性信息,所述设备与所述第一虚拟云主机之间直通。基于所述第一信息生成设备的模板,所述模板用于引导虚拟云主机的启动。接收云平台发送的第二信息,所述第二信息用于指示对所述模板执行所述预定操作。针对所述模板执行所述预定操作,所述预定该操作包括以下至少之一:创建模板实例;删除模板;更新模板;管理所述模板的生命周期。基于所述模板,启动第二虚拟云主机,以使所述设备与启动后的所述第二虚拟云主机之间能够直通。
在一些实施例中,获取已启动的第一虚拟云主机的第一信息,所述第一信息包含与使用设备关联的属性信息,所述设备与所述第一虚拟云主机之间直通。基于所述第一信息生成设备的模板,所述模板用于引导虚拟云主机的启动。生成第二虚拟云主机。基于所述模板,启动所述第二虚拟云主机;其中,所述设备与启动后的所述第二虚拟云主机之间能够直通。
在一些实施例中,获取第一虚拟云主机的第一信息,所述第一信息包含与使用设备关联的属性信息,所述设备与所述第一虚拟云主机之间直通。基于所述第一信息生成设备的模板,所述模板用于引导虚拟云主机的启动。生成第二虚拟云主机。响应于生成所述第二虚拟云主机,将元数据注入所述模板中,所述元数据包括用于在所述第二虚拟云主机被启动后所述第二虚拟云主机访问所述设备的入口的数据。基于所述模板,启动所述第二虚拟云主机;其中,所述设备与启动后的所述第二虚拟云主机之间能够直通。
在一些实施例中,获取第一虚拟云主机的第一信息,所述第一信息包含与使用设备关联的属性信息,所述设备与所述第一虚拟云主机之间直通。基于所述第一信息生成设备的模板,所述模板用于引导虚拟云主机的启动。响应于用于生成虚拟云主机的请求,生成所述第二虚拟云主机;将元数据注入所述模板中,所述元数据包括用于在所述第二虚拟云主机被启动后所述第二虚拟云主机访问所述设备的入口的数据。基于所述模板,启动所述第二虚拟云主机;其中,所述设备与启动后的所述第二虚拟云主机之间能够直通。
在一些实施例中,对于约定好的数字、字符串等元数据,直接添加到entries中即可,可以通过约定好的索引对其进行访问。示例性地,函数fw_cfg_init1使用了一些约定的索引,例如,第FW_CFG_SIGNATURE个项是一个标记字符串,第FW_CFG_UUID个项存的是虚拟机uuid。这些约定的索引可以使得nevis_fw driver方便地读取这些数据。
在一些实施例中,元数据可以是自定义的数据,即需要提供名字来访问的数据,则需要更复杂的处理,这类数据可以被称为文件。FWCfgState结构中有一些域专门用来处理文件的添加。其中,类型为FWCfgFiles、名为files的成员用来保存fw_cfg中的文件。FWCfgFiles的count成员表示文件项的大小,f表示所有的文件项,其类型为FWCfgFile。FWCfgFile中的size表示文件大小,select表示其在FWCfgState的entries中的索引,name表示文件名字。
在一些实施例中,fw_cfg NVRAM设备存储的初始化数据类型、数据格式、大小、偏移量信息可以自行设置,只要nevis_fw Driver和nevis_fw metadata统一即可,统一数据以便云主机在启动时,能够使用初始化数据,并与fw_cfg设备交互。
在一些实施例中,可以通过云平台批量创建虚拟机,对应的Hypervisor(指虚拟监视器)分配对应虚拟机资源,特别是硬件资源,之后通过API把分配的资源传给动态运行模块,动态运行模块调用nevis_fw set_entry_data设置每个虚拟机对应每个硬件类型入口(entry)的数据(data)。
在一些实施例中,获取已启动的第一虚拟云主机的第一信息,所述第一信息包含与使用设备关联的属性信息,所述设备与所述第一虚拟云主机之间直通。基于所述第一信息生成设备的模板,所述模板用于引导虚拟云主机的启动。响应于用于生成虚拟云主机的请求,生成所述第二虚拟云主机;将元数据注入所述模板中,所述元数据包括用于在所述第二虚拟云主机被启动后所述第二虚拟云主机访问所述设备的入口的数据。基于所述模板中的元数据确定所述第二虚拟云主机访问所述设备的入口;基于所述入口,启动所述第二虚拟云主机与所述设备之间的直通;其中,所述设备与启动后的所述第二虚拟云主机之间能够直通。
在一些实施例中,获取已启动的第一虚拟云主机的第一信息,所述第一信息包含与使用设备关联的属性信息,所述设备与所述第一虚拟云主机之间直通。基于所述第一信息生成设备的模板,所述模板用于引导虚拟云主机的启动。响应于用于生成虚拟云主机的请求,生成所述第二虚拟云主机;将元数据注入所述模板中,所述元数据包括用于在所述第二虚拟云主机被启动后所述第二虚拟云主机访问所述设备的入口的数据。建立所述模板的存储空间与为所述第二虚拟云主机分配的内存之间的映射关系;其中,在启动所述第二虚拟云主机过程中所述第二虚拟云主机基于所述映射关系获取所述存储空间中的所述模板的数据。基于所述模板中的元数据确定所述第二虚拟云主机访问所述设备的入口;基于所述入口,启动所述第二虚拟云主机;其中,所述设备与启动后的所述第二虚拟云主机之间直通。
在一些实施例中,nevis_fw Driver从nevis_fw NVRAM获得entry data,并写入到nevis_fw Memory。
在一些实施例中,可以把fw_cfg NVRAM的内存映射到nevis_fw Memory,这样虚拟云主机的启动速率更高,最终的效果保证云主机的kernel可以直接访问到设备的配置信息,因为模板和元数据映射的到虚拟机的地址空间(AddressSpace)是固定的,不必在启动时分配内存空间、初始化数据,kernel可以实现延迟初始化(lazy initialization),从而加速云主机的启动。
本公开实施例中,获取已启动的第一虚拟云主机的第一信息,所述第一信息包含与使用设备关联的属性信息,所述设备与所述第一虚拟云主机之间直通。如此,可以获取到与所述设备直通的第一虚拟云主机的属性信息,该属性信息是与使用设备相关联的。基于所述第一信息生成设备的模板,所述模板用于引导虚拟云主机的启动。如此,可以获得基于属性信生成的设备的模板。基于所述模板,启动第二虚拟云主机,以使所述设备与启动后的所述第二虚拟云主机之间直通。如此,可以基于生成的模板启动第二虚拟云主机,相较于基于BIOS或者bootloader的启动方式,能够快速地实现第二虚拟云主机与所述设备之间的直通,过程会更加简单,能够快速地实现虚拟云主机的启动,快速响应云业务的需求。
需要说明的是,本领域内技术人员可以理解,本公开实施例提供的方法,可以被单独执行,也可以与本公开实施例中一些方法或相关技术中的一些方法一起被执行。
为了更好地理解本公开实施例,以下通过一个示例性实施例对本公开技术方案进行进一步说明:
请参见图5,本公开的方案可以应用于云系统,所述云系统可以包括以下至少之一的模块:
原始虚拟云主机模块(对应第一虚拟云主机)51;其中,原始虚拟云主机的模块可以生成设备的模板。模板主要包括设备的寄存器信息,例如,PCI的Configuration Space;
设备模板模块52;其中,设备模板模块可以用于:管理模板的生命周期;通过原始虚拟云主机的信息生成模板;创建模板示例、删除模板和更新模板等;
动态运行模块53;其中,动态运行模块用于通过模板生成设备的最终信息,且可以注入对应的虚拟云主机中。这个过程可以和虚拟云主机的生命周期关联;
对外API接口54;其中,云平台可以通过对外API接口管理设备的模板和设备的生成,从而和云平台集成,为云平台提供更强大的虚拟云主机的启动速度,提高云平台的服务质量(QoS,Quality of Service)。
在一些实施例中,模板可以是一种简单的firmware设备,能够拟引导特定类型的云主机,替代了标准的BIOS或者bootloader,主要目的是在大批量部署云主机时,提高部署云主机的效率,快速提供云主机的业务支撑能力。因为绕过了设备扫描的过程,同时又支持各种类型的硬件设备,包括SRIOV passthrogh设备。
在一些实施例中,请参见图6,基于固件配置fw_cfg扩展的nevis_fw就是设备模板的管理设备,以固件的形式存储在内核模块qemu(是一款开源的模拟器及虚拟机监管器(Virtual Machine Monitor,VMM))或者kvm的内存区域MemoryRegion中。
示例1,请参见图7,提供一种虚拟云主机的启动方法,所述方法包括:
步骤S71、生成设备的模板;
在一个实施例中,通过文件FW_CFG_FILE_DIR这个约定的数据项就可以得到所有FWCfgFiles数据,该结构体扮演一个目录,包含一类设备的所有属性,可以根据实际硬件类型需求扩展。
在一个实施例中,fw_cfg设备使用FWCfgState结构体表示,其中有一个二维数组entries成员用来保存数据。entries的第一维有两个元素,分别表示与架构相关的数据和通用数据。
在一个实施例中,通过nevis_fw API,访问原始虚拟机的设备,使用dump_device操作获得虚拟机的device tree和对应的设备属性,并存储到对应的链接链表中,如图4中的FWCfgEntry类型,并链接到FWCfgState设备中;不同的虚拟机的pciconfigurationspace大部分类型都是相同的,只有部分不同的指标需要清空clear_entry_data,并作为占位符使用,以便后续快速启动虚拟云主机使用。
步骤S72、对模板和元数据的管理;
在一个实施例中,对于约定好的数字、字符串等简单的数据,直接添加到entries中即可,可以通过约定好的索引对其进行访问。函数fw_cfg_init1使用了一些约定的索引,如第FW_CFG_SIGNATURE个项是一个标记字符串,第FW_CFG_UUID个项存的是虚拟机uuid。这些约定的索引可以使得nevis_fw driver方便地读取这些数据。
在一个实施例中,对于其他数据,通常是自定义的数据,即需要提供名字来访问的数据,则需要更复杂的处理,这类数据被称为文件。FWCfgState结构中有一些域专门用来处理文件的添加,其中类型为FWCfgFiles、名为files的成员用来保存fw_cfg中的文件。FWCfgFiles的count成员表示文件项的大小,f表示所有的文件项,其类型为FWCfgFile。FWCfgFile中的size表示文件大小,select表示其在FWCfgState的entries中的索引,name表示文件名字。
在一个实施例中,fw_cfg NVRAM设备存储的初始化数据类型、数据格式、大小、偏移量信息可以自行设置,只要nevis_fw Driver和nevis_fw metadata统一即可,统一数据以便云主机在启动时,能够使用初始化数据,并与fw_cfg设备交互。
步骤S73、模板注入元数据,批量生成虚拟机;
运维人员通过云平台批量创建虚拟机,对应的Hypervisor分配对应虚拟机资源,特别是硬件资源,之后通过API把分配的资源传给动态运行模块,动态运行模块调用nevis_fw set_entry_data设置每个虚拟每个硬件类型entry的data。
步骤S74、虚拟云主机中恢复restore相关设备的状态,并开始运行。
在一个实施例中,nevis_fw Driver从nevis_fw NVRAM获得entry data,并写入到nevis_fw Memory,更极致的做法,可以把fw_cfg NVRAM的内存映射到nevis_fw Memory,这样虚拟云主机的启动速率更高,最终的效果保证云主机的kernel可以直接访问到设备的配置信息,因为模板和元数据映射的到虚拟机的AddressSpace是固定的,不必在启动时分配内存空间、初始化数据,kernel可以实现lazy initialization,从而加速云主机的启动。
本公开实施例中,一方面,加速虚拟云主机的开机启动,快速响应业务的资源需求。由于没有BIOS或者bootloader阶段,且在启动阶段不再有kernel数据的初始化,特别是硬件设备的scan、initialize等操作,使虚拟机在启动阶段读取注入的元数据,从而能够加速系统的开启,这个方案对于网卡、GPU、NVMe设备直通的硬件设备效果更明显,因为设备直通需要IOMMU预分配内存,本方案只需要kernel读取注入的数据,同时在后续需要的时候lazy initializaiton。
第二方面,可以批量创建虚拟云主机,提高业务资源申请的并发量。同样因为虚拟云主机的引导阶段缩短,加上kernel的lazy initializaiton,使得虚拟云主机启动阶段所分配和使用的资源极大地减少,同样的资源的情况下,本方案可以支持更多的云主机同时并发启动,更快的提供业务所需要的资源。
第三方面,nevis_fw使用简单且标准化。由于nevis_fw是作为一个fw_cfg的扩展设备来使用的,只需要扩展相关的数据类型,扩展fw_cfg对应的读写驱动即可,对云平台、业务的修改比较小,所以容易实现,而对用户确实无感知的,不会感觉到nevis_fw的存在。
需要说明的是,本领域内技术人员可以理解,本公开实施例提供的方法,可以被单独执行,也可以与本公开实施例中一些方法或相关技术中的一些方法一起被执行。
如图8所示,本公开实施例中提供了一种虚拟云主机的启动装置,其特征在于,所述装置包括:
获取模块81,被配置为:获取已启动的第一虚拟云主机的第一信息,所述第一信息包含与使用设备关联的属性信息,所述设备与所述第一虚拟云主机之间直通;
生成模块82,被配置为:基于所述第一信息生成设备的模板,所述模板用于引导虚拟云主机的启动;
启动模块83块,被配置为:基于所述模板,启动第二虚拟云主机,以使所述设备与启动后的所述第二虚拟云主机之间直通。
需要说明的是,本领域内技术人员可以理解,本公开实施例提供的方法,可以被单独执行,也可以与本公开实施例中一些方法或相关技术中的一些方法一起被执行。
本公开实施例提供了一种处理设备,所述处理设备包括:
存储器,用于存储可执行程序;
处理器,用于执行所述存储器中存储的可执行程序时,实现如本公开实施例中任一所述的方法。
可以理解,存储器可以是易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(ROM,Read Only Memory)、可编程只读存储器(PROM,Programmable Read-Only Memory)、可擦除可编程只读存储器(EPROM,Erasable Programmable Read-Only Memory)、电可擦除可编程只读存储器(EEPROM,Electrically Erasable Programmable Read-Only Memory)、磁性随机存取存储器(FRAM,ferromagnetic random access memory)、快闪存储器(Flash Memory)、磁表面存储器、光盘、或只读光盘(CD-ROM,Compact Disc Read-Only Memory);磁表面存储器可以是磁盘存储器或磁带存储器。易失性存储器可以是随机存取存储器(RAM,Random AccessMemory),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(SRAM,Static Random Access Memory)、同步静态随机存取存储器(SSRAM,Synchronous Static Random Access Memory)、动态随机存取存储器(DRAM,Dynamic Random Access Memory)、同步动态随机存取存储器(SDRAM,SynchronousDynamic Random Access Memory)、双倍数据速率同步动态随机存取存储器(DDRSDRAM,Double Data Rate Synchronous Dynamic Random Access Memory)、增强型同步动态随机存取存储器(ESDRAM,Enhanced Synchronous Dynamic Random Access Memory)、同步连接动态随机存取存储器(SLDRAM,SyncLink Dynamic Random Access Memory)、直接内存总线随机存取存储器(DRRAM,Direct Rambus Random Access Memory)。本申请实施例描述的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
其中,本发明揭示的方法可以应用于所述处理器中,或者由所述处理器实现。处理器可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,语音转换的方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。处理器可以实现或者执行本发明中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本发明所公开的方法的步骤,可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于存储介质中,该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成本申请实施例提供的语音转换的方法的步骤。
本发明还提供了一种计算机存储介质,所述计算机存储介质存储有可执行程序,所述可执行程序被处理器执行时,实现如本公开实施例中任一所述的方法。具体可以是计算机可读存储介质,例如包括存储计算机程序的存储器,上述计算机程序可由处理设备的处理器执行,以完成本申请实施例方法所述的步骤。计算机可读存储介质可以是ROM、PROM、EPROM、EEPROM、Flash Memory、磁表面存储器、光盘、或CD-ROM等存储器。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明披露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

Claims (12)

1.一种虚拟云主机的启动方法,其特征在于,所述方法包括:
获取已启动的第一虚拟云主机的第一信息,所述第一信息包含与使用设备关联的属性信息,所述设备与所述第一虚拟云主机之间直通;
基于所述第一信息生成设备的模板,所述模板用于引导虚拟云主机的启动;
基于所述模板,启动第二虚拟云主机,以使所述设备与启动后的所述第二虚拟云主机之间直通。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
响应于所述第一信息的更新,基于更新后的所述第一信息更新所述模板。
3.根据权利要求1所述的方法,其特征在于,所述基于所述第一信息生成设备的模板,包括:
基于所述第一信息包含的所述属性信息,以及预先设置的设备对应的参考模板,生成设备的模板;其中,所述参考模板包括设备属性与特征链接之间的映射关系,所述特征链接用于连接到所述设备。
4.根据权利要求1至3中任一项所述的方法,其特征在于,所述第一信息为所述设备的寄存器信息。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
针对所述模板执行预定操作,所述预定操作包括以下至少之一:
创建模板实例;
删除模板;
更新模板;
管理所述模板的生命周期。
6.根据权利要求5所述的方法,其特征在于,在针对所述模板执行预定操作之前,所述方法还包括:
接收云平台发送的第二信息,所述第二信息用于指示对所述模板执行所述预定操作。
7.根据权利要求1所述的方法,其特征在于,在基于所述模板,启动第二虚拟云主机之前,所述方法还包括:
响应于用于生成虚拟云主机的请求,生成所述第二虚拟云主机;
将元数据注入所述模板中,所述元数据包括用于在所述第二虚拟云主机被启动后,所述第二虚拟云主机访问所述设备的入口的数据。
8.根据权利要求7所述的方法,其特征在于,所述基于所述模板,启动第二虚拟云主机,包括:
基于所述模板中的元数据,确定所述第二虚拟云主机访问所述设备的入口;
基于所述入口,启动所述第二虚拟云主机与所述设备之间的直通。
9.根据权利要求1述的方法,其特征在于,在启动所述第二虚拟云主机之前,所述方法还包括:
建立所述模板的存储空间与为所述第二虚拟云主机分配的内存之间的映射关系;
其中,在启动所述第二虚拟云主机过程中,所述第二虚拟云主机基于所述映射关系获取所述存储空间中的所述模板的数据。
10.一种虚拟云主机的启动装置,其特征在于,所述装置包括:
获取模块,被配置为:获取已启动的第一虚拟云主机的第一信息,所述第一信息包含与使用设备关联的属性信息,所述设备与所述第一虚拟云主机之间直通;
生成模块,被配置为:基于所述第一信息生成设备的模板,所述模板用于引导虚拟云主机的启动;
启动模块,被配置为:基于所述模板,启动第二虚拟云主机,以使所述设备与启动后的所述第二虚拟云主机之间直通。
11.一种处理设备,其特征在于,所述处理设备包括:
存储器,用于存储可执行程序;
处理器,用于执行所述存储器中存储的可执行程序时,实现如权利要求1至9任一所述的方法。
12.一种计算机存储介质,其特征在于,所述计算机存储介质存储有可执行程序,所述可执行程序被处理器执行时,实现如权利要求1至9任一所述的方法。
CN202410108140.4A 2024-01-25 2024-01-25 虚拟云主机的启动方法、装置、处理设备及存储介质 Pending CN117992182A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410108140.4A CN117992182A (zh) 2024-01-25 2024-01-25 虚拟云主机的启动方法、装置、处理设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410108140.4A CN117992182A (zh) 2024-01-25 2024-01-25 虚拟云主机的启动方法、装置、处理设备及存储介质

Publications (1)

Publication Number Publication Date
CN117992182A true CN117992182A (zh) 2024-05-07

Family

ID=90890670

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410108140.4A Pending CN117992182A (zh) 2024-01-25 2024-01-25 虚拟云主机的启动方法、装置、处理设备及存储介质

Country Status (1)

Country Link
CN (1) CN117992182A (zh)

Similar Documents

Publication Publication Date Title
CN106227579B (zh) 一种Docker容器构建方法及Docker管理控制台
US7493460B2 (en) Preboot memory of a computer system
US8370835B2 (en) Method for dynamically generating a configuration for a virtual machine with a virtual hard disk in an external storage device
US5574915A (en) Object-oriented booting framework
US8407396B2 (en) Providing block data access for an operating system using solid-state memory
US11016785B2 (en) Method and system for mirror image package preparation and application operation
US20030110369A1 (en) Firmware extensions
US20120204173A1 (en) Virtual machine configuration system
US20220075760A1 (en) System to support native storage of a container image on a host operating system for a container running in a virtual machine
US10268628B2 (en) Method for extracting BIOS attributes for BIOS management and system therefor
US20070011444A1 (en) Method, apparatus and system for bundling virtualized and non-virtualized components in a single binary
CN105739961B (zh) 一种嵌入式系统的启动方法和装置
EP1485797B1 (en) Boot process
US10620963B2 (en) Providing fallback drivers for IO devices in a computing system
US20200341744A1 (en) Fragmented firmware storage system and method therefor
CN113826076B (zh) 可扩展且安全的容器
US6961848B2 (en) System and method for supporting legacy operating system booting in a legacy-free system
CN108292233B (zh) 开启虚拟机的应用处理器
US10534732B2 (en) Exposing memory-mapped IO devices to drivers by emulating PCI bus and PCI device configuration space
US10552172B2 (en) Virtual appliance supporting multiple instruction set architectures
US9778936B1 (en) Booting a computing system into a manufacturing mode
Rothman et al. Harnessing the UEFI Shell: Moving the platform beyond DOS
US11928214B2 (en) Enabling SPI firmware updates at runtime
CN117992182A (zh) 虚拟云主机的启动方法、装置、处理设备及存储介质
US20230023945A1 (en) Orchestrating and Automating Product Deployment Flow and Lifecycle Management

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