用于使用预调配的变异模板来创建虚拟机的方法和系统的制作方法

文档序号:6507653阅读:235来源:国知局
用于使用预调配的变异模板来创建虚拟机的方法和系统的制作方法
【专利摘要】示例性实施例包括一种用于使用预调配的变异模板来创建虚拟机的方法、系统和计算机程序产品。标识将用于创建虚拟机的模板,模板包括可用来在数据处理系统上创建虚拟机的数据。在变异模板中选择数据块以用于从变异模板重构模板。该数据块被包括在变异模板中与变异模板关联的清单中所指定的位置处。用该数据块填充模板的数据结构,从而数据块占用模板中的预定位置,由此从变异模板重构模板。使用该模板在数据处理系统上创建虚拟机。
【专利说明】用于使用预调配的变异模板来创建虚拟机的方法和系统
【技术领域】
[0001]本发明主要涉及一种用于安装或者调配(provision)虚拟机的方法、系统和计算机程序产品。具体而言,本发明涉及一种使用预调配的变异(mutated)模板以用于在计算节点上安装多种虚拟机(VM)配置的方法、系统和计算机程序产品。
【背景技术】
[0002]某些数据处理系统被配置用于同时处理若干工作量。例如在单个主机数据处理系统上配置的多个独立的虚拟数据处理系统,诸如独立的VM,经常处理针对不同客户端或者应用的独立的工作量。主机数据处理系统也称为计算节点。
[0003]在大规模数据处理环境中,诸如在数据中心中,数以千计的VM可以在任何给定时间在主机上操作,并且即使不以千计也以百计的这样的主机可以同时在数据中心中操作。虚拟化的数据处理环境,诸如所描述的数据中心,常被称为“云”,其按需向若干客户端提供计算资源和计算服务。
[0004]在计算节点上按需安装或创建VM以用于处理工作量、满足服务水平要求以及许多其他原因。另外,出于不同目的可能需要不同的VM配置。例如在仅为了向用户提供通用计算平台而创建VM时,该VM可以创建成仅具有基本操作系统而没有应用。在另一示例中,当新VM必须提供应用服务时,该VM可以创建成具有操作系统和在其上配置的应用服务器。类似地,可以预先配置许多不同的VM配置作为模板映像(模板)。当必须在计算节点上创建具有特定预先确定的配置的VM时,从模板存储装置,诸如数据库或者文件系统,选择合适的模板并将其安装在计算节点上以创建具有期望配置的VM。

【发明内容】

[0005]示例性实施例提供一种用于使用预调配的变异模板来创建虚拟机的方法、系统和计算机程序产品。在至少一个实施例中,提供一种用于使用预调配的变异模板来创建虚拟机的方法。该方法包括使用处理器和存储器来标识将用于创建虚拟机的模板,模板包括可用来在数据处理系统上创建虚拟机的数据。该方法还包括选择变异模板中的数据块以用于从变异模板来重构模板,其中该数据块被包括在变异模板中与变异模板关联的清单中所指定的位置处。该方法还包括用数据块填充模板的数据结构,从而数据块占用模板中的预定位置,由此从变异模板来重构模板。该方法还包括使用模板在数据处理系统上创建虚拟机。
[0006]在另一实施例中,该方法还包括标识将包括在模板中以用于重构的第二数据块。该方法还包括确定变异模板未包括第二数据块。该方法还包括从源接收第二数据块。该方法还包括用第二数据块填充模板的数据结构,从而第二数据块占用模板中的第二预定位置。
[0007]在另一实施例中,该方法还包括在清单中找出对源的参考。该方法还包括使用该参考来访问源并且接收第二数据块。
[0008]在另一实施例中,该源已知用于提供第二数据块。[0009]在另一实施例中,该方法还包括接收描述模板的结构的信息。该方法还包括标识数据块作为模板的结构的一部分。该方法还包括使用结构进一步标识模板中的用于数据块的位置。
[0010]在另一实施例中,数据块在模板中的位置不同于在与变异模板关联的清单中所指定的数据块的位置。
[0011]在另一实施例中,清单指定将包括在模板中的多个数据块,该多个数据块包括所述数据块,其中清单还指定模板中的用于数据块的第一位置。该方法还包括使用清单来标识数据块在变异模板中的位置。该方法还包括将数据块从变异模板中的位置移动到模板中的位置。
[0012]在另一实施例中,该方法还包括修改变异模板的数据结构以将变异模板的数据结构变换成模板的数据结构,并且其中移动是修改的一部分。
[0013]在另一实施例中,该方法还包括接收用于创建虚拟机的请求,其中标识模板响应于接收请求。
[0014]在另一实施例中,清单对应于模板。
[0015]在另一实施例中,清单对应于变异模板。
【专利附图】

【附图说明】
[0016]在所附权利要求中阐述被认为是本发明的特点的新颖特征。然而将通过参照在结合附图阅读时的对示例实施例的以下具体描述来最好地理解本发明本身,包括其优选实施方式、进一步的目的和优点,在附图中:
[0017]图1描绘其中可以实施示例性实施例的数据处理系统的框图;
[0018]图2描绘其中可以实施示例性实施例的在逻辑上分区的示例平台的框图;
[0019]图3描绘根据一个示例性实施例的用于创建变异模板以供预调配的示例配置的框图;
[0020]图4描绘根据一个示例性实施例的调配的模板构造应用的示例配置的框图;
[0021]图5描绘根据一个示例性实施例的用于使用变异模板来预调配计算节点的示例配置的框图;
[0022]图6描绘根据一个示例性实施例的用于创建清单的配置以及示例清单的框图;
[0023]图7描绘根据一个示例性实施例的另一示例清单的框图;
[0024]图8描绘根据一个示例性实施例的用于在计算节点处使用预调配的变异模板的示例配置的框图;
[0025]图9描绘根据一个示例性实施例的模板构造应用的示例配置的框图;
[0026]图10描绘根据一个示例性实施例的模板构造应用的示例配置的框图;
[0027]图11描绘根据一个示例性实施例的为预调配构造变异模板的示例过程的流程图;
[0028]图12描绘根据一个示例性实施例的用于构造与变异模板对应的清单的示例过程的流程图;
[0029]图13描绘根据一个示例性实施例的创建与变异模板对应的模板特定清单的另一示例过程的流程图;[0030]图14描绘根据一个示例性实施例的从预调配的变异模板重构模板的示例过程的流程图;以及
[0031]图15描绘根据一个示例性实施例的从预调配的变异模板重构模板的另一示例过程的流程图。
【具体实施方式】
[0032]一个实施例可与任何大小的模板一起使用而无限制。当前,典型模板的大小是吉比特(GB)量级。典型的虚拟化的数据处理环境可以运用数以百计或者甚至数以千计的不同VM配置。因而,这样的环境可以存储与那些VM配置对应的数以百计或者数以千计的模板。
[0033]一般而言,当计算节点必须安装具有特定配置的VM时,计算节点通过数据网络从模板贮存库传送对应模板。在一些虚拟化的数据处理环境中,在某些计算节点上存储或者预调配某些模板的副本,从而当需要对应的VM时,该VM可以迅速被创建而无需通过数据网络传送模板。
[0034]示例性实施例认识到实际计算节点具有有限的可供其存储模板的本地或者远程存储空间。因而,仅能在计算节点上预调配有限数目的模板,并且当必须在计算节点上创建与未在计算节点上预调配的模板对应的VM时,必须从模板存储装置传送该模板。
[0035]示例性实施例还认识到通过数据网络传送模板给数据网络增添了显著的数据流量。示例性实施例也认识到即使在计算节点处本地存储某些模板,计算节点仍然必须在需要非本地存储的模板时通过数据网络传送那些非本地存储的模板。
[0036]示例性实施例认识到,当前模板或者在计算节点处完全本地可用,或者必须从模板存储系统完全传送模板。另外,示例性实施例认识到虚拟化的数据处理环境是动态环境,因为现有模板被改变并且随着时间新模板被创建以解决新的或者不同的需求。当某些工作量或者需求不再存在于环境中时,现有模板可以被删除以恢复用于新的或者改变的模板的存储空间。因此,当前模板数据仍然构成虚拟化的数据处理环境中的数据流量的显著部分。
[0037]用来描述本发明的示例性实施例主要解决和化解以上描述的问题以及与预调配模板有关的其他问题。示例性实施例提供一种用于使用预调配的变异模板的方法、系统和计算机程序产品。
[0038]一般而言,本发明的一个实施例从可用于调配的模板集合有选择地组合模板子集的全部或者部分。例如可以将模板的数据划分成具有相同或者不同大小的块。一个实施例使用子集中的模板的所有或者一些块来创建变异模板。
[0039]一个实施例基于多种标准来选择将包括在变异模板中的块。例如在一个实施例中,基于模板子集之中的共同块的降序来选择块。在另一实施例中,基于策略而将一些块包括在变异模板中或者从变异模板中排除。另一实施例使用预测技术来选择模板子集、选择子集内的块或者其组合。
[0040]一个实施例还创建与变异模板对应的一个或者多个清单。例如一个实施例创建如下清单,该清单描述包括在变异模板中的块的性质和位置。使用这样的清单,另一实施例可以重构特定模板的全部或者部分,该特定模板是用来创建变异模板的子集的成员。
[0041]另一实施例创建与变异模板对应的清单集合。在清单集合中的清单通知另一实施例如何从该变异模板重构特定模板。一个实施例可以创建任何数目的变异模板以及一个或者多个清单的集合。
[0042]一个实施例向另一实施例发送变异模板和对应清单的集合。该另一实施例使用此变异模板和清单集合中的一个或者多个清单来重构模板的全部或者部分。
[0043]在某些境况之下,所创建的变异模板的大小可以受限于阈值大小或者策略。因而,一个实施例可以仅将模板的一些块包括在变异模板中。当模板的块未包括在变异模板中(未包括的块)时,一个实施例在清单中包括对从变异模板省略的块的未包括参考。未包括参考是对可以从其获得该未包括的块的源的参考。一个实施例可以使用此未包括参考以从该源获得该块。
[0044]在另一实施例中,与变异模板对应的清单不包括对未包括的块的参考。使用清单来重构模板的一个实施例使用可用于该实施例的其他知识或者信息来获得该未包括的块。
[0045]针对某些设计、模板和清单、仅作为示例描述了示例性实施例。这样的描述不旨在于限制本发明。
[0046]另外,可以针对任何类型的数据、数据源或者通过数据网络对数据源的访问来实施示例性实施例。在本发明的范围内,任何类型的数据应用或者存储设备可以在数据处理系统本地或者通过数据网络向本发明的一个实施例提供数据,诸如用于部署或者配置应用的数据。
[0047]可以针对任何类型的应用,例如所供应的应用、任何类型的服务器应用的实例、平台应用、单机应用、监管应用或者其组合来实施本发明的实施例。应用——包括实施一个实施例的全部或者部分的应用一还可以包括数据处理环境中可用的数据对象、代码对象、封装的指令、应用片段、服务和其他类型的资源。例如,Java对象、Enterprise Java Bean(企业Java组件EJB)、小服务或者小应用可以是本发明可以针对其实施的应用的表现形式(Java和所有基于Java的商标和标志是Oracle和/或其子公司的商标或者注册商标)。
[0048]可以在硬件、软件或者其组合中实施示例性实施例。还可以针对可以在给定数据处理系统配置中可用的任何类型的数据存储源,诸如物理或者虚拟数据存储设备,来实施本发明的示例性实施例。
[0049]在本公开内容中的示例仅用于描述清楚而不用于限制示例性实施例。根据本公开内容可以设想附加数据、操作、动作、任务、活动和操纵,并且这些都在示例性实施例的范围内。
[0050]这里列举的任何优点仅为示例而不旨在于限制示例性实施例。特定示例性实施例可以实现附加的或者不同的优点。另外,一个具体示例性实施例可以具有以上列举的优点中的一些或者所有或者没有这些优点。
[0051]参照附图并且具体参照图1和图2,这些图是可以实施示例性实施例的数据处理环境的示例图。图1和2仅为示例而不旨在于断言或者暗示关于可以实施不同实施例的环境的任何限制。具体实现方式可以基于以下描述对描绘的环境进行多种修改。
[0052]参照图1,该图描绘其中可以实施示例性实施例的数据处理系统的框图。数据处理系统100可以是对称多处理器(SMP)系统,该SMP系统包括连接到系统总线106的多个处理器101、102、103和104。例如,数据处理系统100可以是在网络内实施为服务器的IBM
Power System? JPower System是国际商业机器公司在美国和其他国家的产品和商标)。备选地,可以采用单处理器系统,并且处理器101、102、103和104可以是单处理器芯片中的核。备选地,数据处理系统100可以以处理器和核的任何组合而包括处理器101、102、103、104。
[0053]也连接到系统总线106的是存储器控制器/高速缓存108,其提供与多个本地存储器160-163的接口。I/O总线桥接器110连接到系统总线106并且提供与I/O总线112的接口。可以如描绘的那样集成存储器控制器/高速缓存108和I/O总线桥接器110。
[0054]数据处理系统100是逻辑上分区的数据处理系统。因此,数据处理系统100可以具有同时运行的多个异构操作系统(或者单个操作系统的多个实例)。这些多个操作系统中的每个操作系统可以具有在其内执行的任意数目的软件程序。数据处理系统100被从逻辑上分区,从而可以向不同的逻辑分区分配不同的PCI I/O适配器120-121、128-129和136、图形适配器148以及硬盘适配器149。在这一情况下,图形适配器148连接到显示设备(未示出),而硬盘适配器149连接到并且控制硬盘150。
[0055]因此,例如假设将数据处理系统100划分成三个逻辑分区P1、P2和P3。向三个分区之一分配PCI I/O适配器120-121、128-129、136中的每个PCI I/O适配器、图形适配器148、硬盘适配器149、主机处理器101-104中的每个主机处理器以及本地存储器160-163中的存储器。在这些示例中,存储器160-163可以采用双列直插式存储模块(DIMM)的形式。DIMM通常不按每个DIMM的基础被分配给分区。取而代之,分区将获得整个存储器中的为平台所见的部分。例如,可以向逻辑分区Pl分配处理器101、本地存储器160-163中的存储器的某一部分以及I/O适配器120、128和129 ;可以向分区P2分配处理器102-103、本地存储器160-163中的存储器的某一部分以及PCI I/O适配器121和136 ;并且可以向逻辑分区P3分配处理器104、本地存储器160-163中的存储器的某一部分、图像适配器148和硬盘适配器149。
[0056]在数据处理系统100内执行的每个操作系统被分配给不同的逻辑分区。因此,在数据处理系统100内执行的每个操作系统仅可以访问在其逻辑分区内的那些I/O单元。因此例如Advanced Interactive Executive ( ΑΙΧ? )操作系统的一个实例可以在分
区Pi内执行,Aix操作系统的第二实例(映像)可以在分区P2内执行,并且Linitx?.或者
iBM-1?.操作系统可以在逻辑分区P3内运行。(AIX和IBM-1是国际商业机器公司在美国和其他国家的商标。Linux是Linus Torvalds在美国和其他国家的商标)。
[0057]连接到I/O总线112的外围部件互连(PCI)主机桥接器114提供与PCI本地总线的接口。多个PCI输入/输出适配器120-121通过PCI到PCI桥接器116、PCI总线118、PCI总线119、I/O槽170和I/O槽171连接到PCI本地总线115。PCI到PCI桥接器116提供与PCI总线118和PCI总线119的接口。PCI I/O适配器120和121被分别放置在I/O槽170和I/O槽171中。典型的PCI总线实现方式支持四到八个的I/O适配器(即用于插入连接器的扩展槽)。每个PCI I/O适配器120-121提供在数据处理系统100与输入/输出设备之间的接口,输入/输出设备例如为其他网络计算机,这些网络计算机是数据处理系统100的客户端。
[0058]附加PCI主机桥接器122提供用于附加PCI本地总线123的接口。PCI本地总线123连接到多个PCI I/O适配器128-129。PCI I/O适配器128-129通过PCI到PCI桥接器124,PCI总线126,PCI总线127、I/O槽172和I/O槽173连接到PC本地总线123。PCI到PCI桥接器124提供与PCI总线126和PCI总线127的接口。PCI I/O适配器128和129被分别放置在I/O槽172和173中。以这一方式,可以通过PCI I/O适配器128和129中的每个PCI I/O适配器来支持附加I/O设备,例如调制解调器或者网络适配器。因而,数据处理系统100允许与多个网络计算机的连接。
[0059]存储器映射图形适配器148被插入到I/O槽174中并且通过PCI总线144、PCI到PCI桥接器142、PCI本地总线141和PCI主机桥接器140连接到I/O总线112。硬盘适配器149可以被放置在连接到PCI总线145的I/O槽175中。PCI总线145继而连接到PCI到PCI桥接器142,该PCI到PCI桥接器142通过PCI本地总线141连接到PCI主机桥接器140。
[0060]PCI主机桥接器130提供用于PCI本地总线131连接到I/O总线112的接口。PCII/O适配器136连接到I/O槽176,该I/O槽176通过PCI总线133连接到PCI到PCI桥接器132。PCI到PCI桥接器132连接到PCI本地总线131。PCI本地总线131也将PCI主机桥接器130连接到服务处理器邮箱接口和ISA总线访问直通逻辑194以及PCI到PCI桥接器 132。
[0061]服务处理器邮箱接口和ISA总线访问直通逻辑194转发去往PCI/ISA桥接器193的PCI访问。NVRAM存储装置192连接到ISA总线196。服务处理器135通过其本地PCI总线195连接到服务处理器邮箱接口和ISA总线访问直通逻辑194。服务处理器135也经由多个JTAG/I2C总线134连接到处理器101-104。JTAG/I2C总线134是JTAG/扫描总线(见 IEEEl 149.1)和 Phillips I2C 总线的组合。
[0062]然而备选地,JTAG/I2C总线134可以由仅Phillips I2C总线或者仅JTAG/扫描总线所取代。主机处理器101、102、103和104的所有SP-ATTN信号一起连接到服务处理器135的中断输入信号。服务处理器135具有其自己的本地存储器191并且具有对硬件OP-面板190的访问。
[0063]当数据处理系统100初次上电时,服务处理器135使用JTAG/I2C总线134以轮询系统(主机)处理器101-104、存储器控制器/高速缓存108和I/O桥接器110。在完成这一步骤时,服务处理器135对数据处理系统100的库存和拓扑有所了解。服务处理器135也对通过轮询主机处理器101-104、存储器控制器/高速缓存108和I/O桥接器110而发现的所有单元执行内嵌自测试(BIST)、基本保证测试(BAT)和存储器测试。服务处理器135收集和报告针对在BIST、BAT和存储器测试期间检测到的故障的任何错误信息。
[0064]如果系统资源的有意义/有效配置在取出在BIST、BAT和存储器测试期间发现故障的单元之后仍然可行,则允许数据处理系统100继续向本地(主机)存储器160-163中加载可执行代码。服务处理器135然后释放主机处理器101-104以用于执行向本地存储器160-163中加载的代码。在主机处理器101-104执行数据处理系统100内的相应操作系统的代码时,服务处理器135进入监视和报告错误的模式。服务处理器135监视如下项目类型,例如包括冷却风扇速度和操作、热传感器、电源调节器以及处理器101-104、本地存储器160-163和I/O适配器110报告的可恢复和不可恢复错误。
[0065]服务处理器135保存和报告与数据处理系统100中的所有监视的项目有关的错误信息。服务处理器135也基于错误类型和定义的阈值来采取动作。例如服务处理器135可能注意到处理器的高速缓存存储器上的过多可恢复错误,并且判决出这预示硬件故障。基于这一确定,服务处理器135可以标记该资源以在当前运行会话和将来初始程序加载(IPL)期间退出配置。IPL有时也称为“引导”或者“启动”。
[0066]可以使用各种商业可用计算机系统来实施数据处理系统100。例如可以使用从国际商业机器公司可用的IBM Power Systems来实施数据处理系统100。这样的系统可以支持使用同样从国际商业机器公司可用的AIX操作系统的逻辑分区。
[0067]本领域普通技术人员将理解,图1中描绘的硬件可以变化。例如除了描绘的硬件之外或者取代描绘的硬件也可以使用其他外围设备,诸如光盘驱动等。描绘的示例不是为了暗示关于示例实施例的架构限制。
[0068]参照图2,该图描绘其中可以实施示例性实施例的在逻辑上分区的平台的框图。逻辑上分区的平台200中的硬件例如可以实施为图1中的数据处理系统100中描绘的对应部件。
[0069]逻辑上分区的平台200包括分区的硬件230、操作系统202、204、206、208和平台固件210。诸如平台固件210之类的平台固件也称为分区管理固件。操作系统202、204、206和208可以是在逻辑分区的平台200上同时运行的单个操作系统的多个副本或者多个异构操作系统。这些操作系统可以使用IBM-1来实施,IBM-1被设计用于与诸如Hypervisor(管理程序)的分区管理固件对接。IBM-1仅用作这些示例性实施例的示例。当然,可以根据具体实现方式使用其他类型的操作系统,诸如AIX和Linux。操作系统202、204、206和208分别位于分区203,205,207和209中。
[0070]Hypervisor软件是可以用来实施分区管理固件210的软件示例并且其可以从国际商业机器公司获得。固件是存储在存储器芯片中的“软件”,该存储器芯片在无电力时保持其内容,例如只读存储器(ROM)、可编程ROM (PR0M)、可擦除可编程ROM (EPR0M)、电可擦除可编程ROM (EEPROM)和非易失性随机存取存储器(非易失性RAM)。
[0071]此外,分区203、205、207和209也分别包括分区固件211、213、215和217。分区固件211、213、215和217可以使用初始引导代码、IEEE-1275标准开放固件和可从国际商业机器公司获得的运行时抽象软件(RTAS)来实施。在实例化分区203、205、207和209时,平台固件210向分区203、205、207和209上加载引导代码的副本。随后,控制被传递给引导代码,利用该引导代码然后加载开放固件和RTAS。关联的或分配给分区的处理器继而被分派给分区的存储器以执行分区固件。
[0072]分区203是计算节点的示例并且包括示例VM212和214。根据一个实施例,分区203中的模板构造应用216从变异模板重构模板。模板构造应用216包括用于执行各种实施例中的任何实施例的过程的程序指令。类似地,根据各种实施例中的任何实施例,分区205可以视为包括创建变异模板的变异模板构造应用218的另一数据处理系统。变异模板构造应用218也包括用于执行各种实施例中的任何实施例的过程的程序指令。程序指令可以存储在一个或者多个计算机可读有形存储设备中的至少一个计算机可读有形存储设备(例如硬盘150、NVRAM192或者与图1中的I/O总线112耦合的紧致盘设备)上,以用于经由一个或者多个计算机可读存储器中的至少一个计算机可读存储器(例如图1中的本地存储器160-163中的任何本地存储器)而由一个或者多个处理器中的至少一个处理器(例如图1中的处理器101-104)执行。可以用任何形式来实施模板构造应用216,该形式包括但不限于适合于作为服务执行的形式、使用硬件和软件实施的形式,或者适合于集成到用于虚拟环境管理的另一应用中的形式。
[0073]分区的硬件230包括多个处理器232-238、多个系统存储器单元240-246、多个输入/输出(I/O)适配器248-262和存储单元270。处理器232-238、存储器单元240-246、NVRAM存储装置298和I/O适配器248-262中的每个可以被分配逻辑上分区的平台200内的分区203、205、205和209之一,这些分区203、205、207和209中的每个分区对应于操作系统 202,204,206 和 208 之一。
[0074]分区管理固件210执行用于分区203、205、207和209的多个功能和服务以创建和实施对逻辑上分区的平台200的分区。分区管理固件210是与下层硬件相同的、固件实施的虚拟机器。因此,分区管理固件210允许通过虚拟化逻辑上分区的平台200的所有硬件资源来同时执行独立的OS映像202、204、206和208。
[0075]服务处理器290可以用来提供各种服务,诸如处理分区中的平台错误。这些服务也可以充当用于向厂商,诸如国际商业机器公司,回报错误的服务代理。可以通过硬件管理控制台,诸如硬件管理控制台280,来控制分区203、205、207和209的操作。硬件管理控制台280是单独的数据处理系统,系统管理员可以从该单独的数据处理系统执行各种功能,包括向不同的分区重新分配资源。
[0076]图1-图2中的硬件可以根据实现方式而变化。除了图1-2中描绘的某些硬件之外或者取代图1-2中描绘的某些硬件,还可以使用其他内部硬件或者外围设备,诸如闪存、等效非易失性存储器或者光盘驱动等。示例性实施例的实现方式也可以使用用于管理分区的备选架构而未脱离本发明的范围。
[0077]参照图3,该图描绘根据一个示例性实施例的用于创建变异模板以供预调配的示例配置的框图。变异模板构造应用302与图2中的变异模板构造应用218类似。
[0078]模板贮存库304是适合于存储模板的任何类型的数据贮存库,该数据贮存库包括但不限于数据库、文件系统或者存储网络。注意,并非在模板贮存库304中存在的所有模板都可以用于调配给计算节点以供创建对应的VM。例如,模板贮存库304中的模板可能仅用于测试目的,而不能被调配给计算机节点以用于实际创建对应VM。
[0079]请求日志306是在一个时段内从在虚拟化的数据处理环境中操作的各种计算节点接收的任何适当的模板请求的记录。例如,模板贮存库304可以包括可以从在给定环境中操作的计算节点1、2、3和4中的任何计算节点请求的模板X、Y和Z。在一个实施例中,请求日志306包括与如下请求对应的条目:在时间Tl来自计算节点I的针对模板X的请求、在时间Tl来自计算节点I的针对模板X的请求、在时间T2来自计算节点2的针对模板Y的请求、在时间T3来自计算节点I的针对模板Y的请求、在时间T4来自计算节点3的针对模板X的请求、在时间T5来自计算节点3的针对模板Y的请求以及在时间T6来自计算节点I的针对模板X的请求。请求日志306或者另一日志(未示出)也可以包括与如下时间对应的条目:删除或者改变现有模板(诸如模板X)的时间和向模板贮存库304添加新模板(诸如模板A)的时间。
[0080]使用来自请求日志306的信息和模板贮存库304中的可用于预调配的模板的子集,变异模板构造应用302构造变异模板308。变异模板构造应用302还构造与变异模板308对应的清单310。根据这里描述的各种实施例中的任何实施例,清单310是一个或者多个清单的集合并且包括清单数据。
[0081]参照图4,该图描绘根据一个示例性实施例的变异模板构造应用的示例配置的框图。变异模板构造应用402可以用作图3中的变异模板构造应用302。
[0082]在所描绘的示例配置中,变异模板构造应用402包括模板分组部件404、请求日志提取部件406、需求预测器部件408、用于创建遗漏模板块记录的部件410、变异部件412和清单创建部件414。变异模板构造应用402向预调配引擎420输出变异模板416和一个或者多个清单418的集合。预调配引擎420向一个或者多个计算节点(未示出)预调配模板子集,诸如图3中的模板贮存库304中的可用于调配的并且完全或者部分地组合(变异)到变异模板416中的模板的子集。
[0083]模板分组部件404选择模板贮存库中可用于调配的模板的子集。模板分组部件404还确定组合该选择的子集中的模板的一些或者所有块的方式。
[0084]例如在一个实施例中,请求日志提取部件406读取针对在一个时段内从给定环境中的计算节点接收的模板请求的请求日志,诸如图3中的请求日志306。请求日志提取部件406标识在该时段内请求的模板。所标识的模板形成模板子集。在一个实施例中,只有那些在前述时段内被请求的次数多于阈值次数的模板被包括在该子集中。
[0085]在一个实施例中,模板分组部件404还按照针对子集中的模板的请求的降序来排列那些模板。例如,假设根据请求日志提取部件406,在该时段内模板A被请求三次、模板B被请求2次并且模板C被请求一次。模板分组部件404形成模板A和B的子集并且根据它们的需求按照顺序(A,B)排列模板A和B。
[0086]在一个实施例中,模板分组部件404还使用需求预测器部件408以选择和组织子集。例如请求日志记录可以表明在时间Tl添加了新模板D,该新模板D在时段T2期间被请求一次,在时段T3期间被请求5次并且在时段T4期间被请求20次。因而,需求预测器部件408可以确定,即使针对模板D的需求在给定时段内尚未达到将模板D包括在子集中的阈值需求水平,但是针对模板D的需求的趋势表明针对模板D的需求很可能在另一时段中增加并且超过阈值。因而,需求预测器部件408建议在子集中包括模板D,并且模板分组部件404将模板D包括并组织到子集中。
[0087]如在模板分组部件404中执行的,对模板的组织可以采用任何适当形式。例如在一个实施例中,将模板的子集简单地分组在一起而无特定组织。在另一实施例中,按照针对模板的需求的顺序来排列模板。
[0088]在另一实施例中,按照分级顺序排列子集中的模板。例如,模板分组部件404可以发现或者接收关于某些模板之间的母子关系的信息。例如,模板B可以包括模板A的块中的所有块和附加的块集合。分级顺序也可以依赖于可以通过向A安装或者从A卸载一个或者多个软件来从模板A导出模板B这样的事实。基于这一分级,如果考虑A和B的块,则B可以包括A的块中的一个或者多个块以及附加的块集合。
[0089]在示例性实施例的范围内,可以用适合于实现方式的任何方式来断定块是否为两个或者更多模板所共用。例如在一个实施例中,如果两个数据块使用相同哈希算法所计算的哈希值匹配,则这两个数据块视为在两个模板中相同或者为这两个模板所共用。检测到重复或者相同块使得能够在变异模板中仅包括该块的一个副本,其中两个模板都可以从该变异模板重构,并且该块的单个副本可用于构造这两个模板中的任一模板。[0090]类似地,模板分组部件404可以发现模板C可以包括模板A的块中的所有块以及不同的附加块集合。模板D可以包括模板B的块中的所有块和第三不同附加块集合。因而,模板分组部件404形成模板A、B、C和D的子集的分级组织,从而模板B和C是母模板A的不同子模板,并且模板D是模板B的子模板。
[0091]变异部件412使用选择的模板子集的组织以从该子集中的模板中选择块中的所有块或者一些块。在一个实施例中,变异部件412可以通过优化成本函数来计算哪些块要包括以及不包括在具有给定大小的变异模板中,其中成本函数可以包括在该变异模板内具有或者不具有给定块的成本。
[0092]例如在一个实施例中,成本可以描述为在需要未包括在变异模板中的块时向数据网络添加的数据流量。模板的未包括的块将被请求与使用变异模板来请求或者需求的模板一样多的次数。另外,如果未包括的块在请求的模板内多次出现,则针对未包括的块的请求将与块在模板内出现的次数进一步相乘。针对给定的未包括的块的有效请求率将是跨越变异模板中包括的所有模板针对该块的个体需求之和。由于这一个块而在网络上造成的数据流量是针对这一个块的请求率与块的大小的乘积。
[0093]根据一个实施例,优化是O-1Knapsack (背包)问题,其选择必须包括在具有给定大小的变异模板中的块以便最小化网络上的流量。所选择的块可以按照任何顺序包括在变异模板416中。用于记录遗漏模板块的部件410记录如下块,这些块是子集中的模板的一部分并且未包含于变异模板416中。在一个实施例中,部件410的操作是可选的。
[0094]可以根据实现方式以任何适当方式执行变异模板416中的块的排序。例如,如果子集中的两个模板按照母子关系进行组织,则一个实施例在变异模板416中将母模板的块排列在子模板的块之前。
[0095]另一实施例按如下对块排序——跨越用于构造变异模板的所有模板针对给定的块位置的最频繁请求(但是选择)的块如果早先尚未包括在内,则该块被保持在该位置中。否则,基于类似逻辑,该实施例尝试将下一个最多请求(但是选择)的块放置在该位置处。实施例继续按照针对块的请求频率的降序来选择那些块,并且使用上述逻辑来放置它们。如果无块可用于放置,则实施例选择针对比当前块位置更早的某一块位置的、但是目前为止不能放置在任何位置中的最频繁请求(但是选择)的块。因此,重复块未出现在变异模板中。根据一个实施例,这一排序方式的优点在于当变异模板被用来创建所包括的模板之一时,能够最小化对块位置的预计改变。
[0096]清单创建部件414创建一个或者多个清单418的集合。如在本公开内容中别处描述的那样,一个实施例创建清单418,从而清单418描述包括在变异模板416中的块的性质和位置。使用清单418的这样的形式,另一实施例可以重构特定模板的全部或者部分,该特定模板是用来创建变异模板416的子集的成员。另一实施例创建清单418,从而清单418包括与变异模板416对应的清单的集合。这一形式的清单418通知另一实施例如何从变异模板416来重构特定模板。例如在后一种形式中,一个实施例的清单418包括用于用户可以请求的模板X的清单418x (未示出)。清单418x可以预调配有变异模板416,或者备选地,可以在针对模板X的用户请求被路由到包含变异模板416的预调配实例的节点时,通过网络传送清单418x。
[0097]参照图5,该图描绘根据一个示例性实施例的用于使用变异模板来预调配计算节点的示例配置的框图。模板存储系统502可以是图2中的分区205的一个实施例。模板存储系统502包括模板贮存库504或者具有对模板贮存库504的访问。模板贮存库504与图3中的模板贮存库304类似。
[0098]模板存储系统502还包括与图4中的变异模板构造应用402类似的变异模板构造应用506。模板存储系统502包括与图3中的请求日志306类似的请求日志508或者具有对请求日志508的访问。预调配引擎510在模板存储系统502中执行或者从模板存储系统502可访问。
[0099]策略512可以存储在模板存储系统502可访问的贮存库中。例如,策略512可以存储在模板存储系统502通过数据网络可访问的数据库中。策略512中的一个示例策略可以使得模板包括在变异模板中而无论针对该模板的需求如何。策略512中的另一示例策略可以使得特定子模板的块中的所有块或者一些块包括在变异模板中,即使对应母模板的所有块没有都包括在变异模板中。示例策略512可以指定可以在给定环境中适用的待使用的各种块大小、待使用的哈希化算法、变异模板大小阈值、请求日志提取周期、需求阈值和任何其他逻辑、参数或者约束。
[0100]根据一个实施例,模板存储系统502创建一个或者多个变异模板和对应清单。模板存储系统502在计算节点518中预调配变异模板514、清单516。模板存储系统502在计算节点524中预调配变异模板520、清单522。预调配通过数据网络526发生。变异模板514和清单516可以分别不同于变异模板520和清单522。在另一实施例中,清单516或522可以不被预调配,但是在针对对应模板的请求被路由到节点518或者524时,其分别被传送到节点518或者524。
[0101]参照图6,该图描绘根据一个示例性实施例的用于创建清单的配置和示例清单的框图。变异模板构造应用602与图5中的变异模板构造应用506相似。清单创建部件604与图4中的清单创建部件414相似。
[0102]仅作为示例而不暗示对其的任何限制,清单创建部件604包括用于标识重复块的部件606。例如在一个实施例中,在组装变异模板以包括重复块的一个副本之前,可以使用部件606来标识选择的模板子集中的两个或者更多模板中的重复或者相同块。
[0103]部件608确定变异模板中的块的排序。如在本公开内容中别处描述的那样,可以用适合于给定实现方式的任何方式对包括在变异模板中的块排序。在一个实施例中,在变异模板中母模板的块比该母模板的子模板所特有的块更早地被定位。部件610可选地创建对未包括的块的参考。
[0104]根据一个实施例,清单612是与变异模板对应的示例清单。清单612可以用作图4中的清单418。
[0105]清单612包括一个或者多个条目614的集合。条目614中的一个示例条目包括所包括的块的参考标识符616、块在变异模板中出现的索引618和块在变异模板的数据中开始的偏移620。如果块的大小可变,则条目中称为“大小”的提供该块的大小的附加元素(未示出)也可以存在于清单612中。当然,条目614的结构不旨在于局限于示例性实施例。本领域普通技术人员将能够根据这一公开内容构造用于条目614的其他结构,并且这些其他结构也在示例实施例的范围内。
[0106]可选地,清单612也可以包括一个或者多个条目622的集合。条目622中的示例条目包括未包括的块的参考标识符622和对可以从其获得未包括的块的源的未包括参考626。在一个实施例中,未包括参考626指向文件系统中的文件或者其一部分。
[0107]参照图7,该图描绘根据一个示例性实施例的另一示例清单的框图。清单702可以使用图6中的清单构造部件604从变异模板构造应用602来生成。清单702可以用作图4中的清单418。
[0108]如描绘的那样,清单702包括多个清单,即清单704和714。在一个实施例中,该多个清单未包括在清单702内,事实上,作为实体的清单702不存在,并且仅该多个清单伴随并对应于变异模板。
[0109]清单704是用于从对应的变异模板构造(或重构)模板X的清单。例如清单704包括一个或者多个条目706的集合。条目706中的一个示例条目可以用于重构模板X的块1,即“块XI”。根据条目706,块Xl可以使用块参考708来构造,该块参考708参考变异模板的块5 (块Mut5),变异模板的块5在变异模板中出现于索引710处并且可以在变异模板的数据中从偏移712处读取。可以使用条目706中的信息以相似方式构造其他块,诸如模板X的块X2和Xn。
[0110]清单714是用于从对应的变异模板构造(或重构)模板Z的清单。例如清单714包括一个或者多个条目716的集合。条目716中的一个示例条目可以用于重构模板Z的块1,即“块Z1”。根据条目716,块Zl可以使用块参考718来构造,该块参考718参考变异模板的块I (块Mutl),变异模板的块I在变异模板中出现于索引720处并且可以在变异模板的数据中从偏移722处读取。可以使用条目716中的信息以相似方式构造其他块,诸如模板Z的块Z2和Zk。
[0111]可选地,清单702中的一些或者所有清单可以包括用于获得未包括的块的参考。例如清单704包括条目724,该条目724向一个实施例——诸如实施图2中的模板构造应用216的实施例——通知何处或者如何找到用于模板X的所参考的未包括的块3 0^X3)。例如未包括参考A726可以指向其中存储有块X3的文件或者其一部分。
`[0112]类似地,清单714包括条目728,该条目向一个实施例——诸如实施图2中的模板构造应用216的实施例——通知何处或者如何找到用于模板Z的所参考的未包括的块3(块Z3)。例如未包括参考B730可以援引可以从其下载块Z3的数据库记录或者统一资源定位符(URL)。
[0113]如别处针对一个实施例描述的那样,这些清单不是必须被预调配有变异模板,而是在请求模板时通过数据网络被传送到节点。例如,如果在节点处请求模板X,则可以向该节点传送清单704。类似地,如果节点接收针对模板Z的请求,则一个实施例向该节点传送清单714。
[0114]参照图8,该图描绘根据一个示例性实施例的用于在计算节点处使用预调配的变异模板的示例配置的框图。计算节点802与图2中的分区203类似。模板构造应用804与图2中的模板构造应用216类似。
[0115]预调配的模板806是已经在计算节点802上预调配的模板的汇集。例如预调配的模板806可以是预调配的模板的本地贮存库,该贮存库与计算节点802关联或者从计算节点802可访问。预调配的模板806包括变异模板808和对应清单810。变异模板808和清单810对应于图4中的变异模板416和清单418。清单810可以采用图6中的清单612或者图7中的清单702或者图7中的清单704的形式。
[0116]在某一操作点处,计算节点802接收用于根据模板X创建VM的请求812。假设模板X被包括在变异模板808中并且可以从该变异模板808重构。模板构造应用804响应于该请求,使用清单810从变异模板808重构模板X。
[0117]如在别处针对一个实施例描述的那样,如果清单810在节点802上存在,则针对可以在节点802上多次预调配的变异模板808,该清单810仅存储一次。在另一实施例中,如果当在节点802上请求模板X时,用于从变异模板808构造模板X的清单810未存在于节点802上,则可以通过数据网络,诸如图5中的数据网络526,来传送清单810。
[0118]在一个实施例中,模板X的所有块可能已经包括在变异模板808中。因此,请求812可以被服务而无需从贮存库传送模板X以及向数据网络添加数据流量。在另一实施例中,模板X的一些但不是所有块可能已经包括在变异模板808中。因此,通过从贮存库仅传送模板X的未包括的块并且减少由于传送而在数据网络上产生的数据流量来服务请求812。
[0119]参照图9,该图描绘根据一个示例性实施例的模板构造应用的示例配置的框图。模板构造应用902可以用作图8中的模板构造应用804。
[0120]在这一示例配置中,模板构造应用902使用图8的变异模板808和清单810、根据图8的请求812来构造模板X,其中图8的清单810采用图6中的清单612的形式。为了从变异模板808构造模板X,模板构造应用902使用关于模板X的结构的信息904。信息904描述作为模板X的一部分的块、它们的顺序以及关于模板X的任何其他相似的可用信息。
[0121]使用清单810和信息904,模板构造应用902执行匹配操作906,该匹配操作将来自信息904的模板X的块与在变异模板808的清单810中描述的块进行匹配。使用来自清单810的未包括参考或者通过使用模板数据源的其他可用知识,接收操作908接收模板X的未包括在变异模板808中的块。
[0122]使用来自匹配操作906和接收操作908的块,模板构造应用902执行重构操作910。模板构造应用902输出模板X912。在一个实施例中,模板构造应用902从“就位”的变异模板808的实例来构造模板X912,即通过原样保持第i个块或者通过用来自变异模板808的另一部分的被复制到第i个块位置中的另一个块或者在从贮存库接收到这样的块时用其取代第i个块来变换变异模板808。
[0123]有利地,根据一个实施例,变异模板允许在计算节点处预调配若干模板,同时减少预调配数据大小。即使,在一个或者多个变异模板中未容纳所有模板的所有块,一个实施例通过在需要一些模板时仅传送这些模板的未包括的块,仍然减少了数据网络上的数据流量。一个实施例将已知压缩技术应用于一个实施例的变异模板并且进一步减少在预调配中传送的数据量。模板构造应用,诸如模板构造应用902,在执行以上描述的操作之前解压缩变异模板。
[0124]参照图10,该图描绘根据一个示例性实施例的模板构造应用的示例配置的框图。模板构造应用1002可以用作图8中的模板构造应用804。
[0125]在这一示例配置中,模板构造应用1002使用图8的变异模板808和清单810、根据图8的请求812来构造模板X,其中图8的清单810采用图7中的清单704或者714的形式。为了从变异模板808构造模板X,模板构造应用1002选择1004被配置用于从图8中的变异模板808重构模板X的清单,诸如图7中的清单704。[0126]使用清单810以及针对模板X从清单810选择的清单,模板构造应用1002根据清单810中的条目从变异模板808中复制或者取回模板X中需要的那些块。使用来自清单810的未包括参考或者通过使用模板数据源的其他可用知识,接收操作1006接收模板X的未包括在变异模板808中的块。
[0127]使用从变异模板808选择的块以及作为接收操作1006的结果而接收的块,模板构造应用1002执行重构操作1008。模板构造应用1002输出模板X1010。
[0128]参照图11,该图描绘根据一个示例性实施例的构造变异模板以供预调配的示例过程的流程图。可以在图6中的变异模板构造应用602中实施过程1100。
[0129]过程1100开始于分析在一个时段内针对模板的请求的模式(步骤1102)。过程1100预测在另一时段内针对某些模板的需求(步骤1104)。
[0130]过程1100从可用于预调配的模板集合中选择模板子集(步骤1106)。过程1100分析该模板子集以标识子集中的两个或者更多模板共用的块(步骤1108)。过程1100对子集中的模板的块——包括在步骤1108中标识的共用块的单个副本——区分优先级以供包括在变异模板中(步骤1110)。
[0131]例如在一个实施例中,过程1100根据模板子集中的块的重复程度对用于包括的块区分优先级。例如,如果块BI在子集中的4个模板之中的3个中出现并且块B2在这4个模板之中的2个模板中出现,则该实施例将块BI的一个副本排序在块B2的一个副本之前以供包括在变异模板中。
[0132]在另一示例实施例中,过程1100根据策略对块区分优先级以供包括在变异模板中。例如在给定的虚拟化数据处理环境中的策略可以指定某些块必须首先包括在变异模板中,无论这些块在选择的模板子集中如何重复或者出现。因而,该实施例在按照任何其他适当方式区分优先级的任何其他块之前包括那些块。
[0133]在另一实施例中,在步骤1110,过程1100可以求解优化问题,该优化问题包括根据在所考虑的不同模板中包括或者排除块而最小化成本函数。另外,优化问题可以使用对所构造的变异模板的大小的约束。例如而非暗示其限制,成本函数可以用在本公开内容中别处描述的方式来最小化预计网络数据流量。这样的优化步骤的输出是从模板选择的应当包括在变异模板中的块的列表。
[0134]然而这样的优化步骤未提供与变异模板中的选择的块对应的位置信息。在变异模板中的某个块位置处放置选择的块在一个实施例中涉及求解另一问题——尝试在变异模板的位置i处放置选择的块中跨越所有考虑的模板在该位置i处具有最高需求并且早先尚未放置在变异模板中的那一个块。如果不存在这样的选择的块,则该实施例从那些针对低于i的位置又可以放置在位置i处的那些选择的块中进行选择并且选择在选择的块之中具有最大需求的块。否则,该实施例标记位置i为可用并且继续填充下一位置。该实施例的这一放置过程继续进行直至该实施例到达变异模板的最后一个块。
[0135]返回到图11的描述,过程1100确定变异模板中是否存在可用于添加具有优先级的块(步骤1112)。例如,如在本公开内容中别处描述的那样,策略或者另一因素可以限制变异模板的大小,由此限制可以包括在变异模板中的数据量或者块数目。如果变异模板中存在可用空间(步骤1112的“是”路径),则过程1100向变异模板添加最高优先级的剩余块(步骤 1114)。[0136]过程1100确定是否留有更多具有优先级的块(步骤1116)。如果更多具有优先级的块留待向变异模板添加(步骤1116的“是”路径),则过程1100返回到步骤1112。如果没有更多具有优先级的留待被包括在变异模板中(步骤1116的“否”路径),则过程1100构造针对该变异模板的清单(步骤1118)。
[0137]返回到步骤1112,如果过程1100确定变异模板中没有更多空间可用于包括具有优先级的块(步骤1112的“否”路径),则过程1100可选地向变异模板添加对剩余具有优先级的块的未包括参考(步骤1120)。过程1100随后继续到步骤1122。备选地,省略步骤1120,过程1100可以从步骤1112的“否”路径前进到步骤1122,其中过程1100省略子集中的模板的未包括的块(步骤1122)。过程1100随后继续到步骤1118。
[0138]从步骤1118继续,过程1100确定是否必须以相似方式创建更多变异模板(步骤1124)。如果必须以相似方式构造更多变异模板(步骤1124的“是”路径),则过程1100返回到步骤1102。
[0139]如果不用创建更多变异模板(步骤1124的“否”路径),则过程1100确定是否必须改变先前构造的变异模板中的一个或者多个模板(步骤1126)。例如在先前构造的变异模板中包括的模板可能由于管理员重新配置存储子系统、策略、更新模板中包括的VM部件或者若干其他可能原因中的任何原因导致的结果而已经改变。如果必须改变先前构造的变异模板(步骤1126的“是”路径),则过程1100返回到步骤1102。
[0140]如果无需修改先前构造的变异模板(步骤1126的“否”路径),则过程1100发送构造的变异模板及其对应清单以供预调配(步骤1128)。过程1100随后结束。
[0141]参照图12,该图描绘根据一个示例性实施例的用于构造与变异模板对应的清单的示例过程的流程图。可以在图6的变异模板构造应用602中结合图11的过程1100来实施过程1200。
[0142]过程1200开始于针对给定的模板子集,诸如在图11中的过程1100的步骤1106中选择的子集,标识将被包括在对应的变异模板中的块(步骤1202)。过程1200标识每个包括的块的位置、大小、偏移、索引或者其组合(步骤1204)。
[0143]过程1200标识模板子集的诸如由于变异模板的大小阈值而不会被包括在变异模板中的块(步骤1206)。过程1200可选地创建对未包括的块中的一些或者所有块的未包括参考(步骤1208)。过程1200向变异模板的清单添加位置、大小、偏移、索引、未包括参考或者其组合(步骤1210)。过程1200输出清单(步骤1212)。过程1200随后结束。
[0144]在一个实施例中,过程1200可以适于输出与图6中的清单612对应的清单。在另一实施例中,过程1200可以适于输出与图7中的清单702对应的清单。在另一实施例中,过程1200可以适于输出与图7中的清单704或者清单714对应的清单。
[0145]参照图13,该图描绘根据一个示例性实施例的创建与变异模板对应的模板特定清单的另一示例过程的流程图。可以在图6的变异模板构造应用602中实施过程1300,并且过程1300可以用来输出模板特定清单,诸如图7中的清单704。
[0146]过程1300开始于针对选择的模板子集中的给定模板和对应的变异模板,标识模板中的块(步骤1302)。过程1300确定该块是否包括在变异模板中(步骤1304)。如果该块包括在变异模板中(步骤1304的“是”路径),则过程1300向特定于该模板的清单添加该块在变异模板中的位置(步骤1306)。过程1300随后继续到步骤1310。如果该块未包括在变异模板中(步骤1304的“否”路径),则过程1300可选地在特定于该模板的清单中添加对该块的未包括参考(步骤1308)。过程1300随后继续到步骤1310。
[0147]过程1300确定是否更多块留在模板中(步骤1310)。如果更多块留在模板中(步骤1310的“是”路径),则过程1300返回到步骤1302并且选择另一个块。
[0148]过程1300确定是否必须以这一方式处理子集中的另一模板以用于创建另一模板特定清单(步骤1312)。如果将处理另一模板(步骤1312的“是”路径),则过程1300从子集选择另一模板(步骤1314)。过程1300随后返回到步骤1302。
[0149]如果没有更多模板要处理(步骤1312的“否”路径),则过程1300输出与子集中的模板对应的模板特定清单的汇集(步骤1316)。过程1300随后结束。
[0150]参照图14,该图描绘根据一个示例性实施例的从预调配的变异模板重构模板的示例过程的流程图。可以在模板构造应用、诸如图8中的模板构造应用804中实施过程1400。
[0151]过程1400开始于接收变异模板(步骤1402)。在步骤1402中还接收与变异模板关联的清单。出于过程1400的目的,清单可用于定位包括在变异模板中的块。例如可以在步骤1402中接收图6中的清单612这一形式的清单并且该清单以这一方式可用。
[0152]过程1400还接收关于必须从变异模板重构的模板的结构的信息(步骤1404)。另一过程,诸如图15中的过程1500,也可以经由标记为“A”的进入点在步骤1404进入过程1400。在一个实施例中,过程1400可以响应于接收针对模板的请求来获得在步骤1404中接收的结构(未示出)。
[0153]过程1400选择在结构中标识的块,诸如块i,以用于使用与变异模板关联的清单来执行后续步骤(步骤1406)。过程1400确定模板的块i是否包括在变异模板中(步骤1408)。
[0154]如果块i包括在变异模板中(步骤1408的“是”路径),则过程1400进一步确定块i是否处于变异模板中的期望位置(步骤1410)。例如块i可能必须处于模板中的位置I处,但是可能出现在变异模板中的位置12处。
[0155]如果该块未在变异模板中的期望位置中(步骤1410的“否”路径),则过程1400从块在变异模板中的位置处提取块的内容并且将该内容放置在期望位置处(步骤1412)。过程1400继续到步骤1414。如果该块出现在变异模板中的期望位置(步骤1410的“是”路径),则过程1400继续到步骤1422。
[0156]例如在一个实施例中,模板构造应用可以不创建单独的模板数据结构而是修改变异模板的数据结构以将该变异模板变换成模板。在这样的实施例中,块i的内容被从块i在变异模板中的原始位置移动到变异模板中的期望位置。在另一实施例中,模板构造应用可以通过将各种块的数据从变异模板的数据结构复制到模板的数据结构来将模板构造为单独的数据结构。
[0157]返回到步骤1408,如果该块一±夹i—未包括在变异模板中(步骤1408的“否”路径),则过程1400确定在变异模板中是否存在可用于块i的未包括参考(步骤1416)。如果未包括参考可用(步骤1416的“是”路径),则过程1400使用该未包括参考从源接收块i(步骤1418)。如果未包括参考不可用于块i (步骤1416的“否”路径),则过程1400从已知位置接收块i的内容(步骤1420)。
[0158]从步骤1414继续,过程1400确定根据结构是否要放置更多块以重构模板(步骤1422)。如果要放置更多的块(步骤1422的“是”路径),则过程1400返回到步骤1406并且选择在结构中标识的另一个块,诸如块j。
[0159]如果根据结构没有更多块要放置(步骤1422的“否”路径),则过程1400输出模板(步骤1424)。过程1400随后结束。
[0160]参照图15,该图描绘根据一个示例性实施例的从预调配的变异模板重构模板的另一示例过程的流程图。可以在模板构造应用、诸如图8中的模板构造应用804中实施过程1500。
[0161]过程1500接收针对模板,例如模板X的请求(步骤1502)。过程1500确定针对模板X的清单是否与预调配的变异模板关联(步骤1504)。如果针对模板X的模板特定清单不与预调配的变异模板关联(步骤1504的“否”路径),则过程1500在标记为A的退出点退出并且经由标注为“A”的对应进入点进入另一过程,诸如过程1400。
[0162]如果针对模板X的模板特定清单结合预调配的变异模板可用(步骤1504的“是”路径),则过程1500选择与模板X对应的模板特定清单(步骤1506)。过程1500标识属于模板X的块(步骤1508)。例如过程1500可以使用模板特定清单或者模板X的其他已知结构来选择块。
[0163]过程1500确定该块是否包括在变异模板中(步骤1510)。如果该块包括在变异模板中(步骤1510的“是”路径),则过程1500诸如通过使用清单中的索引或者偏移信息来标识该块在变异模板中的位置(步骤1512)。过程1500确定该块是否在变异模板的期望位置中(步骤1511)。如果该块未在期望位置中(步骤1511的“否”路径),则过程1500诸如通过使用清单中的索引或者偏移信息来标识该块在变异模板中的位置(步骤1512)。如果该块在期望位置中(步骤1511的“是”路径),则过程1500继续到步骤1516。
[0164]如果该块未包括在变异模板中(步骤1510的“否”路径),则过程1500从外部源接收块(步骤1514)。例如过程1500可以使用来自清单的对该块的未包括参考或者使用块的另一已知源以获得块。
[0165]跟随步骤1512或者1514,过程1500将块的内容放置在模板X中的指定位置中(步骤1516)。例如在一个实施例中,过程1500可以修改变异模板的数据结构以创建模板X的数据结构。在这样的实施例中,块的内容被从块在变异模板中的原始位置移动到变异模板中的期望位置。在另一实施例中,可以通过将各种块的数据从变异模板的数据结构复制到模板X的数据结构来将模板X构造为单独的数据结构。
[0166]过程1500确定是否必须以这一方式组装模板X的更多块(步骤1518)。如果将组装模板X的更多块(步骤1518的“是”路径),则过程1500返回到步骤1508并且标识属于模板X的另一个块。如果不用组装模板X的更多块(步骤1518的“否”路径),则过程1500输出模板X (步骤1520)。过程1500随后结束。
[0167]附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0168]因此,示例性实施例提供一种用于使用预调配的变异模板的方法、系统和计算机程序产品。一个实施例使得能够向计算节点预调配可调配的模板的子集而无需完全预调配子集中的每个模板。一个实施例预调配变异模板以取代子集。变异模板包括跨越子集中的若干模板重复的那些块的单个副本,并且按照允许从变异模板高效重构模板的优先级顺序来包括块。与变异模板对应的清单指导模板构造应用从变异模板重构模板。可以从其他源,诸如通过数据网络从数据源获得从变异模板中省略的块。因此,一个实施例可以通过从变异模板完全或者部分地重构模板并且通过数据网络仅访问未包括的块来减少模板调配所产生的数据流量。
[0169]所属【技术领域】的技术人员知道,本发明的诸方面可以实现为系统、方法或计算机程序产品。因此,本发明的诸方面可以采用以下形式,即:可以是完全的硬件、也可以是完全的软件(包括固件、驻留软件、微代码等),还可以是硬件和软件结合的形式,本文一般称为“电路”、“模块”或“系统”。此外,本发明的诸方面还可以实现为在一个或多个计算机可读存储设备或计算机可读介质中的计算机程序产品的形式,该计算机可读存储设备或计算机可读介质中包含计算机可读的程序代码。
[0170]可以采用一个或多个计算机可读存储设备或计算机可读介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPR0M或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
[0171]计算机可读存储设备或计算机可读介质上实施的程序代码可以使用任何合适的介质进行传输,包括但不限于无线、有线、光纤线缆、RF等,或前述任何合适的组合。
[0172]可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言一诸如Java、Smalltalk、C++等,还包括常规的过程式程序设计语言一诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络一包括局域网(LAN)、广域网(WAN)或移动自组织网络(MANET)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
[0173]本文参照本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的诸方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给一个或多个通用计算机、专用计算机或其它可编程数据处理装置的一个或多个处理器,从而生产出一种机器,使得这些指令通过计算机或其他可编程数据处理装置的一个或多个处理器执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。
[0174]也可以把这些计算机程序指令存储在能弓I导一个或多个计算机、一个或多个其他可编程数据处理装置或一个或多个其他设备以特定方式工作的一个或多个计算机可读存储设备或计算机可读介质中,这样,存储在一个或多个计算机可读存储设备或计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令的制造品(manufacture)。
[0175]也可以把计算机程序指令加载到一个或多个计算机、一个或多个其他可编程数据处理装置、或一个或多个其他设备上,使得在该一个或多个计算机、一个或多个其他可编程数据处理装置或一个或多个其他设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在该一个或多个计算机、一个或多个其他可编程装置或一个或多个其他设备上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
[0176]这里所用术语仅用于描述具体实施例这样的目的而并非旨在于限制本发明。如这里所用,除非上下文另有明示,否则单数形式“一(个)”和“该(所述)”旨在于也包括复数形式。如这里所用,除非上下文另有明示,集合包括一个或者多个成员。还将理解,术语“包括”在使用于本说明书中时指定存在陈述的特征、整件、步骤、操作、单元和/或部件、但是未排除存在或者添加一个或者多个其他特征、整件、步骤、操作、单元、部件和/或其组合。
[0177]在所附权利要求中的所有装置或者步骤加上功能单元的对应结构、材料、动作和等效物旨在于包括如具体要求保护的用于与其他要求保护的单元组合执行功能的任何结构、材料或者动作。本发明的描述已经出于示例和描述的目的而加以呈现、但是未旨在于穷举本发明或者使本发明限于公开的形式。许多修改和变化将为本领域普通技术人员所清楚而未脱离本发明的范围和精神实质。选择和描述实施例以便最好地说明本发明的原理和实际应用并且使本领域其他普通技术人员能够针对具有如与设想的特定使用相适合的各种修改的各种实施例理解本发明。
【权利要求】
1.一种用于使用预调配的变异模板来创建虚拟机的方法,所述方法包括: 使用处理器和存储器来标识将用于创建所述虚拟机的模板,模板包括可用来在数据处理系统上创建所述虚拟机的数据; 选择所述变异模板中的数据块以用于从所述变异模板来重构所述模板,其中所述数据块被包括在所述变异模板中的、与所述变异模板关联的清单中所指定的位置处; 用所述数据块填充所述模板的数据结构,使得所述数据块占用所述模板中的预定位置,由此从所述变异模板来重构所述模板;以及 使用所述模板在所述数据处理系统上创建所述虚拟机。
2.根据权利要求1所述的方法,还包括: 标识将被包括在所述模板中以用于所述重构的第二数据块; 确定所述变异模板未包括所述第二数据块; 从源接收所述第二数据块;以及 用所述第二数据块填充所述模板的所述数据结构,使得所述第二数据块占用所述模板中的第二预定位置。
3.根据权利要求2所述的方法,还包括: 在所述清单中找出对所述源的参考;以及 使用所述参考来访问所述源并且接收所述第二数据块。
4.根据权利要求2所述的方法,其中所述源被已知用来提供所述第二数据块。
5.根据权利要求1所述的方法,还包括: 接收描述所述模板的结构的信息; 将所述数据块标识为所述模板的所述结构的一部分;以及 使用所述结构进一步标识所述模板中的用于所述数据块的所述位置。
6.根据权利要求1所述的方法,其中所述数据块在所述模板中的所述位置不同于在与所述变异模板关联的所述清单中所指定的所述数据块的所述位置。
7.根据权利要求1所述的方法,其中所述清单指定将被包括在所述模板中的多个数据块,所述多个数据块包括所述数据块,其中所述清单还指定所述模板中的用于所述数据块的第一位置,还包括: 使用所述清单来标识所述数据块在所述变异模板中的位置;以及 将所述数据块从所述变异模板中的所述位置移动到所述模板中的所述位置。
8.根据权利要求1所述的方法,还包括: 修改所述变异模板的数据结构以将所述变异模板的所述数据结构变换成所述模板的所述数据结构,并且其中所述移动是所述修改的一部分。
9.根据权利要求1所述的方法,还包括: 接收用于创建所述虚拟机的请求,其中所述标识所述模板响应于接收所述请求。
10.根据权利要求1所述的方法,其中所述清单对应于所述模板。
11.根据权利要求1所述的方法,其中所述清单对应于所述变异模板。
12.一种用于使用预调配的变异模板来创建虚拟机的系统,包括: 用于使用处理器和存储器来标识将用于创建所述虚拟机的模板的装置,模板包括可用来在数据处理系统上创建所述虚拟机的数据;用于选择所述变异模板中的数据块以用于从所述变异模板来重构所述模板的装置,其中所述数据块被包括在所述变异模板中的、与所述变异模板关联的清单中所指定的位置处; 用于用所述数据块填充所述模板的数据结构、使得所述数据块占用所述模板中的预定位置、由此从所述变异模板来重构所述模板的装置;以及 用于使用所述模板在所述数据处理系统上创建所述虚拟机的装置。
13.根据权利要求12所述的系统,还包括: 用于标识将被包括在所述模板中以用于所述重构的第二数据块的装置; 用于确定所述变异模板未包括所述第二数据块的装置; 用于从源接收所述第二数据块的装置;以及 用于用所述第二数据块填充所述模板的所述数据结构、使得所述第二数据块占用所述模板中的第二预定位置的装置。
14.根据权利要求13所述的系统,还包括: 用于在所述清单中找出对所述源的参考的装置;以及 用于使用所述参考来访问所述源并且接收所述第二数据块的装置。
15.根据权利要求13所述的系统,其中所述源被已知用于提供所述第二数据块。
16.根据权利要求12所述的系统,还包括: 用于接收描述所述模板的结构的`信息的装置; 用于将所述数据块标识为所述模板的所述结构的一部分的装置;以及 用于使用所述结构进一步标识所述模板中的用于所述数据块的所述位置的装置。
17.根据权利要求12所述的系统,其中所述数据块在所述模板中的所述位置不同于在与所述变异模板关联的所述清单中所指定的所述数据块的所述位置。
18.根据权利要求12所述的系统,其中所述清单指定将被包括在所述模板中的多个数据块,所述多个数据块包括所述数据块,其中所述清单还指定所述模板中的用于所述数据块的第一位置,还包括: 用于使用所述清单来标识所述数据块在所述变异模板中的位置的装置;以及 用于将所述数据块从所述变异模板中的所述位置移动到所述模板中的所述位置的装置。
19.根据权利要求12所述的系统,还包括: 用于修改所述变异模板的数据结构以将所述变异模板的所述数据结构变换成所述模板的所述数据结构的装置,并且其中所述移动是所述修改的一部分。
20.根据权利要求12所述的系统,还包括: 用于接收用于创建所述虚拟机的请求的装置,其中所述标识所述模板响应于接收所述请求。
21.根据权利要求12所述的系统,其中所述清单对应于所述模板。
22.根据权利要求12所述的系统,其中所述清单对应于所述变异模板。
【文档编号】G06F9/455GK103631635SQ201310351304
【公开日】2014年3月12日 申请日期:2013年8月13日 优先权日:2012年8月23日
【发明者】M·古普塔 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1