发明内容
鉴于现有技术中的问题,本发明提出了一种对刀片服务器系统中的刀片服务器提供可启动的虚拟机管理程序的方法和装置。
根据本发明的一个方面,提供了一种提供用于启动刀片服务器系统中的至少一个刀片服务器的虚拟机管理程序的方法,包括:
接收启动所述至少一个刀片服务器中的一个刀片服务器的请求;
获得该刀片服务器的硬件特征;
根据该刀片服务器的硬件特征,以及刀片服务器的硬件特征和虚拟机管理程序的对应关系,确定该刀片服务器硬件特征对应的虚拟机管理程序,其中,所述确定的虚拟机管理程序被存储在刀片服务器系统中;
通过管理总线使用确定的虚拟机管理程序远程启动该刀片服务器。
根据本发明的另一个方面,提供了一种提供用于启动刀片服务器系统中的至少一个刀片服务器的虚拟机管理程序的装置,该装置位于所述刀片服务器系统中,该装置包括:
接收模块,用于接收启动所述至少一个刀片服务器中的一个刀片服务器的请求;
获得模块,用于获得该刀片服务器的硬件特征;
确定模块,用于根据该刀片服务器的硬件特征,以及存储的刀片服务器硬件特征和虚拟机管理程序的对应关系,确定该刀片服务器硬件特征对应的虚拟机管理程序;
存储模块,用于存储所述确定的虚拟机管理程序;
处理模块,用于通过管理总线使用所述确定的虚拟机管理程序远程启动该刀片服务器。
本发明可以带来如下一个或多个优点:
(1)硬件厂商无需重新设计相关硬件,就能为其产品线中的全部产品提供嵌入式虚拟机管理程序的支持;
(2)用户可以根据需要选择合适的嵌入式虚拟机管理程序,并保证启动时的安全性和稳定性;
(3)对现有硬件不作改动或作很少改动,适于各种数据中心,并且易于远程管理。
具体实施方式
将参照附图更加详细地描述本发明的优选实施方式,在附图中显示了本发明的优选实施例。然而,本发明可以以各种形式实现而不应该理解为被这里阐述的实施例所限制。相反,提供这些实施例是为了使本发明更加透彻和完整,并且,完全将本发明的范围传达给本领域的技术人员。
图1示意性地示出了现有的刀片服务器系统中刀片服务器上存储的嵌入式虚拟机管理程序的示意图。图1的刀片服务器系统100中,包括图中示出的管理模块102和至少一个刀片服务器103,以及图中未示出的I/O切换模块、电源模块、风扇、网络连接和其它模块,这些模块通过底座101相连。管理模块102提供了一致的管理接口。刀片服务器系统的管理遵循IPMI(Intelligent Platform ManagementInterface智能平台管理接口)标准。也就是说,刀片服务器的管理模块通过管理总线与各个刀片服务器相连。IPMI体系结构的中心是微处理器,即基板管理控制器。每个刀片服务器的基板管理控制器103对各自刀片服务器硬件提供了自治的监控、事件日志、恢复控制、配置等功能,并且能够收集趋势数据,甚至预测平台错误,而且还提供了对管理模块101的统一接口。管理模块101通过IPMI消息与基板管理控制器进行通信,支持诸如上电、断电,错误、事件汇报、在各个刀片服务器间协调共享资源的使用等功能。控制台106与管理模块102相连,控制台106可以对管理模块106发送管理命令。同时,刀片服务器系统的管理模块也具有网络连接,但是,该网络连接一般来说比较特殊,因为管理模块的特殊性,如果外部网络可以随意访问管理模块,进而通过管理总线控制刀片服务器,则整个刀片服务器系统的安全性和稳定性就将受到严重的威胁。因此,一般管理模块的网络都会通过特殊的技术控制外界的访问,例如通过防火墙,使得管理模块可以容易地访问外部网络,但是外部网络不能访问管理模块。而且,刀片服务器的网络连接与管理总线是隔离的,这样就可以保证刀片服务器系统的安全性和稳定性。现有技术中,嵌入式虚拟机管理程序104以各种方式存储在刀片服务器中,包括,在刀片服务器的主板的闪存中、刀片服务器的USB存储器中、在刀片服务器103的硬盘中、在与刀片服务器103相连接的网络服务器中等。现有技术中使用多种方式存储的虚拟机管理程序一般都是在机器出厂或销售时配置的,这样配置的虚拟机管理程序如果有更新,或者需要打补丁,是非常不方便的。
另外,嵌入式虚拟机管理程序都是针对刀片服务器103的具体硬件平台,因为虚拟机管理程序的厂商都在该硬件平台上充分测试过,例如:VMware ESXi 3.5.2支持IBM HS21型号的刀片服务器,但是不能支持IBM HS22型号的刀片服务器;又如,为X86类型的CPU开发的虚拟机管理程序可以在Intel和AMD处理器上运行,但是不能在POWER的处理器上运行等。这样,对嵌入式虚拟机管理程序存在如下情况:多个虚拟机管理程序的厂商的多个虚拟机管理程序版本都支持某些刀片服务器的硬件。如果出厂时配置的嵌入式虚拟机管理程序是用户不熟悉的,而用户想要使用该用户熟悉的支持该刀片服务器硬件的其它的厂商或者版本的虚拟机管理程序,这种改变也是非常困难的。
图2示意性地示出了根据本发明的刀片服务器系统中存储的嵌入式虚拟机管理程序的示意图。图2中,与图1相比,增加了一个模块207。在该模块中,可以用于存储虚拟机管理程序,优选地,还可以存储刀片服务器的硬件特征和虚拟机管理程序的对应关系。这样,用户就可以根据自己的需求,选择合适的嵌入式虚拟机管理程序。这个增加的模块207可以是独立的模块,也可以加入到管理模块中,对于启动某一刀片服务器,甚至可以位于其它不使用虚拟机管理程序启动的刀片服务器中。207为独立的模块时,仍然会增加开发成本,所以,优选的实施方式中,207是管理模块中的软件模块。模块207与刀片服务器系统200中的至少一个刀片服务器203可通过管理总线连接以保证启动时的安全性和稳定性。这样,就可以通过管理总线使用合适的嵌入式虚拟机管理程序远程启动该刀片服务器。
图3示意性地示出了根据本发明的一个实施例的提供用于启动刀片服务器系统中的至少一个刀片服务器的虚拟机管理程序的方法步骤。也就是图2中的模块207与图2中的其它模块如何协同工作,满足用户的要求的过程。嵌入式虚拟机管理程序本身可以直接用于启动刀片服务器,并且在上面安装虚拟机,每个虚拟机可以被认为是一个独立硬件系统之上的独立计算机,安装独立的操作系统。根据图3,在步骤S301,方法开始;在步骤S302,接收启动所述至少一个刀片服务器中的一个刀片服务器的请求;在步骤S303,获得该刀片服务器的硬件特征;在步骤S304,根据该刀片服务器的硬件特征,以及刀片服务器的硬件特征和虚拟机管理程序的对应关系,确定该刀片服务器硬件特征对应的虚拟机管理程序,其中,确定的该刀片服务器硬件特征对应的虚拟机管理程序被存储在刀片服务器系统中;在步骤S305,通过管理总线使用确定的虚拟机管理程序远程启动该刀片服务器;在骤S306,步骤结束。
在步骤S305中,刀片服务器的远程启动中,可以采用PXE的方式,优选地,可以利用远程驱动装置的方式挂载虚拟机管理程序到刀片服务器中,从而启动该刀片服务器。远程驱动装置(Remote Drive)具有将本地计算机的存储设备(诸如软盘驱动器、CD-ROM驱动器、USB驱动器、设备镜像文件)提供给远程主机、并作为与远程主机直接连接的物理设备的功能。刀片服务器作为远程主机,将远程驱动装置加载的存储设备视为本地物理设备。使用远程装置挂载时,可以通过将虚拟机管理程序文件在刀片服务器系统的存储器上封装成ISO9660镜像文件,从而使刀片服务器可以访问ISO9660镜像文件。ISO9660是被广泛支持的镜像文件格式。ISO9660规范定义了针对CD-ROM介质的文件系统,并支持不同的计算机操作系统,如UNIX,Windows和Mac OS,以便数据可以在不同平台间相互交换。此外,虚拟机管理程序是通过管理总线挂载到刀片服务器上。由于管理总线与外部网络隔绝,通过管理总线可以提高启动时的安全性和稳定性。
图4示意性地示出了根据本发明的一个实施例的提供用于启动刀片服务器系统中的至少一个刀片服务器的虚拟机管理程序的方法步骤。图4中,首先在步骤S401在刀片服务器系统中存储虚拟机管理程序,虚拟机管理程序可能有一个或多个,并且在步骤S402,在刀片服务器系统中存储刀片服务器的硬件特征和虚拟机管理程序的对应关系。这两个步骤在本发明中都是一个优选的步骤,因为实际系统中,可能以其它的方式将多个虚拟机管理程序和刀片服务器的硬件特征和虚拟机管理程序的对应关系保留在系统中。例如:由第三方存储、或者直接将存储这些信息的介质直接插入到硬件设备中等。
在步骤S403,接收启动所述至少一个刀片服务器中的一个刀片服务器的请求。在步骤S404,获得该刀片服务器的硬件特征。刀片服务器的硬件特征可能以各种方式已经存储在刀片服务器系统,只要直接获得该特征就可以使用,例如对于使用刀片服务器型号作为硬件特征,就可以直接对应合适的虚拟机管理器;如果没有存储该特征,优选地,可以在发送启动请求时附带该刀片服务器的硬件特征,此外,该步骤还包括收集该刀片服务器的硬件特征,具体可以通过管理模块与基板控制器通信获得刀片服务器的硬件特征等多种方式。刀片服务器的硬件特征包括多种,可以有不同层面的硬件信息,例如:对于IBM公司,可以采用刀片服务器的型号代表其硬件类型,因为不同型号的服务器其使用的CPU可能是不同的,当然,也可以采用CPU的型号来对应硬件类型等,也可以使用更复杂的方式收集刀片服务器的硬件特征。例如:通过刀片服务器系统中的管理模块,收集刀片服务器的所有硬件信息:CPU、硬盘、主存储器等。
在步骤S405,判断存储的多个虚拟机管理程序中是否存在该刀片服务器硬件特征对应的虚拟机管理程序。该判断步骤为一个优选的步骤,可以认为是确定步骤S304的一部分,因为可以不进行判断,通过其它手段确保存在需要的虚拟机管理程序,例如,事前已经存储各刀片服务器硬件特征对应的至少一个虚拟机管理程序,而直接用于启动。不同的硬件特征需要不同的虚拟机管理程序,或者不同的虚拟机管理程序版本。硬件特征和虚拟机管理程序的版本之间是一个多对多的映射关系,这样的映射关系可以采用多种方式存储。例如:存储在硬盘上或者内存中,或者由用户通过图形用户界面设置,然后保存的方式等。
在步骤S406,根据该刀片服务器的硬件特征,以及刀片服务器硬件特征和虚拟机管理程序的对应关系,选择该刀片服务器硬件特征对应的虚拟机管理程序,其中,该刀片服务器硬件特征对应的虚拟机管理程序被存储在刀片服务器系统中;该步骤也是确定步骤S304的一部分。由于硬件特征和虚拟机管理程序的版本之间是一个多对多的映射关系,在该刀片服务器硬件特征对应多个虚拟机管理程序时,优选地可以进行选择。选择时,可以随机地选择一个支持该硬件特征的虚拟机管理程序,也可以由用户设定自己的偏好,根据偏好来选择合适的虚拟机管理程序。或者,给支持该硬件特征的多个虚拟机管理程序设定不同的条件,在何种条件下使用何种虚拟机管理程序等。因此,本发明步骤S406还包括选择步骤(图4未示出):响应于存在该刀片服务器硬件特征对应的多个虚拟机管理程序,从该刀片服务器硬件特征对应的多个虚拟机管理程序中选择一个作为确定该刀片服务器硬件特征对应的虚拟机管理程序。然后在步骤S407,通过管理总线使用确定的虚拟机管理程序远程启动该刀片服务器。这样,在步骤S414,一次提供可启动的虚拟机过程就结束了。
根据图4,在另外一种实施方式中,可能因为某种原因,在步骤S406中,刀片服务器硬件特征对应的虚拟机管理程序并没有被存储在刀片服务器的系统中。这时,步骤S405就会返回找不到该刀片服务器硬件特征对应的虚拟机管理程序的消息。接收到这样的消息后就进入步骤S408,向远程服务器发送该刀片服务器硬件特征对应的虚拟机管理程序的请求。一般来说,刀片服务器系统中可以设定一个或多个远程服务器的地址。这些远程服务器可以作为多种刀片服务器硬件对应的虚拟机管理程序的存储中心,可以由刀片服务器的厂商提供该厂商生产的各种刀片服务器对应的多种虚拟机管理程序。在步骤S409,判断远程服务器中是否存在该刀片服务器硬件特征对应的虚拟机管理程序。在步骤S410,响应于远程服务器中存在该刀片服务器硬件特征对应的虚拟机管理程序,通过网络获得该刀片服务器硬件特征对应的虚拟机管理程序并存储。这时,刀片服务器系统中就存储了该刀片服务器硬件特征对应的虚拟机管理程序。可以在步骤S411,更新刀片服务器的硬件特征和虚拟机管理程序的对应关系。然后回到步骤S406,进行步骤S407,这样,然后在步骤S414,一次提供可启动的虚拟机过程就结束了。
根据图4,在另外一种实施方式中,在步骤S409中,判断远程服务器中是否存储刀片服务器硬件特征对应的虚拟机管理程序,如果没有,这时进入步骤S412。响应于接收到远程服务器中不存在该刀片服务器硬件特征对应的虚拟机管理程序的通知,请求更新远程服务器地址。在步骤S413,接收更新的远程服务器地址。也就是说,如果在现有的一个或多个服务器中检索不到该刀片服务器硬件特征对应的虚拟机管理程序,用户可以更改服务器的地址,向更多的服务器查询该刀片服务器硬件特征对应的虚拟机管理程序,然后返回到步骤S408,开始进一步的判断查询。
图4的方法中,并没有限定存储模块在刀片服务器系统中的具体位置。存储模块用于存储虚拟机管理程序,优选地,还可以存储刀片服务器硬件特征和虚拟机管理程序的对应关系。在一种优选的实施方式中,该存储模块可以位于刀片服务器系统的管理模块中。图4的功能成为管理模块管理功能的一部分。这样,获得该刀片服务器的硬件特征也变得非常容易,因为管理模块本身具可以获得该信息。
在同一个发明构思下,图5示意性地示出了根据本发明的一个实施例的提供用于启动刀片服务器系统中的刀片服务器的虚拟机管理程序的装置框图。该装置对应着图2中模块207。该装置位于所述刀片服务器系统中。图5中,该装置500包括:接收模块501,用于接收启动所述至少一个刀片服务器中的一个刀片服务器的请求;获得模块502,用于获得该刀片服务器的硬件特征;确定模块503,用于根据该刀片服务器的硬件特征,以及存储的刀片服务器的硬件特征和虚拟机管理程序的对应关系,确定该刀片服务器硬件特征对应的虚拟机管理程序;存储模块504,用于存储确定的该刀片服务器硬件特征对应的虚拟机管理程序;;处理模块505,用于通过管理总线使用所述确定的虚拟机管理程序远程启动该刀片服务器。
在一种优选的实施方式中,图5装置的确定模块504还包括:判断模块(图5中未示出),用于判断存储的多个虚拟机管理程序中是否存在该刀片服务器硬件特征对应的虚拟机管理程序;其中,所述处理模块505响应于该刀片服务器硬件特征对应的虚拟机管理程序存在,控制该刀片服务器硬件特征对应的虚拟机管理程序在该刀片服务器上启动。
在一种优选的实施方式中,图5装置的获得模块502还包括收集模块(图5中未示出),用于收集该刀片服务器的硬件特征。
在另外一种优选的实施方式中,图5装置的确定模块504还包括选择模块(图5中未示出),响应于存在该刀片服务器硬件特征对应的多个虚拟机管理程序,从该刀片服务器硬件特征对应的多个虚拟机管理程序中选择一个作为确定的该刀片服务器硬件特征对应的虚拟机管理程序。
在另外一种优选的实施方式中,图5装置中的确定模块504还用于响应于不存在该刀片服务器硬件特征对应的虚拟机管理程序,向远程服务器发送该刀片服务器硬件特征对应的虚拟机管理程序的请求;响应于远程服务器中存在该刀片服务器硬件特征对应的虚拟机管理程序,通过网络获得该刀片服务器硬件特征对应的虚拟机管理程序并存储。
在另外一种优选的实施方式中,图5装置的确定模块504还用于响应于不存在该刀片服务器硬件特征对应的虚拟机管理程序,向远程服务器发送该刀片服务器硬件特征对应的虚拟机管理程序的请求;响应于接收到远程服务器中不存在该刀片服务器硬件特征对应的虚拟机管理程序的通知,请求更新远程服务器地址;接收更新的远程服务器地址;向更新的远程服务器请求发送该刀片服务器硬件特征对应的虚拟机管理程序;响应于更新的远程服务器中存在该刀片服务器硬件特征对应的虚拟机管理程序,获取该刀片服务器硬件特征对应的虚拟机管理程序并作为确定的虚拟机管理程序存储。
在另外一种优选的实施方式中,图5装置的确定模块504还包括更新模块(图5中未示出),用于更新刀片服务器的硬件特征和虚拟机管理程序的对应关系。
在一种优选的实施方式中,图5的装置在所述刀片服务器系统中的管理模块中。
虽然这里参照附图描述了本发明的示例性实施例,但是应该理解本发明不限于这些精确的实施例,并且在不背离本发明的范围和宗旨的情况下,本领域普通技术人员能对实施例进行各种变化的修改。所有这些变化和修改意欲包含在所附权利要求中限定的本发明的范围中。
并且根据上述描述,所属技术领域的技术人员知道,本发明可以体现为装置、方法或计算机程序产品。因此,本发明可以具体实现为以下形式,即,可以是完全的硬件、完全的软件(包括固件、驻留软件、微代码等)、或者本文一般称为“电路”、“模块”或“系统”的软件部分与硬件部分的组合。此外,本发明还可以采取体现在任何有形的表达介质(medium of expression)中的计算机程序产品的形式,该介质中包含计算机可用的程序码。
可以使用一个或多个计算机可用的或计算机可读的介质的任何组合。计算机可用的或计算机可读的介质例如可以是——但不限于——电的、磁的、光的、电磁的、红外线的、或半导体的系统、装置、器件或传播介质。计算机可读介质的更具体的例子(非穷举的列表)包括以下:有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、诸如支持因特网或内部网的传输介质、或者磁存储器件。注意计算机可用的或计算机可读的介质甚至可以是上面印有程序的纸张或者其它合适的介质,这是因为,例如可以通过电扫描这种纸张或其它介质,以电子方式获得程序,然后以适当的方式加以编译、解释或处理,并且必要的话在计算机存储器中存储。在本文件的语境中,计算机可用的或计算机可读的介质可以是任何含有、存储、传达、传播、或传输供指令执行系统、装置或器件使用的或与指令执行系统、装置或器件相联系的程序的介质。计算机可用的介质可包括在基带中或者作为载波一部分传播的、由其体现计算机可用的程序码的数据信号。计算机可用的程序码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、RF等等。
用于执行本发明的操作的计算机程序码,可以以一种或多种程序设计语言的任何组合来编写,所述程序设计语言包括面向对象的程序设计语言——诸如Java、Smalltalk、C++之类,还包括常规的过程式程序设计语言——诸如”C”程序设计语言或类似的程序设计语言。程序码可以完全地在用户的计算上执行、部分地在用户的计算机上执行、作为一个独立的软件包执行、部分在用户的计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在后一种情形中,远程计算机可以通过任何种类的网络——包括局域网(LAN)或广域网(WAN)——连接到用户的计算机,或者,可以(例如利用因特网服务提供商来通过因特网)连接到外部计算机。
此外,本发明的流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得通过计算机或其它可编程数据处理装置执行的这些指令,产生实现流程图和/或框图中的方框中规定的功能/操作的装置(means)。
也可以把这些计算机程序指令存储在能指令计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令产生一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(instruction means)的制造品,
也可以把计算机程序指令加载到计算机或其它可编程数据处理装置上,使得在计算机或其它可编程数据处理装置上执行一系列操作步骤,以产生计算机实现的过程,从而在计算机或其它可编程装置上执行的指令就提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。