云主机部署的方法及系统的制作方法

文档序号:6585472阅读:295来源:国知局
专利名称:云主机部署的方法及系统的制作方法
技术领域
本发明涉及虚拟机(VM,Virtual Machine)技术领域,尤其涉及一种云主机部署的 方法及系统。
背景技术
云计算是一种按照用户需求、便利地通过网络获取计算资源(如网络、服务器、存 储设备和应用服务等)的计算模式,这些资源可以来自一个共享的、可配置的资源池,并能 够快速地获取和释放。采用云计算的模式能够提高计算效率和资源的可用性。通过云计算模式,客户可以按需、自动地获取计算能力,例如服务器计算时间和网 络存储,而不需要和服务提供商进行人为交互(即云模式的按需自助服务特性)。计算能力 可通过网络标准机制进行访问,使得各种客户端(如移动电话、便携电脑或PDA)均可以使 用(即云模式的网络广泛接入特性)。服务提供商将资源池化,通过多租户模式为客户提供 各种服务,并根据客户的需求动态提供物理或虚拟化的资源。云模式的用户可以快速、弹性 的获得服务提供商提供的服务,在某种情况下可以自动化的获取,其规模可以快速扩大或 缩小。对于客户来说,供应能力似乎是无限的,可以任意购买,随时购买(即云模式的快速 弹性)。云系统对服务(存储、处理能力、带宽、活动用户帐户)进行适当的抽象,并提供服 务计量能力,按使用量计费以自动控制和优化资源使用情况。云计算模式提供三种服务模式SaaS模式(Cloud Software as aService)为客 户提供使用运行在云基础设施上的应用程序的能力。该应用程序能被各种客户端(如web 浏览器)访问,客户无法控制和管理底层的云基础设施。PaaS模式(Cloud Platform as a Service)为客户提供将客户自己的或购买的应用程序部署到云基础设施的能力。该应用 程序是由服务提供商支持的编程工具或语言编写的。客户无法管理和控制底层的云基础设 施,但可以控制自己部署的应用程序和应用配置环境。IaaS模式(Cloud Infrastructure as a Service)为客户提供处理能力、存储能力、网络和基本计算资源,客户可以使用该资 源部署或运行自己的软件,如操作系统或应用程序。客户无法管理和控制底层的云基础设 施,但可以控制操作系统、存储、部署的应用程序,或有限的网络组件控制权。云计算模式可以采用四种部署模式私有云的云基础设施是为某个组织独立运作 的,可以被该组织管理,也可以委托第三方管理。这些云基础设施可以用于生产环境也可以 当作备用设备。社区云的云基础设施被几个组织所共享,以支持某个具有共同需求的社区。 社区云可以被该组织管理,也可以委托第三方管理。这些云基础设施可以用于生产环境也 可以当作备用设备。公有云的云基础设施为公众或某个大的工业集团提供服务,它属于某 个出售或提供云服务的组织。综合云的云基础设施由两个或两个以上相对独立的的云(如 私有云、社区云或共有云)组而成,但为了获取数据和应用程序的可移植性,而采用的某种 标准或技术将它们绑定在一起。云主机是采用虚拟化技术提供云计算的IaaS模式服务的产品。云主机具有资源 利用率高、高可用性(HA,High Availability)、单主机的弹性扩展(CPU、MEM、DISK、NET)、分布式的弹性扩展,以及快速部署能力(应用性主机快速部署,客户可以自己安装操作系统)。客户在使用提供商提供的计算能力租用服务时,可以完全像使用一台物理服务器 一样使用云主机。与租用物理服务器相比,同等性能的云服务器具备更低的总所有成本 TCO(Total Cost of Ownership)、更好的扩展性和更强的安全可靠性。虚拟化技术应用到计算机系统中可以让不同用户看到不同的单个系统,如完全 虚拟化(Full Visualization)技术中一台计算机可以同时运行Linux和Microsoft Windows。虚拟化也可以使用更加复杂的格式——硬件仿真,其中单个计算机看上去具有多 个架构;对一个用户来说它是标准的x86平台,而对另一个用户来说它是IBM Power PC平 台。更加简单的虚拟化是操作系统虚拟化,其中一台计算机可以运行相同类型的多个操作 系统;这种虚拟化可以将一个操作系统的多个服务器隔离开来(这意味着全都必须使用相 同类型和版本的操作系统)。实现虚拟化的方法很多,可以通过不同层次的抽象来实现相同的虚拟化结果。以 Linux中常用的三种虚拟化方法为例进行简要说明。图1示出了现有技术中硬件仿真的虚拟化技术的结构示意图。硬件仿真是最复杂 的虚拟化实现技术,如图1所示,在宿主系统上创建硬件VM来模拟所需要的硬件。使用硬 件仿真,可以在一个ARM (Advanced RISC Machines)处理器主机上运行为PowerPC设计的 操作系统,而不需要任何修改;甚至可以运行多个虚拟机,每个虚拟器仿真一个不同的处理 器。但是由于每条指令都必须在底层硬件上进行仿真,速度减慢100倍的情况也有可能发 生,因此,硬件仿真的主要问题是速度非常慢。若要实现高度保真的仿真(涉及周期精度、 所仿真的CPU管道以及缓存行为),实际速度差距甚至可能会达到1000倍之多。图2示出了现有技术中完全虚拟化技术的结构示意图。如图2所示,完全虚拟化使 用一个虚拟化管理程序虚拟机(Hypervisor VMM, Hypervisor Virtual Machine Monitor), 它在客户操作系统和原始硬件之间进行协调,VMM在客户操作系统和裸硬件之间提供协调。 特定受保护的指令必须被捕获下来并在虚拟控制程序Hypervisor中进行处理,因为这些 底层硬件并不由操作系统所拥有,而是由操作系统通过Hypervisor所共享。虽然完全虚拟 化的速度比硬件仿真的速度要快,但是其性能要低于裸硬件,因为中间经过了 Hypervisor 的协调过程。完全虚拟化的最大优点是操作系统无需任何修改就可以直接运行,而其主要 限制是操作系统必须要支持底层硬件(如PowerPC)。另一种流行的虚拟化技术是超虚拟化(Paravirtualization),图3示出了现有 技术中超虚拟化技术的结构示意图。超虚拟化与完全虚拟化有一些类似,同样使用了一个 Hypervisor来实现对底层硬件的共享访问,还将与虚拟化有关的代码集成到了操作系统本 身中;因此,操作系统本身在虚拟化进程中会相互紧密协作,而不再需要重新编译或捕获特 权指令。超虚拟化提供了与未经虚拟化的系统相接近的性能。与完全虚拟化类似,超虚拟 化技术可以同时支持多个不同的操作系统。超虚拟化技术的缺点是需要为Hypervisor修 改客户操作系统。图4示出了现有技术中操作系统级虚拟化技术的结构示意图。如图4所示,操作 系统级的虚拟化技术是在操作系统本身之上实现服务器的虚拟化,该虚拟化方法支持单个 操作系统,并可以将独立的服务器相互简单地隔离开来。操作系统级的虚拟化要求对操作 系统的内核进行一些修改,但是其优点是可以获得原始性能。
目前,云主机的部署完全是手工进行,错误率高,效率较低,无法满足快速云主机 快速部署的需求,而且运行和维护成本高。

发明内容
本发明要解决的一个技术问题是提供一种云主机部署方法及系统,能够满足用户 快速部署云主机获取充足计算能力的需要。本发明的一个方面提供了一种云主机部署的方法,该方法包括根据用户建立虚 拟机的请求建立虚拟机对象;修改虚拟机对象的属性,将虚拟机对象转化为模板数据文件; 复制模板数据文件,创建预定数量的预制虚拟机;接收预制虚拟机的地址和公钥设置,启用 一个预制虚拟机。本发明提供的云主机部署的方法的一个实施例中,该方法进一步包括在启用一 个预制虚拟机后,再复制模板,创建一个新的预制虚拟机。本发明提供的云主机部署的方法的一个实施例中,该方法进一步包括在创建一 个新的预制虚拟机后,将新的预制虚拟机加入到模板对应的预制虚拟机列表中。本发明提供的云主机部署的方法的一个实施例中,该方法进一步包括在创建预 定数量的预制虚拟机之前,判断终端节点的剩余计算和存储能力;如果终端节点有充足的 剩余计算和存储能力,则在终端节点上创建预定数量的预制虚拟机;如果剩余资源不足,当 一个模板对应的预制虚拟机列表较长,使得另一个模板对应的预制虚拟机列表无法达到预 定数量时,查找预制虚拟机列表最长的模板,删除预制虚拟机列表最长的模板的一个或多 个预制虚拟机以使另一个模板对应的预制虚拟机能够达到预定数量。本发明提供的云主机部署的方法的一个实施例中,该方法进一步包括在创建预 定数量的预制虚拟机之前,判断终端节点的剩余计算和存储能力;如果终端节点有充足的 剩余计算和存储能力,则在终端节点上创建预定数量的预制虚拟机;如果剩余资源不足,当 剩余资源不能满足所有模板对应的预制虚拟机列表都达到预定数量时,将所有模板对应的 预制虚拟机列表进行平均化,以使所有模板对应的预制虚拟机列表相差不超过1。本发明的另一个方面提供了一种云主机部署的系统,该系统包括网络文件系统 服务器,用于根据用户建立虚拟机的请求建立虚拟机对象;接收管理服务器为预制虚拟机 分配的地址和公钥设置,并在预制虚拟机第一次启动时配置地址和公钥设置;管理服务器, 用于修改虚拟机对象的属性,将虚拟机对象转化为模板数据文件,复制模板数据文件,在终 端节点上创建预定数量的预制虚拟机;以及分配预制虚拟机的地址和公钥设置,启用预制 虚拟机;终端节点,用于为管理服务器创建预制虚拟机提供存储和计算能力。本发明提供的云主机部署的系统的一个实施例中,管理服务器包括模板转化模 块,用于修改虚拟机对象的属性,将虚拟机对象转化为模板数据文件;虚拟机创建模块,用 于复制模板数据文件,在终端节点上创建预定数量的预制虚拟机;在启用一个预制虚拟机 后,再复制模板数据文件,创建一个新的预制虚拟机;虚拟机启用模块,用于向网络文件系 统服务器分配预制虚拟机的地址和公钥设置,以及启用一个预制虚拟机。本发明提供的云主机部署的系统的一个实施例中,管理服务器还包括终端节点 判断模块,用于在创建预定数量的预制虚拟机之前,判断终端节点的剩余计算和存储能力; 如果终端节点有充足的剩余计算和存储能力,则在终端节点上创建预定数量的预制虚拟机;如果剩余资源不足,当一个模板对应的预制虚拟机列表较长,使得另一个模板对应的预 制虚拟机列表无法达到预定数量时,终端节点选择模块查找预制虚拟机列表最长的模板, 删除预制虚拟机列表最长的模板的一个或多个预制虚拟机以使另一个模板对应的预制虚 拟机能够达到预定数量。本发明提供的云主机部署的系统的一个实施例中,管理服务器还包括终端节点 判断模块,用于在创建预定数量的预制虚拟机之前,判断终端节点的剩余计算和存储能力; 如果终端节点有充足的剩余计算和存储能力,则在终端节点上创建预定数量的预制虚拟 机;如果剩余资源不足,当剩余资源不能满足所有模板对应的预制虚拟机列表都达到预定 数量时,节点选择模块将所有模板对应的预制虚拟机列表进行平均化,以使所有模板对应 的预制虚拟机列表相差不超过1。本发明提供的云主机部署的系统的一个实施例中,管理服务器还包括模板释放 模块,用于在虚拟机创建模块创建一个新的预制虚拟机后,将新的预制虚拟机加入到模板 对应的预制虚拟机列表中。本发明提供一种云主机部署的方法及系统,将用户请求的虚拟机转化为模板,预 先利用系统的空闲时间预制作一些虚拟机,在用户请求启用时进行IP地址和SSH Key设置 再进行启用,从而极大地减少了系统部署虚拟机的时间,实现了快速部署云主机的目的;此 夕卜,避免了人工部署云主机错误概率高的问题,满足了用户快速部署云主机获取充足计算 能力的需要。


图1示出了现有技术中硬件仿真的虚拟化技术的结构示意图;图2示出了现有技术中完全虚拟化技术的结构示意图;图3示出了现有技术中超虚拟化技术的结构示意图;图4示出了现有技术中操作系统级虚拟化技术的结构示意图;图5示出了本发明的云主机部署的方法的一个实施例的流程图;图6示出了本发明的云主机部署的系统的一个实施例的流程图;图7(a)_7(d)示出了在本发明提供的云主机部署的系统上执行云主机快速部署 的示意图;图8示出了本发明的云主机部署的方法的另一个实施例的流程图;图9示出了本发明的云主机部署的方法的另一个实施例的流程图;图10示出了本发明提供的云主机部署的系统另一个实施例的结构示意图;图11示出了本发明提供的云主机部署的系统另一个实施例的结构示意图。
具体实施例方式下面参照附图对本发明进行更全面的描述,其中说明本发明的示例性实施例。图5示出了本发明的云主机部署的方法的一个实施例的流程图。如图5所示,云主机部署的方法流程500包括步骤502,根据用户建立虚拟机的 请求建立虚拟机对象。例如,用户根据实际应用需求向服务提供商的服务管理平台提出建 立普通虚拟机的请求,服务管理平台接收到用户建立虚拟机的请求后,为用户建立相应的虚拟机对象;该对象是指一个用Java类实现的虚拟机对象。服务提供商建立的虚拟机对象通常至少包括虚拟磁盘和网络两个类,其中磁盘主要包括虚拟的操作系统磁盘和数据磁 盘(分两个虚拟磁盘有利于对操作系统磁盘进行格式化时不影响数据磁盘的安全性),其 中磁盘、网络是虚拟机对象的两个属性,可以通过虚拟机对象的“set函数”、“get函数”对 磁盘和网络等属性进行设置和查询;设置磁盘和网络等类的参数属性,并将相关类别、属性 等参数保存在为虚拟机创建的系统列表中。步骤504,修改虚拟机对象的属性,将虚拟机对象转化为模板数据文件。例如,月艮 务提供商根据用户请求建立虚拟机对象后,由运维人员将虚拟机及其在相应数据库中的相 关属性进行重新设置(如在虚拟机系统列表中将虚拟机对象的属性修改为“模板”属性), 并将新的属性设置保存在虚拟机系统列表中。一旦将虚拟机对象的属性设置为模板,该虚 拟机对象的模板存储在网络文件系统(NFS,NetWOrk File System)服务器提供的共享磁盘 上,就可以在其它终端节点上部署该模板的备用机。步骤506,复制模板数据文件,创建预定数量的预制虚拟机。例如,系统侦测到虚拟 机系统列表中,某虚拟机对象的属性为“模板”时,将该“模板”属性对应的虚拟机相关的虚 拟文件复制预定数量(如三份),设置在有剩余计算和存储能力的设备(如计算机终端或网 络设备)上,作为预制作的虚拟机。在选择有剩余计算和存储能力的设备时,主要遵从如下 原则尽可能利用已经使用的设备上的计算和存储能力,直到该设备不能容纳更多预制作 的虚拟机为止再扩展到其它有计算和存储能力的设备上。步骤508,接收预制虚拟机的地址和公钥设置,启用一个预制虚拟机。例如,在NFS 服务器使用模板创建虚拟机时,管理服务器将为该预制的虚拟机配置IP地址和安全shell 密钥(SSH Key,是指通过安全shell远程登录到客户操作系统时使用的公钥);NFS服务器 接收到该虚拟机的IP地址和SSH Key后,动态生成客户操作系统(可以是用户在虚拟机上 安装的操作系统)初始启动脚本文件;该初始启动脚本文件用于在该虚拟机第一次启动时 配置IP地址和SSH Key0对预制作的虚拟机配置完毕后,系统启用该虚拟机,并向用户返回 该可用的虚拟机(对用户而言,用户将可以完全像使用一台物理服务器一样使用云主机提 供的虚拟机)。稍后对虚拟机地址和公钥设置作进一步详细介绍。静态IP地址分配通过使用NBD服务网络共享镜像的方案实现的。具体方法可以 是在管理服务器创建包含网络配置相关参数的配置文件IP. Cfg,举例来说,其具体内容包 括IP 211. 99. 208. 13NETMASK 255. 255. 255. 0GATEWAY 211. 99. 208. 1DNS 202. 106. 0. 20将该IP. cfg文件放入文件夹中,例如放入当前路径下文件夹211. 99. 208. 13中。 使用命令:mkisofs-r-J-V 211. 99. 208. 13-oConfiguration. iso 211. 99. 208. 13/ ;即可 在当前路径下创建出光盘文件Configuration, iso。SSH Key分配涉及SSH服务端配置方法,可以参考现有技术“SSH自动登录配置”, 具体来说,使用sSh_keygen生成一对key (如使用RSA密钥体系创建的Key)。将公有密钥 放入创建iso使用的原文件夹中,就可以通过运行以下脚本在系统启动时与网络配置参数一同配置到系统中。注私钥(私有Key)文件名为id_rSa,公钥(公有Key)文件名为id_ rsa. pub,文件名是指定的。# ! /bin/shTPATH =if [-d/data] ;thenecho directory/data exist ! !elsemkdir/datafiif「mount I grep/data|we-r_ne〃 0〃 ] ;thenumount/datafiTPATH = /datamount/dev/hde/data > /dev/zero 2 > /dev/zeroif [~echo$ ? ~ ! =〃 0〃 ] ;thenmount/dev/hdd/data > /dev/zero 2 > /dev/zeroif [~echo$ ?、! =〃 0〃 ] ;thenecho" mount error"exitelseif [[~test-f/data/IP. cfg、]&&[、test_f/data/id_rsa~]&&test-f/data/id_rsa. pub~]] ;thenecho Configurate file is not in the special disk ! !umount/dataexitelseecho it is needed ! !fifielseif[[~test-f/data/IP. cf]&&test-f/data/id_rsa~]Mltest-f/data/id_rsa. pub~]] ;thenecho Configurate file is not in the special disk ! !umount/dataexit elseecho" /dev/hde is not IP source"
fifiDNS = “cat“ $TPATH" /IP.cfg|grep DNS|cut-d:-f2~IP = "cat" $TPATH〃 /IP.cfg|grep IP|cut-d:-f2~ NETMASK = ~cat" $TPATH" /IP. cfg|grep NETMASK|cut-d:-fGATEWAY = “cat" $TPATH" /IP.cfg|gr印 GATEWAY|cut_d:MAC = “cat" $TPATH〃 /IP.cfg|grep MAC|cut-d:-f2-7~echo DNS:$DNS IP:$IP NETMASK:$NETMASKGATEWAY:$GATEWAY MAC = $MACif「cat/etc/resove. conf|gi^p$DNS|wc-r_eq〃 0〃 ] ;thenecho-e " nameserver\t$DNS" >> /etc/resolv. conffiNETWORK =、echo$GATEWAY | cut-d.BROADCAST = “ echo$GATEWAY | cut-d.#MAC_STR = ‘cat/etc/sysconfig/network-scripts/ifcfg-ethO|grepHWADDR"#service network stop//下面的代码在不同的系统是不同的,在CentOS中,始终是用ethO,但是在SUSE 10中使用的是第一块网卡名字,可能不为ethO。CENTOSCFG_FILE = /etc/sysconfig/network-scripts/ifcfg-ethOif down ethOSUSE 10CARD = ~ ls/sys/class/net I grep eth|sed_n' Ip'‘echo$CARDCFG_FILE = /etc/sysconfig/network/ifcfg-" $CARD"if down $CARD#ifconfig ethO hw ether $MACecho" DEVICE = ethO〃> $CFG_FILEecho" 0ΝΒ00Τ = yes〃>> $CFG_FILEecho" B00TPR0T0 = static〃>> $CFG_FILE#echo" HWADDR = $MAC〃 >> $CFG_FILEecho" IPADDR = $IP〃 >> $CFG_FILEecho “ NETMASK = $NETMASK“ > > $CFG_FILEecho" NETWORK = $NETW0RK" . 0 >> $CFG_FILEecho" BROADCAST = $BR0ADCAST〃 . 255 >> $CFG_FILEecho" GATEWAY = $GATEWAY" >> $CFG_FILEecho" TYPE = Ethernet" >> $CFG_FILEecho" USERCTL = no〃 >> $CFG_FILE
echo" IPV6INIT = no" >> $CFG_FILEecho" PEERDNS = no" >> $CFG_FILEservice network restartmv/etc/rc3. d/K10network/etc/rc3. d/SlOnetworkcp/data/id_rsa. pub/root/, ssh/authorized_keyschmod 600/root/. ssh/authorized_keysumount/dataSUSE 该脚本在/etc/rc. d/rc脚本执行的最后执行该脚本,可以达到系统启动时 执行该脚本的效果。CENTOS 该脚本在/etc/rc. local脚本执行的最后执行该脚本。在执行完该脚本后删除该脚本,以达到脚本只在第一次运行时执行,由于已经写 到配置文件中,系统在启动的时候也能够按照第一次的配置完成配置。本发明提供的云主机部署的方法的一个实施例中,在NFS服务器完成对预制作的 虚拟机的IP和SSH Key设置,并启用该预制虚拟机后,由管理服务器再复制该模板,并在有 剩余计算和存储能力的设备上再创建一个该模板对应的新的预制虚拟机。本发明提供的云主机部署的方法的一个实施例中,在管理服务器创建一个该模板 对应的新的预制虚拟机后,将该新的预制虚拟机加入到该模板对应的预制虚拟机列表中。本发明提供的云主机部署的方法,通过将用户请求的虚拟机转化为模板,预先利 用系统的空闲时间预制作一些虚拟机,在用户请求启用时进行IP地址和SSH Key设置再进 行启用,从而极大地减少了系统部署虚拟机的时间,实现了快速部署云主机的目的。图6示出了本发明的云主机部署的系统的一个实施例的结构示意图。如图6所示,云主机部署的系统600包括网络文件系统(NFS)服务器602、管理 服务器604和终端节点606。其中,NFS服务器602,用于根据用户建立虚拟机的请求建立虚拟机对象;接收管 理服务器为预制虚拟机分配的地址和公钥设置,并在预制虚拟机第一次启动时配置地址和 公钥设置。管理服务器604,用于修改虚拟机对象的属性,将虚拟机对象转化为模板数据文 件,复制模板数据文件,在终端节点上创建预定数量的预制虚拟机;以及分配预制虚拟机的 地址和公钥设置,启用预制虚拟机。终端节点606,用于为管理服务器创建预制虚拟机提供存储和计算能力。该终端节 点606可以根据实际应用需求包括一个或多个物理客户端设备或网络终端设备。为实现云主机的快速部署,需要进行接口设计,涉及外部接口和内部接口。具体 来说,需要在NFS上创建、删除和复制虚拟机(如虚拟磁盘)的功能,需要通过管理服务器 增加新类完成对NFS挂载点的管理;其中增加在NFS服务器上创建虚拟机的功能时,接口 不需要改动,采用在NFS上创建的云主机的虚拟硬盘(如“VirtualDisk”,一般时一个逻 辑磁盘IogicalDisk)即可;需要增加快速部署应用程序接口(API,Application Program Interface)。1)由NFS服务器执行“建立类”和“实现类”;其中“建立类”如下所示public interface NFSMountPoint//Java提供的接口 网络文件系统的挂载点类接口{public abstract void setAssociatedNode (Node node) ;//设置相应物理节点public abstract Node getAssociatedNode () ;// κΜ^Μ^Μτ^public abstract SetIP(String ip) ;//获取和设置挂载点 ip 地址public abstract String GetIP();public abstract SetServerDir (String dir) ;//设置和获取服务器路径public abstract String GetServerDir();public abstract SetMountDir (String dir) ;//设置和获取挂载点目录public abstract String GetMountDir();public abstract void Refresh() ;//刷新挂载点信息}外部接口的“实现类”如下所示public interface LvmNFSGroup//网络文件系统逻辑卷组类接口extends LvmGroup{H设置和获取相应的虚拟数据中心public abstract voidsetAssociatedVirtualDataCenter(VirtualDataCentervirtualdatacenter);public abstract VirtualDataCentergetAssociatedVirtualDataCenter();H获取和增加网络文件系统挂载点(多态)public abstract LinkedList getNFSMountPoints();public abstract void addNFSMountPoint(NFSMountPointnfsMountPoint);public abstract void addNFSMountPoint(NFSMountPointnfsMountPoint, Node node);public abstract void addNFSMountPoints(LinkedList LinkedList);public abstract void addNFSMountPoints (LinkedList LinkedList,Node node);H删除网络文件系统挂载点(多态)public abstract NFSMountPoint removeNFSMountPoint(String s);public abstract NFSMountPointremoveNFSMountPoint(NFSMountPoint nfsMountPoint);}2)快速部署应用程序接口代码如下所示public interface VirtualServer±曾力口如下操作public interface VirtualServer extends Virtual{//id唯一标志一个虚拟机模板,如果不是模板,该id为null//如果该VS不是模板,该id标识该虚拟机从哪个模板创建而来
public abstract void SetTemplateID(String id);Il当一个普通虚拟机变成模板“Template”数据文件,可以设置一个唯一 ID(该 ID可以以预定的编码方法来实现,如采用OStype_PlatFormtype_VSToos_Apptype_ UUIDMumber规则),此时该虚拟机的状态应该是关机,并且使用的是共享存储,以便能够随 时被复制,否则提示不能转化为模板。并启动一个任务,将该虚拟机做成三个预制虚拟机, 放在有充足资源的节点上;并记录在哪个节点上有几个该模板的预制虚拟机存在。public abstract void ToTemplate(String id);//在某些情况下,允许将一个虚拟机模板变成普通虚拟机不存在由该模板创建 的正在使用的虚拟机。public abstract void DeTemplate(String id);public abstract bool IsTemplate ();//在哪些节点上存在该模板的镜像LinkedListpublic abstract LinkedList GetPlacedNodes();//包含IP和ssh key设置的脚本将作为一个iso,被挂载到新建虚拟机的光盘上, iso中的脚本将被启动后的虚拟机执行。这要求虚拟机启动之前,该iso文件将被创建出 来,该虚拟机的配置文件中以该iso文件作为光盘。在SetIP和SetSSHKey函数的末尾运 行 CheckISO (),priavte abstract CheckISO 检查 ISO 是否应该生成,若可以(IP 和 SSHKey 都已经设置),则生成。private abstract String GetISOPath () ;//获取光盘镜像 iso 文件的路径public abstract void SetIP(String IP) ;//设置云主机的 ip 地址public abstract String GetIP() ;//获取云主机的 ip 地址public abstract void SetSSHKey (String key) ;//为通过 ssh 远程登录云主机 设置公钥。public abstract String GetSSHKey () ;//获取云主机的 ssh 公钥}InternalConfigurationStore ±曾力口并实现如下函数{//获得所有的模板public abstract LinkedList getTemplateVMs ();//根据模板为虚拟机做好配置,包括操作系统镜像,数据盘,网络。并补足所消 耗的操作系统镜像和磁盘镜像。public abstract VirtualServer CreateVMFromTemplateVM(VirtualServer vstemplate) -JI自动分配到一个节点//在指定节点上根据模板创建虚拟机,时间可能比较长,操作系统和数据镜像都 需要重新制作。public abstract VirtualServer CreateVMFromTempIateVMInNode (VirtualServ er vstemplate, Node assignNode) ;//分配到一个节点}在内部接口的实现方面,LVMNFSGroup的实现参照LVMLocalGroup禾口LVMNetworkGroup。其中,LVMLocalGroup是一种逻辑磁盘组,不过它是在服务器的本地磁盘上建立的一种逻辑磁盘组。LVMNetworkGroup也是一种逻辑磁盘组,不过是在网络存储上建 立的一种逻辑磁盘组。而逻辑磁盘组(LogcialDiskGroup)和逻辑磁盘(LogicalDisk)是 Iinux文件系统中对硬盘的一种逻辑组织形式,可以将多个磁盘组织为一个容量更大测逻 辑磁盘组;其中逻辑磁盘组中的分区叫逻辑磁盘。创建NFSMountPoint需要指出NFSserver IP, NFSServer目录,挂载点。通过向终端节点发送创建文件的命令以完成创建逻辑磁盘, 删除文件命令以删除逻辑磁盘。NFSGroup下的LogcialDiskGroup中的LogicalDisk相当 于NFS目录中的一个文件。图7(a)_7(d)示出了在本发明提供的云主机部署的系统上执行云主机快速部署 的示意图。图7(a)示出了云主机部署的系统在建立虚拟机之前的结构示意图,该云主机部 署的系统主要包括NFS服务器、管理服务器和3个终端节点(节点1-3)。图7(b)示出了本 发明提供的云主机部署的系统建立一个普通虚拟机之后的结构示意图;根据用户建立虚拟 机的请求,其在NFS服务器上建立虚拟机VM1,并将相关类别、属性等参数保存在为虚拟机 创建的外部系统列表中;其中普通虚拟机VMl包括操作系统磁盘OS和数据磁盘Data。图 7(c)示出了本发明提供的云主机部署的系统将一个虚拟机转化为模板后的结构示意图; 管理服务器将NFS服务器中的虚拟机对象的属性设置为“模板”后,将该“模板”属性对应的 虚拟机相关的虚拟文件复制三份(如图示的预制虚拟机1-1、1_2和1-3),设置在有剩余计 算和存储能力的终端节点1上。图7(d)示出了本发明提供的云主机部署的系统通过模板 创建两个虚拟机之后的结构示意图;NFS服务器接收到该虚拟机的IP地址和SSH Key后, 动态生成客户操作系统初始启动脚本文件;该初始启动脚本文件用于在该虚拟机第一次启 动时配置IP地址和SSH Key0对预制作的虚拟机配置完毕后,管理服务器启用该模板预制 的虚拟机1-1和1-2,相应的,由管理服务器再复制该模板,创建该模板对应的新的预制虚 拟机1-4和1-5 ;根据终端节点1的剩余计算和存储能力,在终端节点1上设置新的预制虚 拟机1-4,在终端节点1没有剩余计算和存储能力后,在终端节点2上设置新的预制虚拟机 1-5。在不同的终端节点之间复制模板可以利用远程文件传输协议(TFTP,Trivial File Transfer Protocol)或业务控制点(SCP,Service Control Point)进行数据复制。图8示出了本发明的云主机部署的方法的另一个实施例的流程图。如图8所示,云主机部署的方法流程800中,步骤802、804、806和808可以分别执 行与图5所示的步骤502-508相同或相似的技术内容,为简洁起见,这里不再赘述其技术内 容。如图8所示,在步骤804 “修改虚拟机对象的属性,将虚拟机对象转化为模板数 据文件”之后,步骤806 “复制模板数据文件,创建预定数量的预制虚拟机”之前,执行步骤 805,判断终端节点的剩余计算和存储能力。如果终端节点有充足的剩余计算和存储能力, 则执行步骤806,在终端节点上创建预定数量的预制虚拟机;如果剩余资源不足(如当一个 模板对应的预制虚拟机列表较长,使得另一个模板对应的预制虚拟机列表无法达到预定数 量时),则执行步骤810,查找预制虚拟机列表最长的模板,删除预制虚拟机列表最长的模 板的一个或多个预制虚拟机以使另一个模板对应的预制虚拟机能够达到预定数量。该步骤 相当于将预制的虚拟机列表过场的模板进行资源部分释放,从而补足虚拟机列表达不到预定数量(如3个)的模板的要求。本发明提供的云主机部署的方法,通过查找终端节点中预制虚拟机列表最长的模 板,删除预制虚拟机列表最长的模板的一个或多个预制虚拟机以使另一个模板对应的预制 虚拟机能够达到预定数量,从而补足虚拟机列表达不到预定数量的模板的要求,保障云主 机部署系统中各个模板的预制虚拟机都具有充足的备用资源,进一步提高用户对于云主机 快速部署的需求。图9示出了本发明的云主机部署的方法的另一个实施例的流程图。如图9所示,云主机部署的方法流程900中,步骤902、904、906和908可以分别执 行与图5所示的步骤502-508相同或相似的技术内容,为简洁起见,这里不再赘述其技术内容。如图9所示,在步骤904 “修改虚拟机对象的属性,将虚拟机对象转化为模板数据 文件”之后,步骤906“复制模板数据文件,创建预定数量的预制虚拟机”之前,执行步骤905, 判断终端节点的剩余计算和存储能力。如果终端节点有充足的剩余计算和存储能力,则执 行步骤906,在终端节点上创建预定数量的预制虚拟机;如果剩余资源不足(如当剩余资源 不能满足所有模板对应的预制虚拟机列表都达到预定数量时),则执行步骤910,将所有模 板对应的预制虚拟机列表进行平均化,以使所有模板对应的预制虚拟机列表相差不超过1。 例如,当终端节点资源不能满足所有的模板对应的预制作虚拟机列表都达到3,则将模板对 应的虚拟机占用的资源进行平均化,使所有模板对应的预制作虚拟机列表为3或2,彼此相 差不超过1 (简单来说,可以设置所有模板对应的预制虚拟机都为两个,终端节点剩余的资 源可以让某些模板对应的预制虚拟机为3个,从而保障云主机部署系统中各个模板的虚拟 机都具有备用资源可用)。对于云主机部署的系统而言,如果大量用户请求建立的模板预制 的虚拟机过多,最后可能是所有模板对应的虚拟机列表为1或0,当所有模板对应的预制作 虚拟机列表都为0的时候,也可以表明终端节点的资源全部被占用。本发明提供的云主机部署的方法,通过将终端节点提供的资源进行平均化调度, 使得每个模板对应的预制虚拟机数量相差不超过1,从而保障云主机部署系统中各个模板 的预制虚拟机都具有备用资源,进一步提高用户对于云主机快速部署的需求。图10示出了本发明提供的云主机部署的系统另一个实施例的结构示意图。如图 10所示,云主机部署的系统1000包括网络文件系统服务器1002、管理服务器1004、终端 节点1006 ;其中网络文件系统服务器1002和终端节点1006分别可以是与图6所示的网络 文件系统服务器602和终端节点606具有相同或相似的功能模块;为简洁起见,这里不再赘 述。如图10所示,管理服务器1004进一步包括模板转化模块10042、虚拟机创建模 块10044和虚拟机启用模块10046。其中,模板转化模块10042用于修改虚拟机对象的属 性,将虚拟机对象转化为模板数据文件;虚拟机创建模块10044,用于复制模板数据文件, 在终端节点上创建预定数量的预制虚拟机;在启用一个预制虚拟机后,再复制模板数据文 件,创建一个新的预制虚拟机;虚拟机启用模块10046,用于向网络文件系统服务器分配预 制虚拟机的地址和公钥设置,以及启用一个预制虚拟机。图11示出了本发明提供的云主机部署的系统另一个实施例的结构示意图。如图 11所示,云主机部署的系统1100包括网络文件系统服务器1102、管理服务器1104、终端节点1106 ;其中网络文件系统服务器1102和终端节点1106分别可以是与图10所示的网 络文件系统服务器1002和终端节点1006具有相同或相似的功能模块;为简洁起见,这里不再赘述。如图11所示,管理服务器1104还包括终端节点判断模块11048,用于在创建预 定数量的预制虚拟机之前,判断终端节点的剩余计算和存储能力;如果终端节点有充足的 剩余计算和存储能力,则在终端节点上创建预定数量的预制虚拟机;如果剩余资源不足,当 一个模板对应的预制虚拟机列表较长,使得另一个模板对应的预制虚拟机列表无法达到预 定数量时,终端节点选择模块查找预制虚拟机列表最长的模板,删除预制虚拟机列表最长 的模板的一个或多个预制虚拟机以使另一个模板对应的预制虚拟机能够达到预定数量。本发明提供的云主机部署的系统的一个实施例中,管理服务器1104还包括模板 释放模块11049,用于在虚拟机创建模块11044创建一个新的预制虚拟机后,将新的预制虚 拟机加入到模板对应的预制虚拟机列表中。本发明提供的云主机部署的系统的另一个实施例中,作为对图11所示的技术方 案中终端节点判断模块11048的一种替换方式,管理服务器包括第二终端节点判断模块, 用于在创建预定数量的预制虚拟机之前,判断终端节点的剩余计算和存储能力;如果终端 节点有充足的剩余计算和存储能力,则在终端节点上创建预定数量的预制虚拟机;如果剩 余资源不足,当剩余资源不能满足所有模板对应的预制虚拟机列表都达到预定数量时,节 点选择模块将所有模板对应的预制虚拟机列表进行平均化,以使所有模板对应的预制虚拟 机列表相差不超过1。参考前述本发明示例性的描述,本领域技术人员可以清楚的知晓本发明具有以下 优点1)本发明提供的云主机部署的方法及系统,通过将用户请求的虚拟机转化为模 板,预先利用系统的空闲时间预制作一些虚拟机,在用户请求启用时进行IP地址和SSH Key设置再进行启用,从而极大地减少了系统部署虚拟机的时间,实现了快速部署云主机的 目的。2)本发明提供的云主机部署的方法及系统解决了当前云主机的部署完全依靠手 工进行,生产率低运维成本高的缺陷;避免了人工部署云主机错误概率高的问题,满足了用 户快速部署云主机获取充足计算能力的需要。本发明的描述是为了示例和描述起见而给出的,而并不是无遗漏的或者将本发明 限于所公开的形式。很多修改和变化对于本领域的普通技术人员而言是显然的。选择和描 述实施例是为了更好说明本发明的原理和实际应用,并且使本领域的普通技术人员能够理 解本发明从而设计适于特定用途的带有各种修改的各种实施例。
权利要求
一种云主机部署的方法,其特征在于,所述方法包括根据用户建立虚拟机的请求建立虚拟机对象;修改所述虚拟机对象的属性,将所述虚拟机对象转化为模板数据文件;复制所述模板数据文件,创建预定数量的预制虚拟机;接收所述预制虚拟机的地址和公钥设置,启用一个所述预制虚拟机。
2 根据权利要求1所述的方法,其特征在于,所述方法进一步包括在启用一个所述预 制虚拟机后,再复制所述模板,创建一个新的预制虚拟机。
3.根据权利要求2所述的方法,其特征在于,所述方法进一步包括在创建一个所述新 的预制虚拟机后,将所述新的预制虚拟机加入到所述模板对应的预制虚拟机列表中。
4 根据权利要求1所述的方法,其特征在于,所述方法进一步包括在创建预定数量的 预制虚拟机之前,判断终端节点的剩余计算和存储能力;如果所述终端节点有充足的剩余计算和存储能力,则在所述终端节点上创建预定数量 的所述预制虚拟机;如果剩余资源不足,当一个所述模板对应的预制虚拟机列表较长,使得另一个模板对 应的预制虚拟机列表无法达到预定数量时,查找预制虚拟机列表最长的模板,删除所述预 制虚拟机列表最长的模板的一个或多个预制虚拟机以使所述另一个模板对应的预制虚拟 机能够达到预定数量。
5.根据权利要求1所述的方法,其特征在于,所述方法进一步包括在创建预定数量的 预制虚拟机之前,判断终端节点的剩余计算和存储能力;如果所述终端节点有充足的剩余计算和存储能力,则在所述终端节点上创建预定数量 的所述预制虚拟机;如果剩余资源不足,当剩余资源不能满足所有模板对应的预制虚拟机列表都达到预定 数量时,将所有模板对应的预制虚拟机列表进行平均化,以使所有模板对应的预制虚拟机 列表相差不超过1。
6.一种云主机部署的系统,其特征在于,所述系统包括网络文件系统服务器,用于根据用户建立虚拟机的请求建立虚拟机对象;接收管理服 务器为预制虚拟机分配的地址和公钥设置,并在所述预制虚拟机第一次启动时配置所述地 址和公钥设置;所述管理服务器,用于修改所述虚拟机对象的属性,将所述虚拟机对象转化为模板数 据文件,复制所述模板数据文件,在终端节点上创建预定数量的预制虚拟机;以及分配所述 预制虚拟机的地址和公钥设置,启用所述预制虚拟机;所述终端节点,用于为所述管理服务器创建所述预制虚拟机提供存储和计算能力。
7.根据权利要求6所述的系统,其特征在于,所述管理服务器包括模板转化模块,用于修改所述虚拟机对象的属性,将所述虚拟机对象转化为所述模板 数据文件;虚拟机创建模块,用于复制所述模板数据文件,在所述终端节点上创建预定数量的预 制虚拟机;在启用一个所述预制虚拟机后,再复制所述模板数据文件,创建一个新的预制虚 拟机;虚拟机启用模块,用于向所述网络文件系统服务器分配所述预制虚拟机的所述地址和公钥设置,以及启用一个所述预制虚拟机。
8.根据权利要求7所述的系统,其特征在于,所述管理服务器还包括终端节点判断模块,用于在创建预定数量的预制虚拟机之前,判断所述终端节点的剩 余计算和存储能力;如果所述终端节点有充足的剩余计算和存储能力,则在所述终端节点上创建预定数量 的所述预制虚拟机;如果剩余资源不足,当一个所述模板对应的预制虚拟机列表较长,使得另一个模板对 应的预制虚拟机列表无法达到预定数量时,所述终端节点选择模块查找预制虚拟机列表最 长的模板,删除所述预制虚拟机列表最长的模板的一个或多个预制虚拟机以使所述另一个 模板对应的预制虚拟机能够达到预定数量。
9.根据权利要求7所述的系统,其特征在于,所述管理服务器还包括终端节点判断模块,用于在创建预定数量的预制虚拟机之前,判断所述终端节点的剩 余计算和存储能力;如果所述终端节点有充足的剩余计算和存储能力,则在所述终端节点上创建预定数量 的所述预制虚拟机;如果剩余资源不足,当剩余资源不能满足所有模板对应的预制虚拟机列表都达到预定 数量时,所述节点选择模块将所有模板对应的预制虚拟机列表进行平均化,以使所有模板 对应的预制虚拟机列表相差不超过1。
10.根据权利要求7所述的系统,其特征在于,所述管理服务器还包括模板释放模块,用于在所述虚拟机创建模块创建一个新的预制虚拟机后,将所述新的 预制虚拟机加入到所述模板对应的预制虚拟机列表中。
全文摘要
本发明公开了一种云主机部署的方法及系统,该方法包括根据用户建立虚拟机的请求建立虚拟机对象;修改虚拟机对象的属性,将虚拟机对象转化为模板数据文件;复制模板数据文件,创建预定数量的预制虚拟机;接收预制虚拟机的地址和公钥设置,启用一个预制虚拟机。本发明提供的云主机部署的方法及系统解决了当前云主机的部署完全依靠手工进行,生产率低运维成本高的缺陷;避免了人工部署云主机错误概率高的问题,满足了快速部署云主机获取充足计算能力的需要。
文档编号G06F9/455GK101840346SQ20091024418
公开日2010年9月22日 申请日期2009年12月30日 优先权日2009年12月30日
发明者常晓东, 沈启龙, 蒋建平 申请人:北京世纪互联宽带数据中心有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1