著录项信息
专利名称 | 云主机部署的方法及系统 |
申请号 | CN200910244182.6 | 申请日期 | 2009-12-30 |
法律状态 | 暂无 | 申报国家 | 中国 |
公开/公告日 | 2010-09-22 | 公开/公告号 | CN101840346A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F9/455 | IPC分类号 | G;0;6;F;9;/;4;5;5查看分类表>
|
申请人 | 北京世纪互联宽带数据中心有限公司 | 申请人地址 | 上海市浦东新区科苑路88号2幢3号楼601-057即657单元
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 上海蓝云网络科技有限公司 | 当前权利人 | 上海蓝云网络科技有限公司 |
发明人 | 常晓东;蒋建平;沈启龙 |
代理机构 | 中国国际贸易促进委员会专利商标事务所 | 代理人 | 颜镝 |
摘要
本发明公开了一种云主机部署的方法及系统,该方法包括:根据用户建立虚拟机的请求建立虚拟机对象;修改虚拟机对象的属性,将虚拟机对象转化为模板数据文件;复制模板数据文件,创建预定数量的预制虚拟机;接收预制虚拟机的地址和公钥设置,启用一个预制虚拟机。本发明提供的云主机部署的方法及系统解决了当前云主机的部署完全依靠手工进行,生产率低运维成本高的缺陷;避免了人工部署云主机错误概率高的问题,满足了快速部署云主机获取充足计算能力的需要。
1.一种云主机部署的方法,其特征在于,所述方法包括:
根据用户建立虚拟机的请求建立用Java类实现的虚拟机对象;
修改所述虚拟机对象的属性,将所述虚拟机对象转化为模板数据文件;
复制所述模板数据文件,创建预定数量的预制虚拟机;
接收所述预制虚拟机的地址和公钥设置,启用一个所述预制虚拟机;其中:
在启用一个所述预制虚拟机后,再复制所述模板,创建一个新的预制虚拟机;
在创建一个所述新的预制虚拟机后,将所述新的预制虚拟机加入到所述模板对应的预制虚拟机列表中。
2.根据权利要求1所述的方法,其特征在于,所述方法进一步包括:在创建预定数量的预制虚拟机之前,判断终端节点的剩余计算和存储能力;
如果所述终端节点有充足的剩余计算和存储能力,则在所述终端节点上创建预定数量的所述预制虚拟机;
如果剩余资源不足,当一个所述模板对应的预制虚拟机列表较长,使得另一个模板对应的预制虚拟机列表无法达到预定数量时,查找预制虚拟机列表最长的模板,删除所述预制虚拟机列表最长的模板的一个或多个预制虚拟机,从而将预制虚拟机列表过长的模板进行资源部分释放,以使所述另一个模板对应的预制虚拟机能够达到预定数量。
3.根据权利要求1所述的方法,其特征在于,所述方法进一步包括:在创建预定数量的预制虚拟机之前,判断终端节点的剩余计算和存储能力;
如果所述终端节点有充足的剩余计算和存储能力,则在所述终端节点上创建预定数量的所述预制虚拟机;
如果剩余资源不足,当剩余资源不能满足所有模板对应的预制虚拟机列表都达到预定数量时,将所有模板对应的预制虚拟机列表进行平均化,以使所有模板对应的预制虚拟机列表相差不超过1。
4.一种云主机部署的系统,其特征在于,所述系统包括网络文件系统服务器、管理服务器和终端节点,其中:
网络文件系统服务器,用于根据用户建立虚拟机的请求建立用Java类实现的虚拟机对象;接收管理服务器为预制虚拟机分配的地址和公钥设置,并在所述预制虚拟机第一次启动时配置所述地址和公钥设置;
所述管理服务器,包括模板转化模块、虚拟机创建模块、虚拟机启用模块和模板释放模块,其中:
模板转化模块,用于修改所述虚拟机对象的属性,将所述虚拟机对象转化为模板数据文件;
虚拟机创建模块,用于复制所述模板数据文件,在所述终端节点上创建预定数量的预制虚拟机;在启用一个所述预制虚拟机后,再复制所述模板数据文件,创建一个新的预制虚拟机;
虚拟机启用模块,用于向所述网络文件系统服务器分配所述预制虚拟机的所述地址和公钥设置,以及启用一个所述预制虚拟机;
模板释放模块,用于在所述虚拟机创建模块创建一个新的预制虚拟机后,将所述新的预制虚拟机加入到所述模板对应的预制虚拟机列表中;
所述终端节点,用于为所述管理服务器创建所述预制虚拟机提供存储和计算能力。
5.根据权利要求4所述的系统,其特征在于,所述管理服务器还包括:
终端节点判断模块,用于在创建预定数量的预制虚拟机之前,判断所述终端节点的剩余计算和存储能力;
如果所述终端节点有充足的剩余计算和存储能力,则在所述终端节点上创建预定数量的所述预制虚拟机;
如果剩余资源不足,当一个所述模板对应的预制虚拟机列表较长,使得另一个模板对应的预制虚拟机列表无法达到预定数量时,终端节点选择模块查找预制虚拟机列表最长的模板,删除所述预制虚拟机列表最长的模板的一个或多个预制虚拟机,从而将预制虚拟机列表过长的模板进行资源部分释放,以使所述另一个模板对应的预制虚拟机能够达到预定数量。
6.根据权利要求4所述的系统,其特征在于,所述管理服务器还包括:
终端节点判断模块,用于在创建预定数量的预制虚拟机之前,判断所述终端节点的剩余计算和存储能力;
如果所述终端节点有充足的剩余计算和存储能力,则在所述终端节点上创建预定数量的所述预制虚拟机;
如果剩余资源不足,当剩余资源不能满足所有模板对应的预制虚拟机列表都达到预定数量时,终端节点选择模块将所有模板对应的预制虚拟机列表进行平均化,以使所有模板对应的预制虚拟机列表相差不超过1。
云主机部署的方法及系统\n技术领域\n[0001] 本发明涉及虚拟机(VM,Virtual Machine)技术领域,尤其涉及一种云主机部署的方法及系统。\n背景技术\n[0002] 云计算是一种按照用户需求、便利地通过网络获取计算资源(如网络、服务器、存储设备和应用服务等)的计算模式,这些资源可以来自一个共享的、可配置的资源池,并能够快速地获取和释放。采用云计算的模式能够提高计算效率和资源的可用性。\n[0003] 通过云计算模式,客户可以按需、自动地获取计算能力,例如服务器计算时间和网络存储,而不需要和服务提供商进行人为交互(即云模式的按需自助服务特性)。计算能力可通过网络标准机制进行访问,使得各种客户端(如移动电话、便携电脑或PDA)均可以使用(即云模式的网络广泛接入特性)。服务提供商将资源池化,通过多租户模式为客户提供各种服务,并根据客户的需求动态提供物理或虚拟化的资源。云模式的用户可以快速、弹性的获得服务提供商提供的服务,在某种情况下可以自动化的获取,其规模可以快速扩大或缩小。对于客户来说,供应能力似乎是无限的,可以任意购买,随时购买(即云模式的快速弹性)。云系统对服务(存储、处理能力、带宽、活动用户帐户)进行适当的抽象,并提供服务计量能力,按使用量计费以自动控制和优化资源使用情况。\n[0004] 云计算模式提供三种服务模式:SaaS模式(Cloud Software as aService)为客户提供使用运行在云基础设施上的应用程序的能力。该应用程序能被各种客户端(如web浏览器)访问,客户无法控制和管理底层的云基础设施。PaaS模式(Cloud Platform as a Service)为客户提供将客户自己的或购买的应用程序部署到云基础设施的能力。该应用程序是由服务提供商支持的编程工具或语言编写的。客户无法管理和控制底层的云基础设施,但可以控制自己部署的应用程序和应用配置环境。IaaS模式(Cloud Infrastructure as a Service)为客户提供处理能力、存储能力、网络和基本计算资源,客户可以使用该资源部署或运行自己的软件,如操作系统或应用程序。客户无法管理和控制底层的云基础设施,但可以控制操作系统、存储、部署的应用程序,或有限的网络组件控制权。\n[0005] 云计算模式可以采用四种部署模式:私有云的云基础设施是为某个组织独立运作的,可以被该组织管理,也可以委托第三方管理。这些云基础设施可以用于生产环境也可以当作备用设备。社区云的云基础设施被几个组织所共享,以支持某个具有共同需求的社区。\n社区云可以被该组织管理,也可以委托第三方管理。这些云基础设施可以用于生产环境也可以当作备用设备。公有云的云基础设施为公众或某个大的工业集团提供服务,它属于某个出售或提供云服务的组织。综合云的云基础设施由两个或两个以上相对独立的的云(如私有云、社区云或共有云)组而成,但为了获取数据和应用程序的可移植性,而采用的某种标准或技术将它们绑定在一起。\n[0006] 云主机是采用虚拟化技术提供云计算的IaaS模式服务的产品。云主机具有资源利用率高、高可用性(HA,High Availability)、单主机的弹性扩展(CPU、MEM、DISK、NET)、分布式的弹性扩展,以及快速部署能力(应用性主机快速部署,客户可以自己安装操作系统)。客户在使用提供商提供的计算能力租用服务时,可以完全像使用一台物理服务器一样使用云主机。与租用物理服务器相比,同等性能的云服务器具备更低的总所有成本TCO(Total Cost of Ownership)、更好的扩展性和更强的安全可靠性。\n[0007] 虚拟化技术应用到计算机系统中可以让不同用户看到不同的单个系统,如完全虚拟化(Full Virtualization)技术中一台计算机可以同时运行Linux和Microsoft Windows。虚拟化也可以使用更加复杂的格式——硬件仿真,其中单个计算机看上去具有多个架构;对一个用户来说它是标准的x86平台,而对另一个用户来说它是IBM Power PC平台。更加简单的虚拟化是操作系统虚拟化,其中一台计算机可以运行相同类型的多个操作系统;这种虚拟化可以将一个操作系统的多个服务器隔离开来(这意味着全都必须使用相同类型和版本的操作系统)。\n[0008] 实现虚拟化的方法很多,可以通过不同层次的抽象来实现相同的虚拟化结果。以Linux中常用的三种虚拟化方法为例进行简要说明。\n[0009] 图1示出了现有技术中硬件仿真的虚拟化技术的结构示意图。硬件仿真是最复杂的虚拟化实现技术,如图1所示,在宿主系统上创建硬件VM来模拟所需要的硬件。使用硬件仿真,可以在一个ARM(Advanced RISC Machines)处理器主机上运行为PowerPC设计的操作系统,而不需要任何修改;甚至可以运行多个虚拟机,每个虚拟器仿真一个不同的处理器。但是由于每条指令都必须在底层硬件上进行仿真,速度减慢100倍的情况也有可能发生,因此,硬件仿真的主要问题是速度非常慢。若要实现高度保真的仿真(涉及周期精度、所仿真的CPU管道以及缓存行为),实际速度差距甚至可能会达到1000倍之多。\n[0010] 图2示出了现有技术中完全虚拟化技术的结构示意图。如图2所示,完全虚拟化使用一个虚拟化管理程序虚拟机(Hypervisor VMM,Hypervisor Virtual Machine Monitor),它在客户操作系统和原始硬件之间进行协调,VMM在客户操作系统和裸硬件之间提供协调。\n特定受保护的指令必须被捕获下来并在虚拟控制程序Hypervisor中进行处理,因为这些底层硬件并不由操作系统所拥有,而是由操作系统通过Hypervisor所共享。虽然完全虚拟化的速度比硬件仿真的速度要快,但是其性能要低于裸硬件,因为中间经过了Hypervisor的协调过程。完全虚拟化的最大优点是操作系统无需任何修改就可以直接运行,而其主要限制是操作系统必须要支持底层硬件(如PowerPC)。\n[0011] 另一种流行的虚拟化技术是超虚拟化(Paravirtualization),图3示出了现有技术中超虚拟化技术的结构示意图。超虚拟化与完全虚拟化有一些类似,同样使用了一个Hypervisor来实现对底层硬件的共享访问,还将与虚拟化有关的代码集成到了操作系统本身中;因此,操作系统本身在虚拟化进程中会相互紧密协作,而不再需要重新编译或捕获特权指令。超虚拟化提供了与未经虚拟化的系统相接近的性能。与完全虚拟化类似,超虚拟化技术可以同时支持多个不同的操作系统。超虚拟化技术的缺点是需要为Hypervisor修改客户操作系统。\n[0012] 图4示出了现有技术中操作系统级虚拟化技术的结构示意图。如图4所示,操作系统级的虚拟化技术是在操作系统本身之上实现服务器的虚拟化,该虚拟化方法支持单个操作系统,并可以将独立的服务器相互简单地隔离开来。操作系统级的虚拟化要求对操作系统的内核进行一些修改,但是其优点是可以获得原始性能。\n[0013] 目前,云主机的部署完全是手工进行,错误率高,效率较低,无法满足快速云主机快速部署的需求,而且运行和维护成本高。\n发明内容\n[0014] 本发明要解决的一个技术问题是提供一种云主机部署方法及系统,能够满足用户快速部署云主机获取充足计算能力的需要。\n[0015] 本发明的一个方面提供了一种云主机部署的方法,该方法包括:根据用户建立虚拟机的请求建立虚拟机对象;修改虚拟机对象的属性,将虚拟机对象转化为模板数据文件;\n复制模板数据文件,创建预定数量的预制虚拟机;接收预制虚拟机的地址和公钥设置,启用一个预制虚拟机。\n[0016] 本发明提供的云主机部署的方法的一个实施例中,该方法进一步包括:在启用一个预制虚拟机后,再复制模板,创建一个新的预制虚拟机。\n[0017] 本发明提供的云主机部署的方法的一个实施例中,该方法进一步包括:在创建一个新的预制虚拟机后,将新的预制虚拟机加入到模板对应的预制虚拟机列表中。\n[0018] 本发明提供的云主机部署的方法的一个实施例中,该方法进一步包括:在创建预定数量的预制虚拟机之前,判断终端节点的剩余计算和存储能力;如果终端节点有充足的剩余计算和存储能力,则在终端节点上创建预定数量的预制虚拟机;如果剩余资源不足,当一个模板对应的预制虚拟机列表较长,使得另一个模板对应的预制虚拟机列表无法达到预定数量时,查找预制虚拟机列表最长的模板,删除预制虚拟机列表最长的模板的一个或多个预制虚拟机以使另一个模板对应的预制虚拟机能够达到预定数量。\n[0019] 本发明提供的云主机部署的方法的一个实施例中,该方法进一步包括:在创建预定数量的预制虚拟机之前,判断终端节点的剩余计算和存储能力;如果终端节点有充足的剩余计算和存储能力,则在终端节点上创建预定数量的预制虚拟机;如果剩余资源不足,当剩余资源不能满足所有模板对应的预制虚拟机列表都达到预定数量时,将所有模板对应的预制虚拟机列表进行平均化,以使所有模板对应的预制虚拟机列表相差不超过1。\n[0020] 本发明的另一个方面提供了一种云主机部署的系统,该系统包括:网络文件系统服务器,用于根据用户建立虚拟机的请求建立虚拟机对象;接收管理服务器为预制虚拟机分配的地址和公钥设置,并在预制虚拟机第一次启动时配置地址和公钥设置;管理服务器,用于修改虚拟机对象的属性,将虚拟机对象转化为模板数据文件,复制模板数据文件,在终端节点上创建预定数量的预制虚拟机;以及分配预制虚拟机的地址和公钥设置,启用预制虚拟机;终端节点,用于为管理服务器创建预制虚拟机提供存储和计算能力。\n[0021] 本发明提供的云主机部署的系统的一个实施例中,管理服务器包括:模板转化模块,用于修改虚拟机对象的属性,将虚拟机对象转化为模板数据文件;虚拟机创建模块,用于复制模板数据文件,在终端节点上创建预定数量的预制虚拟机;在启用一个预制虚拟机后,再复制模板数据文件,创建一个新的预制虚拟机;虚拟机启用模块,用于向网络文件系统服务器分配预制虚拟机的地址和公钥设置,以及启用一个预制虚拟机。\n[0022] 本发明提供的云主机部署的系统的一个实施例中,管理服务器还包括:终端节点判断模块,用于在创建预定数量的预制虚拟机之前,判断终端节点的剩余计算和存储能力;\n如果终端节点有充足的剩余计算和存储能力,则在终端节点上创建预定数量的预制虚拟机;如果剩余资源不足,当一个模板对应的预制虚拟机列表较长,使得另一个模板对应的预制虚拟机列表无法达到预定数量时,终端节点选择模块查找预制虚拟机列表最长的模板,删除预制虚拟机列表最长的模板的一个或多个预制虚拟机以使另一个模板对应的预制虚拟机能够达到预定数量。\n[0023] 本发明提供的云主机部署的系统的一个实施例中,管理服务器还包括:终端节点判断模块,用于在创建预定数量的预制虚拟机之前,判断终端节点的剩余计算和存储能力;\n如果终端节点有充足的剩余计算和存储能力,则在终端节点上创建预定数量的预制虚拟机;如果剩余资源不足,当剩余资源不能满足所有模板对应的预制虚拟机列表都达到预定数量时,节点选择模块将所有模板对应的预制虚拟机列表进行平均化,以使所有模板对应的预制虚拟机列表相差不超过1。\n[0024] 本发明提供的云主机部署的系统的一个实施例中,管理服务器还包括:模板释放模块,用于在虚拟机创建模块创建一个新的预制虚拟机后,将新的预制虚拟机加入到模板对应的预制虚拟机列表中。\n[0025] 本发明提供一种云主机部署的方法及系统,将用户请求的虚拟机转化为模板,预先利用系统的空闲时间预制作一些虚拟机,在用户请求启用时进行IP地址和SSH Key设置再进行启用,从而极大地减少了系统部署虚拟机的时间,实现了快速部署云主机的目的;此外,避免了人工部署云主机错误概率高的问题,满足了用户快速部署云主机获取充足计算能力的需要。\n附图说明\n[0026] 图1示出了现有技术中硬件仿真的虚拟化技术的结构示意图;\n[0027] 图2示出了现有技术中完全虚拟化技术的结构示意图;\n[0028] 图3示出了现有技术中超虚拟化技术的结构示意图;\n[0029] 图4示出了现有技术中操作系统级虚拟化技术的结构示意图;\n[0030] 图5示出了本发明的云主机部署的方法的一个实施例的流程图;\n[0031] 图6示出了本发明的云主机部署的系统的一个实施例的流程图;\n[0032] 图7(a)-7(d)示出了在本发明提供的云主机部署的系统上执行云主机快速部署的示意图;\n[0033] 图8示出了本发明的云主机部署的方法的另一个实施例的流程图;\n[0034] 图9示出了本发明的云主机部署的方法的另一个实施例的流程图;\n[0035] 图10示出了本发明提供的云主机部署的系统另一个实施例的结构示意图;\n[0036] 图11示出了本发明提供的云主机部署的系统另一个实施例的结构示意图。\n具体实施方式\n[0037] 下面参照附图对本发明进行更全面的描述,其中说明本发明的示例性实施例。\n[0038] 图5示出了本发明的云主机部署的方法的一个实施例的流程图。\n[0039] 如图5所示,云主机部署的方法流程500包括:步骤502,根据用户建立虚拟机的请求建立虚拟机对象。例如,用户根据实际应用需求向服务提供商的服务管理平台提出建立普通虚拟机的请求,服务管理平台接收到用户建立虚拟机的请求后,为用户建立相应的虚拟机对象;该对象是指一个用Java类实现的虚拟机对象。服务提供商建立的虚拟机对象通常至少包括虚拟磁盘和网络两个类,其中磁盘主要包括虚拟的操作系统磁盘和数据磁盘(分两个虚拟磁盘有利于对操作系统磁盘进行格式化时不影响数据磁盘的安全性),其中磁盘、网络是虚拟机对象的两个属性,可以通过虚拟机对象的“set函数”、“get函数”对磁盘和网络等属性进行设置和查询;设置磁盘和网络等类的参数属性,并将相关类别、属性等参数保存在为虚拟机创建的系统列表中。\n[0040] 步骤504,修改虚拟机对象的属性,将虚拟机对象转化为模板数据文件。例如,服务提供商根据用户请求建立虚拟机对象后,由运维人员将虚拟机及其在相应数据库中的相关属性进行重新设置(如在虚拟机系统列表中将虚拟机对象的属性修改为“模板”属性),并将新的属性设置保存在虚拟机系统列表中。一旦将虚拟机对象的属性设置为模板,该虚拟机对象的模板存储在网络文件系统(NFS,Network File System)服务器提供的共享磁盘上,就可以在其它终端节点上部署该模板的备用机。\n[0041] 步骤506,复制模板数据文件,创建预定数量的预制虚拟机。例如,系统侦测到虚拟机系统列表中,某虚拟机对象的属性为“模板”时,将该“模板”属性对应的虚拟机相关的虚拟文件复制预定数量(如三份),设置在有剩余计算和存储能力的设备(如计算机终端或网络设备)上,作为预制作的虚拟机。在选择有剩余计算和存储能力的设备时,主要遵从如下原则:尽可能利用已经使用的设备上的计算和存储能力,直到该设备不能容纳更多预制作的虚拟机为止再扩展到其它有计算和存储能力的设备上。\n[0042] 步骤508,接收预制虚拟机的地址和公钥设置,启用一个预制虚拟机。例如,在NFS服务器使用模板创建虚拟机时,管理服务器将为该预制的虚拟机配置IP地址和安全shell密钥(SSH Key,是指通过安全shell远程登录到客户操作系统时使用的公钥);NFS服务器接收到该虚拟机的IP地址和SSH Key后,动态生成客户操作系统(可以是用户在虚拟机上安装的操作系统)初始启动脚本文件;该初始启动脚本文件用于在该虚拟机第一次启动时配置IP地址和SSH Key。对预制作的虚拟机配置完毕后,系统启用该虚拟机,并向用户返回该可用的虚拟机(对用户而言,用户将可以完全像使用一台物理服务器一样使用云主机提供的虚拟机)。稍后对虚拟机地址和公钥设置作进一步详细介绍。\n[0043] 静态IP地址分配通过使用NBD服务网络共享镜像的方案实现的。具体方法可以是在管理服务器创建包含网络配置相关参数的配置文件:IP.cfg,举例来说,其具体内容包括:\n[0044] IP:211.99.208.13\n[0045] NETMASK:255.255.255.0\n[0046] GATEWAY:211.99.208.1\n[0047] DNS:202.106.0.20\n[0048] 将该IP.cfg文件放入文件夹中,例如放入当前路径下文件夹211.99.208.13中。\n使用命令:mkisofs-r-J-V 211.99.208.13-oConfiguration.iso 211.99.208.13/;即可在当前路径下创建出光盘文件Configuration.iso。\n[0049] SSH Key分配涉及SSH服务端配置方法,可以参考现有技术“SSH自动登录配置”,具体来说,使用ssh_keygen生成一对key(如使用RSA密钥体系创建的Key)。将公有密钥放入创建iso使用的原文件夹中,就可以通过运行以下脚本在系统启动时与网络配置参数一同配置到系统中。注:私钥(私有Key)文件名为id_rsa,公钥(公有Key)文件名为id_rsa.pub,文件名是指定的。\n[0050] #!/bin/sh\n[0051] TPATH=\n[0052] if[-d/data];then\n[0053] echo directory/data exist!!\n[0054] else\n[0055] mkdir/data\n[0056] fi\n[0057] if[`mount|grep/data|we-l`-ne″0″];then\n[0058] umount/data\n[0059] fi\n[0060] TPATH=/data\n[0061] mount/dev/hde/data>/dev/zero 2>/dev/zero\n[0062] if[`echo$?`!=″0″];then\n[0063] mount/dev/hdd/data>/dev/zero 2>/dev/zero\n[0064] if[`echo$?`!=″0″];then\n[0065] echo″mount error″\n[0066] exit\n[0067] else\n[0068] if[[`test-f/data/IP.cfg`]&&[`test-f[0069] /data/id_rsa`]&&[`test-f/data/id_rsa.pub`]];then\n[0070] echo Configurate file is not in the special disk!!\n[0071] umount/data\n[0072] exit\n[0073] else\n[0074] echo it is needed!![0075] fi\n[0076] fi\n[0077] else\n[0078] if[[`test-f/data/IP.cfg`]&&[`test-f/data/id_rsa`]&&[0079] [`test-f/data/id_rsa.pub`]];then\n[0080] echo Configurate file is not in the special disk!!\n[0081] umount/data\n[0082] exit\n[0083] else\n[0084] echo″/dev/hde is not IP source″\n[0085] fi\n[0086] fi\n[0087] DNS=`cat″$TPATH″/IP.cfg|grep DNS|cut-d:-f2`\n[0088] IP=`cat″$TPATH″/IP.cfg|grep IP|cut-d:-f2`\n[0089] NETMASK=`cat″$TPATH″/IP.cfg|grep NETMASK|cut-d:-f2`[0090] GATEWAY=`cat″$TPATH″/IP.cfg|grep GATEWAY|cut-d:-f2`[0091] MAC=`cat″$TPATH″/IP.cfg|grep MAC|cut-d:-f2-7`\n[0092] echo DNS:$DNS IP:$IP NETMASK:$NETMASK\n[0093] GATEWAY:$GATEWAY MAC=$MAC\n[0094] if[`cat/etc/resove.conf|grep$DNS|wc-l`-eq″0″];then[0095] echo-e″nameserver\t$DNS″>>/etc/resolv.conf[0096] fi\n[0097] NETWORK=`echo$GATEWAY|cut-d.-f1-3`\n[0098] BROADCAST=`echo$GATEWAY|cut-d.-f1-3`\n[0099] #MAC_STR=`cat/etc/sysconfig/network-scripts/ifcfg-eth0|grep[0100] HWADDR`\n[0101] #service network stop\n[0102] //下面的代码在不同的系统是不同的,在CentOS中,始终是用eth0,但是在SUSE \n10中使用的是第一块网卡名字,可能不为eth0。\n[0103] CENTOS\n[0104] CFG_FILE=/etc/sysconfig/network-scripts/ifcfg-eth0\n[0105] ifdown eth0\n[0106] SUSE 10\n[0107] CARD=`ls/sys/class/net|grep eth|sed-n′1p′`\n[0108] echo$CARD\n[0109] CFG_FILE=/etc/sysconfig/network/ifcfg-″$CARD″\n[0110] ifdown $CARD\n[0111] #ifconfig eth0 hw ether $MAC\n[0112] echo″DEVICE=eth0″>$CFG_FILE\n[0113] echo″ONBOOT=yes″>>$CFG_FILE\n[0114] echo″BOOTPROTO=static″>>$CFG_FILE\n[0115] #echo″HWADDR=$MAC″>>$CFG_FILE\n[0116] echo″IPADDR=$IP″>>$CFG_FILE\n[0117] echo″NETMASK=$NETMASK″>>$CFG_FILE\n[0118] echo″NETWORK=$NETWORK″.0>>$CFG_FILE\n[0119] echo″BROADCAST=$BROADCAST″.255>>$CFG_FILE\n[0120] echo″GATEWAY=$GATEWAY″>>$CFG_FILE\n[0121] echo″TYPE=Ethernet″>>$CFG_FILE\n[0122] echo″USERCTL=no″>>$CFG_FILE\n[0123] echo″IPV6INIT=no″>>$CFG_FILE\n[0124] echo″PEERDNS=no″>>$CFG_FILE\n[0125] service network restart\n[0126] mv/etc/rc3.d/K10network/etc/rc3.d/S10network\n[0127] cp/data/id_rsa.pub/root/.ssh/authorized_keys\n[0128] chmod 600/root/.ssh/authorized_keys\n[0129] umount/data\n[0130] SUSE:该脚本在/etc/rc.d/rc脚本执行的最后执行该脚本,可以达到系统启动时执行该脚本的效果。\n[0131] CENTOS:该脚本在/etc/rc.local脚本执行的最后执行该脚本。\n[0132] 在执行完该脚本后删除该脚本,以达到脚本只在第一次运行时执行,由于已经写到配置文件中,系统在启动的时候也能够按照第一次的配置完成配置。\n[0133] 本发明提供的云主机部署的方法的一个实施例中,在NFS服务器完成对预制作的虚拟机的IP和SSH Key设置,并启用该预制虚拟机后,由管理服务器再复制该模板,并在有剩余计算和存储能力的设备上再创建一个该模板对应的新的预制虚拟机。\n[0134] 本发明提供的云主机部署的方法的一个实施例中,在管理服务器创建一个该模板对应的新的预制虚拟机后,将该新的预制虚拟机加入到该模板对应的预制虚拟机列表中。\n[0135] 本发明提供的云主机部署的方法,通过将用户请求的虚拟机转化为模板,预先利用系统的空闲时间预制作一些虚拟机,在用户请求启用时进行IP地址和SSH Key设置再进行启用,从而极大地减少了系统部署虚拟机的时间,实现了快速部署云主机的目的。\n[0136] 图6示出了本发明的云主机部署的系统的一个实施例的结构示意图。\n[0137] 如图6所示,云主机部署的系统600包括:网络文件系统(NFS)服务器602、管理服务器604和终端节点606。\n[0138] 其中,NFS服务器602,用于根据用户建立虚拟机的请求建立虚拟机对象;接收管理服务器为预制虚拟机分配的地址和公钥设置,并在预制虚拟机第一次启动时配置地址和公钥设置。\n[0139] 管理服务器604,用于修改虚拟机对象的属性,将虚拟机对象转化为模板数据文件,复制模板数据文件,在终端节点上创建预定数量的预制虚拟机;以及分配预制虚拟机的地址和公钥设置,启用预制虚拟机。\n[0140] 终端节点606,用于为管理服务器创建预制虚拟机提供存储和计算能力。该终端节点606可以根据实际应用需求包括一个或多个物理客户端设备或网络终端设备。\n[0141] 为实现云主机的快速部署,需要进行接口设计,涉及外部接口和内部接口。具体来说,需要在NFS上创建、删除和复制虚拟机(如虚拟磁盘)的功能,需要通过管理服务器增加新类完成对NFS挂载点的管理;其中增加在NFS服务器上创建虚拟机的功能时,接口不需要改动,采用在NFS上创建的云主机的虚拟硬盘(如“VirtualDisk”,一般时一个逻辑磁盘logicalDisk)即可;需要增加快速部署应用程序接口(API,Application Program Interface)。\n[0142] 1)由NFS服务器执行“建立类”和“实现类”;其中“建立类”如下所示:\n[0143] public interface NFSMountPoint//Java提供的接口:网络文件系统的挂载点类接口\n[0144] {\n[0145] public abstract void setAssociatedNode(Node node);//设置相应物理节点[0146] public abstract Node getAssociatedNode();//获取相应物理节点[0147] public abstract SetIP(String ip);//获取和设置挂载点ip地址[0148] public abstract String GetIP();\n[0149] public abstract SetServerDir(String dir);//设置和获取服务器路径[0150] public abstract String GetServerDir();\n[0151] public abstract SetMountDir(String dir);//设置和获取挂载点目录[0152] public abstract String GetMountDir();\n[0153] public abstract void Refresh();//刷新挂载点信息\n[0154] }\n[0155] 外部接口的“实现类”如下所示:\n[0156] public interface LvmNFSGroup//网络文件系统逻辑卷组类接口\n[0157] extends LvmGroup\n[0158] {\n[0159] //设置和获取相应的虚拟数据中心\n[0160] public abstract void\n[0161] setAssociatedVirtualDataCenter(VirtualDataCentervirtualdatacenter);\n[0162] public abstract VirtualDataCentergetAssociatedVirtualDataCenter();\n[0163] //获取和增加网络文件系统挂载点(多态)\n[0164] public abstract LinkedList getNFSMountPoints();\n[0165] public abstract void addNFSMountPoint(NFSMountPointnfsMountPoint);\n[0166] public abstract void addNFSMountPoint(NFSMountPointnfsMountPoint,Node node);\n[0167] public abstract void addNFSMountPoints(LinkedList LinkedList);\n[0168] public abstract void addNFSMountPoints(LinkedList LinkedList,Node node);\n[0169] //删除网络文件系统挂载点(多态)\n[0170] public abstract NFSMountPoint removeNFSMountPoint(String s);\n[0171] public abstract NFSMountPoint\n[0172] removeNFSMountPoint(NFSMountPoint nfsMountPoint);\n[0173] }\n[0174] 2)快速部署应用程序接口代码如下所示:\n[0175] public interface VirtualServer增加如下操作:\n[0176] public interface VirtualServer extends Virtual\n[0177] {\n[0178] //id唯一标志一个虚拟机模板,如果不是模板,该id为null\n[0179] //如果该VS不是模板,该id标识该虚拟机从哪个模板创建而来\n[0180] public abstract void SetTemplateID(String id);\n[0181] //当一个普通虚拟机变成模板“Template”数据文件,可以设置一个唯一ID(该ID可以以预定的编码方法来实现,如采用OStype_PlatFormtype_VSToos_Apptype_UUIDMumber规则),此时该虚拟机的状态应该是关机,并且使用的是共享存储,以便能够随时被复制,否则提示不能转化为模板。并启动一个任务,将该虚拟机做成三个预制虚拟机,放在有充足资源的节点上;并记录在哪个节点上有几个该模板的预制虚拟机存在。\n[0182] public abstract void ToTemplate(String id);\n[0183] //在某些情况下,允许将一个虚拟机模板变成普通虚拟机:不存在由该模板创建的正在使用的虚拟机。\n[0184] public abstract void DeTemplate(String id);\n[0185] public abstract bool IsTemplate();\n[0186] //在哪些节点上存在该模板的镜像LinkedList\n[0187] public abstract LinkedList GetPlacedNodes();\n[0188] //包含IP和ssh key设置的脚本将作为一个iso,被挂载到新建虚拟机的光盘上,iso中的脚本将被启动后的虚拟机执行。这要求:虚拟机启动之前,该iso文件将被创建出来,该虚拟机的配置文件中以该iso文件作为光盘。在SetIP和SetSSHKey函数的末尾运行CheckISO(),priavte abstract CheckISO检查ISO是否应该生成,若可以(IP和SSHKey都已经设置),则生成。\n[0189] private abstract String GetISOPath();//获取光盘镜像iso文件的路径[0190] public abstract void SetIP(String IP);//设置云主机的ip地址[0191] public abstract String GetIP();//获取云主机的ip地址\n[0192] public abstract void SetSSHKey(String key);//为通过ssh远程登录云主机设置公钥。\n[0193] public abstract String GetSSHKey();//获取云主机的ssh公钥[0194] }\n[0195] InternalConfigurationStore增加并实现如下函数\n[0196] {\n[0197] //获得所有的模板\n[0198] public abstract LinkedList getTemplateVMs();\n[0199] //根据模板为虚拟机做好配置,包括:操作系统镜像,数据盘,网络。并补足所消耗的操作系统镜像和磁盘镜像。\n[0200] public abstract VirtualServer CreateVMFromTemplateVM(VirtualServer vstemplate);//自动分配到一个节点\n[0201] //在指定节点上根据模板创建虚拟机,时间可能比较长,操作系统和数据镜像都需要重新制作。\n[0202] public abstract VirtualServer CreateVMFromTemplateVMInNode(VirtualServer vstemplate,Node assignNode);//分配到一个节点\n[0203] }\n[0204] 在内 部接 口 的实 现方 面,LVMNFSGroup的 实现 参照LVMLocalGroup 和LVMNetworkGroup。其中,LVMLocalGroup是一种逻辑磁盘组,不过它是在服务器的本地磁盘上建立的一种逻辑磁盘组。LVMNetworkGroup也是一种逻辑磁盘组,不过是在网络存储上建立的一种逻辑磁盘组。而逻辑磁盘组(LogcialDiskGroup)和逻辑磁盘(LogicalDisk)是linux文件系统中对硬盘的一种逻辑组织形式,可以将多个磁盘组织为一个容量更大测逻辑磁盘组;其中逻辑磁盘组中的分区叫逻辑磁盘。创建NFSMountPoint需要指出NFSserver IP,NFSServer目录,挂载点。通过向终端节点发送创建文件的命令以完成创建逻辑磁盘,删除文件命令以删除逻辑磁盘。NFSGroup下的LogcialDiskGroup中的LogicalDisk相当于NFS目录中的一个文件。\n[0205] 图7(a)-7(d)示出了在本发明提供的云主机部署的系统上执行云主机快速部署的示意图。\n[0206] 图7(a)示出了云主机部署的系统在建立虚拟机之前的结构示意图,该云主机部署的系统主要包括NFS服务器、管理服务器和3个终端节点(节点1-3)。图7(b)示出了本发明提供的云主机部署的系统建立一个普通虚拟机之后的结构示意图;根据用户建立虚拟机的请求,其在NFS服务器上建立虚拟机VM1,并将相关类别、属性等参数保存在为虚拟机创建的外部系统列表中;其中普通虚拟机VM1包括操作系统磁盘OS和数据磁盘Data。图\n7(c)示出了本发明提供的云主机部署的系统将一个虚拟机转化为模板后的结构示意图;\n管理服务器将NFS服务器中的虚拟机对象的属性设置为“模板”后,将该“模板”属性对应的虚拟机相关的虚拟文件复制三份(如图示的预制虚拟机1-1、1-2和1-3),设置在有剩余计算和存储能力的终端节点1上。图7(d)示出了本发明提供的云主机部署的系统通过模板创建两个虚拟机之后的结构示意图;NFS服务器接收到该虚拟机的IP地址和SSH Key后,动态生成客户操作系统初始启动脚本文件;该初始启动脚本文件用于在该虚拟机第一次启动时配置IP地址和SSH Key。对预制作的虚拟机配置完毕后,管理服务器启用该模板预制的虚拟机1-1和1-2,相应的,由管理服务器再复制该模板,创建该模板对应的新的预制虚拟机1-4和1-5;根据终端节点1的剩余计算和存储能力,在终端节点1上设置新的预制虚拟机1-4,在终端节点1没有剩余计算和存储能力后,在终端节点2上设置新的预制虚拟机\n1-5。在不同的终端节点之间复制模板可以利用远程文件传输协议(TFTP,Trivial File Transfer Protocol)或业务控制点(SCP,Service Control Point)进行数据复制。\n[0207] 图8示出了本发明的云主机部署的方法的另一个实施例的流程图。\n[0208] 如图8所示,云主机部署的方法流程800中,步骤802、804、806和808可以分别执行与图5所示的步骤502-508相同或相似的技术内容,为简洁起见,这里不再赘述其技术内容。\n[0209] 如图8所示,在步骤804“修改虚拟机对象的属性,将虚拟机对象转化为模板数据文件”之后,步骤806“复制模板数据文件,创建预定数量的预制虚拟机”之前,执行步骤\n805,判断终端节点的剩余计算和存储能力。如果终端节点有充足的剩余计算和存储能力,则执行步骤806,在终端节点上创建预定数量的预制虚拟机;如果剩余资源不足(如当一个模板对应的预制虚拟机列表较长,使得另一个模板对应的预制虚拟机列表无法达到预定数量时),则执行步骤810,查找预制虚拟机列表最长的模板,删除预制虚拟机列表最长的模板的一个或多个预制虚拟机以使另一个模板对应的预制虚拟机能够达到预定数量。该步骤相当于将预制的虚拟机列表过场的模板进行资源部分释放,从而补足虚拟机列表达不到预定数量(如3个)的模板的要求。\n[0210] 本发明提供的云主机部署的方法,通过查找终端节点中预制虚拟机列表最长的模板,删除预制虚拟机列表最长的模板的一个或多个预制虚拟机以使另一个模板对应的预制虚拟机能够达到预定数量,从而补足虚拟机列表达不到预定数量的模板的要求,保障云主机部署系统中各个模板的预制虚拟机都具有充足的备用资源,进一步提高用户对于云主机快速部署的需求。\n[0211] 图9示出了本发明的云主机部署的方法的另一个实施例的流程图。\n[0212] 如图9所示,云主机部署的方法流程900中,步骤902、904、906和908可以分别执行与图5所示的步骤502-508相同或相似的技术内容,为简洁起见,这里不再赘述其技术内容。\n[0213] 如图9所示,在步骤904“修改虚拟机对象的属性,将虚拟机对象转化为模板数据文件”之后,步骤906“复制模板数据文件,创建预定数量的预制虚拟机”之前,执行步骤905,判断终端节点的剩余计算和存储能力。如果终端节点有充足的剩余计算和存储能力,则执行步骤906,在终端节点上创建预定数量的预制虚拟机;如果剩余资源不足(如当剩余资源不能满足所有模板对应的预制虚拟机列表都达到预定数量时),则执行步骤910,将所有模板对应的预制虚拟机列表进行平均化,以使所有模板对应的预制虚拟机列表相差不超过1。\n例如,当终端节点资源不能满足所有的模板对应的预制作虚拟机列表都达到3,则将模板对应的虚拟机占用的资源进行平均化,使所有模板对应的预制作虚拟机列表为3或2,彼此相差不超过1(简单来说,可以设置所有模板对应的预制虚拟机都为两个,终端节点剩余的资源可以让某些模板对应的预制虚拟机为3个,从而保障云主机部署系统中各个模板的虚拟机都具有备用资源可用)。对于云主机部署的系统而言,如果大量用户请求建立的模板预制的虚拟机过多,最后可能是所有模板对应的虚拟机列表为1或0,当所有模板对应的预制作虚拟机列表都为0的时候,也可以表明终端节点的资源全部被占用。\n[0214] 本发明提供的云主机部署的方法,通过将终端节点提供的资源进行平均化调度,使得每个模板对应的预制虚拟机数量相差不超过1,从而保障云主机部署系统中各个模板的预制虚拟机都具有备用资源,进一步提高用户对于云主机快速部署的需求。\n[0215] 图10示出了本发明提供的云主机部署的系统另一个实施例的结构示意图。如图\n10所示,云主机部署的系统1000包括:网络文件系统服务器1002、管理服务器1004、终端节点1006;其中网络文件系统服务器1002和终端节点1006分别可以是与图6所示的网络文件系统服务器602和终端节点606具有相同或相似的功能模块;为简洁起见,这里不再赘述。\n[0216] 如图10所示,管理服务器1004进一步包括:模板转化模块10042、虚拟机创建模块10044和虚拟机启用模块10046。其中,模板转化模块10042用于修改虚拟机对象的属性,将虚拟机对象转化为模板数据文件;虚拟机创建模块10044,用于复制模板数据文件,在终端节点上创建预定数量的预制虚拟机;在启用一个预制虚拟机后,再复制模板数据文件,创建一个新的预制虚拟机;虚拟机启用模块10046,用于向网络文件系统服务器分配预制虚拟机的地址和公钥设置,以及启用一个预制虚拟机。\n[0217] 图11示出了本发明提供的云主机部署的系统另一个实施例的结构示意图。如图\n11所示,云主机部署的系统1100包括:网络文件系统服务器1102、管理服务器1104、终端节点1106;其中网络文件系统服务器1102和终端节点1106分别可以是与图10所示的网络文件系统服务器1002和终端节点1006具有相同或相似的功能模块;为简洁起见,这里不再赘述。\n[0218] 如图11所示,管理服务器1104还包括:终端节点判断模块11048,用于在创建预定数量的预制虚拟机之前,判断终端节点的剩余计算和存储能力;如果终端节点有充足的剩余计算和存储能力,则在终端节点上创建预定数量的预制虚拟机;如果剩余资源不足,当一个模板对应的预制虚拟机列表较长,使得另一个模板对应的预制虚拟机列表无法达到预定数量时,终端节点选择模块查找预制虚拟机列表最长的模板,删除预制虚拟机列表最长的模板的一个或多个预制虚拟机以使另一个模板对应的预制虚拟机能够达到预定数量。\n[0219] 本发明提供的云主机部署的系统的一个实施例中,管理服务器1104还包括:模板释放模块11049,用于在虚拟机创建模块11044创建一个新的预制虚拟机后,将新的预制虚拟机加入到模板对应的预制虚拟机列表中。\n[0220] 本发明提供的云主机部署的系统的另一个实施例中,作为对图11所示的技术方案中终端节点判断模块11048的一种替换方式,管理服务器包括:第二终端节点判断模块,用于在创建预定数量的预制虚拟机之前,判断终端节点的剩余计算和存储能力;如果终端节点有充足的剩余计算和存储能力,则在终端节点上创建预定数量的预制虚拟机;如果剩余资源不足,当剩余资源不能满足所有模板对应的预制虚拟机列表都达到预定数量时,节点选择模块将所有模板对应的预制虚拟机列表进行平均化,以使所有模板对应的预制虚拟机列表相差不超过1。\n[0221] 参考前述本发明示例性的描述,本领域技术人员可以清楚的知晓本发明具有以下优点:\n[0222] 1)本发明提供的云主机部署的方法及系统,通过将用户请求的虚拟机转化为模板,预先利用系统的空闲时间预制作一些虚拟机,在用户请求启用时进行IP地址和SSH Key设置再进行启用,从而极大地减少了系统部署虚拟机的时间,实现了快速部署云主机的目的。\n[0223] 2)本发明提供的云主机部署的方法及系统解决了当前云主机的部署完全依靠手工进行,生产率低运维成本高的缺陷;避免了人工部署云主机错误概率高的问题,满足了用户快速部署云主机获取充足计算能力的需要。\n[0224] 本发明的描述是为了示例和描述起见而给出的,而并不是无遗漏的或者将本发明限于所公开的形式。很多修改和变化对于本领域的普通技术人员而言是显然的。选择和描述实施例是为了更好说明本发明的原理和实际应用,并且使本领域的普通技术人员能够理解本发明从而设计适于特定用途的带有各种修改的各种实施例。
法律信息
- 2013-08-21
- 2012-10-17
专利申请权的转移
登记生效日: 2012.09.12
申请人由北京云快线软件服务有限公司变更为北京世纪互联宽带数据中心有限公司
地址由100015 北京市朝阳区酒仙桥东路1号院5号楼5层变更为100016 北京市朝阳区酒仙桥东路1号M5楼三层
- 2010-11-10
实质审查的生效
IPC(主分类): G06F 9/455
专利申请号: 200910244182.6
申请日: 2009.12.30
- 2010-09-22
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有引用任何外部专利数据! |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |