安装驱动的方法和服务器与流程

文档序号:12596247阅读:1200来源:国知局
安装驱动的方法和服务器与流程

本发明涉及信息技术领域,并且更具体地,涉及安装驱动的方法和服务器。



背景技术:

随着运营商网络功能虚拟化(Network Functions Virtualization,简称为“NFV”)技术的迅速发展,在虚拟化场景的解决方案中,单根虚拟化技术(Single Root I/O Virtualization,简称为“SR-IOV”)、针对I/O虚拟化技术(Virtualization Technology for Directed I/O,简称为“VT-D”)技术的使用越来越广泛。一个典型的应用场景是支持SR-IOV的网卡。SR-IOV网卡是指:在宿主机对应的宿主机操作系统(Host Operation System,简称为“HostOS”)上使用网卡的物理功能(Physical Function,简称为“PF”),在虚拟机对应的客户操作系统(Guest Operation System,简称为“GuestOS”)上使用网卡的虚拟功能(virtual function,简称为“VF”)。若采用SR-IOV网卡的这种技术,其网络性能最高,但同时也带来一个问题:虚拟机和宿主机中的网卡的驱动程序存在版本配套的问题。

目前主流商用网卡做不到PF网卡驱动和VF网卡驱动的前后兼容。现有技术均是基于宿主机或虚拟机单独升级来安装驱动。当宿主机或虚拟机单独升级时,会出现驱动版本不兼容的问题,从而导致宿主机和虚拟机之间网络不通,无法正常通信。



技术实现要素:

本发明实施例提供了一种安装驱动的方法和服务器,能够同时升级宿主机和虚拟机的驱动,从而保证了宿主机和虚拟机的驱动是兼容的。

第一方面,提供了一种安装驱动的方法,该方法应用于服务器,该服务器中运行宿主机和至少一个虚拟机,该方法包括:

该宿主机获取多个驱动包;

该宿主机在该多个驱动包中选择该宿主机的驱动包和该至少一个虚拟机的驱动包,其中,该宿主机的驱动包和该至少一个虚拟机的驱动包是兼容的;

该宿主机在该宿主机上安装该宿主机的驱动包;

该宿主机在该宿主机上保存该至少一个虚拟机的驱动包,该至少一个虚拟机的驱动包用于该宿主机控制该至少一个虚拟机安装该至少一个虚拟机的驱动包。

在本发明实施例中,宿主机通过在该多个驱动包中选择该宿主机的驱动包和该至少一个虚拟机的驱动包,其中,该宿主机的驱动包和该至少一个虚拟机的驱动包是兼容的,然后在该宿主机上安装该宿主机的驱动包,并保存该至少一个虚拟机的驱动包,该至少一个虚拟机的驱动包用于该宿主机控制该至少一个虚拟机安装该至少一个虚拟机的驱动包,能够同时升级或安装宿主机和虚拟机的驱动,从而保证了宿主机和虚拟机的驱动是兼容的。

可选地,在一些可能的实现方式中,该多个驱动包是兼容或不兼容的,宿主机在该多个驱动包中选择的该宿主机的驱动包和该至少一个虚拟机的驱动包是兼容的。

在一些可能的实现方式中,该方法还包括:

在该宿主机的驱动包生效之后,且在该至少一个虚拟机中的每个虚拟机启动之前,该宿主机将该至少一个虚拟机的驱动包保存至该至少一个虚拟机中的每个虚拟机的虚拟设备中。

这里,宿主机在驱动包生效之后,且在该至少一个虚拟机中的每个虚拟机启动之前,通过将该至少一个虚拟机的驱动包保存至该至少一个虚拟机中的每个虚拟机的虚拟设备中,使得该至少一个虚拟机中的每个虚拟机在扫描虚拟设备时必然能够扫描到至少一个虚拟机的驱动包,以便于宿主机控制该至少一个虚拟机安装或升级驱动包。

可选地,在一些可能的实现方式中,该方法还包括:

在该宿主机的驱动包生效后,宿主机接收来自用户的通知消息,该通知消息用于指示该至少一个虚拟机中的第一虚拟机安装驱动包;

宿主机根据该通知消息,将该至少一个虚拟机的驱动包保存至该第一虚拟机的虚拟设备中。

因此,宿主机在生效驱动包后,可以接收用户的通知消息,该通知消息用于指示该至少一个虚拟机中的第一虚拟机安装驱动,然后根据该通知消息将至少一个虚拟机的驱动包保存至第一虚拟机的虚拟设备中,使得第一虚拟机能够查找到自己的驱动包进行驱动的安装或升级。

在一些可能的实现方式中,该方法还包括:

该宿主机控制该至少一个虚拟机启动,该至少一个虚拟机的驱动包用于该至少一个虚拟机中的每个虚拟机在启动时进行安装。

这里,宿主机通过控制至少一个虚拟机启动,使得该至少一个虚拟机中的每个虚拟机在启动时进行安装或升级驱动包,实现了宿主机控制至少一个虚拟机统一进行安装或升级,从而保证了宿主机和虚拟机的驱动是兼容的。

在一些可能的实现方式中,该方法还包括:

该宿主机对该至少一个虚拟机的驱动包中的每个虚拟机的驱动包,添加标识信息,该标识信息用于该至少一个虚拟机中的每个虚拟机根据该标识信息选择驱动包。

宿主机可以对该至少一个虚拟机驱动包中的每个虚拟机的驱动包,进行标识信息的添加,该标识信息用于该至少一个虚拟机中的每个虚拟机能够选择或识别出对应的驱动包。可选地,该标识信息可以是虚拟机的内核版本号或其他具有标识作用的信息。

在一些可能的实现方式中,该方法还包括:

该至少一个虚拟机中的每个虚拟机在启动时,运行预配置的扫描工具,对该每个虚拟机的虚拟设备进行扫描;

若该至少一个虚拟机中的每个虚拟机在该每个虚拟机的虚拟设备中扫描到该每个虚拟机对应的驱动包,则安装该每个虚拟机对应的驱动包。

这里,至少一个虚拟机中的每个虚拟机在启动时,可以运行预配置的扫描工具,对每个虚拟机的虚拟设备进行扫描。如果在该每个虚拟机的虚拟设备中扫描到该每个虚拟机对应的驱动包,那么该至少一个虚拟机中的每个虚拟机可以安装该每个虚拟机对应的驱动包,从而保证了宿主机和虚拟机的驱动是兼容的。

可选地,该方法还包括:

该至少一个虚拟机中的每个虚拟机接收来自用户的触发信息;

该至少一个虚拟机中的每个虚拟机根据该触发信息进行启动。

该至少一个虚拟机中的每个虚拟机可以根据该触发信息进行重启或复位操作,然后调用扫描工具对该至少一个虚拟机中的每个虚拟机的虚拟设备进行扫描,从而在虚拟设备中查找该至少一个虚拟机中的每个虚拟机的驱动包进行安装。

第二方面,提供了一种服务器,该服务器包括宿主机和至少一个虚拟机。该服务器用于执行上述第一方面或第一方面的任意可能的实现方式中的方法。

第三方面,提供了一种计算机可读介质,用于存储计算机程序,该计算机程序包括用于执行第一方面或第一方面的任意可能的实现方式中的方法的指令。

第四方面,提供了一种主机,该主机包括宿主机和至少一个虚拟机,该主机用于执行上述第一方面或第一方面的任意可能的实现方式中的方法。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1A是根据本发明实施例的NFV架构的一个示意图。

图1B是支持宿主机与虚拟机的网卡一个示意图。

图2是根据本发明实施例的安装驱动的方法的示意性流程图。

图3是根据本发明另一实施例的安装驱动的方法的示意性流程图。

图4是根据本发明实施例的安装驱动的例子的示意图。

图5是根据本发明实施例的服务器的示意性框图。

图6是根据本发明实施例的主机的装置的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明的技术方案,可以应用于虚拟化的场景中。虚拟化技术具体包括电信功能虚拟化中的网络功能虚拟化(Network Functions Virtualization,简称为“NFV”)技术。NFV通过借用IT的虚拟化技术,许多类型的网络设备可以合并入工业界标准中,如servers,switches和storage,可以部署在数据中心、网络节点或是用户家里。这需要网络功能以软件方式实现,并能在一系列的工业标准服务器硬件上运行,可以根据需要进行迁移、实例化、部署在网络的不同位置,而不需要安装新设备。NFV的最终目标是,通过基于行业标准的x86服务器、存储和交换设备,来取代通信网的那些私有专用的网元设备。

例如,图1A示出了NFV系统100的简略架构图。该NFV系统100可以在各种网络中使用,例如在一个数据中心网络、运营商网络或局域网来实现。该NFV系统100包括一个NFV管理和编排系统(NFV Management and Orchestration,NFV MANO)101、NFV基础设施层(NFV Infrastructure,NFVI)130、多个虚拟网络功能(Virtual Network Function,VNF)108、多个网元管理(Element Management,EM)122、网络服务、VNF和基础设施描述(Network Service,VNF and Infrastructure Description)126,以及业务支持管理系统(Operation-Support System/Business Support System,OSS/BSS)124。其中,NFV管理和编排系统101包括NFV编排器(NFV Orchestrator,NFVO)102,一个或多个VNFM(VNF Manager,VNFM)104和虚拟化基础设施管理器(Virtualized Infrastructure Manager,VIM)106。NFVI 130包括计算硬件112、存储硬件114、网络硬件116、虚拟化层(Virtualization Layer)、虚拟计算110、虚拟存储118和虚拟网络120。

NFV管理和编排系统(NFV MANO)101用于执行对VNF 108和NFVI 130的监视和管理。NFVO 102可以实现在NFVI 130上的网络服务(如L2和L3 VPN服务),也可以执行来自一个或多个VNFM 104的资源相关请求,发送配置信息到VNFM 104,并收集VNF 108的状态信息。另外,NFVO 102可以与VIM 106通信,以实现资源的分配和/或预留,以及交换虚拟化硬件资源的配置和状态信息。该VNFM 104可以管理一个或多个VNF 108。VNFM 104可以执行各种管理功能,如实例化、更新、查询、缩放和/或终止VNF 108等。VIM 106可以执行资源管理的功能,例如管理基础设施资源的分配(例如增加资源到虚拟容器)和操作功能(如收集NFVI故障信息)。该VNFM 104和VIM 106可以相互通信进行资源分配和交换虚拟化硬件资源的配置和状态信息。

该NFVI 130包括硬件资源、软件资源或两者的组合来完成虚拟化环境的部署。换句话说,硬件资源和虚拟化层用于提供虚拟化的资源,例如作为虚拟机和其它形式的虚拟容器,用于VNF 108。硬件资源包括计算硬件112、存储硬件114和网络硬件116。计算硬件112可以是市场上现成的硬件和/或用户定制的硬件,用来提供处理和计算资源。存储硬件114可以是网络内提供的存储容量或驻留在存储硬件114本身的存储容量(位于服务器内的本地存储器)。在一个实现方案中,计算硬件112和存储硬件114的资源可以被集中在一起。网络硬件116可以是交换机、路由器和/或配置成具有交换功能的任何其他网络设备。网络硬件116可以横跨多个域,并且可以包括多个由一个或一个以上传输网络互连的网络。

NFVI 130里面的虚拟化层可以从物理层抽象硬件资源和解耦VNF 108,以便向VNF 108提供虚拟化资源。虚拟资源层包括虚拟计算110,虚拟存储器118和虚拟网络120。虚拟计算110和虚拟存储118可以以虚拟机、和/或其他虚拟容器的形式提供给VNF 108。例如,一个或一个以上的VNF 108可以部署在一个虚拟机(Virtual Machine)上。虚拟化层抽象网络硬件116从而形成虚拟网络120,虚拟网络120可以包括虚拟交换机(Virtual Switch),该虚拟交换机用来提供虚拟机和其他虚拟机之间的连接。此外,网络硬件116中的传输网络,可以采用集中式控制平面和一个单独的转发平面(如软件定义网络,SDN)虚拟化。如图1A所示,VNFM 104可以与VNF 108和EM 122进行交互,从而实现对VNF的生命周期以及交换配置和状态信息进行管理。VNF 108可以被配置为通过一个物理网络设备执行的至少一个网络功能的虚拟化。例如,在一个实现方案中,该VNF 108可以经过配置以提供IMS网络中的不同网元具备的功能,如P-SCSCF,S-CSCF或HSS的网络功能等。EM 122经过配置以对一个或一个以上的VNF108进行管理。

在本发明实施例中,运行虚拟机软件的操作系统可称作宿主机操作系统(Host Operation System,HostOS),其中HostOS对应宿主机;在虚拟机里运行的操作系统可称作客户操作系统(Guest Operation System,GuestOS),其中GuestOS对应虚拟机。一个宿主机可以管理多个虚拟机。比如,在实际应用中,用户windows操作系统中可以创建多个Linux系统。

例如,图1B示出了支持宿主机与虚拟机网卡的一个示意图。图1B中的宿主机可对应图1A中的NFVI 130,虚拟机可对应图1A中的VNF 108。该网卡可以是支持单根虚拟化技术(single root I/O virtualization,简称为“SR-IOV”)的网卡。SR-IOV技术是一种基于硬件的虚拟化解决方案,可提高性能和可伸缩性。SR-IOV标准允许在虚拟机之间高效共享快速外设组件互连(Peripheral Component Interconnect Express,简称为“PCIe”)设备,并且它是在硬件中实现的,可以获得能够与本机性能媲美的I/O性能。SR-IOV规范定义了新的标准,根据该标准,创建的新设备可允许将虚拟机直接连接到I/O设备。如图1B所示,网卡或网络适配器(Network Interface Card,NIC)中包括一个PF和3个VF,其中,当宿主机(hostos)需要升级驱动程序时,采用网卡中的PF对驱动包(HostDrv)进行安装;当虚拟机(Guestos)需要升级驱动程序时,采用网卡中的VF对驱动包(GuestDrv)进行安装。其中,一个宿主机可以对应多个虚拟机,例如,图1B中示出了一个宿主机对应两个虚拟机。

在本发明实施例中,驱动包可以理解为安装或升级驱动程序所需要的文件包。其中,驱动程序可以简称为“驱动”,为了简洁,下文采用“驱动”代替“驱动程序”进行描述。

为了保证宿主机和虚拟机的驱动版本配套或兼容,需要对宿主机与虚拟机的驱动版本进行安装或升级。若宿主机与虚拟机的驱动版本同时升级时,会涉及多个产品,实际操作起来非常困难。因此,本发明提出了一种方案:宿主机通过选择出兼容的宿主机的驱动包和至少一个虚拟机的驱动包,然后宿主机根据宿主机的驱动包对自身的驱动进行安装或升级,并且,在宿主机升级后还需控制至少一个虚拟机进行安装或升级。换言之,宿主机承包了虚拟机和宿主机的安装或升级驱动的过程。这样,能够保证虚拟机和宿主机的安装或升级驱动版本兼容。

应理解,本发明的技术方案提供了一种解决宿主机和虚拟机之间存在兼容依赖的方法,但是并不限于解决宿主机和虚拟机的驱动兼容的问题,也可应用于其他合理的场景中,比如,本发明并不限于图1A示出的NFV场景中的宿主机和虚拟机,也可以应用于其他场景中宿主机和虚拟机,比如软件定义网络(Software Defined Network,简称为“SDN”)场景等,对此不作限定。

图2示出了根据本发明实施例的安装驱动的方法200的示意性流程图。图2的方法应用于服务器,该方法由该服务器执行,该服务器中运行宿主机和至少一个虚拟机,例如,该宿主机可对应图1A中的NFVI 130,至少一个虚拟机可对应图1A中的VNF 108。如图2所示,该方法200包括:

S210,该宿主机获取多个驱动包;

可选地,该多个驱动包可以存在于用户提供的驱动包中。

例如,宿主机可以获取用户提供或发布的多个驱动包,比如,用户提供驱动包PackageA,该驱动包PackageA包括hostos驱动包(HostDrvA)和多个guestos驱动包(GuestDrvA),其中GuestDrvA中包含若干个guestos驱动,比如GuestDrvA1、GuestDrvA2、GuestDrvA3…等。可选地,用户提供的多个驱动包可能是兼容的,也可能是不兼容的。

S220,该宿主机在该多个驱动包中选择该宿主机的驱动包和该至少一个虚拟机的驱动包,其中,该宿主机的驱动包和该至少一个虚拟机的驱动包是兼容的;

具体而言,宿主机可以将获取到的多个驱动包进行选择或筛选,得到该宿主机的驱动包和该至少一个虚拟机的驱动包。并且,筛选后得到的该宿主机的驱动包和该至少一个虚拟机的驱动包是兼容的。

也就是说,宿主机获取到的驱动包可能是兼容的,也有可能是不兼容的,而经过宿主机筛选后得到的驱动包是兼容的。

可选地,宿主机在获取到用户提供的多个驱动包后,可以多个驱动包进行筛选,得到兼容的驱动包。比如,宿主机将筛选出来的驱动包分为两类,A类为宿主机的驱动包,B类包括需要支持的多个虚拟机的驱动包。

可选地,宿主机按照不同的虚拟机对应的内核版本号,对至少一个虚拟机的驱动包进行标记。

S230,该宿主机在该宿主机上安装该宿主机的驱动包;

S240,该宿主机在该宿主机上保存该至少一个虚拟机的驱动包,该至少一个虚拟机的驱动包用于该宿主机控制该至少一个虚拟机安装该至少一个虚拟机的驱动包。

具体而言,宿主机通过获取该宿主机的驱动包和该至少一个虚拟机的驱动包,该宿主机的驱动包和多个虚拟机的驱动包是兼容的。然后,宿主机根据该宿主机的驱动包进行安装,并保存该至少一个虚拟机的驱动包,该至少一个虚拟机的驱动包用于该宿主机控制该至少一个虚拟机安装该至少一个虚拟机的驱动包。这里,宿主机保存该至少一个虚拟机的驱动包的目的在于:宿主机能够根据该至少一个虚拟机的驱动包,控制该至少一个虚拟机安装该至少一个虚拟机的驱动包,使得宿主机和至少一个虚拟机能够统一升级或安装,从而保证了宿主机和虚拟机的驱动是兼容的。换言之,宿主机和虚拟机的驱动的升级或安装均由宿主机控制或负责,虚拟机不需要单独进行驱动的升级。

可选地,当至少一个虚拟机中的某一个虚拟机(比如第一虚拟机)需要升级时,宿主机可以将该至少一个虚拟的驱动包插入至该需要升级的第一虚拟机上。这样,第一虚拟机可以在该至少一个虚拟机的驱动包中,查找对应的第一虚拟机的驱动包,从而根据该第一虚拟机的驱动包进行安装。

在本发明实施例中,宿主机在宿主机上安装宿主机的驱动包,并在宿主机上保存该至少一个虚拟机的驱动包,具体例如:宿主机将PackageA中的HostDrvA安装到宿主机的驱动目录下;同时,宿主机将PackageA中的GuestDrvA保存到宿主机的某个目录下。

在本发明实施例中,宿主机可以管理其上对应的多个虚拟机的驱动包,可以将多个虚拟机的驱动包均保存在宿主机上。

应理解,驱动包的获取可以是用户发布的或从其他渠道下载的,例如,用户通过下载需要升级的驱动程序的驱动包,通过发布的形式将该驱动包提供给宿主机或宿主机所在的服务器,以便于宿主机进行驱动的升级操作。

因此,本发明实施例的安装驱动的方法,宿主机通过在该多个驱动包中选择该宿主机的驱动包和该至少一个虚拟机的驱动包,其中,该宿主机的驱动包和该至少一个虚拟机的驱动包是兼容的,然后在该宿主机上安装该宿主机的驱动包,并保存该至少一个虚拟机的驱动包,该至少一个虚拟机的驱动包用于该宿主机控制该至少一个虚拟机安装该至少一个虚拟机的驱动包,能够同时升级或安装宿主机和虚拟机的驱动,从而保证了宿主机和虚拟机的驱动是兼容的。

可选地,宿主机可以接收用户发送的指令,该指令用于指示或通知宿主机进行驱动升级操作。然后,宿主机根据该指令进行驱动升级或安装操作。

可选地,作为一个实施例,如图3所示,该方法200还包括:

S250,在该宿主机的驱动包生效之后,且在该至少一个虚拟机中的每个虚拟机启动之前,该宿主机将该至少一个虚拟机的驱动包保存至该至少一个虚拟机中的每个虚拟机的虚拟设备中。

具体而言,宿主机在其驱动包生效之后,且在该至少一个虚拟机中的每个虚拟机启动之前,可以主动将至少一个虚拟机的驱动包保存或插入至该至少一个虚拟机中的每个虚拟机的虚拟设备中,使得该至少一个虚拟机中的每个虚拟机在扫描虚拟设备时必然能够扫描到至少一个虚拟机的驱动包。其中,虚拟设备包括虚拟光驱或虚拟光盘。然后,至少一个虚拟机能够根据宿主机保存的少一个虚拟机的驱动包进行安装或升级。这样,宿主机在安装或升级后,能够保证宿主机和至少一个虚拟机能够统一安装或升级,从而避免了宿主机和至少一个虚拟机在安装或升级驱动时不能统一升级、版本不一致的问题。

可选地,作为一个实施例,该方法200还包括:

该宿主机控制该至少一个虚拟机启动,该至少一个虚拟机的驱动包用于该至少一个虚拟机中的每个虚拟机在启动时进行安装。

具体而言,宿主机能够控制至少一个虚拟机进行启动,其中,该至少一个虚拟机的驱动包用于该至少一个虚拟机中的每个虚拟机在启动时进行安装。比如,在具体实现时,宿主机上可以设置控制器或开关,该控制器或开关用于宿主机控制虚拟机跟随宿主机进行驱动安装或升级。具体比如,在开关打开时,宿主机控制该至少一个虚拟机进行启动,并前往至少一个虚拟机的虚拟设备中,插入至少一个虚拟机的驱动包,以便于该至少一个虚拟机中的每个虚拟机在启动时安装或升级驱动;在开关关闭时,宿主机不会进行该操作。

因此,宿主机通过控制至少一个虚拟机启动,将至少一个虚拟机的驱动包保存至该至少一个虚拟机,能够同时升级或安装宿主机和虚拟机的驱动,从而保证了宿主机和虚拟机的驱动是兼容的。

可选地,作为一个实施例,该方法200还包括:

在该宿主机的驱动包生效之后,该宿主机接收来自用户的通知消息,该通知消息用于指示该至少一个虚拟机中的第一虚拟机安装驱动;

该宿主机根据该通知消息,将该至少一个虚拟机的驱动包保存至该第一虚拟机的虚拟设备中。

具体而言,宿主机还可以接收来自用户的通知消息,该通知消息用于指示至少一个虚拟机中的某一虚拟机(例如第一虚拟机)需要安装或者升级驱动。宿主机在接收到该通知消息后,可以将之前保存的至少一个虚拟机的驱动包都保存至该第一虚拟机的虚拟设备中,以便于第一虚拟机能够调用合适的驱动包进行安装,从而满足了宿主机和虚拟机之间驱动的兼容性。

可选地,第一虚拟机可以是用户指定的任一个需要安装或升级驱动的虚拟机。应理解,这里引入“第一虚拟机”只是为了描述方便,并不对本发明构成限制。

在本发明实施例中,通知消息可以是用户下发的指令或命令,对此不作限定。

可选地,作为一个实施例,该方法200还包括:

该宿主机对该至少一个虚拟机的驱动包中的每个虚拟机的驱动包,添加标识信息,该标识信息用于该至少一个虚拟机中的每个虚拟机根据该标识信息选择驱动包。

具体而言,宿主机可以对该至少一个虚拟机驱动包中的每个虚拟机的驱动包,进行标识信息的添加,该标识信息用于该至少一个虚拟机中的每个虚拟机能够选择或识别出对应的驱动包。比如,宿主机将至少一个虚拟机的驱动GuestDrvA中的若干个需要支持的虚拟机的驱动包,分别添加标识信息:GuestDrvA操作系统(Operation System,OS)版本1、GuestDrvA OS版本2、GuestDrvA OS版本3…等,该标识信息用于指示驱动包的类型和/或操作系统(Operation System,OS)版本号。其中,第一虚拟机对应的驱动包为GuestDrvA OS版本1、第二虚拟机对应的驱动包为GuestDrvA OS版本2、第三虚拟机对应的驱动包为GuestDrvA OS版本3…等。比如,第一虚拟机可以根据宿主机添加的OS版本号,查找到自己对应的驱动包GuestDrvA OS版本1,从而根据GuestDrvA OS版本1安装或升级驱动。

应理解,该标识信息可以是虚拟机的内核版本号、ID号等具有标识作用的信息,对此不作限制。

还应理解,宿主机可以获知至少一个虚拟机中每个虚拟机的内核版本号。

因此,本发明实施例的安装驱动的方法,宿主机通过在多个驱动包中选择该宿主机的驱动包和该至少一个虚拟机的驱动包,其中,该宿主机的驱动包和该至少一个虚拟机的驱动包是兼容的,然后在该宿主机上安装该宿主机的驱动包,并保存该至少一个虚拟机的驱动包,该至少一个虚拟机的驱动包用于该宿主机控制该至少一个虚拟机安装该至少一个虚拟机的驱动包,能够同时升级或安装宿主机和虚拟机的驱动,从而保证了宿主机和虚拟机的驱动是兼容的。进一步地,宿主机对该至少一个虚拟机的驱动包中的每个虚拟机的驱动包,添加标识信息,能够使得每个虚拟机根据该标识信息选择驱动包。

可选地,作为一个实施例,该方法200还包括:

该至少一个虚拟机中的每个虚拟机在启动时,运行预配置的扫描工具,对该每个虚拟机的虚拟设备进行扫描;

若该至少一个虚拟机中的每个虚拟机在该每个虚拟机的虚拟设备中扫描到该每个虚拟机对应的驱动包,则安装该每个虚拟机对应的驱动包。

具体而言,宿主机将至少一个虚拟机的驱动包保存在每个虚拟机的虚拟设备中。该至少一个虚拟机中的每个虚拟机在启动时,运行预配置的扫描工具,对该每个虚拟机的虚拟设备进行扫描;如果该至少一个虚拟机中的每个虚拟机在该每个虚拟机的虚拟设备中扫描到该每个虚拟机对应的驱动包,则安装该每个虚拟机对应的驱动包,能够同时升级或安装宿主机和虚拟机的驱动,从而保证了宿主机和虚拟机的驱动是兼容的。

在本发明实施例中,在具体实现时,至少一个虚拟机中的每个虚拟机可以对驱动安装和生效的扫描工具进行部署或预配置。例如,该驱动安装和生效的扫描工具为GuestDrv_install.sh脚本,该脚本集成在Guestos镜像包中,跟随虚拟机自启动。其中,.sh为Linux中的shell脚本的后缀名。然后,虚拟机(guestos)根据脚本GuestDrv_install.sh,对其上的虚拟设备的光驱或U盘进行扫描,若发现存在GuestDrvA,则在GuestDrvA中找到适合自己的GuestDrvAX驱动,安装到guestos的驱动目录下并生效驱动。

在本发明实施例中,扫描工具的脚本文件可以为不同的格式,例如,后缀名为.cfg或者其他扩展名,对此不作限定。

应理解,在本发明实施例中,至少一个虚拟机可以是一个或多个,对此不作具体限定。换言之,当宿主机上存在多个虚拟机时仍然适用本发明的技术方案。

可选地,该方法还包括:

至少一个虚拟机中的每个虚拟机接收来自用户的触发信息;

该每个虚拟机根据该触发信息进行启动。

具体而言,至少一个虚拟机中的每个虚拟机可以接收来自用户的触发信息,然后根据该触发信息进行启动或复位。在启动或复位时至少一个虚拟机中的每个虚拟机可以调用扫描工具对其上的虚拟设备进行扫描,以便于查找合适的驱动包。

因此,本发明实施例的安装驱动的方法,宿主机通过在多个驱动包中选择该宿主机的驱动包和该至少一个虚拟机的驱动包,其中,该宿主机的驱动包和该至少一个虚拟机的驱动包是兼容的,然后在该宿主机上安装该宿主机的驱动包,并保存该至少一个虚拟机的驱动包,该至少一个虚拟机的驱动包用于该宿主机控制该至少一个虚拟机安装该至少一个虚拟机的驱动包,能够同时升级或安装宿主机和虚拟机的驱动,从而保证了宿主机和虚拟机的驱动是兼容的。

下面结合具体的例子对本发明实施例进行详细描述。图4示出了根据本发明实施例的安装驱动的一个例子的示意图。应注意,图4中的例子只是为了帮助本领域技术人员更好地理解本发明实施例,而非限制本发明实施例的范围。

如图4所示,该例中包括用户40,宿主机41,指定虚拟机42,应理解,指定虚拟机42可以是宿主机41所管理的至少一个虚拟机中的任一个虚拟机(例如第一虚拟机)。在本例中,服务器在实现宿主机40和指定虚拟机42的驱动升级时,可以分三个阶段完成,其中,第一阶段是升级前准备的阶段(可以包括S401和S402),第二阶段是宿主机的升级阶段(可以包括S403至S405),第三阶段是虚拟机的升级阶段(可以包括S406至S410),具体步骤如下:

可选地,S401,用户40发布多个驱动包PackageA。

该多个驱动包包括宿主机41的驱动包(HostDrvA)和多个虚拟机的驱动包(GuestDrvA),其中,GuestDrvA中包括若干需要支持的虚拟机的驱动包,比如,GuestDrvA1、GuestDrvA2、GuestDrvA3…等。其中,该多个驱动包可能是兼容的,也可能是不兼容的。

S402,指定虚拟机42部署扫描工具。

指定虚拟机42为宿主机或用户指定需要升级驱动的虚拟机。该指定虚拟机42为至少一个虚拟机中的某一虚拟机。指定虚拟机42在升级驱动前需要部署相关的扫描脚本。例如,该扫描脚本为GuestDrv_install.sh。该扫描脚本是跟随指定虚拟机42启动的,用于在指定虚拟机42启动后对其上的虚拟设备进行扫描。

S403,宿主机41接收用户40发送的新的驱动包以及第一通知消息。

宿主机41接收用户40发送的新的驱动包,该驱动包包括宿主机的驱动包和至少一个虚拟机的驱动包。并且,宿主机41还可以接收用户40发送的第一通知消息,该第一通知消息用于指示宿主机41进行驱动升级操作。

S404,宿主机41在该多个驱动包中选择宿主机的驱动包和至少一个虚拟机的驱动包。

宿主机41在接收到用户提供的多个驱动包后,可以在该多个驱动包中选择宿主机的驱动包和至少一个虚拟机的驱动包,其中,该宿主机的驱动包和至少一个虚拟机的驱动包是兼容的。

S405,宿主机41安装宿主机的驱动包,并保存该至少一个虚拟机的驱动包。

宿主机41根据该第一通知信息启动驱动升级操作,具体表现为:将宿主机41的驱动包(HostDrvA)安装到宿主机的驱动目录下,并将至少一个虚拟机的驱动包(GuestDrvA)也安装到宿主机41的某个目录下保存起来。这里,宿主机41保存至少一个虚拟机的驱动包的目的在于:宿主机控制该指定虚拟机42安装驱动包,使得宿主机和指定虚拟机42能够统一升级或安装,从而保证了宿主机和虚拟机的驱动是兼容的。

可选地,S406,宿主机41接收用户40发送的第二通知消息。

宿主机41可以接收用户40发送的第二通知消息,该第二通知消息用于用户40告知宿主机41:某个指定的虚拟机(比如,指定虚拟机42)需要进行驱动升级操作。

S407,宿主机41将至少一个虚拟机的驱动包保存在指定虚拟机42上。

宿主机41在宿主机的驱动包生效之后,且在该至少一个虚拟机中的每个虚拟机启动之前,将至少一个虚拟机的驱动包GuestDrvA保存或插入该指定虚拟机42的虚拟设备(比如,光驱或U盘)中,以便于指定虚拟机42在该至少一个虚拟机的驱动包中查找自己的驱动包,从而使得指定虚拟机42完成驱动安装或升级。

可选地,宿主机41在宿主机的驱动包生效后,在接收到用户40发送的第二通知消息时,将至少一个虚拟机的驱动包保存在指定虚拟机42上。

可选地,宿主机41可以控制该指定虚拟机42进行复位操作。

可选地,S408,指定虚拟机42接收用户40发送的触发信息。

触发信息用于指示指定虚拟机42进行复位操作。指定虚拟机42也可以在接收到用户40发送的触发信息后进行重启,以便于在重启后根据扫描脚本进行扫描操作。

S409,指定虚拟机42扫描虚拟设备。

指定虚拟机42根据触发信息进行重启或复位操作。在启动时,指定虚拟机42根据扫描工具对虚拟设备进行扫描,从而在至少一个虚拟机的驱动包中查找自己对应的驱动包。

S410,若指定虚拟机42扫描到指定虚拟机的驱动包,则安装该驱动包。

如果指定虚拟机42在其虚拟设备上扫描到指定虚拟机42对应的驱动包,则安装该驱动包。比如,如果指定虚拟机42在其虚拟设备上保存的GuestDrvA中,找到适合自己的GuestDrvA1驱动,则将GuestDrvA1驱动安装到其驱动目录下,并生效该GuestDrvA1驱动,从而完成指定虚拟机42的驱动升级。

在本例中,宿主机通过选择宿主机的驱动包和至少一个虚拟机的驱动包,该宿主机的驱动包和至少一个虚拟机的驱动包是兼容的,然后安装宿主机的驱动包,并保存至少一个虚拟机的驱动包。在宿主机的驱动包生效后,宿主机将该至少一个虚拟机的驱动包保存到该指定虚拟机中。指定虚拟机在启动后对其上的虚拟设备进行扫描,若扫描到该指定虚拟机的驱动包,则安装该驱动包。这样,能够保证升级后宿主机和虚拟机的驱动是兼容的。

上文详细描述了根据本发明实施例的安装驱动的方法,下面将描述根据本发明实施例的服务器。

图5示出了根据本发明实施例的服务器500的示意性框图。该服务器500中的宿主机510可以是图1A中的NVFI 130,虚拟机520可以是图1A中的VNF 108。如图5所示,该宿主机500包括:

宿主机510和至少一个虚拟机520;

该宿主机510用于,获取多个驱动包;

该宿主机510还用于,在该多个驱动包中选择该宿主机的驱动包和该至少一个虚拟机的驱动包,其中,该宿主机的驱动包和该至少一个虚拟机的驱动包是兼容的;

该宿主机510还用于,在该宿主机510上安装该宿主机的驱动包;

该宿主机510还用于,在该宿主机510上保存该至少一个虚拟机的驱动包,该至少一个虚拟机的驱动包用于该宿主机控制该至少一个虚拟机安装该至少一个虚拟机的驱动包。

本发明实施例的服务器,通过在该多个驱动包中选择该宿主机的驱动包和该至少一个虚拟机的驱动包,其中,该宿主机的驱动包和该至少一个虚拟机的驱动包是兼容的,然后在该宿主机上安装该宿主机的驱动包,并保存该至少一个虚拟机的驱动包,该至少一个虚拟机的驱动包用于该宿主机控制该至少一个虚拟机安装该至少一个虚拟机的驱动包,能够同时升级或安装宿主机和虚拟机的驱动,从而保证了宿主机和虚拟机的驱动是兼容的。

可选地,作为一个实施例,该宿主机510还用于:

在该宿主机的驱动包生效之后,且在该至少一个虚拟机中的每个虚拟机启动之前,将该至少一个虚拟机的驱动包保存至该至少一个虚拟机中的每个虚拟机的虚拟设备中。

可选地,作为一个实施例,该宿主机510还用于:

控制该至少一个虚拟机启动,该至少一个虚拟机的驱动包用于该至少一个虚拟机中的每个虚拟机在启动时进行安装。

可选地,作为一个实施例,该宿主机510还用于:

对该至少一个虚拟机的驱动包中的每个虚拟机的驱动包,添加标识信息,该标识信息用于该至少一个虚拟机中的每个虚拟机根据该标识信息选择驱动包。

可选地,作为一个实施例,该至少一个虚拟机中的每个虚拟机520用于:

在启动时运行预配置的扫描工具,对该每个虚拟机的虚拟设备进行扫描;

若在该每个虚拟机的虚拟设备中扫描到该每个虚拟机对应的驱动包,则安装该每个虚拟机对应的驱动包。

根据本发明实施例的服务器500可执行根据本发明实施例的安装驱动的方法200,并且该装置500中的各个模块的上述和其它操作和/或功能分别为了实现前述各个方法的相应流程,为了简洁,在此不再赘述。

因此,本发明实施例的服务器,宿主机通过在多个驱动包中选择该宿主机的驱动包和该至少一个虚拟机的驱动包,其中,该宿主机的驱动包和该至少一个虚拟机的驱动包是兼容的,然后在该宿主机上安装该宿主机的驱动包,并保存该至少一个虚拟机的驱动包,该至少一个虚拟机的驱动包用于该宿主机控制该至少一个虚拟机安装该至少一个虚拟机的驱动包,能够同时升级或安装宿主机和虚拟机的驱动,从而保证了宿主机和虚拟机的驱动是兼容的。

图6示出了本发明另一个实施例提供的主机600的结构,或称之为服务器。该主机600包括硬件层610、运行在该硬件层610之上的强制访问控制装置,和运行在该强制访问控制装置上的宿主机Host 601和至少一个虚拟机630,其中,该强制访问控制装置为虚拟机监控器(Virtual Machine Monitor,VMM)620。

换而言之,该主机600包括硬件层610、运行在该硬件层610之上的虚拟机监控器VMM 620,和运行在该VMM 620上的宿主机601和至少一个虚拟机630,该VMM 620用于执行本发明实施例的安装驱动的方法。

硬件层610可以包括处理器611、物理内存612、硬盘613以及网络接口设备614,其中处理器611可以是一个,也可以是多个;网络接口设备614可以是网络适配器或网卡,用于跟任何可连接的网络做连接,例如互联网(Internet)、企业网等。虚拟机630可以包括虚拟处理器631、虚拟内存632、虚拟硬盘633以及客户操作系统(Guest Operation System,Guest OS)635,其中Guest OS 635是运行在虚拟处理器631、虚拟内存632、虚拟硬盘633等虚拟设备之上的操作系统。在Guest OS 635之上还运行有虚拟网络功能636。虚拟机监控器VMM 620可以用于实现前述实施例所描述的安装驱动的方法。

在本发明实施例中,该主机600可以包括宿主机601和至少一个虚拟机630;图6所示的主机600能够实现前述图2至图4方法实施例中由服务器所实现的各个过程,为了避免重复,这里不再赘述。

应理解,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。

应理解,在本发明的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1