基于主机迁移的硬件设备配置方法、装置及设备转让专利

申请号 : CN202110889197.9

文献号 : CN113326105B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张勇程方全

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

摘要 :

本发明公开了一种基于主机迁移的硬件设备配置方法、装置及设备,属于主机迁移技术领域。本发明通过基于本地硬盘创建一虚拟机,获取硬件设备配置信息,并根据硬件设备配置信息进行设备虚拟,以只读状态透传至虚拟机,根据硬件设备配置信息对虚拟机的操作系统中各设备的驱动程序的初始化行为进行响应,并将驱动程序初始化后的配置保存至主机迁移后的操作系统,以完成主机迁移的硬件设备自动配置。本发明通过将硬件设备只读透传至虚拟机中,根据硬件设备配置信息在虚拟机的操作系统中安装设备驱动程序,对只读透传设备进行配置并保存,以完成主机迁移的硬件设备自动配置,无需人工修正,提高迁移效率。

权利要求 :

1.一种基于主机迁移的硬件设备配置方法,其特征在于,所述基于主机迁移的硬件设备配置方法包括:

基于本地硬盘创建一虚拟机;

获取硬件设备配置信息,并根据所述硬件设备配置信息进行设备虚拟,以只读状态透传至所述虚拟机;

根据所述硬件设备配置信息在所述虚拟机的操作系统中安装设备驱动程序;

根据所述硬件设备配置信息对所述虚拟机的操作系统中各设备的驱动程序的初始化行为进行响应,并将驱动程序初始化后的配置保存至主机迁移后的操作系统,以完成主机迁移的硬件设备自动配置;

其中,所述基于本地硬盘创建一虚拟机,包括:在源主机的硬盘空间中获取一个空闲区域,对所述空闲区域进行分卷压缩,得到保留区域;

根据所述保留区域的容量对本地硬盘空间进行分卷压缩,得到迁移区域;

在所述迁移区域上安装预定操作系统,根据所述预定操作系统与本地硬盘创建一虚拟机,并基于迁移后的操作系统启动所述虚拟机。

2.如权利要求1所述的基于主机迁移的硬件设备配置方法,其特征在于,所述获取硬件设备配置信息,并根据所述硬件设备配置信息进行设备虚拟,以只读状态透传至所述虚拟机,包括:

获取设备信息,将所述设备信息输入至机器学习模型中进行训练,得到机器学习引擎;

将机器学习引擎编译到所述预定操作系统的内核中,扫描并保存硬件设备信息;

将所述硬件设备信息输入至机器学习引擎中进行学习训练,得到硬件设备配置信息,并根据所述硬件设备配置信息进行设备虚拟,以只读状态透传至所述虚拟机。

3.如权利要求1所述的基于主机迁移的硬件设备配置方法,其特征在于,所述根据所述硬件设备配置信息在所述虚拟机的操作系统中安装设备驱动程序,包括:根据所述硬件设备配置信息从所述虚拟机的虚拟光驱中获取待安装的设备驱动程序信息;

根据所述设备驱动程序信息在所述虚拟机的操作系统中安装设备驱动程序。

4.如权利要求3所述的基于主机迁移的硬件设备配置方法,其特征在于,所述根据所述硬件设备配置信息从所述虚拟机的虚拟光驱中获取待安装的设备驱动程序信息,包括:获取本地连接设备的驱动程序信息,根据所述驱动程序信息生成光盘镜像文件;

根据所述光盘镜像文件在虚拟机中虚拟一个光驱设备,得到虚拟光驱;

根据所述硬件设备配置信息从所述虚拟光驱中获取待安装的设备驱动程序信息。

5.如权利要求3所述的基于主机迁移的硬件设备配置方法,其特征在于,所述根据所述设备驱动程序信息在所述虚拟机的操作系统中安装设备驱动程序,包括:获取源主机操作系统支持的所有类型的硬盘控制器,选择其中任意一种类型的硬盘控制器进行虚拟,得到虚拟硬盘控制器;

获取本地硬盘数据,基于本地硬盘数据在所述虚拟硬盘控制器中虚拟一个硬盘,得到虚拟硬盘;

基于虚拟硬盘的操作系统启动虚拟机,并根据所述设备驱动程序信息在所述虚拟机的操作系统中安装设备驱动程序。

6.如权利要求1至5任一项所述的基于主机迁移的硬件设备配置方法,其特征在于,所述根据所述硬件设备配置信息对所述虚拟机的操作系统中各设备的驱动程序的初始化行为进行响应,并将驱动程序初始化后的配置保存至主机迁移后的操作系统,以完成主机迁移的硬件设备自动配置,包括:

根据所述硬件设备配置信息对所述虚拟机的操作系统中各设备的驱动程序的初始化行为进行响应,得到初始化设备;

将所述初始化设备的驱动程序及所述驱动程序对应的配置信息保存至主机迁移后的操作系统,以完成主机迁移的硬件设备自动配置。

7.一种基于主机迁移的硬件设备配置装置,其特征在于,所述基于主机迁移的硬件设备配置装置包括:

透传模块,用于基于本地硬盘创建一虚拟机;

透传模块,还用于获取硬件设备配置信息,并根据所述硬件设备配置信息进行设备虚拟,以只读状态透传至所述虚拟机;

配置模块,用于根据所述硬件设备配置信息在所述虚拟机的操作系统中安装设备驱动程序;

透传模块,还用于根据所述硬件设备配置信息对所述虚拟机的操作系统中各设备的驱动程序的初始化行为进行响应;

配置模块,还用于将驱动程序初始化后的配置保存至主机迁移后的操作系统,以完成主机迁移的硬件设备自动配置;

透传模块,还用于在源主机的硬盘空间中获取一个空闲区域,对所述空闲区域进行分卷压缩,得到保留区域,根据所述保留区域的容量对本地硬盘空间进行分卷压缩,得到迁移区域,在所述迁移区域上安装预定操作系统,根据所述预定操作系统与本地硬盘创建一虚拟机,并基于迁移后的操作系统启动所述虚拟机。

8.一种基于主机迁移的硬件设备配置设备,其特征在于,所述基于主机迁移的硬件设备配置设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的基于主机迁移的硬件设备配置程序,所述基于主机迁移的硬件设备配置程序配置为实现如权利要求1至6中任一项所述的基于主机迁移的硬件设备配置方法。

9.一种存储介质,其特征在于,所述存储介质上存储有基于主机迁移的硬件设备配置程序,所述基于主机迁移的硬件设备配置程序被处理器执行时实现如权利要求1至6任一项所述的基于主机迁移的硬件设备配置方法。

说明书 :

基于主机迁移的硬件设备配置方法、装置及设备

技术领域

[0001] 本发明涉及主机迁移技术领域,尤其涉及一种基于主机迁移的硬件设备配置方法、装置及设备。

背景技术

[0002] 主机迁移是指把操作系统及业务从一台计算机迁移到另外一台计算机。随着计算机技术的发展,越来越多的数据中心都有操作系统及业务迁移的需求,目标主机的硬件设
备和源主机的硬件设备存在有不一致的情况,迁移后的操作系统可能因未安装系统操作所
需的驱动程序,而导致系统启动失败或者系统工作异常。目前,操作系统迁移未安装所需的
驱动程序时,目标主机无法正常使用,需要人工修正驱动程序,但人工修正操作复杂,修正
耗时较长。
[0003] 上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。

发明内容

[0004] 本发明的主要目的在于提供一种基于主机迁移的硬件设备配置方法,旨在解决现有技术中需要对迁移后操作系统的驱动程序进行人工修正,迁移效率较低的技术问题。
[0005] 为实现上述目的,本发明提供了一种基于主机迁移的硬件设备配置方法,所述基于主机迁移的硬件设备配置方法包括以下步骤:
[0006] 基于本地硬盘创建一虚拟机;
[0007] 获取硬件设备配置信息,并根据所述硬件设备配置信息进行设备虚拟,以只读状态透传至所述虚拟机;
[0008] 根据所述硬件设备配置信息在所述虚拟机的操作系统中安装设备驱动程序;
[0009] 根据所述硬件设备配置信息对所述虚拟机的操作系统中各设备的驱动程序的初始化行为进行响应,并将驱动程序初始化后的配置保存至主机迁移后的操作系统,以完成
主机迁移的硬件设备自动配置。
[0010] 可选地,所述基于本地硬盘创建一虚拟机,包括:
[0011] 在源主机的硬盘空间中获取一个空闲区域,对所述空闲区域进行分卷压缩,得到保留区域;
[0012] 根据所述保留区域的容量对本地硬盘空间进行分卷压缩,得到迁移区域;
[0013] 在所述迁移区域上安装预定操作系统,根据所述预定操作系统与本地硬盘创建一虚拟机,并基于迁移后的操作系统启动所述虚拟机。
[0014] 可选地,所述获取硬件设备配置信息,并根据所述硬件设备配置信息进行设备虚拟,以只读状态透传至所述虚拟机,包括:
[0015] 获取设备信息,将所述设备信息输入至机器学习模型中进行训练,得到机器学习引擎;
[0016] 将机器学习引擎编译到所述预定操作系统的内核中,扫描并保存硬件设备信息;
[0017] 将所述硬件设备信息输入至机器学习引擎中进行学习训练,得到硬件设备配置信息,并根据所述硬件设备配置信息进行设备虚拟,以只读状态透传至所述虚拟机。
[0018] 可选地,所述根据所述硬件设备配置信息在所述虚拟机的操作系统中安装设备驱动程序,包括:
[0019] 根据所述硬件设备配置信息从所述虚拟机的虚拟光驱中获取待安装的设备驱动程序信息;
[0020] 根据所述设备驱动程序信息在所述虚拟机的操作系统中安装设备驱动程序。
[0021] 可选地,所述根据所述硬件设备配置信息从所述虚拟机的虚拟光驱中获取待安装的设备驱动程序信息,包括:
[0022] 获取本地连接设备的驱动程序信息,根据所述驱动程序信息生成光盘镜像文件;
[0023] 根据所述光盘镜像文件在虚拟机中虚拟一个光驱设备,得到虚拟光驱;
[0024] 根据所述硬件设备配置信息从所述虚拟光驱中获取待安装的设备驱动程序信息。
[0025] 可选地,所述根据所述设备驱动程序信息在所述虚拟机的操作系统中安装设备驱动程序,包括:
[0026] 获取源主机操作系统支持的所有类型的硬盘控制器,选择其中任意一种类型的硬盘控制器进行虚拟,得到虚拟硬盘控制器;
[0027] 获取本地硬盘数据,基于本地硬盘数据在所述虚拟硬盘控制器中虚拟一个硬盘,得到虚拟硬盘;
[0028] 基于虚拟硬盘的操作系统启动虚拟机,并根据所述设备驱动程序信息在所述虚拟机的操作系统中安装设备驱动程序。
[0029] 可选地,所述根据所述硬件设备配置信息对所述虚拟机的操作系统中各设备的驱动程序的初始化行为进行响应,并将驱动程序初始化后的配置保存至主机迁移后的操作系
统,以完成主机迁移的硬件设备自动配置,包括:
[0030] 根据所述硬件设备配置信息对所述虚拟机的操作系统中各设备的驱动程序的初始化行为进行响应,得到初始化设备;
[0031] 将所述初始化设备的驱动程序及所述驱动程序对应的配置信息保存至主机迁移后的操作系统,以完成主机迁移的硬件设备自动配置。
[0032] 此外,为实现上述目的,本发明还提出一种基于主机迁移的硬件设备配置装置,所述基于主机迁移的硬件设备配置装置包括:
[0033] 透传模块,用于基于本地硬盘创建一虚拟机;
[0034] 透传模块,还用于获取硬件设备配置信息,并根据所述硬件设备配置信息进行设备虚拟,以只读状态透传至所述虚拟机;
[0035] 配置模块,用于根据所述硬件设备配置信息在所述虚拟机的操作系统中安装设备驱动程序;
[0036] 透传模块,还用于根据所述硬件设备配置信息对所述虚拟机的操作系统中各设备的驱动程序的初始化行为进行响应;
[0037] 配置模块,还用于将驱动程序初始化后的配置保存至主机迁移后的操作系统,以完成主机迁移的硬件设备自动配置。
[0038] 此外,为实现上述目的,本发明还提出一种基于主机迁移的硬件设备配置设备,所述基于主机迁移的硬件设备配置设备包括:存储器、处理器及存储在所述存储器上并可在
所述处理器上运行的基于主机迁移的硬件设备配置程序,所述基于主机迁移的硬件设备配
置程序配置为实现如上文所述的基于主机迁移的硬件设备配置方法的步骤。
[0039] 此外,为实现上述目的,本发明还提出一种存储介质,所述存储介质上存储有基于主机迁移的硬件设备配置程序,所述基于主机迁移的硬件设备配置程序被处理器执行时实
现如上文所述的基于主机迁移的硬件设备配置方法的步骤。
[0040] 本发明通过基于本地硬盘创建一虚拟机,获取硬件设备配置信息,并根据硬件设备配置信息进行设备虚拟,以只读状态透传至虚拟机,根据硬件设备配置信息对虚拟机的
操作系统中各设备的驱动程序的初始化行为进行响应,并将驱动程序初始化后的配置保存
至主机迁移后的操作系统,以完成主机迁移的硬件设备自动配置。本发明通过将硬件设备
只读透传至虚拟机中,根据硬件设备配置信息在虚拟机的操作系统中安装设备驱动程序,
对只读透传设备进行配置并保存,以完成主机迁移的硬件设备自动配置,无需人工修正,提
高迁移效率。

附图说明

[0041] 图1为本发明实施例方案涉及的硬件运行环境的基于主机迁移的硬件设备配置设备的结构示意图;
[0042] 图2为本发明基于主机迁移的硬件设备配置方法第一实施例的流程示意图;
[0043] 图3为本发明基于主机迁移的硬件设备配置方法第二实施例的流程示意图;
[0044] 图4为源主机硬盘空间与本地硬盘空间的结构框图;
[0045] 图5为本发明基于主机迁移的硬件设备配置方法第三实施例的流程示意图;
[0046] 图6为本发明基于主机迁移的硬件设备配置装置第一实施例的结构框图。
[0047] 本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

[0048] 应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
[0049] 参照图1,图1为本发明实施例方案涉及的硬件运行环境的基于主机迁移的硬件设备配置设备结构示意图。
[0050] 如图1所示,该基于主机迁移的硬件设备配置设备可以包括:处理器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的存储装置。
[0051] 本领域技术人员可以理解,图1中示出的结构并不构成对基于主机迁移的硬件设备配置设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部
件布置。
[0052] 如图1所示,作为一种存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及基于主机迁移的硬件设备配置程序。
[0053] 在图1所示的基于主机迁移的硬件设备配置设备中,网络接口1004主要用于与网络服务器进行数据通信;用户接口1003主要用于与用户进行数据交互;本发明基于主机迁
移的硬件设备配置设备中的处理器1001、存储器1005可以设置在基于主机迁移的硬件设备
配置设备中,所述基于主机迁移的硬件设备配置设备通过处理器1001调用存储器1005中存
储的基于主机迁移的硬件设备配置程序,并执行本发明实施例提供的基于主机迁移的硬件
设备配置方法。
[0054] 本发明实施例提供了一种基于主机迁移的硬件设备配置方法,参照图2,图2为本发明基于主机迁移的硬件设备配置方法第一实施例的流程示意图。
[0055] 本实施例中,所述基于主机迁移的硬件设备配置方法包括以下步骤:
[0056] 步骤S10:基于本地硬盘创建一虚拟机。
[0057] 需要说明的是,基于主机迁移的硬件设备配置方法的执行主体为具有迁移后的操作系统的主机,以及主机上安装的定制操作系统。主机迁移指把操作系统及业务从一台计
算机迁移到另外一台计算机,因此,具有迁移后的操作系统的主机与迁移前的计算机可相
应的称为目标主机与源主机,主机迁移则是将源主机的操作系统及业务迁移至目标主机
中。
[0058] 可以理解的是,由于目标主机的硬件设备和源主机的硬件设备存在有不一致的情况,需对目标主机进行硬件设备配置,以确保迁移后的操作系统可以正常使用目标主机上
的设备。待源主机的业务系统迁移至目标主机后,目标主机可基于迁移后的系统创建一个
虚拟机,目标主机为虚拟机的物理主机,虚拟机的操作系统是迁移后的操作系统,通过虚拟
机的操作系统实现硬件设备的配置。
[0059] 步骤S20:获取硬件设备配置信息,并根据所述硬件设备配置信息进行设备虚拟,以只读状态透传至所述虚拟机。
[0060] 应当理解的是,在虚拟机启动前首先扫描并保存挂载在目标主机的PCI总线上的所有设备,并采集所有设备的信息,从而获得硬件设备配置信息,硬件设备配置信息可包括
设备初始状态信息(如IO端口和MMIO内存的数据信息)、设备初始化过程中的各种变化状态
信息(如IO端口和MMIO内存的数据变化信息)以及数据变化期间硬件中断发生的时序。
[0061] 可以理解的是,硬件设备是以只读的形式透传至虚拟机的,虚拟机的系统启动后只能读取PCI总线上的所有设备的硬件设备配置信息,但无法对硬件设备执行写操作。若虚
拟机执行写入操作(如通过网卡发送数据、向硬盘写入数据或者通过显卡渲染),则虚拟机
的设备虚拟化引擎会忽略该写入操作,并直接返回成功(返回成功时实际仍是未执行写入
操作)或失败,或则对写入操作不做任何处理。
[0062] 易于理解的是,以只读状态进行透传的方式不同于PCI直通方式,PCI直通方式是指将物理机的PCI设备透传至虚拟机排他使用(物理机和其他的虚拟机都不能使用),本实
施例具体实现中,物理机(目标主机)和创建的虚拟机可以同时使用,只是虚拟机只能执行
读操作,写操作会被虚拟化引擎忽略掉。只读透传是指通过学习物理机硬件设备特性来进
行虚拟,是介于PCI直通和纯软件虚拟(纯软件虚拟化设备需要了解每个硬件设备的寄存器
特性及工作过程,然后逐一通过软件进行虚拟)之间的一种实现方法。
[0063] 步骤S30:根据所述硬件设备配置信息在所述虚拟机的操作系统中安装设备驱动程序。
[0064] 可以理解的是,虚拟机开机后,虚拟操作系统可以正常启动,然后扫描总线上的所有设备,虚拟化引擎会将学习到的硬件设备配置信息返回给虚拟机的操作系统即迁移后的
操作系统,然后虚拟机的操作系统会根据设备信息(如硬件设备的厂商ID、设备ID)来安装
设备驱动程序,并把驱动程序加载到系统上。
[0065] 步骤S40:根据所述硬件设备配置信息对所述虚拟机的操作系统中各设备的驱动程序的初始化行为进行响应,并将驱动程序初始化后的配置保存至主机迁移后的操作系
统,以完成主机迁移的硬件设备自动配置。
[0066] 易于理解的是,设备的驱动程序运行之后,会查询相应的硬件设备的状态,发送配置命令,使设备进行初始化,虚拟化引擎会根据学习到的设备初始化行为返回对应的状态
以及执行相应的操作,直至设备初始化完毕,其中,虚拟机的操作系统(迁移后的操作系统)
安装的设备驱动程序、以及相关的配置会写入虚拟硬盘(由于虚拟硬盘是基于目标主机的
硬盘创建的,虚拟硬盘上所有写入的数据最终会写入到目标主机的硬盘相同的区域上)。在
设备初始化正常结束后,就可以让设备执行各种操作(如网卡发送数据包,硬盘写入数据或
显卡渲染数据),但虚拟机中这些操作都会被虚拟化引擎忽略掉。待所有的设备驱动程序安
装完毕就可以关闭虚拟机,虚拟硬盘的读写最终会经虚拟化引擎处理,由虚拟化引擎转换
成物理硬盘的读写,从而保存至主机迁移所需的本地硬盘空间中(即保存到迁移后的操作
系统中),以完成主机迁移的硬件设备自动配置。
[0067] 本实施例通过基于本地硬盘创建一虚拟机,获取硬件设备配置信息,并根据硬件设备配置信息进行设备虚拟,以只读状态透传至虚拟机,根据硬件设备配置信息对虚拟机
的操作系统中各设备的驱动程序的初始化行为进行响应,并将驱动程序初始化后的配置保
存至主机迁移后的操作系统,以完成主机迁移的硬件设备自动配置。本实施例通过将硬件
设备只读透传至虚拟机中,根据硬件设备配置信息在虚拟机的操作系统中安装设备驱动程
序,对只读透传设备进行配置并保存,以完成主机迁移的硬件设备自动配置,无需人工修
正,提高迁移效率。
[0068] 参考图3,图3为本发明一种基于主机迁移的硬件设备配置方法第二实施例的流程示意图。
[0069] 基于上述第一实施例,本实施例,所述步骤S10包括:
[0070] 步骤S101:在源主机的硬盘空间中获取一个空闲区域,对所述空闲区域进行分卷压缩,得到保留区域;根据所述保留区域的容量对本地硬盘空间进行分卷压缩,得到迁移区
域。
[0071] 需要说明的是,为了避免迁移硬盘数据的过程中,破坏目标主机的预定操作系统,导致迁移失败的问题,本实施例可通过压缩文件系统空间的方法实现主机迁移。在具体实
现中,由于很多业务系统硬盘上存储的数据量都是远小于硬盘的容量,并且文件系统都有
卷压缩的功能,因此可以对原主机和目标主机的硬盘空间均进行卷压缩,腾出一个相同的
空余区域(大小一致,硬盘的偏移量也一致),基于区域相同的空余区域安装预定操作系统,
基于预定操作系统实现主机迁移。
[0072] 应当理解的是,参考图4,图4为源主机硬盘空间与本地硬盘空间的结构框图,源主机的硬盘空间可分为四个分区,分区1可作为引导器,用于引导操作系统的启动,分区2可作
为操作系统的储存空间,分区3可作为数据库,用储存数据,分区4可用于实现数据库的数据
归档,其中,分区3的空间区域相较更多,因此,可选择将分区3的部分区域作为空闲区域进
行分卷压缩,从而得到保留区域,分区3的部分区域可以是分区3的尾部区域。
[0073] 可以理解的是,根据源主机硬盘的保留区域可在本地硬盘空间即目标主机硬盘空间中压缩一个等大小的区域,得到迁移区域,其中,目标主机的硬盘空间需大于或等于源主
机的硬盘,迁移区域与保留区域的空间大小即储存容量一致,目标主机硬盘的偏移量与源
主机硬盘的偏移量也一致。
[0074] 步骤S102:在所述迁移区域上安装预定操作系统,根据所述预定操作系统与本地硬盘创建一虚拟机,并基于迁移后的操作系统启动所述虚拟机。
[0075] 易于理解的是,如图4所示,目标主机的硬盘空间可分为三个分区,分区1'可作为引导器,分区2'可作为操作系统的储存空间,分区3'可为空闲区域。在具体实现中,假设保
留区域的起始偏移量是800GB,大小是10GB,则可将预定操作系统即定制的操作系统安装到
目标主机硬盘的800GB到810GB这个区域即迁移区域。待预定操作系统安装之后重启目标主
机,就会从这个定制的操作系统启动,由定制的操作系统来完成整个系统、业务的迁移操
作。由于源主机硬盘的800GB到810GB这个区域已经用作保留区域,保留区域的数据将不会
进行迁移,所以目标主机硬盘上对应的迁移区域不会写入迁移数据,则不会对预定操作系
统造成破坏,影响硬件设备的配置。
[0076] 本实施例,所述步骤S20包括:
[0077] 步骤S201:获取设备信息,将所述设备信息输入至机器学习模型中进行训练,得到机器学习引擎;将机器学习引擎编译到所述预定操作系统的内核中,扫描并保存硬件设备
信息。
[0078] 可以理解的是,机器学习引擎可通过机器学习模型训练得到,机器学习引擎可对每一种类型的PCI设备进行学习,学习PCI设备配置过程中所有寄存器的状态变化,包括寄
存器的输入(赋值)和输出(读取状态),将机器学习引擎编译到预定操作系统的内核中,则
可将机器学习引擎的学习结果应用于虚拟机的只读透传。
[0079] 步骤S202:将所述硬件设备信息输入至机器学习引擎中进行学习训练,得到硬件设备配置信息,并根据所述硬件设备配置信息进行设备虚拟,以只读状态透传至所述虚拟
机。
[0080] 易于理解的是,对于Linux类的开源操作系统,则把机器学习引擎编译到系统内核中,在内核引导阶段就能启动学习引擎,对于Windows类的闭源操作系统,则把机器学习引
擎编译到一个内核模块中,在系统最早加载内核模块的阶段就能启动学习引擎,其中,内核
引导要早于系统初始化,机器学习引擎启动后可扫描PCI总线上的设备,获得硬件设备配置
信息,硬件设备配置信息可包括设备初始状态信息(如IO端口和MMIO内存的数据信息)、设
备初始化过程中的各种变化状态信息(如IO端口和MMIO内存的数据变化信息)以及数据变
化期间硬件中断发生的时序,并用于后续的设备模拟。同时,机器学习引擎还可以用于将不
同PCI总线连接设备的硬件设备配置信息输入至主机平台中训练学习,以获得更多的学习
结果。例如,将集成了学习引擎的定制操作系统放到各种硬件平台(如戴尔、华为、联想或浪
潮等平台)去学习,学习各个平台上的各种硬件设备(如英特尔网卡、博通网卡或英伟达显
卡等设备)的初始化交互过程,由于大部分设备都是主流厂商开发生产的,机器学习引擎可
覆盖大多数设备的硬件设备配置信息。
[0081] 应当理解的是,对于Linux类的开源操作系统或Windows类的闭源操作系统无法学习到的设备,可以根据PCI设备配置手册,预先把设备的配置过程设定在机器学习引擎中。
因为PCI设备开发后都会有对应的配置手册,手册中记录有描述该设备的配置过程,如设备
上电后所有寄存器的初始值,驱动程序配置时如何依次对寄存器进行赋值等,根据这些配
置说明可以在机器学习引擎中预设整个交互过程,用于后续将硬件设备只读透传给虚拟机
时根据预设过程进行设备模拟。
[0082] 本实施例通过在源主机的硬盘空间分卷压缩出保留区域,根据保留区域对本地硬盘空间进行分卷压缩,得到迁移区域,在迁移区域上安装预定操作系统,保证了迁移硬盘数
据的过程中,迁移区域的预定操作系统不会因写入迁移数据而遭到破坏。根据预定操作系
统与本地硬盘中创建一虚拟机,获取设备信息,将设备信息输入至机器学习模型中进行训
练,得到机器学习引擎,将机器学习引擎编译到预定操作系统的内核中,预定操作系统在不
同的硬件平台中学习,得到学习结果,将预定操作系统和学习结果一起安装至迁移区域,预
定操作系统扫描并保存硬件设备信息,将硬件设备信息输入至机器学习引擎中进行学习训
练,得到硬件设备配置信息,根据硬件设备配置信息与预定操作系统在不同的硬件平台中
的学习结果进行设备虚拟,易于实现虚拟机设备的只读透传。
[0083] 参考图5,图5为本发明一种基于主机迁移的硬件设备配置方法第三实施例的流程示意图。
[0084] 基于上述第一和第二实施例,本实施例,所述步骤S30包括:
[0085] 步骤S301:获取本地连接设备的驱动程序信息,根据所述驱动程序信息生成光盘镜像文件;根据所述光盘镜像文件在虚拟机中虚拟一个光驱设备,得到虚拟光驱;根据所述
硬件设备配置信息从所述虚拟光驱中获取待安装的设备驱动程序信息。
[0086] 可以理解的是,预定操作系统创建虚拟机前,可以先枚举所有的设备,根据设备标识(如设备的厂商ID、设备ID)以及迁移系统的版本信息获取本地连接设备即目标主机PCI
总线上连接的所有设备的驱动程序信息,驱动程序信息可包括所有设备的驱动程序,并把
这些驱动程序打包到一个光盘镜像文件中。
[0087] 步骤S302:获取源主机操作系统支持的所有类型的硬盘控制器,选择其中任意一种类型的硬盘控制器进行虚拟,得到虚拟硬盘控制器;获取本地硬盘数据,基于本地硬盘数
据在所述虚拟硬盘控制器中虚拟一个硬盘,得到虚拟硬盘;基于虚拟硬盘的操作系统启动
虚拟机,并根据所述设备驱动程序信息在所述虚拟机的操作系统中安装设备驱动程序。
[0088] 在具体实现中,可以通过查询源主机注册表得知操作系统已经安装的硬盘控制器驱动程序,进而得知操作系统支持哪些类型硬盘控制器,其中,可以在源主机注册表该路径
下获得相关信息:HKLM\SYSTEM\CurrentControlSet\Control\Class\{4d36e97b‑e325‑
11ce‑bfc1‑08002be10318}。假设源主机操作系统已经安装了IDE、virtio‑blk、virtio‑
scsi这三种类型硬盘控制器驱动程序,那么操作系统就支持这三种类型的硬盘控制器。假
设原机正在使用IDE这种类型的硬盘控制器,那么优先选择IDE硬盘控制器进行虚拟,得到
IDE虚拟硬盘控制器,后续虚拟硬盘挂接在IDE虚拟硬盘控制器上。
[0089] 易于理解的是,根据源主机操作系统支持的所有类型的硬盘控制器,选择其中任意一种类型的硬盘控制器进行虚拟,得到虚拟硬盘控制器,并挂接到虚拟硬盘控制器上,再
基于光盘镜像文件虚拟一个光驱设备,最后再将硬件设备只读透传给虚拟机,根据硬件设
备配置信息从虚拟光驱中获取待安装的设备驱动程序信息。虚拟机可包括两个硬盘,一个
可以是虚拟出来的硬盘,可以读写,用于启动和配置操作系统,另一个为只读透传的硬盘,
仅用于触发操作系统安装对应的硬盘控制器驱动程序。
[0090] 本实施例,所述步骤S40包括:
[0091] 步骤S401:根据所述硬件设备配置信息对所述虚拟机的操作系统中各设备的驱动程序的初始化行为进行响应,得到初始化设备;将所述初始化设备的驱动程序及所述驱动
程序对应的配置信息保存至主机迁移后的操作系统,以完成主机迁移的硬件设备自动配
置。
[0092] 易于理解的是,设备的驱动程序运行之后,会查询相应的硬件设备的状态,发送配置命令,使设备进行初始化,虚拟化引擎会根据学习到的设备初始化行为返回对应的状态
以及执行相应的操作,直至设备初始化完毕,得到初始化设备,其中,虚拟操作系统安装的
设备驱动、以及相关的配置会写入虚拟硬盘。在设备初始化正常结束后,就可以让设备执行
各种操作(如网卡发送数据包,硬盘写入数据或显卡渲染数据),但虚拟机中这些操作都会
被忽略掉。待所有的设备驱动程序安装完毕就可以关闭虚拟机,虚拟硬盘的读写最终会经
虚拟化引擎处理,由虚拟化引擎转换成物理硬盘的读写,将初始化设备的驱动程序及驱动
程序对应的配置信息保存至主机迁移所需的本地硬盘空间,以完成主机迁移的硬件设备自
动配置。
[0093] 进一步,完成主机迁移的硬件设备自动配置后,还可以从本地硬盘空间引导启动迁移后的操作系统,根据迁移后的操作系统对本地硬盘空间进行卷扩展,以使本地硬盘空
间恢复至初始状态。
[0094] 易于理解的是,预定操作系统可以修正操作系统的引导器,从本地硬盘空间引导启动迁移后的操作系统,目标主机重启后将自动进入迁移后的操作系统。再可以根据迁移
后的操作系统对已做过卷压缩的分区即迁移区域执行卷扩展操作,恢复至卷压缩前的状
态,从而完成迁移后的状态复原。
[0095] 本实施例通过根据源主机操作系统支持的所有类型的硬盘控制器,选择其中任意一种类型的硬盘控制器进行虚拟,得到虚拟硬盘控制器,然后基于迁移后的目标硬盘数据
虚拟一个硬盘,并挂接到虚拟硬盘控制器上,再基于光盘镜像文件虚拟一个光驱设备,最后
将硬件设备只读透传给虚拟机,根据硬件设备配置信息从虚拟光驱中获取待安装的设备驱
动程序信息,根据硬件设备配置信息对虚拟机的操作系统中各设备的驱动程序的初始化行
为进行响应,得到初始化设备,将初始化设备的驱动程序及驱动程序对应的配置信息保存
至主机迁移后的操作系统,完成主机迁移的硬件设备自动配置后将本地硬盘空间进行卷扩
展,以使本地硬盘空间恢复至初态,充分利用硬盘空间。
[0096] 此外,本发明实施例还提出一种存储介质,所述存储介质上存储有基于主机迁移的硬件设备配置程序,所述基于主机迁移的硬件设备配置程序被处理器执行时实现如上文
所述的基于主机迁移的硬件设备配置方法的步骤。
[0097] 参照图6,图6为本发明基于主机迁移的硬件设备配置装置第一实施例的结构框图。
[0098] 如图6所示,本发明实施例提出的基于主机迁移的硬件设备配置装置包括:
[0099] 透传模块10,用于基于本地硬盘创建一虚拟机。
[0100] 需要说明的是,基于主机迁移的硬件设备配置方法的执行主体为具有迁移后的操作系统的主机,以及主机上安装的定制操作系统。主机迁移指把操作系统及业务从一台计
算机迁移到另外一台计算机,因此,具有迁移后的操作系统的主机与迁移前的计算机可相
应的称为目标主机与源主机,主机迁移则是将源主机的操作系统及业务迁移至目标主机
中。
[0101] 可以理解的是,由于目标主机的硬件设备和源主机的硬件设备存在有不一致的情况,需对目标主机进行硬件设备配置,以确保迁移后的操作系统可以正常使用目标主机上
的设备。待源主机的业务系统迁移至目标主机后,目标主机可基于迁移后的系统创建一个
虚拟机,目标主机为虚拟机的物理主机,虚拟机的操作系统是迁移后的操作系统,通过虚拟
机的操作系统实现硬件设备的配置。
[0102] 透传模块10,还用于获取硬件设备配置信息,并根据所述硬件设备配置信息进行设备虚拟,以只读状态透传至所述虚拟机。
[0103] 应当理解的是,在虚拟机启动前首先扫描并保存挂载在目标主机的PCI总线上的所有设备,并采集所有设备的信息,从而获得硬件设备配置信息,硬件设备配置信息可包括
设备初始状态信息(如IO端口和MMIO内存的数据信息)、设备初始化过程中的各种变化状态
信息(如IO端口和MMIO内存的数据变化信息)以及数据变化期间硬件中断发生的时序。
[0104] 可以理解的是,硬件设备是以只读的形式透传至虚拟机的,虚拟机的系统启动后只能读取PCI总线上的所有设备的硬件设备配置信息,但无法对硬件设备执行写操作。若虚
拟机执行写入操作(如通过网卡发送数据、向硬盘写入数据或者通过显卡渲染),则虚拟机
的设备虚拟化引擎会忽略该写入操作,并直接返回成功(返回成功时实际仍是未执行写入
操作)或失败,或则对写入操作不做任何处理。
[0105] 易于理解的是,以只读状态进行透传的方式不同于PCI直通方式,PCI直通方式是指将物理机的PCI设备透传至虚拟机排他使用(物理机和其他的虚拟机都不能使用),本实
施例具体实现中,物理机(目标主机)和创建的虚拟机可以同时使用,只是虚拟机只能执行
读操作,写操作会被虚拟化引擎忽略掉。只读透传是指通过学习物理机硬件设备特性来进
行虚拟,是介于PCI直通和纯软件虚拟(纯软件虚拟化设备需要了解每个硬件设备的寄存器
特性及工作过程,然后逐一通过软件进行虚拟)之间的一种实现方法。
[0106] 配置模块20,用于根据所述硬件设备配置信息在所述虚拟机的操作系统中安装设备驱动程序。
[0107] 可以理解的是,虚拟机开机后,虚拟操作系统可以正常启动,然后扫描总线上的所有设备,虚拟化引擎会将学习到的硬件设备配置信息返回给虚拟机的操作系统即迁移后的
操作系统,然后虚拟机的操作系统会根据设备信息(如硬件设备的厂商ID、设备ID)来安装
设备驱动程序,并把驱动程序加载到系统上。
[0108] 透传模块10,还用于根据所述硬件设备配置信息对所述虚拟机的操作系统中各设备的驱动程序的初始化行为进行响应;
[0109] 配置模块20,还用于将驱动程序初始化后的配置保存至主机迁移后的操作系统,以完成主机迁移的硬件设备自动配置。
[0110] 易于理解的是,设备的驱动程序运行之后,会查询相应的硬件设备的状态,发送配置命令,使设备进行初始化,虚拟化引擎会根据学习到的设备初始化行为返回对应的状态
以及执行相应的操作,直至设备初始化完毕,其中,虚拟机的操作系统(迁移后的操作系统)
安装的设备驱动程序、以及相关的配置会写入虚拟硬盘(由于虚拟硬盘是基于目标主机的
硬盘创建的,虚拟硬盘上所有写入的数据最终会写入到目标主机的硬盘相同的区域上)。在
设备初始化正常结束后,就可以让设备执行各种操作(如网卡发送数据包,硬盘写入数据或
显卡渲染数据),但虚拟机中这些操作都会被虚拟化引擎忽略掉。待所有的设备驱动程序安
装完毕就可以关闭虚拟机,虚拟硬盘的读写最终会经虚拟化引擎处理,由虚拟化引擎转换
成物理硬盘的读写,从而保存至主机迁移所需的本地硬盘空间中(即保存到迁移后的操作
系统中),以完成主机迁移的硬件设备自动配置。
[0111] 本实施例通过基于本地硬盘创建一虚拟机,获取硬件设备配置信息,并根据硬件设备配置信息进行设备虚拟,以只读状态透传至虚拟机,根据硬件设备配置信息对虚拟机
的操作系统中各设备的驱动程序的初始化行为进行响应,并将驱动程序初始化后的配置保
存至主机迁移后的操作系统,以完成主机迁移的硬件设备自动配置。本实施例通过将硬件
设备只读透传至虚拟机中,根据硬件设备配置信息在虚拟机的操作系统中安装设备驱动程
序,对只读透传设备进行配置并保存,以完成主机迁移的硬件设备自动配置,无需人工修
正,提高迁移效率。
[0112] 在一实施例中,所述透传模块10,还用于在源主机的硬盘空间中获取一个空闲区域,对所述空闲区域进行分卷压缩,得到保留区域;根据所述保留区域的容量对本地硬盘空
间进行分卷压缩,得到迁移区域;在所述迁移区域上安装预定操作系统,根据所述预定操作
系统与本地硬盘创建一虚拟机,并基于迁移后的操作系统启动所述虚拟机。
[0113] 在一实施例中,所述透传模块10,还用于获取设备信息,将所述设备信息输入至机器学习模型中进行训练,得到机器学习引擎;将机器学习引擎编译到所述预定操作系统的
内核中,扫描并保存硬件设备信息;将所述硬件设备信息输入至机器学习引擎中进行学习
训练,得到硬件设备配置信息,并根据所述硬件设备配置信息进行设备虚拟,以只读状态透
传至所述虚拟机。
[0114] 在一实施例中,所述配置模块20,还用于获取本地连接设备的驱动程序信息,根据所述驱动程序信息生成光盘镜像文件;根据所述光盘镜像文件在虚拟机中虚拟一个光驱设
备,得到虚拟光驱;根据所述硬件设备配置信息从所述虚拟光驱中获取待安装的设备驱动
程序信息。
[0115] 在一实施例中,所述配置模块20,还用于获取源主机操作系统支持的所有类型的硬盘控制器,选择其中任意一种类型的硬盘控制器进行虚拟,得到虚拟硬盘控制器;获取本
地硬盘数据,基于本地硬盘数据在所述虚拟硬盘控制器中虚拟一个硬盘,得到虚拟硬盘;基
于虚拟硬盘的操作系统启动虚拟机,并根据所述设备驱动程序信息在所述虚拟机的操作系
统中安装设备驱动程序。
[0116] 在一实施例中,所述透传模块10,还用于根据所述硬件设备配置信息对所述虚拟机的操作系统中各设备的驱动程序的初始化行为进行响应,得到初始化设备。
[0117] 在一实施例中,所述配置模块20,还用于将所述初始化设备的驱动程序及所述驱动程序对应的配置信息保存至主机迁移后的操作系统,以完成主机迁移的硬件设备自动配
置。
[0118] 应当理解的是,以上仅为举例说明,对本发明的技术方案并不构成任何限定,在具体应用中,本领域的技术人员可以根据需要进行设置,本发明对此不做限制。
[0119] 需要说明的是,以上所描述的工作流程仅仅是示意性的,并不对本发明的保护范围构成限定,在实际应用中,本领域的技术人员可以根据实际的需要选择其中的部分或者
全部来实现本实施例方案的目的,此处不做限制。
[0120] 另外,未在本实施例中详尽描述的技术细节,可参见本发明任意实施例所提供的基于主机迁移的硬件设备配置方法,此处不再赘述。
[0121] 此外,需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要
素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统
所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在
包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
[0122] 上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
[0123] 通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下
前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做
出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质
(如只读存储器(Read OnlyMemory,ROM)/RAM、磁碟、光盘)中,包括若干指令用以使得一台
终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方
法。
[0124] 以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技
术领域,均同理包括在本发明的专利保护范围内。