自动部署的信息技术(IT)系统和方法与流程

文档序号:23068027发布日期:2020-11-25 17:55阅读:168来源:国知局
自动部署的信息技术(IT)系统和方法与流程

相关专利申请的交叉引用和优先权要求

本专利申请要求2017年12月8日提交且名称为“automaticallydeployedinformationtechnology(it)systemandmethod”的美国临时专利申请62/596,355的优先权,所述专利申请的全部公开内容以引用的方式并入本文。

本专利申请还要求2018年7月6日提交且名称为“automaticallydeployedinformationtechnology(it)systemandmethod”的美国临时专利申请62/694,846的优先权,所述专利申请的全部公开内容以引用的方式并入本文。



背景技术:

在近几十年来,对计算的需求、使用和需要已飞速增长。随之而来的对更大存储、速度、计算能力、应用、可访问性的需求已导致了迅速变化的计算领域,从而为各种类型和大小的实体提供工具。因此,公共虚拟计算和云计算系统的使用已被开发来为大量用户和多种类型的用户提供更好的计算资源。这种指数式的发展可能会一直继续下去。同时,更大的故障和安全风险已使基础结构设置、管理、改变管理、更新变得更为复杂和昂贵。可扩展性、或随着时间的流逝而发展系统也已成为信息技术领域中的主要挑战。

可能很难诊断和解决大多数it系统中的问题,其中许多问题涉及性能和安全。对被允许用来设置、配置和部署系统的时间和资源的约束可能会引起错误并且导致将来的it问题。随着时间的推移,许多不同的管理员可能会参与改变、修补或更新包括用户、应用程序、服务、安全、软件和硬件的it系统。通常,配置和改变的文件记录和历史可能是不足的或者会丢失,从而使得在稍后的时间很难理解特定系统已经被如何配置并且如何工作。这可能会使将来的改变或故障诊断变得困难。当出现问题或故障时,可能很难复原和重现it配置和设定。此外,系统管理员可能很容易就会犯错,例如出现不正确的命令或其他错误,这进而可能会使计算机以及web数据库和服务瘫痪。另外,虽然增加的安全漏洞风险已经司空见惯,但是为避免安全漏洞而进行的改变、更新、补丁修补可能会引起不期望的停机时间。

一旦关键基础结构到位、工作并进行活动,成本或风险看起来往往可能就会超过改变系统的益处。对活动it系统或环境进行改变的过程中涉及的问题可能会给依赖于这些系统的用户或实体带来大量以及有时灾难性的问题。起码,花费一定量时间来进行故障诊断并修复在改变管理期间出现的故障或问题可能需要大量时间、人员和金钱资源。在对活动环境进行改变时潜在地产生的技术问题可能会具有级联效应,并且仅通过撤销所进行的改变可能无法解决所述技术问题。如果在改变管理期间存在故障,则这些难题中的许多难题都会导致无法迅速地重新构建系统。

另外,在it系统内的裸金属云节点或资源可能容易受到安全难题的影响,受到损害或被流氓用户访问。黑客、攻击者或流氓用户可能会从所述节点或资源转移出来访问或侵入耦合到所述节点的it系统或网络的任何其他部分。it系统的裸金属云节点或控制器还可能会因为连接到应用程序网络的资源而受到攻击,所述资源可能会使系统暴露于安全威胁或以其他方式损害系统。根据本文公开的各种示例实施方案,it系统可被配置为提高与互联网或应用程序网络对接,而不管是否连接到外部网络的裸金属云节点或资源的安全性。



技术实现要素:

根据示例实施方案,it系统包括裸金属云节点或物理资源。当开启、设置、管理或使用裸金属云节点或物理资源时,如果它们可能会连接到节点可能正由其他人或顾客使用的网络,则可省略带内管理,能够从控制器切换所述带内管理,能够将所述带内管理与所述控制器断开或者将所述带内管理从所述控制器滤除。

包括虚拟机或超级管理系统的物理资源也可能会受到安全难题的影响,受到损害或被流氓用户访问,其中超级管理系统可用于转移到作为共享资源的另一个超级管理系统。攻击者可能会摆脱虚拟机并且可能会通过控制器对管理和/或管理(administration)系统进行网络访问。根据本文公开的各种示例实施方案,it系统可被配置为提高安全性,其中在云平台上包括虚拟资源的一个或多个物理资源通过带内管理连接与控制器断开,能够与所述控制器断开,从所述控制器滤除,能够从所述控制器滤除或不连接到所述控制器。

根据示例实施方案,it系统的物理资源可包括一个或多个虚拟机或超级管理系统,其中可省略在控制器与物理资源之间的带内管理连接,将所述带内管理连接与资源断开,能够将所述带内管理连接与所述资源断开,或将所述带内管理连接从所述资源滤除/能够将所述带内管理连接从所述资源滤除。

附图说明

图1是根据一个示例实施方案的系统的示意图。

图2a是用于图1的系统的示例控制器的示意图。

图2b示出了一组示例存储扩展规则的操作的示例流程。

图2c和图2d示出了用于执行图2b中的步骤210.1和210.2的替代实例。

图2e示出了示例模板。

图2f示出了控制器逻辑关于处理模板的示例过程流。

图2g和图2h示出了用于图2f的步骤205.11、205.12和205.13的示例过程流。

图2i示出了另一个示例模板。

图2j示出了控制器逻辑关于处理模板的另一个示例过程流。

图2k示出了用于管理服务依赖项的示例过程流。

图2l是根据一个示例实施方案的来源于模板的示例镜像的示意图。

图2m示出了一组示例系统规则。

图2n示出了由控制器逻辑处理图2m的系统规则的示例过程流。

图2o示出了从文件系统blob或其他文件组配置存储资源的示例过程流。

图3a是图2a的添加有计算资源的控制器的示意图。

图3b是根据一个示例实施方案的来源于模板的示例镜像的示意图。

图3c示出了用于将诸如计算资源、存储资源和/或联网资源的资源添加到系统的示例过程流。

图4a是图2a的添加有存储资源的控制器的示意图。

图4b是根据一个示例实施方案的来源于模板的示例镜像的示意图。

图5a是图2a的添加有jbod和存储资源的控制器的示意图。

图5b示出了用于将存储资源和用于存储资源的直接附连存储添加到系统的示例过程流。

图6a是图2a的添加有联网资源的控制器的示意图。

图6b是根据一个示例实施方案的来源于模板的示例镜像的示意图。

图7a是根据一个示例实施方案的呈示例物理部署的系统的示意图。

图7b示出了用于将资源添加到it系统的示例过程。

图7c和图7d示出了用于在多个计算资源、多个服务器、多个虚拟机上和/或在多个站点中部署应用程序的示例过程流。

图8a是根据一个示例实施方案的呈示例部署的系统的示意图。

图8b示出了用于从单节点系统扩展到多节点系统的示例过程流。

图8c示出了用于将存储资源迁移到新的物理存储资源的示例过程流。

图8d示出了用于将多租户系统的单个节点上的虚拟机、容器和/或进程迁移到可能具有用于计算和存储的单独的硬件的多节点系统的示例过程流。

图8e示出了用于在系统中从单个节点扩展到多个节点的另一个示例过程流。

图9a是根据一个示例实施方案的呈示例物理部署的系统的示意图。

图9b是根据一个示例实施方案的来源于模板的示例镜像的示意图。

图9c示出了从nt包安装应用程序的实例。

图9d是根据一个示例实施方案的呈示例部署的系统的示意图。

图9e示出了用于将虚拟计算资源主机添加到it系统的示例过程流。

图10是根据一个示例实施方案的呈示例部署的系统的示意图。

图11a示出了一个示例实施方案的系统和方法。

图11b示出了一个示例实施方案的系统和方法。

图12示出了一个示例实施方案的系统和方法。

图13a是根据一个示例实施方案的系统的示意图。

图13b是根据一个示例实施方案的系统的另一个示意图。

图13c至图13e示出了用于根据一个示例实施方案的系统的示例过程流。

图14a示出了主控制器已将控制器部署在不同系统上的示例系统。

图14b和图14c示出了展示利用主控制器供给控制器的可能的步骤的示例流程。

图15a示出了主控制器产生环境的示例系统。

图15b示出了控制器设置一个环境的示例过程流。

图15c示出了控制器设置多个环境的示例过程流。

图16a示出了控制器作为主控制器操作来设置一个或多个控制器的示例实施方案。

图16b至图16d示出了环境可被配置为对另一个环境进行写入的示例系统。

图16e示出了用户可购买由控制器产生的新环境的示例系统。

图16f示出了用户界面被提供用于对接到由控制器产生的环境中的示例系统。

图17a至图18b示出了关于新环境的改变管理任务的实例。

具体实施方式

为了针对本领域如上所述的需求提供技术解决方案,诸位发明人公开了与用于信息技术的系统和方法相关的各种创造性实施方案,所述系统和方法提供自动化it系统设置、配置、维护、测试、改变管理和/或升级。例如,诸位发明人公开了一种控制器,所述控制器被配置为基于多个系统规则、计算机系统的系统状态和多个模板而自动地管理计算机系统。作为另一个实例,诸位发明人公开了一种控制器,所述控制器被配置为基于多个系统规则、计算机系统的系统状态和多个模板而自动地管理计算机系统的物理基础结构。可由控制器执行的自动化管理的实例可包括:远程或本地地访问并改变可能运行应用程序或服务的计算机上的设定或其他信息;构建it系统;改变it系统;在it系统中构建单独的栈;创建服务或应用程序;加载服务或应用程序;配置服务或应用程序;迁移服务或应用程序;改变服务或应用程序;移除服务或应用程序;将栈克隆到在不同网络上的另一个栈上;创建、添加、移除、设置、配置、重新配置和/或改变资源或系统部件;自动地添加、移除和/或恢复资源、服务、应用程序、it系统和/或it栈;配置应用程序、服务、栈和/或其他it系统之间的交互;和/或监视it系统部件的健康。在示例实施方案中,控制器可体现为可以是远程或本地的物理或虚拟计算资源。可采用的控制器的附加实例包括但不限于以下各项中的一者或任何组合:由其他控制器和/或服务部署的进程、虚拟机、容器、远程计算资源、应用程序。控制器可跨多个节点和/或资源分布,并且可在其他位置或网络中。

it基础结构最常由离散的硬件和软件部件构成。所使用的硬件部件通常包括服务器、机架、电源设备、互连装置、显示监视器和其他通信设备。先选择后互连这些离散的部件的方法和技术是高度复杂的,因为极大量的任选配置会随着不同程度的效率、成本效益、性能和安全而变化。善于连接这些基础结构部件的单独的技术人员/工程师的雇佣和训练费用很昂贵。此外,硬件和软件的极大量的可能的迭代在维护和更新硬件和软件中会产生复杂性。当最初安装it基础结构的个人和/或工程公司不方便执行更新时,这会提出额外的挑战。诸如操作系统的软件部件一般会被设计成对广泛范围的硬件起作用,或者完全专用于特定部件。在大多数情况下会制定并执行复杂的计划或蓝图。改变、发展、扩展和其他挑战都需要更新复杂的计划。

虽然一些it用户从产业不断发展的供应商购买云计算服务,但是这并不能解决设置基础结构的问题和挑战,而是将所述问题和挑战从it用户转移到了云服务提供商。另外,大型云服务提供商已经以可能牺牲灵活性、用户化、可扩展性以及对新的硬件和软件技术的快速吸收的方式解决了设置基础结构的挑战和问题。此外,云计算服务并未提供预设裸金属设置、配置、部署和更新,或允许向、从裸金属和虚拟it基础结构部件转变,或者在所述裸金属与所述虚拟it基础结构部件之间转变。云计算服务的这些和其他限制可能会导致大量计算、存储和联网低效问题。例如,可能由云服务或者在利用云服务的应用程序或服务中呈现了计算和联网中的速度或延迟低效问题。

一个示例实施方案的系统和方法提供了一种新颖而独特的it基础结构部署、使用和管理。根据一个示例实施方案,资源选择、安装、互连、管理和更新的复杂性根植于核心控制器系统以及其参数文件、模板、规则和it系统状态。所述系统包括一组自组装规则和操作规则,所述自组装规则和操作规则被配置为使得部件进行自组装而不是需要技术人员来组装、连接和管理。另外,一个示例实施方案的系统和方法允许使用自组装规则来实现更大的用户化、可扩展性和灵活性,而不需要当前的典型的外部规划文档。所述系统和方法还允许有效的资源使用和再利用。

提供了改善无论整体或部分是物理还是虚拟的当前it系统中的许多难题和问题的系统和方法。一个示例实施方案的系统和方法允许实现灵活性,减少可变性和人为失误,并且提供有可能提高系统安全性的结构。

虽然对于当前it系统中的一个或多个问题,可能单独存在一些解决方案,但是此类解决方案并不像本文描述的示例实施方案所解决的那样综合解决大量问题。另外,此类现有的解决方案可能会解决特定问题,同时会加重其他问题。

所解决的当前挑战中一些包括但不限于与以下各项相关的难题:设置、配置、基础结构部署、资产跟踪、安全、应用程序部署、服务部署、关于维护和合规性的文档记录、维护、扩展、资源分配、资源管理、负载均衡、软件故障、更新/修补软件和安全、测试、复原it系统、改变管理以及硬件更新。

如本文所使用的it系统可包括但不限于:服务器、虚拟和物理主机、数据库和数据库应用,所述数据库应用包括但不限于:it服务、商业计算服务、计算机应用、面向顾客的应用、web应用、移动应用、后端、案号管理、顾客跟踪、票务、商业工具、桌面管理工具、计费、电子邮件、文档记录、合规性、数据存储、备份和/或网络管理。

用户在设置it系统之前可能面临的一个问题是预测基础结构需求。用户可能不知道最初或在发展或改变期间随着时间的推移将需要多少存储、计算能力或其他需求。根据一个示例实施方案,it系统和基础结构允许的灵活性在于:如果系统需要改变,则一个示例实施方案的自部署基础结构(物理和/或虚拟)可用于在稍后的时间自动地进行添加、移除、或从基础结构内部重新分配。因此,在设置系统时提出的预测将来需求的挑战通过以下方式来解决:提供使用系统的全局规则、模板和系统状态对所述系统进行添加的能力,并且跟踪此类规则、模板和系统状态的改变。

其他挑战还可能与以下各项相关:正确的配置、配置的一致性、互操作性和/或相互依赖性,这可包括例如因随着时间的推移对已配置的系统元件或其配置的改变所致的将来的不兼容性。例如,当最初设置it系统时,可能会存在缺失的元件或配置一些元件可能会发生故障。另外,例如,当设置元件或基础结构部件的迭代时,在迭代之间可能会缺乏一致性。当进行对系统的改变时,可能需要改进配置。在存在将来基础结构改变的情况下,在最优配置与灵活性之间呈现了艰难的选择。根据一个示例实施方案,当首次部署系统时,使用全局系统规则将配置从模板自部署到基础结构部件,因此配置是一致的、可重复的或可预测的,从而允许最优配置。这种初始系统部署可在物理部件上完成,同时可添加或修改后续部件,并且所述后续部件可为或不为物理的。另外,这种初始系统部署可在物理部件上完成,同时可从物理结构克隆后续环境,并且所述后续环境可为或不为物理的。这允许系统配置是最优的,同时准许最小破坏性的将来改变。

在部署阶段中,通常存在裸金属和/或软件定义基础结构的互操作性的挑战。还可能会存在软件与其他应用程序、工具或基础结构的互操作性的挑战。这些挑战可包括但不限于因所部署产品来源于不同的供应商所致的挑战。诸位发明人公开了一种不管是裸金属、虚拟结构还是其任何组合都可提供基础结构的互操作性的it系统。因此,互操作性(部件一起工作的能力)可被构建到所公开的基础结构部署中,其中基础结构被自动地配置和部署。例如,不同的应用程序可彼此依赖,并且它们可存在于单独的主机上。为了允许此类应用程序彼此交互,如本文所述的控制器逻辑、模板、系统状态和系统规则包含用于配置应用程序的相互依赖性并跟踪相互依赖性的信息和配置指令。因此,本文论述的基础结构特征提供了对每个应用程序或服务如何彼此交流进行管理的方式。作为实例,确保电子邮件服务与认证服务正确地通信;和/或确保群件服务与电子邮件服务正确地通信。更进一步地,这种管理可深入到基础结构层面以准许跟踪例如计算资源如何与存储资源通信。否则,it系统的复杂性会以o(nn)方式上升。

根据所公开的,由于控制器能够基于全局系统规则、模板和it系统状态/系统自我认知而进行部署,因此资源的自动部署不需要预先配置操作系统软件。根据一个示例实施方案,用户或it专业人员可能不需要知道资源的添加、分配或重新分配是否会一起工作来确保互操作性。根据一个示例实施方案的附加资源可自动地添加到网络。

使用应用程序需要许多不同的资源,通常包括计算、存储和联网资源。它还需要资源和系统部件的互操作性,包括关于什么已到位并运行,以及与其他应用程序的互操作性的知识。应用程序可能需要连接到其他服务并获取配置文件,并且确保每个部件能正确地一起工作。应用程序配置因此可能是时间和资源密集的。如果与其他应用程序存在互操作性的问题,则应用程序配置可能会给基础结构的其余部分带来级联效应。这可能会导致运行中断或漏洞。诸位发明人公开了用于解决这些难题的自动化应用程序部署。因此,如诸位发明人所公开,应用程序可使用对系统上正在进行什么的了解和智能配置通过从it系统状态、全局系统规则和模板进行读取而进行自部署。另外,根据一个示例实施方案,可使用如本文所述的改变管理特征执行对配置的预部署测试。

由示例实施方案解决的另一个难题涉及可能出现的与中介配置相关的问题,其中期望切换到不同的供应商或其他工具。根据一个示例实施方案的一个方面,在控制器的规则和模板与来自特定供应商的应用程序模板之间提供模板转换。这允许所述系统自动地改变软件或其他工具的供应商。

许多安全难题都是由错误配置、修补失败以及在部署之前无法测试修补引起的。往往会在设置的配置阶段产生安全难题。例如,错误配置可能会使敏感的应用程序暴露于互联网或允许来自电子服务器的伪造的电子邮件。诸位发明人公开了一种系统设置,所述系统设置自动地进行配置,从而防止攻击者,避免不必要地暴露于攻击者并且向安全工程师和应用程序安全架构师提供系统的更多知识。自动化减少了因人为失误或错误配置所致的安全缺陷。此外,所公开的基础结构提供了服务之间的自省,并且可允许基于规则的访问并且将服务之间的通信仅限制于实际上需要的那些通信。诸位发明人公开了一种例如,如关于改变管理所论述在部署之前有能力安全地测试补丁的系统和方法。

文档记录往往是it管理的有问题的领域。在设置和配置期间,主要目标通常可能是让部件一起工作。通常,这涉及故障诊断和试错过程,其中有时,很难知道究竟是什么让系统工作。虽然如所执行的确切命令通常有记录,但是可能已实现工作系统的故障诊断或试错过程往往没有很好的记录或甚至完全没有记录。文档记录的问题或不足可能会产生审计跟踪和审计方面的问题。出现的文档记录问题可能会在显示合规性方面产生问题。通常,当构建系统或其部件时,合规性难题可能不是众多周知的。只有在设置和配置it系统之后才可能会知道适用的合规性判定。因此,文档记录对于审计和合规性来说是至关重要的。诸位发明人公开了一种系统,所述系统包括全局系统规则数据库、模板和it系统状态数据库,这提供了自动记录的设置和配置。发生的任何配置都被记录在数据库中。根据一个示例实施方案,自动记录的配置提供审计跟踪并且可用于显示合规性。库存管理可使用自动记录和跟踪的信息。

由it系统设置、配置和操作引起的另一个挑战涉及硬件和软件的库存管理。例如,通常重要的是要知道存在多少服务器,所述服务器是否启动并仍在运行,所述服务器的能力是什么,每个服务器在哪个机架中,哪些电源连接到哪些服务器,每个服务器正在使用什么网卡和什么网络端口,部件在哪个it系统中操作以及许多其他重要的注意事项。除了库存信息之外,还应有效地管理用于库存管理的密码和其他敏感信息。尤其是在较大的it系统、数据中心或者设备频繁地改变的数据中心中,这种信息的收集和保留是一项耗时的任务,它通常被手动地或使用各种软件工具来管理。对安全密码的合规性保护是一个很大的风险因素,它在确保安全的计算环境中可能是个重大难题。诸位发明人公开了一种it系统,其中对所有服务器和其他部件的库存和操作状况的收集和维护被自动地更新、存储和保护作为控制器的it系统状态、全局系统规则、模板和控制器逻辑的一部分。

除了it系统的设置和配置的问题之外,诸位发明人还公开了一种还可解决it系统的维护中出现的问题和难题的it系统。在数据中心在存在硬件故障,例如电源故障、存储器故障、网络故障、网卡故障和/或cpu故障以及其他故障的情况下连续运行时会出现许多问题。当在硬件故障期间迁移主机时会出现其他故障。因此,诸位发明人公开了动态资源迁移,例如当主机宕机时将资源从一个资源提供商迁移到另一个资源提供商。在这种情形下,根据一个示例实施方案,it系统可迁移到其他服务器、节点或资源、或者其他it系统。控制器可报告系统的状况。数据的副本是在具有已知和自动设置的配置的另一个主机上。如果检测到硬件故障,则可在自动地检测到故障之后自动地迁移可能一直在提供所述硬件的任何资源。

许多it系统的一个重大难题是可扩展性。不断发展的企业或其他组织在其发展并且其需求变化时通常会对它们的it系统进行添加或重新配置。当现有的it系统需要更多资源,例如添加硬驱动空间、存储空间、cpu处理、更多网络基础结构;更多端点、更多客户端和/或更多安全措施时会出现问题。当需要不同的服务和应用程序或者对基础结构的改变时,在配置、设置和部署中也会出现问题。根据一个示例实施方案,可自动地扩展数据中心。节点或资源可动态地且自动地添加到资源池或从所述资源池移除。资源池中添加和移除的资源可自动地进行分配或重新分配。服务可被迅速地供给和移动到新主机。控制器可动态地检测并将更多资源添加到资源池,并且知道在何处分配/重新分配资源。根据一个示例实施方案的系统可从单节点it系统扩展到跨多个数据中心或it系统的需要众多物理和/或虚拟节点或资源的扩展的系统。

诸位发明人公开了一种实现灵活的资源分配和管理的系统。所述系统包括可能在资源池中并可自动地分配的计算资源、存储资源和联网资源。控制器可识别出网络上的新节点或主机,然后对所述新节点或主机进行配置,使得它们可成为资源池的一部分。例如,无论何时插入新服务器,控制器都会将所述新服务器配置为资源池的一部分,并且可将所述新服务器添加到资源并可以开始自动地使用所述新服务器。节点或资源可由控制器检测并且添加到不同的池。可例如通过api请求向控制器发出资源请求。控制器之后可根据规则从池部署或分配所需的资源。这允许控制器和/或应用程序通过控制器基于所述请求的需求而均衡负载并且动态地分发资源。

负载均衡的实例包括但不限于:当发生硬件或软件故障时部署新资源;响应于增加的用户负载而部署同一个应用程序的一个或多个实例;以及响应于存储、计算或联网需求的失衡而部署同一个应用程序的一个或多个实例。

对活动it系统或环境进行改变的过程中涉及的问题可能会给依赖于这些系统来持续地运作的用户或实体带来大量以及有时灾难性的问题。这些运行中断不仅表示系统使用的潜在损失,而且表示数据损失,因修复所述问题所需的大量时间、人员和资金资源所致的经济损失。所述问题可能会因为在配置的文档记录存在错误或缺乏对系统的了解的情况下难以重新构建系统而加剧。由于这个问题,许多it系统用户不愿意修补it资源以消除已知的安全风险。所述资源因此更容易受到安全漏洞的攻击。

it系统的维护中出现的许多问题都与因其中可能需要配置的改变管理或控制所致的软件故障相关。可能会发生此类故障的情形包括但不限于:升级到新的软件版本;迁移到一件不同的软件;密码或认证管理改变;在服务之间或在服务的不同提供商之间的切换。

手动配置和维护的基础结构通常很难重新创建。重新创建基础结构出于若干原因可能是重要的,所述若干原因包括但不限于:撤销有问题的改变、断电或其他灾难复原。手动配置的系统中的问题很难诊断。手动配置和维护的基础结构很难重新制作。此外,系统管理员可能很容易就会犯错,例如出现不正确的命令,进而已经知道的是这些会使计算机系统瘫痪。

对活动it系统或环境进行改变可能会给依赖于这些系统来持续地运作的用户或实体带来大量以及有时灾难性的问题。这些运行中断不仅表示系统使用的潜在损失,而且此类运行中断还可能会引起数据损失,以及因修复所述问题所需的大量时间、人员和资金资源所致的经济损失。所述问题可能会因为在配置的文档记录存在错误或缺乏对系统的了解的情况下难以重新构建系统而加剧。另外,在许多情况下,在发生重大或主要改变之后,很难将系统恢复到先前的状态。

此外,当对活动环境进行改变时潜在产生的技术问题可能会具有级联效应。这些级联效应可能会使退回改变前状态变得具有挑战性并且有时变得不可能。因此,即使由于已实现的改变出现问题而需要往回恢复改变时,系统的状态也已经被改变。最近已有人指出,撤销基础结构和系统管理错误以及对生产环境的错误改变是一个尚未解决的问题。另外,已经知道在部署到活动环境之前测试对系统的改变是有问题的。

因此,诸位发明人公开了被配置为将对活动系统的改变恢复回到改变前状态的系统和方法的多个示例实施方案。另外,诸位发明人公开(提供)了一种系统和方法,所述系统和方法被配置为实现对经受实时改变的系统或环境的状态的实质性恢复,这可防止或改善上文描述的一个或多个问题。

根据一个示例实施方案的一个变型,it系统具有对全局系统规则、模板和it系统状态的完整的系统知识。基础结构可使用完整的系统知识来克隆。系统或系统环境可被克隆为软件定义基础结构或环境。包括在使用中的易失性数据库的系统环境(被称为生产环境)可被写入到非易失性只读数据库中以用作开发和测试过程中的开发环境。可在开发环境中进行所需的改变并且对所述所需的改变进行测试。用户或控制器逻辑可对全局规则进行改变来创建新版本。可跟踪规则的版本。根据一个示例实施方案的另一个方面,之后可自动地实现新开发的环境。也可维护先前的生产环境或使所述先前的生产环境处于全功能状态,因此对早先状态的生产环境的修正是可能的,而不会丢失数据。之后可利用新的规范、规则和模板启动开发环境,并且将数据库或系统与生产数据库同步,并可将所述数据库或系统切换到可写入数据库。然后可将原始生产数据库切换为只读数据库,如果需要复原,则所述系统可恢复到所述只读数据库。

关于升级或修补软件,如果检测到服务需要升级或修补,则可部署新主机。在由于升级或修补而存在故障的情况下,可在如上所述可能进行改变恢复时部署新服务。

硬件升级在许多情形下,尤其是在最新硬件必不可少的情况下都是很重要的。这种类型情形的实例发生于高频率交易行业中,其中具有毫秒速度优势的it系统可使得用户能够实现出众的交易成果和利润。特别地,在确保与当前基础结构的互操作性的过程中会出现问题,因此新硬件将知道如何与协议通信并且与现有的基础结构一起工作。除了确保部件的互操作性之外,所述部件还将需要与现有的设置进行集成。

参考图1,示出了一个示例实施方案的it系统100。系统100可以是一种或多种类型的it系统,包括但不限于本文描述的那些系统。

用户界面(ui)110被示出为通过可能驻留或不驻留在独立的物理或虚拟服务器上的应用程序编程接口(api)应用程序120耦合到控制器200。控制器200可部署在一个或多个处理器和一个或多个存储器上以实现本文论述的控制操作中的任一者。用于供一个或多个处理器执行来实施此类控制操作的指令可驻留在诸如处理器存储器的非暂态计算机可读存储介质上。api120可包括可能是冗余的和/或并行操作的一个或多个api应用程序。api应用程序120接收请求来配置系统资源,解析请求并且将所述请求传递到控制器200。api应用程序120从控制器接收一个或多个响应,解析一个或多个响应并且将所述一个或多个响应传递到ui(或应用程序)110。可选地或另外地,应用程序或服务可与api应用程序120通信。控制器200耦合到一个或多个计算资源300、一个或多个存储资源400和一个或多个联网资源500。资源300、400、500可驻留或不驻留在单个节点上。资源300、400、500中的一者或多者可以是虚拟的。资源300、400、500可驻留或不驻留在多个节点上或以各种组合驻留在多个节点上。物理装置可包括资源类型中的一者或多者或者每一者,所述资源类型包括但不限于计算资源300、存储资源400和联网资源500。资源300、400、500还可包括无论是否处于不同物理位置,以及无论是否是虚拟的资源池。裸金属计算资源也可用于实现虚拟或容器计算资源的使用。

除了节点的已知定义之外,如本文所使用的节点可以是连接到一个或多个网络的任何系统、装置或资源或者在独立装置或网络连接装置上执行功能的其他功能单元。节点还可包括但不限于:例如服务器、在物理或虚拟主机上的服务/应用程序/多种服务、虚拟服务器和/或在多租户服务器上或在容器内部运行的多种或单一服务。

控制器200可包括也可能是冗余的和/或并行操作的一个或多个物理或虚拟控制器服务器。控制器可在用作计算主机的物理或虚拟主机上运行。作为一个实例,控制器可包括在某一主机上运行的控制器,所述主机例如由于其有权访问敏感资源而另外用于其他目的。控制器从api应用程序120接收请求,解析请求并且对其他资源作出适当的任务分配并对所述其他资源进行指示;监视资源并且从所述资源接收信息;维护系统的状态和改变历史;并且可与it系统中的其他控制器通信。控制器也可包含api应用程序120。

如本文所定义的计算资源可包括真实或虚拟的单个计算节点或者具有一个或多个计算节点的资源池。计算资源或计算节点可包括可托管一种或多种服务或者运行一个或多个应用程序的一个或多个物理或虚拟机或者容器主机。计算资源还可以是在被设计用于多个目的的硬件上,所述多个目的包括但不限于:计算、存储、高速缓存、联网、专业化计算,所述专业化计算包括但不限于:gpu、asic、协处理器、cpu、fpga和其他专业化计算方法。可向此类装置添加pci快速开关或类似装置,并且可以此方式对所述装置进行动态添加。计算资源或计算节点可包括或可运行包含运行服务或应用程序的多个不同的虚拟机,或者可以是虚拟计算资源的一个或多个超级管理系统或容器主机。虽然计算资源的重点可能是在提供计算功能上面,但是它还可包括数据存储和/或联网能力。

如本文所定义的存储资源可包括存储节点或存储资源池。存储资源可包括任何数据存储介质,例如快速、慢速、混合、高速缓存存储介质和/或ram。存储资源可包括可直接附连或不直接附连到其他存储资源的一种或多种类型的网络、机器、装置、节点或其任何组合。根据一个示例实施方案的多个方面,存储资源可以是可以是裸金属或虚拟资源,或者其组合。虽然存储资源的重点可能是在提供存储功能上面,但是它还可包括计算和/或联网能力。

一个或多个联网资源500可包括单个联网资源、多个联网资源或联网资源池。一个或多个联网资源可包括一个或多个物理或虚拟装置、一个或多个工具、交换机、路由器或者在系统资源之间的其他互连器,或用于管理联网的应用程序。此类系统资源可以是物理或虚拟的,并且可包括计算资源、存储资源或其他联网资源。联网资源可提供在外部网络与应用程序网络之间的连接并且可托管核心网络服务,包括但不限于:dns、dhcp、子网管理、第三层路由选择、nat和其他服务。这些服务中的一些服务可部署在物理或虚拟机上的计算资源、存储资源或联网资源上。联网资源可利用一个或多个构架或者协议,包括但不限于:无限带宽、以太网、roce、光纤通道和/或omnipath,可包含在多个构架之间的互连器。联网资源可具有或不具有sdn能力。控制器200可能能够使用sdn的vlan或类似物来直接更改联网资源300,以配置it系统的拓扑结构。虽然联网资源的重点可能是在提供联网功能上面,但是它还可包括计算和/或存储能力。

如本文所使用的应用程序网络表示用于连接或耦合应用程序、资源、服务和/或其他网络,或者用于将用户和/或客户端耦合到应用程序、资源和/或服务的联网资源,或其任何组合。应用程序网络可包括供服务器使用来与其他应用程序服务器(物理或虚拟)通信并且与客户端通信的网络。应用程序网络可与系统100外部的机器或网络通信。例如,应用程序网络可将web前端连接到数据库。用户可通过互联网或可由或不由控制器管理的另一个网络连接到web应用程序。

根据一个示例实施方案,计算资源300、存储资源400和联网资源500各自可由控制器200进行自动添加、移除、设置、分配、重新分配、配置、重新配置和/或部署。根据一个示例实施方案,附加资源可被添加到资源池。

虽然示出了用户界面110,诸如webui或者用户105可利用来进行访问并且与所述系统交互的其他用户界面,但是可选地或此外,应用程序也可通过一个或多个api应用程序120或以其他方式与控制器200通信或交互。例如,用户105或应用程序可发送请求,包括但不限于:构建it系统;在it系统中构建单独的栈;创建服务或应用程序;迁移服务或应用程序;改变服务或应用程序;移除服务或应用程序;将栈克隆到在不同网络上的另一个栈上;创建、添加、移除、设置或配置、重新配置资源或系统部件。

图1的系统100可包括具有接至可能是物理或虚拟的,或其任何组合的各种元件、部件或资源的连接件或其他通信接口的服务器。根据一个变型,图1所示的系统100可包括具有连接件的裸金属服务器。

如本文更详细所描述,控制器200可被配置为驱动资源或部件,自动地设置、配置和/或控制资源的启动,添加资源,分配资源,管理资源并且更新可用资源。驱动过程可开始于驱动控制器,使得启动装置的顺序可以是一致的,而不是取决于用户驱动装置。所述过程可能还涉及对已驱动的资源的检测。

参考图2a至图10,示出了控制器200、控制器逻辑205、全局系统规则数据库210、it系统状态220和模板230。

系统100包括全局系统规则210。全局系统规则210尤其可声明设置、配置、启动、分配和管理可包括计算、存储和联网的资源的规则。全局系统规则210包括对系统100处于正确或所需的状态的最低要求。所述要求可包括预期要完成的it任务,以及可预测地构建所需的系统所需的可更新的预期硬件列表。可更新的预期硬件列表可允许控制器验证所需的资源(从起动规则或使用模板开始,例如在起动规则或使用模板之前)是可用的。全局规则可包括各种任务所需的操作列表以及与操作和任务的排序相关的对应指令。例如,所述规则可指定以下各项的顺序:驱动部件;启动资源、应用程序和服务;依赖项;在开始不同任务,例如加载、配置、起动、重新加载应用程序或更新硬件时的顺序。规则210还可包括以下各项中的一者或多者:例如应用程序和服务所需的资源分配列表;可使用的模板列表;待加载的应用程序以及如何配置的列表;待加载的服务以及如何配置的列表;应用程序网络以及哪个应用程序利用哪个网络运行的列表;特定于不同应用程序的配置变量和用户特定应用程序变量的列表;预期状态,所述预期状态允许控制器检查系统状态以验证所述状态与预期一样并且每个指令的结果与预期一样;和/或版本列表,所述版本列表包括可允许跟踪对规则的改变并且在不同情况下有能力测试或恢复为不同规则的规则改变列表(例如,快照)。控制器200可被配置为将全局系统规则210应用于在物理资源上的it系统100。控制器200可被配置为将全局系统规则210应用于在虚拟资源上的it系统100。控制器200可被配置为将全局系统规则210应用于在物理资源和虚拟资源的组合资源上的it系统100。

图2m示出了可采用全局系统规则的形式的一组示例系统规则210。由图2m所示的所述一组示例系统规则210可加载到控制器200中或通过查询系统状态来获得(参见210.1)。在图2m的实例中,系统规则210包含可采用配置例程210.2的形式的一组指令,并且还包含用于创建和/或重新创建it系统或环境的数据210.3。系统规则210内的配置规则可能会阐明如何经由所需的模板列表210.7定位模板230(其中模板230可驻留在文件系统、盘、存储资源中或者可位于系统规则内部)。控制器逻辑205也可在处理模板230之前定位所述模板并且确保所述模板在启用系统规则210之前就已存在。系统规则210可包含系统规则子集210.15,并且这些子集210.15可作为配置例程210.2的一部分执行。

此外,子系统规则210.15可被用作例如一种工具来构建具有集成it应用程序的系统(然后利用系统规则执行例程210.16进行处理,并且之后更新反映出210.15的添加的系统状态和当前配置规则)。子系统规则210.15也可位于其他位置并且通过用户交互加载到系统状态220中。例如,你还可将子系统规则210.15当作剧本,并且可能能够获得并运行所述剧本(然后使全局系统规则210更新,因此你可以在你想要克隆系统的情况下回放所述剧本)。

配置例程210.2可以是用于构建系统的一组指令。配置例程210.2还可包括子系统规则210.15或系统状态指针210.8,如果从业人员需要的话。当运行配置例程210.2时,控制器逻辑205可以特定顺序(210.9)处理一系列模板,任选地允许并行部署,但是维持适当的依赖关系处理(210.12)。配置例程210.2可任选地调用api调用210.10,所述api调用210.10可设定应用程序上的可通过根据210.9处理模板来配置的配置参数210.5。另外,所需的服务210.11是在所述系统将进行api调用210.10的情况下需要启动并运行的服务。

例程210.2还可包含用于关于易失性数据210.6进行数据加载(210.13)的过程、程序或方法,所述过程、程序或方法包括但不限于:拷贝数据,将数据库传送到计算资源,将计算资源与存储资源进行配对和/或利用易失性数据210.6的位置更新系统状态220。易失性数据指针(参见210.4)可利用数据210.3维护以定位可能存储在其他位置的易失性数据。如果配置参数210.5位于非标准数据存储处(例如,包含于某一数据库中),则数据加载例程210.13也可用于加载所述配置参数。

系统规则210还可包含资源列表210.18,所述资源列表210.18可指出哪些部件被分配给哪些资源并且将允许控制器逻辑205确定适当的资源和/或硬件是否可用。系统规则210还可包含用于替代部署(例如,用于开发环境,其中软件工程师可能想要执行实时测试,但是不想要分配整个数据中心)的替代硬件和/或资源列表210.19。系统规则还可包括数据备份/备用例程210.17,所述数据备份/备用例程210.17提供对如何备份系统并使用备用部分来实现冗余的指示。

在采取每个动作之后,可更新系统状态220,并且将查询(其可包括写入)保存为系统状态查询210.14。

图2n示出了由控制器逻辑205处理图2m的系统规则210(或子系统规则210.15)的示例过程流。在步骤210.20处,控制器逻辑205检查来确保适当的资源是可用的(参见图2m中的210.18)。否则,可在步骤210.21处检查替代配置。第三选项可包括提示用户选择可能受到图2m的列表210.7中引用的模板230支持的替代配置。

在步骤210.22处,控制器逻辑则可确保计算资源(或任何适当的资源)获得对易失性数据的访问。这可能涉及连接到存储资源或将存储资源添加到系统状态220。在步骤210.23处,则处理配置例程,并且在处理每个例程时,更新系统状态220(步骤210.24)。还可查询系统状态220以检查在继续进行之前是否完成某些步骤(步骤210.25)。

如图210.23所示的配置例程处理步骤可包括210.26的任何程序(或其组合)。所述配置例程处理步骤还可包括其他程序。例如,在210.26处的处理可包括模板处理(210.27)、加载配置数据(210.28)、加载静态数据(210.29)、加载动态易失性数据(210.30)和/或耦合服务、应用程序、子系统和/或环境(210.31)。210.26内的此类程序可以循环重复,或者并行运行,因为一些系统部件可能是独立的,而其他系统部件可能是相互依赖的。控制器逻辑、服务依赖关系和/或系统规则可指出哪些服务可能彼此依赖,并且可耦合所述服务来进一步从系统规则构建出it系统。

全局系统规则210还可包括存储扩展规则。存储扩展规则提供将存储资源自动地添加到例如所述系统内的现有的存储资源的一组规则。此外,存储扩展规则可提供在一个或多个计算资源上运行的应用程序将知道何时请求存储扩展(或者控制器200可能知道何时扩展计算资源或应用程序的存储)的触发点。控制器200可分配并管理新的存储资源,并且可将所述存储资源与现有的存储资源进行合并或集成以用于特定运行资源。这种特定运行资源可以为但不限于:所述系统内的计算资源、在所述系统内运行计算机资源的应用程序、虚拟机、容器、或者物理或虚拟计算主机或其组合。运行资源可例如通过存储空间查询用信号通知控制器200所述运行资源将耗尽存储空间。带内管理连接270、san连接280、或者对控制器200的任何联网或耦合都可用于这种查询中。也可使用带外管理连接260。这些存储扩展规则(或这些存储扩展规则的子集)还可用于不在运行的资源。

存储扩展规则指出如何在所述系统内定位、连接、设置新的存储资源。控制器将新的存储资源登记在系统状态220中,并且告知运行资源存储资源在何处以及如何连接到所述存储资源。运行资源使用此类登记信息来连接到存储资源。控制器200可将新的存储资源与现有的存储资源进行合并,或者所述控制器可将新的存储资源添加到卷组。

图2b示出了一组示例存储扩展规则的操作的示例流程。在步骤210.41处,运行资源基于触发点或其他方面而确定其存储较低。在步骤210.42处,运行资源通过带内管理连接270、san连接280、或对操作系统可见的另一种类型连接来连接到控制器200。通过这种连接,运行资源可通知控制器200其存储较低。在步骤210.43处,控制器配置存储资源以为运行资源扩展存储容量。在步骤210.44处,控制器向运行资源提供有关新配置的存储资源位于何处的信息。在步骤210.45处,运行资源连接到新配置的存储资源。在步骤210.46处,控制器将新的存储资源位置的映射添加到系统状态220。然后,控制器可将新的存储资源添加到分配给运行资源的卷组(步骤210.47),或者控制器可将新的存储资源到运行资源的分配添加到系统状态220(步骤210.48)。

图2c示出了用于执行图2b中的步骤210.41和210.42的替代实例。在步骤210.50处,控制器通过带外管理连接260发送关键命令以在监视器或控制台上查看关于运行资源的存储状况更新。例如,监视器可以是可经由带外连接260利用来查阅屏幕的ipmi控制台。作为一个实例,带外连接260可插入到usb中作为键盘/鼠标并且插入到vga监视端口中。在步骤210.51处,运行资源在屏幕上显示信息。在步骤210.52处,控制器之后经由带外管理连接260和屏幕抓取或类似操作而读取呈现在监视器或控制台上的信息;其中此读取信息可基于触发点而指示低存储状况。过程流之后可继续图2b的步骤210.43。

图2d示出了用于执行图2b的步骤210.41和210.42的另一个替代实例。在步骤210.55处,运行资源在监视器或控制台上自动地显示信息以供控制器读取。在步骤210.56处,控制器自动地、定期地或不断地对监视器或控制台进行读取以对运行资源进行检查。响应于此读取,控制器了解到运行资源的存储较低(步骤210.57)。过程流之后可继续图2b的步骤210.43。

控制器200还包括可包括裸金属和/或服务模板的模板230的库。这些模板可包括但不限于:电子邮件、文件存储、ip电话、软件计费、软件xmpp、wiki、版本控制、账户认证管理和可能能够由用户界面配置的第三方应用程序。模板230可与资源、应用程序或服务有关联;并且所述模板可用作定义如何将这种资源、应用程序或服务集成到所述系统中的配方。

同样,模板可包括用于创建、配置和/或部署资源、或加载在资源上的应用程序或服务的建立的一组信息。这种信息可包括但不限于:内核、initrd文件、文件系统或文件系统镜像、文件、配置文件、配置文件模板、用于确定不同的硬件和/或计算后端的适当的设置的信息、和/或其他可用于配置资源以驱动应用程序以及允许和/或有助于创建、启动或运行应用程序的操作系统镜像的选项。

模板可包含可用于在多种受支持的硬件类型和/或计算后端上部署应用程序的信息,所述多种受支持的硬件类型和/或计算后端包括但不限于:多种物理服务器类型或部件、在多种硬件类型硬件上运行的多个超级管理系统、可被托管在多种硬件类型硬件上的容器主机。

模板可获得在计算资源上运行的应用程序或服务的启动镜像。模板和来源于模板的镜像可用于创建应用程序,部署应用程序或服务和/或将资源布置用于各种系统功能,这允许和/或有助于创建应用程序。模板在文件、文件系统和/或操作系统镜像中可具有可变参数,所述可变参数可被来自默认设定或由控制器给出的设定的配置选项覆盖。模板可具有用于配置应用程序或其他资源的配置脚本,并且所述模板可利用配置变量、配置规则和/或默认规则或变量;这些脚本、变量和/或规则可包含针对特定硬件特定规则、脚本或变量,或者其他资源特定参数,例如超级管理系统(在虚拟的情况下)、可用存储器的特定参数。模板可具有呈以下形式的文件:二进制资源、带来二进制资源或者硬件或其他资源特定参数的可编译的源代码、多组特定的二进制资源或者具有针对特定硬件或其他资源特定参数,例如超级管理系统(在虚拟的情况下)、可用存储器的特定参数的编译指令的源代码。模板可包括与某一资源上正在运行什么无关的一组信息。

模板可包括基础镜像。基础镜像可包括基础操作系统文件系统。基础操作系统可以是只读的。基础镜像还可包括操作系统的与正在运行什么无关的基础工具。基础镜像可包括基础目录和操作系统工具。模板可包括内核。所述内核或多个内核可包括initrd,或者多个内核被配置用于不同的硬件类型和资源类型。镜像可来源于加载到一个或多个资源或者部署的模板ad。加载的镜像还可包括启动文件,诸如对应模板的内核或initrd。

镜像可包括可基于模板而加载到资源的模板文件系统信息。模板文件系统可配置应用程序或服务。模板文件系统可包括为所有资源,或类似资源共用,例如以节省存储文件系统的存储空间或者方便只读文件的使用的共享文件系统。模板文件系统或镜像可包括为所部署的服务共用的一组文件。可将模板文件系统预加载到控制器上或进行下载。可更新模板文件系统。模板文件系统可允许相对更快的部署,因为它不需要重新构建。与其他资源或应用程序共享文件系统可允许减少存储,因为文件不会被不必要地复制。这还可能允许更容易地从故障中复原,因为只需要复原不同于模板文件系统的文件。

模板启动文件可包括内核和/或initrd或者用于辅助启动过程的类似的文件系统。启动文件可启动操作系统并且设置模板文件系统。initrd可包括说明如何设置模板,使得所述模板能够启动的小的临时文件系统。

模板还可包括模板bios设定。模板bios设定可用于设定在物理主机上运行应用程序的任选设定。如果使用的话,则如本文关于图1至图12所描述的带外管理260可用于启动资源或应用程序。物理主机可使用带外管理网络260或cdrom来启动资源或应用程序。控制器200可设定这种模板中定义的应用程序特定bios设定。控制器200可使用带外管理系统来通过特定于具体资源的api而进行直接bios改变。所述设定可通过控制台和镜像识别来验证。因此,控制器200可使用控制台特征并且利用虚拟键盘和鼠标进行bios改变。控制器还可使用uefi壳并且可直接输入到控制台中,并且可使用镜像识别来验证成功结果,正确地输入命令并且确保成功的设定改变。如果存在可启动的操作系统可供用于bios改变或更新到特定bios版本,则控制器200可远程地加载盘镜像或iso,以启动更新bios并允许以可靠的方式进行配置改变的运行操作系统的应用程序。

模板还可包括模板特定支持资源列表,或者运行特定应用程序或服务所需的资源列表。

模板镜像或者镜像或模板的一部分可存储在控制器200上,或者控制器200可将它们移动或拷贝到存储资源410。

图2e示出了示例模板230。模板包含创建应用程序或服务所需的所有信息。模板230还可包含用于提供相似或相同功能的不同的硬件类型的信息、替代数据、文件、二进制。例如,可能存在用于/usr/bin和/bin的文件系统blob232与针对不同架构编译的二进制234。模板230还可包含守护进程233或脚本231。守护进程233是可能在主机被驱动并准备就绪的启动时间运行的二进制或脚本;并且在一些情况下,守护进程233可驱动api,所述api可能能够由控制器访问并且可能允许控制器改变主机的设定(并且控制器随后可更新活动系统规则)。守护进程还可被关闭并且通过上文和下文论述的带外管理260或带内管理270来重新起动。这些守护进程也可驱动通用api以为新服务提供依赖性服务(例如,与控制nginx或apache的api通信的通用web服务器api)。脚本231可以是可在启动镜像时或之后,或者在起动守护进程或启用服务之后运行的安装脚本。

模板230还可包含内核235和预启动文件系统236。模板230也可包含用于不同硬件和不同配置的多个内核235和一个或多个预启动文件系统(诸如用于linux的initrd或initramfs,或者用于bsd的只读内存盘)。initrd还可用于挂载作为覆盖层呈现的文件系统blob232,并且通过启动进入initramfs236来将根文件系统挂载在远程存储上,所述initramfs236可如下所述任选地通过san连接280连接到存储资源。

文件系统blob232是可分为单独的blob的文件系统镜像。blob可能能够基于配置选项、硬件类型和其他设置差异而互换。从模板230启动的主机可从包含多个blob的联合文件系统(诸如overlayfs),或者从一个或多个文件系统blob中创建的镜像启动。

模板230还可包括附加信息237,诸如易失性数据238和/或配置参数239,或者与所述附加信息相链接。例如,易失性数据238可包含于模板230中,或者所述易失性数据可包含于外部。所述易失性数据可以是呈文件系统blob232或其他数据存储的形式,所述其他数据存储包括但不限于:数据库、平面文件、存储在目录中的文件、文件压缩包、git或其他版本控制库。此外,配置参数239可包含于模板230外部或内部,并且任选地包含于系统规则中并应用于模板230。

系统100还包括跟踪、维护、改变和更新包括但不限于资源的系统100的状况的it系统状态220。系统状态220可跟踪可用资源,这将告知控制器逻辑资源是否可用于实现规则和模板,以及什么资源可用于实现规则和模板。系统状态可跟踪已使用的资源,这允许控制器逻辑205检查效率,利用效率,出于升级或其他原因,诸如为了提高效率或实现优先级检查是否需要切换资源。系统状态可跟踪正在运行什么应用程序。控制器逻辑205可根据系统状态将预期应用程序运行与实际应用程序运行进行比较,并且是否需要修正。系统状态220还可跟踪应用程序正运行到何处。控制器逻辑205可将此信息用于评估效率、改变管理、更新、故障诊断或审计追踪的目的。系统状态可跟踪联网信息,例如什么网络在运转或当前在运行,或者跟踪配置值和历史。系统状态220可跟踪改变历史。系统状态220还可跟踪基于全局系统规则而将哪些模板用于哪种部署中,所述全局系统规则规定了使用哪些模板。历史可用于审计、报警、改变管理、构建报告、跟踪与硬件和应用程序相关的版本以及配置或配置变量。系统状态220可出于审计、合规性测试或故障诊断的目的而维护配置历史。

控制器具有用于管理包含于系统状态、模板和全局系统规则中的所有信息的逻辑205。控制器逻辑205、全局系统规则数据库210、it系统状态220和模板230由控制器200管理,并且可驻留或不驻留在控制器200上。控制器逻辑或应用程序205、全局系统规则数据库210、it系统状态220和模板230可以是物理或虚拟的,并且可为或不为分布式服务、分布式数据库和/或文件。api应用程序120可包括在控制器逻辑/控制器应用程序205中。

控制器200可运行独立机器和/或可包括一个或多个控制器。控制器200可包括控制器服务或应用程序,并且可在另一个机器内部运行。控制器机器首先可起动控制器服务以确保整个栈或整组栈的有序和/或一致启动。

控制器200可控制一个或多个栈的计算资源、存储资源和联网资源。每个栈可由或不由全局系统规则210内的规则的不同子集控制。例如,可能存在预生产栈、生产栈、开发栈、测试栈、并行栈、备份栈和/或在系统内具有不同功能的其他栈。

控制器逻辑205可被配置为读取并解译全局系统规则以实现所需的it系统状态。控制器逻辑205可被配置为根据全局规则使用模板来构建系统部件,诸如应用程序或服务,并且分配、添加或移除资源以实现所需的it系统状态。控制器逻辑205可读取全局系统规则,产生达到正确状态的任务列表并且基于可用操作而发出用于履行规则的指令。控制器逻辑205可包含用于以下各项的逻辑:执行操作,例如起动系统,添加、移除、重新配置资源;辨别出能够做什么。控制器逻辑可在起动时间处以及在规律的时间间隔处检查系统状态以查看硬件是否可用,并且如果可用,所述硬件可执行任务。如果必要的硬件不可用,则控制器逻辑205使用全局系统规则210、模板220和根据系统状态230可用的硬件来呈现替代选项,并且相应地修改全局规则和/或系统状态220。

控制器逻辑205可能知道需要什么变量,用户需要输入什么才能继续或在系统中用户需要什么才能运行。控制器逻辑可使用来自全局系统规则的模板列表,并且将所述模板列表与系统状态中所需的模板进行比较以确保所需的模板是可用的。控制器逻辑205可从系统状态数据库中辨别模板特定支持资源列表上的资源是否可用。控制器逻辑可分配资源,更新状态并且进入下一组任务以实现全局规则。控制器逻辑205可如全局规则中所指定的那样起动/运行所分配的资源上的应用程序。所述规则可指定如何从模板构建应用程序。控制器逻辑205可抓取一个或多个模板并且根据变量配置应用程序。模板可告知控制器逻辑205需要哪个内核、哪些启动文件、哪些文件系统和哪些支持的硬件资源。然后,控制器逻辑205可将有关应用程序部署的信息添加到系统状态数据库。在每个指令之后,控制器逻辑205可对比全局规则的预期状态检查系统状态数据库,以验证预期操作是否正确完成。

控制器逻辑205可根据版本规则来使用版本。系统状态220可具有与哪些规则版本已被用于不同部署中相关的数据库。

控制器逻辑205可包括用于规则优化和有效排序的有效逻辑。控制器逻辑205可被配置为优化资源。系统状态、规则和模板中与正在运行或预期会运行的应用程序相关的信息可由控制器逻辑使用来关于资源实现效率或优先级。控制器逻辑205可使用系统状态220中的“已使用的资源”中的信息来确定效率,或者出于升级、再利用或其他原因而确定对切换资源的需求。

控制器可根据系统状态220检查应用程序运行,并且将所述应用程序运行与全局规则的预期应用程序运行进行比较。如果应用程序不在运行,则所述控制器可起动所述应用程序。如果应用程序不应运行,则所述控制器可停止所述应用程序并且在适当时重新分配资源。控制器逻辑205可包括资源(计算、存储、联网资源)规范的数据库。控制器逻辑可包括用于识别可用于所述系统的能够被使用的资源类型的逻辑。这可使用带外管理网络260来执行。控制器逻辑205可被配置为使用带外管理260来识别新硬件。控制器逻辑205还可从系统状态220取得关于改变历史、所使用的规则和版本的信息,以用于审计、构建报告和改变管理的目的。

图2f示出了控制器逻辑205关于处理模板230并获得镜像来启动、驱动和/或启用资源的示例过程流,所述资源出于这个实例的目的可被称为主机。此过程还可包括配置存储资源,并且耦合存储和计算主机和/或资源。控制器逻辑205知道系统100中可用的硬件资源,并且系统规则210可指示能够利用哪些硬件资源。控制器逻辑205在步骤205.1处解析模板230,所述模板230可包括指令文件,所述指令文件可被执行来使控制器逻辑收集在由图2e所示的模板230外部的文件。指令文件可以是呈json格式。在步骤205.2处,控制器逻辑收集需要的文件桶列表。另外,在步骤205.3处,控制器逻辑205将所需的硬件特定文件收集到桶中,所述硬件特定文件供硬件以及任选地超级管理系统(或容器主机系统,多租户类型系统)引用。如果硬件要在虚拟机上运行,则可能需要超级管理系统(或容器主机系统或多租户类型系统)引用。

如果存在硬件特定文件,则控制器逻辑将在步骤205.4处收集硬件特定文件。在一些情况下,文件系统镜像可包含内核和initramfs以及包含内核模块的目录(或内核模块最终被放置到目录中)。控制器逻辑205之后在步骤205.5处挑选兼容的适当的基础镜像。基础镜像包含可能不特定于应用程序或来源于模板230的镜像的操作系统文件。兼容性在此上下文中表示基础镜像包含将模板转变为工作应用程序所需的文件。可在模板外部将基础镜像作为用于节省空间的机构进行管理(而且通常,对于若干应用程序或服务来说,基础镜像可能是相同的)。此外,在步骤205.6处,控制器逻辑205挑选具有可执行文件、源代码和硬件特定配置文件的一个或多个桶。模板230可引用其他文件,包括但不限于:配置文件、配置文件模板(所述配置文件模板是包含占位符或变量的配置文件,所述配置文件充满系统规则210中的在模板230中可能变得已知的变量,使得控制器200可将配置模板转变为配置文件并且可任选地通过api端点来改变配置文件)、二进制和源代码(所述源代码可在启动镜像时进行编译)。在步骤205.7处,可加载对应于在步骤205.4.、205.5和205.6处挑选的元件的硬件特定指令作为被启动的镜像的一部分。控制器逻辑205从选择的部件获得镜像。例如,对比虚拟机,对于物理主机来说可能存在不同的预安装脚本,或者对比x86,对于powerpc来说可能存在差异。

在步骤205.8处,控制器逻辑205挂载overlayfs并且将主题文件重新打包成单个文件系统blob。当使用多个文件系统blob时,可通过多个blob,对压缩包解压缩和/或获取git来创建镜像。如果未执行步骤205.8,则文件系统blob可保持独立,并且将镜像创建为一组文件系统blob并利用能够将多个较小的文件系统挂载在一起的文件系统(诸如overlayfs)进行挂载。控制器逻辑205之后可在步骤205.9处定位兼容的内核(或系统规则210中指定的内核)并且在步骤205.10处定位适用的initrd。兼容的内核可以是满足模板和用于实现所述模板的资源的依赖关系的内核。兼容的initrd可以是将模板加载到所需的计算资源上的initrd。通常,initird可用于物理资源,使得其在完全启动之前能够挂载存储资源(因为根文件系统可能是远程的)。内核和initrd可被打包成文件系统blob,用于直接内核启动,或用于使用kexec的物理主机上以在启动初步操作系统之后改变活动系统上的内核。

控制器之后配置一个或多个存储资源以允许一个或多个计算资源使用由205.11、205.12和/或205.13所示的技术中的任一者来驱动一个或多个应用程序和/或一个或多个镜像。在205.11下,可将overlayfs文件提供为存储资源。在205.12下,呈现文件系统。例如,存储资源可呈现组合式文件系统,或计算资源可同时使用类似于overlayfs的文件系统来挂载的多个文件系统blob。在205.13下,在呈现文件系统之前向存储资源发送blob。

图2g和图2h示出了用于图2f的步骤205.11和205.12的示例过程流。更进一步地,所述系统可采用用于将计算机资源连接到存储资源的过程和规则,这可被称为存储连接过程。随附的附录a中提供了这种存储连接过程的除了由图2g和图2h所示的实例之外的实例。图2g示出了用于连接存储资源的示例过程流。一些存储资源可以是只读的,并且其他存储资源可以是可写入的。存储资源可管理其自身的写入锁定,使得不存在会引起竞态条件的同时写入,或者系统状态220可跟踪(参见,例如步骤205.20)哪些连接可对存储资源进行写入和/或防止多个读-写连接接至资源(步骤205.21)。控制器逻辑或资源自身可在控制器的系统状态220中查询存储资源的位置和传输类型(例如,iscsi、iser、nvmeof、光纤通道、fcoe、nfs、nfsoverrdma、afs、cifs、窗口共享)(步骤205.22)。如果计算资源是虚拟的,则超级管理系统(例如,经由超级管理系统守护进程实现)可处理接至存储资源的连接(步骤205.23)。这可具有所需的安全优势,因为虚拟机可能不了解san280。

参考步骤205.24,可在系统规则210中指出用于连接计算资源和存储资源的过程。控制器逻辑之后查询系统状态220以确保所述资源是可用的和可写入的(如果必要的话)(步骤205.22)。可经由诸如sql查询(或其他类型的数据库查询)、json解析等的多种技术中的任一者来查询系统状态220。所述查询将返回计算资源连接到存储资源所需的信息。控制器200、系统状态220或系统规则210可为计算资源连接到系统状态提供认证凭证(步骤205.25)。计算资源之后将直接或经由控制器更新系统状态220(步骤205.26)。

图2h示出了物理、虚拟或其他类型的计算资源、应用程序、服务或主机驱动存储资源并连接到所述存储资源的示例启动过程。存储资源可任选地利用融合文件系统和/或可扩展卷。在控制器或其他系统启用物理主机的情形下,物理主机可预加载有用于配置所述系统的操作系统。因此,在步骤205.31处,控制器可预加载具有initramfs的启动盘。另外,控制器200可使用带外管理连接260来网络启动初步操作系统(步骤205.30),然后任选地对主机预加载初步操作系统(步骤205.31)。之后在步骤205.32处加载initramfs,并且在步骤205.33处使用图2g所示的方法来连接存储资源。然后,如果存在可扩展卷,则在步骤205.34处任选地将耦合在一起的子卷或装置组装成卷组,如果逻辑卷管理(lvm)在使用的话。或者,可在步骤205.34处使用其他组合盘的方法来耦合所述卷。

如果融合文件系统在使用,则可在步骤205.36处组合文件,然后继续启动过程(步骤205.46)。如果在linux中使用overlayfs来解决一些已知的难题,则可运行以下子进程。可在可能是易失性的每个挂载的文件系统blob中形成/data目录(步骤205.37)。然后,可在步骤205.38处创建new_root目录,并且在步骤205.39处将overlayfs挂载到目录中。然后,initramfs在/new_root上运行exec_root(步骤205.40)。

如果主机是虚拟机,诸如直接内核启动的附加工具可能是可用的。在这种情形下,超级管理系统可在启动vm之前连接到存储资源(步骤205.41),或所述超级管理系统可在启动时如此操作。之后可连同加载initramfs一起对vm进行直接内核启动(步骤205.42)。然后在步骤205.43处加载initramfs,并且超级管理系统可在此时连接到可能是远程的存储资源(步骤205.44)。为了完成这一点,超级管理系统主机可能需要传入接口(例如,如果无限带宽需要连接到iser目标,则它可能会使用pci-passhtru传入基于sr-iov的虚拟功能,或者在一些情形下可使用半虚拟化的网络接口)。这些连接可供initramfs使用。如果虚拟机尚未准备就绪,则所述虚拟机之后可在步骤205.45处连接到存储资源。所述虚拟机还可能通过超级管理系统(任选地通过半虚拟化的存储)接收其存储资源。所述过程对于任选地挂载融合文件系统和lvm类型盘的虚拟机来说可能是相似的。

图2o示出了用于像在205.13处那样从文件系统blob或其他文件组配置存储资源的示例过程流。在步骤205.75处收集blob;并且可在205.73处将所述blob直接拷贝到存储资源主机上(如果存储资源主机不同于保存文件系统blob232的装置的话)。一旦存储资源已到位,则就在205.74处利用存储资源的位置和可用的传输(例如iser、nvmeof、iscsi、fcoe、光纤通道、nfs、nfsoverrdma)更新系统状态。这些blob中的一些可能是只读的,则在此情况下,系统状态保持不变并且新的计算资源或主机可连接到所述只读存储资源(例如,当连接到基础镜像时)。在一些情况下,如由205.70所示可能期望将文件放置到单个文件系统镜像中以避免任何融合文件系统开销。这可通过以下方式来完成:将blob作为融合文件系统进行挂载(步骤205.71),然后将所述blob拷贝到新的文件系统中或将它们重新打包成单个文件系统(步骤205.72),并且之后任选地将新的文件系统镜像拷贝到新的文件系统镜像将呈现为存储资源的适当的位置。一些融合文件系统可能允许完成合并,而不用首先在步骤205.71处对所述融合文件系统进行挂载并且在单个步骤中将它们进行合并。

图2i示出了如图2e所示的另一个示例模板230。在这个实例中,控制器可被配置为使用如图2i所示的具有中介配置工具的模板230。根据一个示例实施方案,中介配置工具可包括用于将新的应用程序或服务与依赖项应用程序或服务耦合的共用api。因此,模板230可另外包括设置模板的服务可能需要的依赖项列表244。模板230还可包含连接规则245,所述连接规则245可包含对依赖项的共用api的调用。模板230也可包括一个或多个共用api243以及共用api和版本列表242。共用api243可具有可能能够(或不能够)从应用程序或控制器调用的方法、函数、脚本或指令,所述方法、函数、脚本或指令允许控制器配置依赖项应用程序或服务,使得依赖项应用程序或服务之后可耦合到通过模板230构建的新应用程序。控制器可与共用api243通信和/或进行api调用以配置新的服务或应用程序与依赖项服务或应用程序的耦合。可选地,指令可允许应用程序或服务直接与依赖项应用程序或服务上的共用api243通信和/或向所述共用api发送调用。模板230连接规则245,所述连接规则245是可包含关于连接新的服务或应用程序与依赖项服务或应用程序的api调用的一组规则和/或指令。

系统状态220还可包括运行服务列表246。运行服务列表246可供控制器逻辑205查询来设法满足来自模板230的依赖项244。控制器还可包括可用于特定服务/应用程序或某一类型的服务/应用程序的不同的共用api的列表247,并且也可包括包含共用api的模板。列表可驻留在控制器逻辑205、系统规则210、系统状态220中或驻留在控制器可访问的模板存储中。控制器还维护从所有现有或加载的模板编译的共用api索引248。

图2j示出了控制器逻辑205关于如图2f所示处理模板230但是存在由控制器管理服务依赖项的步骤255的示例过程流。图2k示出了用于图2j的步骤255的示例过程流。在步骤255.1处,控制器从模板收集依赖项列表244。控制器还从模板收集共用api列表243。(a)。在步骤255.2处,控制器通过将来自模板的共用api列表243与共用api索引248进行比较,并且基于设法满足依赖项的应用程序或服务的类型而缩窄可能的依赖项应用程序或服务的列表。在步骤255.3处,控制器确定系统规则210是否指定满足依赖项的方式。

如果在步骤255.3处确定为是,则则控制器通过查询运行模板列表来确定依赖项服务或应用程序是否在运行(步骤255.4)。如果在步骤255.4处确定为否,则运行(和/或先配置,后运行)服务应用程序,这可包括由控制器逻辑处理依赖项服务/应用程序的模板(步骤255.5)。如果在步骤255.4处发现依赖项服务或应用程序在运行,则过程流进行到步骤255.6。在步骤255.6处,控制器使用模板来将正被构建的新的服务或应用程序耦合到依赖项服务或应用程序。在耦合新的服务或应用程序与依赖项应用程序/服务的过程中,控制器将完成其正在处理的模板并且将运行连接规则245。控制器就如何满足依赖项244和/或耦合应用程序/服务方面基于连接规则245而向共用api243发送命令。共用api243翻译来自控制器的指令以连接新的服务或应用程序与依赖项应用程序或服务,这可包括但不限于:调用服务的api函数、改变配置、运行脚本、调用其他程序。在步骤255.6之后,过程流进行到图2j的步骤205.2。

如果步骤255.3确定系统规则210未指定满足依赖项的方式,则控制器将在步骤255.7处查询系统状态220以查看是否有适当的依赖项应用程序或服务在运行。在步骤255.8处,控制器基于所述查询而作出其关于是否有适当的依赖项应用程序或服务在运行的确定。如果在步骤255.8处确定为否,则控制器可通知管理员或用户采取动作(步骤255.9)。如果在步骤255.8处确定为是,则过程流进行到可如上所述般操作的步骤255.6。关于新应用程序是否应连接到运行的依赖项应用程序,可任选地询问用户,在此情况下,控制器可在步骤255.6处按如下方式将新的应用程序或服务耦合到依赖项应用程序或服务:控制器将完成其正在处理的模板230并且将运行连接规则245。控制器之后就如何满足依赖项244方面基于连接规则245而向共用api243发送命令。共用api243翻译来自控制器的指令以连接新的服务或应用程序与依赖项应用程序或服务。

用户经由外部用户界面或webui、或应用程序通过api应用程序120与控制器200通信,所述api应用程序120也可并入到控制器应用程序或逻辑205中。

控制器200通过多个网络、互连器、或控制器可利用来指示计算资源、存储资源和联网资源操作的其他连接中的一者或多者而与栈或资源通信。此类连接可包括:带外管理连接260;带内管理连接270;san连接280;以及任选的联网带内管理连接290。

带外管理可由控制器200使用来通过控制器200检测、配置和管理系统100的部件。带外管理连接260可使得控制器200能够检测已插入且可用,但是没有开启的资源。资源在插入时可添加到it系统状态220。带外管理可被配置为加载启动镜像,配置并监视从属于系统100的资源。带外管理还可启动用于诊断操作系统的临时镜像。带外管理可用于改变bios设定,并且还可使用控制台工具来在运行的操作系统上运行命令。所述设定也可由控制器使用控制台、键盘以及对来自硬件资源上的物理或虚拟监视端口,诸如vga、dvi或hdmi端口的视频信号的图像识别,和/或使用由带外管理提供的api,例如redfish来改变。

如本文所使用的带外管理可包括但不限于:能够连接到独立于操作系统和主母板的资源或节点的管理系统。带外管理连接260可包括网络,或者多种类型的直接或间接连接件或互连器。带外管理连接类型的实例包括但不限于:ipmi、redfish、ssh、telnet、其他管理工具、键盘、显示屏和鼠标(kvm)或kvmoverip、串行控制台或usb。带外管理是如下工具:可通过网络使用,可驱动和切断节点或资源,监视温度和其他系统数据;进行bios改变以及可能在操作系统的控制之外的其他低级别改变;连接到控制台并发送命令;控制包括但不限于键盘、鼠标、监视器的输入端。带外管理可耦合到物理资源中的带外管理电路。带外管理可连接盘镜像作为可用于启动安装介质的盘。

管理网络或带内管理连接270可允许控制器收集关于计算资源、存储资源、联网资源或其他资源的信息,从而直接传达给资源正在运行的操作系统。存储资源、计算资源或联网资源可包括与连接260和/或270对接的管理接口,由此所述资源可与控制器200通信并且告知控制器什么正在运行以及什么可用于资源,并且从控制器接收命令。如本文所使用的带内管理网络包括能够与资源通信,直接通向所述资源的操作系统的管理网络。带内管理连接的实例可包括但不限于:ssh、telnet、其他管理工具、串行控制台或usb。

虽然带外管理在本文被描述为与带内管理网络物理或虚拟地分离的网络,但是它们可进行组合或者可如本文更详细所描述出于效率目的而彼此相结合地工作。另外相应地,带外管理和带内管理或它们的各方面可通过控制器的同一个端口通信,或者利用组合式互连器耦合。任选地,连接260、270、280、290中的一者或多者可以是单独的或与此类网络中的其他网络组合,并且可包括或不包括相同的构架。

此外,计算资源、存储资源和控制器可以或不以控制器200能够使用存储网络(san)280来启动每个资源的方式耦合到所述存储网络。控制器200可向单独的存储资源或其他资源或其他资源发送启动镜像或其他模板,使得其他资源可从存储资源或其他资源启动。控制器可指示在这种情形下从何处启动。控制器可驱动资源,指示所述资源从何处启动以及如何配置其自身。控制器200指示资源如何启动,使用什么镜像,以及如果所述镜像在另一个资源上则所述镜像位于何处。可预先配置bios的资源。控制器还可以或可选地通过带外管理配置bios,使得它们将从存储区域网络启动。控制器200也可被配置为从iso启动操作系统并且使得资源能够将数据拷贝到本地盘。本地盘随后可用于启动。控制器可以一种方式配置包括其他控制器的其他资源,使得所述资源能够启动。一些资源可包括提供计算、存储或联网功能的应用程序。此外,有可能由控制器启动存储资源,然后使所述存储资源负责供应后续资源或服务的启动镜像。存储也可通过用于另一个目的的不同网络来管理。

任选地,资源中的一者或多者可耦合到联网带内管理连接290。连接290可包括如关于带内管理连接270所描述的一种或多种类型的带内管理。连接290可将控制器连接到应用程序网络以利用网络,或者通过带内管理网络来管理所述网络。

图2l示出了镜像250,所述镜像250可直接或间接(通过另一个资源或数据库)从模板230加载到资源以启动资源,或者加载在所述资源上的应用程序或服务。镜像250可包括用于资源类型和硬件的启动文件240。启动文件240可包括对应于待部署的资源、应用程序或服务的内核241。启动文件240还可包括initrd或用于辅助启动过程的类似的文件系统。启动系统240可包括被配置用于不同的硬件类型和资源类型的多个内核或initrd。此外,镜像250可包括文件系统251。文件系统251可包括基础镜像252和对应的文件系统,以及服务镜像253和对应的文件系统,以及易失性镜像254和对应的文件系统。所加载的文件系统和数据可根据资源类型和待运行的应用程序或服务而变化。基础镜像252可包括基础操作系统文件系统。基础操作系统可以是只读的。基础镜像252还可包括操作系统的与正在运行什么无关的基础工具。基础镜像252可包括基础目录和操作系统工具。服务文件系统253可包括用于资源、应用程序或服务的配置文件和规范。易失性文件系统254可包含特定于那一种部署的信息或数据,诸如二进制应用程序、特定地址和其他信息,所述信息或数据可配置或不配置为变量,所述变量包括但不限于:密码、会话密钥和私有密钥。文件系统可使用诸如overlayfs的技术作为一个单独的文件系统进行挂载,以允许一些只读文件系统和一些读-写文件系统,从而减少用于应用程序的复制数据的量。

如上所述,控制器200可用于将诸如计算资源、存储资源和/或联网资源的资源添加到所述系统。图11a示出了用于将诸如裸金属节点的物理资源添加到系统100的示例方法。通过网络连接将资源,即计算资源、存储资源或联网资源插入到控制器中1110。网络连接可包括带外管理连接。控制器识别出所述资源通过带外管理连接插入1111。控制器识别与所述资源相关的信息,这可包括但不限于:资源的类型、能力和/或属性1112。控制器将所述资源和/或与所述资源相关的信息添加到其系统状态1113。将来源于模板的镜像加载到系统的物理部件,所述物理部件可包括但不限于诸如存储资源的另一个资源上,或控制器上的资源1114。镜像包括可包括配置文件的一个或多个文件系统。此类配置可包括bios和启动参数。控制器指示物理资源使用镜像的文件系统来启动1115。可使用模板的镜像或其至少一部分以此方式添加附加资源或者多种不同类型的裸金属或物理资源。

图11b示出了一个示例实施方案的使用全局系统规则和模板自动地分配资源的示例方法。对需要资源分配的系统发出请求以满足所述请求1120。控制器基于其系统状态数据库而了解其资源池1121。控制器使用模板来确定所需的资源1122。控制器分派所述资源并且将信息存储在系统状态中1123。控制器使用所述模板来部署所述资源1124。

参考图12,使用本文描述的系统100说明了用于自动地部署应用程序或服务的示例方法。用户或应用程序发出对服务的请求1210。将所述请求翻译到api应用程序1220。api应用程序将所述请求输送到控制器1230。控制器解译所述请求1240。控制器将所述系统及其资源的状态考虑在内1250。控制器使用其规则和模板来进行服务部署1260。控制器1270向资源发送请求1270,并且部署来源于模板的镜像1280并更新it系统状态。

下文将更详细地论述诸如添加资源、分配资源和部署应用程序或服务的操作的其他更详细的实例。

将计算资源添加到系统

参考图3a,示出了计算资源310到系统100的添加。当添加计算资源310时,所述计算资源耦合到控制器200并且可切断所述计算资源。应注意,如果计算资源310预加载有镜像,则可遵循替代步骤,其中可使用任何网络连接来与资源通信,启动资源并且将信息添加到系统状态。如果计算资源和控制器在同一个节点上,则关闭运行计算资源的服务。

如图3a所示,计算资源310通过以下网络耦合到控制器:带外管理连接260、带内管理连接270以及任选地san280。计算资源310还耦合到一个或多个应用程序网络390,在所述应用程序网络处,服务、应用程序用户和/或客户端可彼此通信。带外管理连接260可耦合到当计算资源310插入时开启的独立的带外管理装置315或计算资源310的电路。装置315可允许特征,包括但不限于:驱动/切断装置、附连到控制台并输入命令、监视温度和其他计算机健康相关元素以及设定bios设定和在操作系统范围之外的其他特征。控制器200可通过带外管理网络260查看计算资源310。所述控制器还可辨别计算资源的类型并且使用带内管理或带外管理来辨别所述计算资源的配置。控制器逻辑205被配置为在带外管理260或带内管理270中仔细检查添加的硬件。如果检测到计算资源310,则控制器逻辑205可使用全局系统规则220来确定所述资源是将自动地配置还是通过与用户交互来配置。如果所述资源是自动地添加,则设置将遵循控制器200内的全局系统规则210。如果所述资源是由用户添加,则控制器200内的全局系统规则210可能会要求用户确认资源的添加以及用户想要如何处理计算资源。控制器200可查询api应用程序或以其他方式请求用户或控制栈的任何程序来确认新资源已被授权。授权过程也可使用密码术来自动地且安全地完成以确认新资源的合法性。控制器逻辑205将计算资源310添加到it系统状态220,这包括计算资源310插入其中的交换机或网络。

如果计算资源是物理的,则控制器200可通过带外管理网络260驱动计算资源,并且计算资源310可使用全局系统规则210和控制器逻辑205例如通过san280从加载自模板230的镜像350启动。所述镜像可通过其他网络连接或者间接地通过另一个资源来加载。一旦被启动,通过带内管理连接270接收的与计算资源310相关的信息就也可被收集和添加到it系统状态220。计算资源310之后可被添加到存储资源池,并且所述计算资源将变为由控制器200管理并在it系统状态220中加以跟踪的资源。

如果计算资源是虚拟的,则控制器200可通过带内管理网络270或通过带外管理260驱动计算资源。计算资源310可使用全局系统规则210和控制器逻辑205例如通过san280从加载自模板230的镜像350启动。所述镜像可通过其他网络连接或者间接地通过另一个资源来加载。一旦被启动,通过带内管理连接270接收的与计算资源310相关的信息就也可被收集和添加到it系统状态220。计算资源310之后可被添加到存储资源池,并且所述计算资源将变为由控制器200管理并在it系统状态220中加以跟踪的资源。

控制器200可能能够根据全局系统规则自动地开启和关闭资源,并且出于由it系统用户确定的原因,诸如为了节省电力而关闭资源,或者为了提高应用程序性能而开启资源或者it系统用户可能有的任何其他原因而更新it系统状态。

图3b是直接或间接地(通过另一个资源或数据库)从模板230加载到计算资源310以启动计算资源和/或加载应用程序的镜像350。镜像350可包括用于资源类型和硬件的启动文件340。启动文件340可包括对应于待部署的资源、应用程序或服务的内核341。启动文件340还可包括initrd或用于辅助启动过程的类似的文件系统。启动系统340可包括被配置用于不同的硬件类型和资源类型的多个内核或initrd。此外,镜像350可包括文件系统351。文件系统351可包括基础镜像352和对应的文件系统,以及服务镜像353和对应的文件系统,以及易失性镜像354和对应的文件系统。所加载的文件系统和数据可根据资源类型和待运行的应用程序或服务而变化。基础镜像352可包括基础操作系统文件系统。基础操作系统可以是只读的。基础镜像352还可包括操作系统的与正在运行什么无关的基础工具。基础镜像352可包括基础目录和操作系统工具。服务文件系统353可包括用于资源、应用程序或服务的配置文件和规范。易失性文件系统354可包含特定于那一种部署的信息或数据,诸如二进制应用程序、特定地址和其他信息,所述信息或数据可配置或不配置为变量,所述变量包括但不限于:密码、会话密钥和私有密钥。文件系统可使用诸如overlayfs的技术作为一个单独的文件系统进行挂载,以允许一些只读文件系统和一些读-写文件系统,从而减少用于应用程序的复制数据的量。

图3c示出了用于将诸如计算资源310的资源添加到系统100的示例过程流。虽然在这个实例中,主题资源将被描述为计算资源310,但是应理解,图3c过程流的主题资源也可以是存储资源410和/或联网资源510。在图3c的实例中,添加的资源310与控制器200不在同一个节点上。在步骤300.1处,资源310以切断状态耦合到控制器200。在图3c的实例中,使用带外管理连接260来连接资源310。然而,应理解,如果从业人员需要的话,则可使用其他网络连接。在步骤300.2和步骤300.3处,控制器逻辑205仔细检查系统的带外管理连接,并且使用带外管理连接260来识别和辨别正被添加的资源310的类型以及其配置。例如,控制器逻辑可查看所述资源的bios或其他信息(诸如序列号信息)作为获取类型和配置信息的参考。

在步骤300.4处,控制器使用全局系统规则来确定是否应自动地添加特定资源310。如果为否,则控制器将保持等待,直到其使用被授权为止(步骤300.5)。例如,在步骤300.4处,用户可对查询作出以下响应:所述用户不想要使用特定资源310,或者可自动地搁置所述特定资源,直到所述特定资源将被使用为止。如果步骤300.4确定应自动地添加资源310,则控制器将使用其规则来进行自动设置(步骤300.6)并且进行到步骤300.7。

在步骤300.7处,控制器选择并使用与所述资源相关联的模板230来将所述资源添加到系统状态220。在一些情况下,模板230可特定于特定资源。然而,一些模板230可覆盖多种资源类型。例如,一些模板230可以是跨硬件的。在步骤300.8处,控制器根据全局系统规则210通过其带外管理连接260来驱动资源310。在步骤300.9处,使用全局系统规则210,控制器从一个或多个选择的模板查找并加载所述资源的启动镜像。之后从来源于主题模板230的镜像启动资源310(步骤300.10)。然后,在启动资源310之后,可通过带内管理连接270从资源310接收有关资源310的附加信息(步骤300.11)。这种信息可包括例如固件版本、网卡、所述资源可能连接的任何其他装置。可在步骤300.12处将新信息添加到系统状态220。资源310之后可被视为已添加到资源池并且准备好用于分配(步骤300.13)。

关于图3c,如果资源和控制器在同一个节点上,则应理解,运行所述资源的服务可能远离所述节点。在这种情况下,控制器可对所述资源使用进程间通信技术,例如像unix套接字、回送适配器或其他进程间通信技术来与资源通信。根据系统规则,控制器可安装虚拟主机、或超级管理系统或容器主机,以使用从控制器已知的模板来运行应用程序。然后可将资源应用程序信息添加到系统状态220,并且所述资源将准备好用于分配。

将存储资源添加到系统:

图4a示出了存储资源410到系统100的添加。在一个示例实施方案中,可遵循图3c的示例过程流来将存储资源410添加到系统100,其中所添加的存储资源410与控制器200不在同一个节点上。另外,应注意,如果存储资源410预加载有镜像,则可遵循替代步骤,其中可使用任何网络连接来与存储资源410通信,启动存储资源410并且将信息添加到系统状态220。

当添加存储资源410时,所述存储资源耦合到控制器200并且可切断所述存储资源。存储资源410通过以下网络耦合到控制器:带外管理网络260、带内管理连接270、san280以及任选地连接290。存储资源410还可耦合或不耦合到一个或多个应用程序网络390,在所述应用程序网络处,服务、应用程序用户和/或客户端可彼此通信。应用程序或客户端可经由应用程序实现对资源的存储的直接或间接访问,由此所述资源的存储不通过san来访问。应用程序网络可具有内置存储,或者可在it系统状态中作为存储资源进行访问和辨别。带外管理连接260可耦合到当存储资源410插入时开启的独立的带外管理装置415或存储资源410的电路。装置415可允许特征,包括但不限于:驱动/切断装置、附连到控制台并输入命令、监视温度和其他计算机健康相关元素以及设定bios设定和在操作系统范围之外的其他特征。控制器200可通过带外管理网络260查看存储资源410。所述控制器还可辨别存储资源的类型并且使用带内管理或带外管理来辨别所述存储资源的配置。控制器逻辑205被配置为在带外管理260或带内管理270中仔细检查添加的硬件。如果检测到存储资源410,则控制器逻辑205可使用全局系统规则220来确定资源410是将自动地配置还是通过与用户交互来配置。如果所述资源是自动地添加,则设置将遵循控制器200内的全局系统规则210。如果所述资源是由用户添加,则控制器200内的全局系统规则210可能会要求用户确认资源的添加以及用户想要如何处理存储资源。控制器200可查询一个或多个api应用程序或以其他方式请求用户或控制栈的任何程序来确认新资源已被授权。授权过程也可使用密码术来自动地且安全地完成以确认新资源的合法性。控制器逻辑205将存储资源410添加到it系统状态220,这包括存储资源410插入其中的交换机或网络。

控制器200可通过带外管理网络260驱动存储资源410,并且存储资源410可使用全局系统规则210和控制器逻辑205例如通过san280从加载自模板230的镜像450启动。所述镜像也可通过其他网络连接或者间接地通过另一个资源来加载。一旦被启动,通过带内管理连接270接收的与存储资源410相关的信息就也可被收集和添加到it系统状态220。计算资源410现在被添加到存储资源池,并且所述存储资源将变为由控制器200管理并在it系统状态220中加以跟踪的资源。

存储资源可包括一个存储资源池,或者it系统可独立或同时使用或访问的多个存储资源池。当存储资源被添加时,所述存储资源可能会将一个存储池、多个存储池、一个存储池的一部分和/或多个存储池的多个部分提供到it系统状态。控制器和/或存储资源可管理池的各种存储资源,或者所述池内的此类资源的分组。存储池可包含在多个存储资源上运行的多个存储池。例如,闪存盘或阵列、高速缓存盘片式盘或阵列、或专用计算节点上的与专用存储节点上的池耦合的存储池用于同时优化带宽和延迟。

图4b示出了直接或间接地(通过另一个资源或数据库)从模板230加载到存储资源410以启动存储资源和/或加载应用程序的镜像450。镜像450可包括用于资源类型和硬件的启动文件440。启动文件440可包括对应于待部署的资源、应用程序或服务的内核441。启动文件440还可包括initrd或用于辅助启动过程的类似的文件系统。启动系统440可包括被配置用于不同的硬件类型和资源类型的多个内核或initrd。此外,镜像450可包括文件系统451。文件系统451可包括基础镜像452和对应的文件系统,以及服务镜像453和对应的文件系统,以及易失性镜像454和对应的文件系统。所加载的文件系统和数据可根据资源类型和待运行的应用程序或服务而变化。基础镜像452可包括基础操作系统文件系统。基础操作系统可以是只读的。基础镜像452还可包括操作系统的与正在运行什么无关的基础工具。基础镜像452可包括基础目录和操作系统工具。服务文件系统453可包括用于资源、应用程序或服务的配置文件和规范。易失性文件系统454可包含特定于那一种部署的信息或数据,诸如二进制应用程序、特定地址和其他信息,所述信息或数据可配置或不配置为变量,所述变量包括但不限于:密码、会话密钥和私有密钥。文件系统可使用诸如overlayfs的技术作为一个单独的文件系统进行挂载,以允许一些只读文件系统和一些读-写文件系统,从而减少用于应用程序的复制数据的量。

图5a示出了一个实例,其中另一个存储资源,即直接附连存储510(其可采用具有jbod的节点或其他类型的直接附连存储的形式)作为所述系统的附加存储资源耦合到存储资源410。jbod是通常连接到提供存储资源的节点的外部盘阵列,并且jbod将用作图5a中的直接附连存储510的示例形式,但是应理解,其他类型的直接附连存储也可被采用作为510。

例如,如关于图5a所描述,控制器200可将存储资源410和jbod510添加到其系统。jbod510通过带外管理连接260耦合到控制器200。存储资源410耦合到以下网络:带外管理连接260、带内管理连接270、san280以及任选地连接290。存储节点410通过sas或其他盘驱动构架520来与jbod510的存储通信。jbod510还可包括通过带外管理连接260与控制器通信的带外管理装置515。通过带外管理260,控制器200可检测jbod510和存储资源410。控制器200还可检测例如,如本文关于各种带外管理电路所描述的不受操作系统控制的其他参数。控制器200的全局系统规则210提供了用于启动或起动尚未被添加的jbod和存储节点的配置起动规则。开启存储资源的顺序可由控制器逻辑205使用全局规则220来控制。根据一组全局系统规则220,控制器可首先驱动jbod510,并且控制器200之后可使用加载的镜像450以与关于图4所描述类似的方式驱动存储资源410。在另一组全局系统规则中,控制器200可首先开启存储资源410,然后开启jbod510。在其他全局系统规则中,可指定在驱动各种装置之间的定时或延迟。通过控制器逻辑205、全局系统规则210和/或模板230,可确定对各种资源的准备或操作状态的检测和/或由控制器200将所述检测用于装置分配管理中。it系统状态220可通过与存储资源410通信来更新。存储节点410通过经由盘构架520访问jbod来了解jbod510的存储参数和配置。存储资源410向控制器200提供信息,所述控制器之后利用有关可用的存储量和其他属性的信息更新it系统状态220。当存储资源410被启动并且存储资源410被识别为系统100的存储资源400池的一部分时,控制器更新it系统状态220。存储节点使用由控制器200设定的配置来处理用于控制jbod存储资源的逻辑。例如,控制器可指示存储节点来配置jbod以从raid10或其他配置创建池。

图5b示出了用于将存储资源410和用于存储资源410的直接附连存储510添加到系统100的示例过程流。在步骤500.1处,通过带外管理连接260以切断状态将直接附连存储510耦合到控制器200。在步骤500.2处,通过带外管理连接260和带内管理连接270以切断状态将存储资源410耦合到控制器200,同时例如通过sas520,诸如盘驱动构架将存储资源410耦合到直接附连存储510。

控制器逻辑205之后可仔细检查带外管理连接260以检测存储资源410和直接附连存储510(步骤500.3)。虽然可使用任何网络连接,但是在这个实例中,带外管理可供控制器逻辑使用来识别和辨别正被添加的资源的类型(在这种情况下为存储资源410和直接附连存储510)以及其配置(步骤500.4)。

在步骤500.5处,控制器200针对每种类型的存储装置的特定存储类型选择并使用模板230,以将资源410和510添加到系统状态220。在步骤500.6处,控制器根据全局系统规则210(其可指定启动顺序,驱动顺序,通过带外管理连接260以此顺序启动直接存储和存储节点(500.6)。使用全局系统规则210,控制器从针对所述存储资源410选择的模板230查找并加载存储资源410的启动镜像,然后从所述镜像启动存储资源(步骤500.7)。存储资源410通过经由盘构架520访问直接附连存储510来了解直接附连存储510的存储参数和配置。之后可通过接至存储资源的带内管理连接270将有关存储资源410和/或直接附连存储510的附加信息提供到控制器(步骤500.8)。在步骤500.9处,控制器利用在步骤500.8处获得的信息更新系统状态220。在步骤500.10处,控制器为存储资源410处理直接附连存储510以及如何配置直接附连存储设定配置。在步骤500.11处,之后可将包含存储资源410与直接附连存储510的组合的新资源添加到资源池并且使所述新资源准备好在所述系统内分配。

根据一个示例实施方案的另一个方面,控制器可使用带外管理来识别栈中可能未参与计算或服务的其他装置。例如,此类装置可包括但不限于:冷却塔/空调、灯具、温度装置、声音装置、报警装置、电力系统、或与所述系统相关联的任何其他装置。

将联网资源添加到系统:

图6a示出了联网资源610到系统100的添加。在一个示例实施方案中,可遵循图3c的示例过程流来将联网资源610添加到系统100,其中所添加的联网资源610与控制器200不在同一个节点上。另外,应注意,如果联网资源610预加载有镜像,则可遵循替代步骤,其中可使用任何网络连接来与网络资源610通信,启动网络资源610并且将信息添加到系统状态220。

当添加联网资源610时,所述联网资源耦合到控制器200并且可切断所述联网资源。联网资源610可通过以下连接耦合到控制器200:带外管理连接260和/或带内管理连接270。所述联网资源任选地被插入到san280和/或连接290中。联网资源610还可耦合或不耦合到一个或多个应用程序网络390,在所述应用程序网络处,服务、应用程序用户和/或客户端可彼此通信。带外管理连接260可耦合到当联网资源610插入时开启的独立的带外管理装置615或联网资源610的电路。装置615可允许特征,包括但不限于:驱动/切断装置、附连到控制台并输入命令、监视温度和其他计算机健康相关元素以及设定bios设定和在操作系统范围之外的其他特征。控制器200可通过带外管理连接260查看联网资源610。所述控制器还可辨别联网资源的类型和/或网络构架并且使用带内管理或带外管理来辨别配置。控制器逻辑205被配置为在带外管理260或带内管理270中仔细检查添加的硬件。如果检测到联网资源610,则控制器逻辑205可使用全局系统规则220来确定联网资源610是将自动地配置还是通过与用户交互来配置。如果所述资源是自动地添加,则设置将遵循控制器200内的全局系统规则210。如果由用户添加,则控制器200内的全局系统规则210可能会要求用户确认资源的添加以及用户想要如何处理资源。控制器200可查询一个或多个api应用程序或以其他方式请求用户或控制栈的任何程序来确认新资源已被授权。授权过程也可使用密码术来自动地且安全地完成以确认新资源的合法性。控制器逻辑205之后可将联网资源610添加到it系统状态220。对于无法对控制器表明自己身份的交换机,用户可手动地将所述交换机添加到系统状态。

如果联网资源是物理的,则控制器200可通过带外管理连接260驱动联网资源610,并且联网资源610可使用全局系统规则210和控制器逻辑205例如通过san280从加载自模板230的镜像605启动。所述镜像也可通过其他网络连接或者间接地通过其他资源来加载。一旦被启动,通过带内管理连接270接收的与联网资源610相关的信息就也可被收集和添加到it系统状态220。联网资源610之后可被添加到存储资源池,并且所述联网资源将变为由控制器200管理并在it系统状态220中加以跟踪的资源。任选地,一些联网资源交换机可通过连接到带外管理260的控制台端口来控制并且可在驱动时进行配置,或者可具有通过启动加载器,例如通过onie安装的交换机操作系统。

如果联网资源是虚拟的,则控制器200可通过带内管理网络270或通过带外管理260驱动联网资源。联网资源610可使用全局系统规则210和控制器逻辑205通过san280从加载自模板230的镜像650启动。一旦被启动,通过带内管理连接270接收的与联网资源610相关的信息就也可被收集和添加到it系统状态220。联网资源610之后可被添加到存储资源池,并且所述联网资源将变为由控制器200管理并在it系统状态220中加以跟踪的资源。

控制器200可指示联网资源(无论是物理的还是虚拟的)分派、重新分派或移动端口来连接到不同的物理或虚拟资源,即如本文所定义的连接、存储或计算资源。这可使用包括但不限于sdn、无限带宽分区、vlan、vxlan的技术来完成。控制器200可指示虚拟交换机对与某一虚拟交换机或托管虚拟交换机的资源进行通信的网络或互连器移动或分派虚拟接口。一些物理或虚拟交换机可由耦合到控制器的api控制。

控制器200还可指示计算资源、存储资源或联网资源改变构架类型(如果这种改变可行的话)。端口可被配置为切换到不同的构架,例如切换为混合无限带宽/以太网接口的构架。

控制器200可向可包括交换机的联网资源或切换多个应用程序网络的其他联网资源给出指令。交换机或网络装置可包括不同的构架,或者例如,它们可插入到无限带宽交换机、roce交换机和/或优选地具有sdn能力和多个构架的其他交换机中。

图6b示出了直接或间接地(例如通过另一个资源或数据库)从模板230加载到联网资源610以启动联网资源和/或加载应用程序的镜像650。镜像650可包括用于资源类型和硬件的启动文件640。启动文件640可包括对应于待部署的资源、应用程序或服务的内核641。启动文件640还可包括initrd或用于辅助启动过程的类似的文件系统。启动系统640可包括被配置用于不同的硬件类型和资源类型的多个内核或initrd。此外,镜像650可包括文件系统651。文件系统651可包括基础镜像652和对应的文件系统,以及服务镜像653和对应的文件系统,以及易失性镜像654和对应的文件系统。所加载的文件系统和数据可根据资源类型和待运行的应用程序或服务而变化。基础镜像652可包括基础操作系统文件系统。基础操作系统可以是只读的。基础镜像652还可包括操作系统的与正在运行什么无关的基础工具。基础镜像652可包括基础目录和操作系统工具。服务文件系统653可包括用于资源、应用程序或服务的配置文件和规范。易失性文件系统654可包含特定于那一种部署的信息或数据,诸如二进制应用程序、特定地址和其他信息,所述信息或数据可配置或不配置为变量,所述变量包括但不限于:密码、会话密钥和私有密钥。文件系统可使用诸如overlayfs的技术作为一个单独的文件系统进行挂载,以允许一些只读文件系统和一些读-写文件系统,从而减少用于应用程序的复制数据的量。

在资源上部署应用程序或服务:

图7a示出了系统100,所述系统100包括:控制器200;物理和虚拟计算资源,所述物理和虚拟计算资源包括第一计算节点311、第二计算节点312和第三计算节点313;存储资源410;以及网络资源610。所述资源被示出为以如本文关于图1至图6b所描述的方式设置并添加到it系统状态220。

虽然在此图中示出了多个计算节点,但是根据一个示例实施方案也可使用单个计算节点。计算节点可托管物理或虚拟计算资源,并且可在物理或虚拟计算节点上运行应用程序。类似地,虽然示出了单个网络提供商节点和存储节点,但是可预期的是,这些类型的多个资源节点可用于或不用于一个示例实施方案的系统中。

服务或应用程序可部署在根据一个示例实施方案的任何系统中。在计算节点上部署服务的实例可关于图7a进行描述,但是可类似地与系统100的不同布置一起使用。例如,图7a中的控制器200可根据全局系统规则210自动地配置呈计算节点311、312、313的形式的计算资源310。所述计算资源之后还可添加到it系统状态220。控制器200因此可识别计算资源311、312、313(它们可能会被切断或不会被切断)以及在计算资源或节点上运行的可能任何物理或虚拟应用程序。控制器200还可根据全局系统规则210和模板230自动地配置一个或多个存储资源410和一个或多个联网资源610,并且将它们添加到it系统状态220。控制器200可识别可能开始处于或不处于切断状态的存储资源410和联网资源610。

图7b示出了用于将资源添加到it系统100的示例过程。在步骤700.1处,将新的物理资源耦合到所述系统。在步骤700.2处,控制器逐渐了解新资源。可将所述资源连接到远程存储(步骤700.4)。在步骤700.3处,控制器配置启动新资源的方法。可将对所述资源进行的所有连接都记录到系统状态220(步骤700.5)。上文论述的图3c提供了关于诸如由图7b所示的过程流的示例实施方案的更多细节。

图7c和图7d示出了用于在多个计算资源、多个服务器、多个虚拟机上和/或在多个站点中部署应用程序的示例过程流。这个实例的过程区别于标准模板部署的事实在于:it系统100将需要部件来耦合冗余和相关的应用程序和/或服务。控制器逻辑可在步骤700.11处处理元模板,其中元模板可包含多个模板230、文件系统blob232和配置多宿主服务所需的其他部件(它们可以是呈其他模板230的形式)。

在步骤700.12处,控制器逻辑205在系统状态220中检查可用资源;然而,如果不存在足够的资源,则控制器逻辑可削减可能部署的冗余服务的数量(参见700.16,其中辨别冗余服务的数量)。在步骤700.13处,控制器逻辑205配置将服务连接在一起所需的联网资源和互连器。如果跨多个站点部署服务或应用程序,则元模板可包括(或控制器逻辑205可配置)任选地从允许跨站点实现数据同步和互操作性的模板配置的服务(参见700.15)。

在步骤700.16处,控制器逻辑205可从系统规则确定元模板数据、资源可用性和冗余服务的数量(如果在多个主机上都将存在冗余服务的话)。在700.17处,存在与其他冗余服务的耦合和与母板的耦合。如果存在多个冗余主机,则控制器逻辑205或模板内的逻辑(可包含引导操作系统中的设定的配置文件的二进制234、守护进程232或文件系统blob)可防止网络地址与主机名冲突。任选地,控制器逻辑将提供网络地址(参见700.18),并且将每个冗余服务登记在dns(700.19)和系统状态220(700.18)中。系统状态220将跟踪冗余服务,并且如果控制器逻辑205注意到冗余服务具有冲突参数,诸如主机名,dns名,网络地址已经在系统状态220中,则所述控制器逻辑将不会允许重复登记。

由图7d所示的配置例程将处理元模板中的一个或多个模板。所述配置例程将处理所有冗余服务,将多主机或群集服务部署到多个主机,将服务部署成耦合所述主机。可从系统规则部署it系统的任何进程都可运行配置例程。在多主机服务的情况下,示例例程可能像在700.32处一样处理服务模板,像在700.33处一样供给存储资源,像在700.35处一样驱动主机,像在700.36处一样将主机/计算资源与存储资源耦合(并且登记在系统状态220中)(然后针对所述数量的冗余服务进行重复(700.38);每一次都登记在系统状态220中(参见700.20)并且使用控制器逻辑来记录跟踪单独的服务并防止冲突的信息(参见700.31)。

服务模板中的一些服务模板可包含可耦合多主机服务的服务和工具。这些服务中的一些服务可被视为依赖项(700.39),然后在700.40处的耦合例程可使用来耦合服务并且将所述耦合登记在系统状态220中。此外,服务模板之一可以是主模板,然后在700.39处的依赖性服务模板将为从或副服务;并且在700.40处的耦合例程将连接所述服务。所述例程可在元模板中进行定义;例如,对于冗余dns配置,700.40处的耦合例程可包括从dns到主dns的连接以及对区域传送连同dnssec的配置。一些服务可使用物理存储(参见700.34)来提高性能,并且所述物理存储可能会加载有图5b中所公开的初步os。用于耦合服务的工具可包含于模板自身中,并且在服务之间的配置可利用由控制器和/或多节点应用程序/服务中的其他主机可访问的api来完成。

控制器200可允许用户或控制器确定用于应用程序的适当的计算后端。控制器200可允许用户或控制器通过确定资源使用来将应用程序最优地放置在适当的物理或虚拟计算资源上。当将超级管理系统或其他计算后端部署到计算节点时,所述超级管理系统或其他计算后端可通过带内管理连接270往回向控制器报告资源利用统计。当控制器根据其自身的逻辑和全局系统规则,或根据用户输入决定在虚拟计算资源上创建应用程序时,所述控制器可自动地选择在最优主机上的超级管理系统并且驱动所述主机上的虚拟计算资源。

例如,控制器200使用一个或多个模板230将应用程序或服务部署到一个或多个计算资源上。这种应用程序或服务例如可以是运行应用程序或服务的虚拟机。在一个实例中,图7a示出了多个虚拟机(vm)在多个计算节点上的部署,如所示的控制器200可识别出在其计算资源池中存在呈计算节点311、312、313的形式的多个计算资源310。计算节点可例如利用超级管理系统或可选地在裸金属上部署,在裸金属中,由于速度原因,虚拟机的使用可能是不期望的。在这个实例中,计算资源310加载有超级管理系统应用程序,并且具有被配置和部署在计算节点311上的vm(1)321和vm(2)322。如果例如计算节点311不具有用于附加vm的资源,或者如果对于特定服务来说优选其他资源,则控制器200可基于栈状态220而识别出在计算节点311上不存在可用资源,或者优选在不同的资源中设置新的vm。还可能识别出超级管理系统加载在例如计算资源312上,而不是在资源313上,所述资源313可能是用于其他目的的裸金属计算节点。因此,根据正安装的服务或应用程序模板的需求,以及系统状态220的状况,控制器在这个实例中可将计算节点313选择用于部署下一个需要的资源vm(3)323。

系统的计算资源可被配置为共享存储节点的存储资源上的存储。

用户可通过用户界面110或应用程序来请求为系统100设置服务。所述服务可包括但不限于:电子邮件服务;web服务;用户管理服务;网络提供商;ldap;dev工具;voip;认证工具;计费。

api应用程序120翻译用户或应用程序请求并且向控制器200发送消息。控制器200的服务模板或镜像230用于辨别所述服务需要哪些资源。待使用的资源之后基于根据it系统状态220的可用性而辨别。控制器200为所需的计算服务对计算节点311、312或313中的一者或多者发出请求,为所需的存储资源对存储资源410发出请求,并且为所需的联网资源对网络资源610发出请求。之后更新it系统状态220,从而辨别待分配的资源。然后根据所述服务或应用程序的模板230使用全局系统规则210来将所述服务安装到所分配的资源。

根据一个示例实施方案,无论是同一个服务还是不同的服务都可使用多个计算节点,同时例如,可在计算节点之间共享存储服务和/或网络提供商池。

参考图8a,示出了系统100,其中控制器200,以及计算资源300、存储资源400和联网资源600在同一个或共享物理硬件,诸如单个节点上。图1至图10中所述和所示的各种特征可被并入到单个节点中。当节点驱动时,将控制器镜像加载在节点上。计算资源300、存储资源400和联网资源600利用模板230并使用全局系统规则210来配置。控制器200可被配置为将计算后端318、319加载为计算资源,所述计算后端可能被添加或不被添加到所述节点上或者一个或多个不同的节点上。此类后端318、319可包括但不限于:用于创建虚拟计算资源、联网资源和存储资源的虚拟化技术、容器和多租户进程。

应用程序或服务725,例如web、电子邮件、核心网络服务(dhcp、dns等)、协作工具可安装在节点/装置上与控制器200共享的虚拟资源上。这些应用程序或服务可独立于控制器200移动到物理资源或虚拟资源。应用程序可在单个节点上的虚拟机上运行。

图8b示出了用于从单节点系统扩展到多节点系统(诸如具有如图8a所示的节点318和/或319)的示例过程流。因此,参考图8a和图8b,我们考虑了在单个服务器上运行的具有控制器200的it系统;其中期望将所述it系统向外扩展为多节点it系统。由此,在扩展之前,it系统处于单节点状态。如图8a所示,控制器200在多租户单节点系统上运行以驱动各种it系统管理应用程序和/或资源,所述管理应用程序和/或资源可包括但不限于:存储资源、计算资源、超级管理系统和/或容器主机。

在步骤800.2处,通过经由带外管理连接260、带内管理连接270、san280和/或网络290连接新的物理资源来将新的物理资源耦合到单节点系统。出于这个实例的目的,这个新的物理资源也可被称为硬件或主机。控制器200可在管理网络上检测新资源,然后查询装置。可选地,新的装置可将宣告其自身的消息广播到控制器200。例如,可通过mac地址、带外管理和/或启动进入初步os,并使用带内管理来辨别新的装置,从而辨别硬件类型。在任一事件下,在步骤800.3处,新的装置都将有关其节点类型以及其当前可用的硬件资源和软件资源的信息提供到控制器。控制器200之后了解新的装置以及其能力。

在步骤800.4处,可将分派到运行控制器200的系统的任务分配到新主机。例如,如果所述主机预加载有操作系统(诸如存储主机操作系统或超级管理系统),则控制器200分配新的硬件资源和/或能力。控制器之后可提供镜像并供给新硬件,或者新硬件可从控制器请求镜像并且使用上文和下文公开的方法来配置其自身。如果新主机无法托管存储资源或虚拟计算资源,则可使新资源可用于控制器200。控制器200之后可将现有的应用程序移动和/或分派到新资源,或者将新资源用于新创建的应用程序或后来创建的应用程序。

在步骤800.5处,it系统可保持其当前的应用程序在控制器上运行或者将所述当前的应用程序迁移到新硬件。如果迁移虚拟计算资源,则可使用vm迁移技术(诸如qemu+kvm的迁移工具)并且更新系统状态以及新的系统规则。下文论述的改变管理技术可用于可靠而安全地进行这些改变。由于更多应用程序可能会被添加到所述系统,因此控制器可使用各种技术中的任一种技术来确定如何分配系统的资源,所述各种技术包括但不限于:轮询技术、加权轮询技术、最少利用技术、加权最少利用技术、基于利用情况而进行辅助训练的预测技术、调度技术、期望容量技术以及容量上限技术。

图8c示出了用于将存储资源迁移到新的物理存储资源的示例过程流。存储资源之后可能会形成镜像,被迁移,或实现其组合(例如,存储可能会形成镜像,然后原始存储资源被断开)。在步骤820处,通过使新的存储资源联系控制器或者让控制器发现所述新的存储资源来将存储资源耦合到所述系统。这可利用带外管理连接260、带内管理连接270、san网络280或用应用程序网络可能正使用的平面网络或者其组合来完成。在带内管理下,可预启动操作系统,并且可将新资源连接到控制器。

在步骤822处,在新的存储资源上创建新的存储目标;并且在步骤824处可将此记录在数据库中。在一个实例中,可通过拷贝文件来创建存储目标。在另一个实例中,可通过创建块装置并拷贝数据(所述数据可以是呈一个或多个文件系统blob的形式)来创建存储目标。在另一个实例中,可通过以下方式来创建存储目标:在块装置之间对2或更多个存储资源形成镜像(例如,创建raid)并且任选地经由一种或多种远程存储传输来连接,所述远程存储传输包括但不限于:iscsi、iser、nvmeof、nfs、nfsoverrdma、fc、fcoe、srp等。在步骤824处的数据库输入可包含计算资源(或其他类型的资源和/或主机)远程或本地(如果存储资源与其他资源或主机在同一个装置上的话)连接到新的存储资源的的信息。

在步骤826处,同步存储资源。例如,可对所述存储形成镜像。作为另一个实例,可使所述存储离线并且同步所述存储。在步骤826处可采用诸如raid1(或其他类型的raid-但是通常是raid1或raid0,如果需要则也可以是raid110(镜像raid10)(mdadm、zfs、btrfs、硬件raid))的技术。

然后,在步骤828处的数据库记录之后,任选地连接来自旧存储资源的数据(如果之后发生了所述操作,则数据库可包含与拷贝所述数据的状况相关的信息,如果此类数据必须记录的话)。如果存储目标正被迁移离开原先的主机(例如,如先前根据图8a和图8b所说明从单节点系统移动到多节点系统和/或分布式it系统),则新的存储资源可在步骤830处由控制器、系统状态、计算资源或其组合指定为主要存储资源。这可作为移除旧存储资源的步骤来完成。在一些情况下,然后会需要更新连接到资源的物理或虚拟主机,并且在一些情况下可在步骤832处在过渡期间切断所述物理或虚拟主机(之后会重新启动)(这可本文公开的技术来驱动物理或虚拟主机)。

图8d示出了用于将多租户系统的单个节点上的虚拟机、容器和/或进程迁移到可能具有用于计算和存储的单独的硬件的多节点系统的示例过程流。在步骤850处,控制器200创建可能在新节点(例如,参见图8a中的节点318和319)上的新的存储资源。在步骤852处,之后可切断旧应用程序主机。然后,在步骤854处,拷贝或同步数据。通过先在步骤852处关闭所述主机,之后在步骤854处进行拷贝/同步,所述迁移在其涉及将vm从单个节点迁移出来的情况下将更为安全。对于从vm转向物理资源,切断也将是有益的。步骤854也可在关闭之前经由数据预先同步步骤862来完成,这可以帮助最小化相关联的停机时间。此外,可能不会像在步骤852处一样关闭主机,在此情况下,旧主机保持在线,直到新主机准备就绪(或新的存储资源准备就绪)为止。下文将更详细地论述用于避免切断步骤852的技术。在步骤854处,除非使用热备用对存储资源形成镜像或同步所述存储资源,否则可任选地同步数据。

新的存储资源现在是可操作的,并且可在步骤856处记录在数据库中,使得控制器200能够在步骤858处将新主机连接到新的存储资源。当从具有多个虚拟主机的单个节点迁移时,可能需要针对多个主机重复这个过程(步骤860)。启动顺序可由控制器逻辑使用应用程序(如果所述应用程序被跟踪的话)的依赖关系来确定。

图8e示出了用于在系统中从单个节点扩展到多个节点的另一个示例过程流。在步骤870处,将新资源耦合到单节点系统。控制器可具有用于所述系统的一组系统规则和/或扩展规则(或者所述控制器可基于服务运行、所述服务的模板以及服务对彼此的依赖性而获得扩展规则)。在步骤872处,控制器检查此类供使用的规则以有助于扩展。

如果新的物理资源包含存储资源,则可在步骤874处将存储资源从单节点或其他形式的更简单的it系统移走(或可对存储资源形成镜像)。如果移动存储资源,则可在移动存储资源之后在步骤876处重新加载或重新启动计算资源或运行资源。在另一个实例中,可在步骤876处将计算资源连接到镜像存储资源并且使所述计算资源保持运行,同时可断开或禁用单节点系统上的旧存储资源或者先前的系统的硬件资源。例如,运行服务可耦合到2个镜像块装置-一个镜像块装置在单节点服务器上(例如,使用mdadmraid1),并且另一个镜像块装置在存储资源上;并且一旦数据被同步,则就可断开单节点服务器上的驱动器。先前的硬件仍可包含it系统的多个部分并且可与控制器在同一个节点上以混合模式运行所述系统(步骤878)。所述系统可继续通过这个迁移过程迭代,直到原始节点仅驱动控制器为止,由此所述系统被分布(步骤880)。另外,在图8e过程流的每个步骤处,控制器可更新系统状态220并且将所述系统的任何改变记录在数据库中(步骤882)。

参考图9a,应用程序910安装在资源900上。资源900可以是如本文关于图1至图10所描述的计算资源310、存储资源410或联网资源610。资源900可以是物理资源。物理资源可包括物理机或物理it系统部件。资源900可以例如是物理计算资源、存储资源或联网资源。资源900可与如本文关于图2a至图10所描述的其他计算资源、联网资源或存储资源一起耦合到系统100中的控制器200。

资源900在开始时可以是关闭的。资源900可通过以下网络耦合到控制器:带外管理连接260、带内管理连接270、san280和/或网络290。资源900还可耦合到一个或多个应用程序网络390,在所述应用程序网络处,服务、应用程序用户和/或客户端可彼此通信。带外管理连接260可耦合到当资源900插入时开启的独立的带外管理装置915或资源900的电路。所述装置可允许特征,包括但不限于:驱动/切断装置、附连到控制台并输入命令、监视温度和其他计算机健康相关元素以及设定bios设定195和在操作系统范围之外的其他特征。

控制器200可通过带外管理网络260检测资源900。所述控制器还可辨别资源的类型并且使用带内管理或带外管理来辨别所述资源的配置。控制器逻辑205可被配置为在带外管理260或带内管理270中仔细检查附加硬件。如果检测到资源900,则控制器逻辑205可使用全局系统规则220来确定资源900是将自动地配置还是通过与用户交互来配置。如果所述资源是自动地添加,则设置将遵循控制器200内的全局系统规则210。如果所述资源是由用户添加,则控制器200内的全局系统规则210可能会要求用户确认资源的添加以及用户想要如何处理计算资源。控制器200可查询api应用程序或以其他方式请求用户或控制栈的任何程序来确认新资源已被授权。授权过程也可使用密码术来自动地且安全地完成以确认新资源的合法性。资源900之后被添加到it系统状态220,这包括资源900插入其中的交换机或网络。

控制器200可通过带外管理网络260驱动所述资源。控制器200可使用带外管理连接260来驱动物理资源并且配置bios195。控制器200可自动地使用控制台190并且选择所需的bios选项,这可由控制器200利用镜像识别读取控制台镜像并通过带外管理控制控制台190来完成。启动状态可通过镜像识别经由资源900的控制台,或由带外管理利用虚拟键盘查询所述资源上正监听的服务,或者查询应用程序910的服务来确定。一些应用程序可具有允许控制器200监视应用程序910中的设定,或者在一些情况下使用带内管理270改变所述设定的进程。

在物理资源900上(或如本文关于图1至图10所描述的资源300、310、311、312、313、400、410、411、412、600、610)的应用程序910可通过san280或另一个网络使用bios启动选项或配置远程启动,诸如启用pxe启动或flex启动的其他方法来启动。另外地或可选地,控制器200可使用带外管理260和/或带内管理连接270来指示物理资源900以启动镜像950中的应用程序镜像。控制器可配置关于所述资源的启动选项,或者可使用现有的启用的远程启动方法,诸如pxe启动或flex启动。控制器200可任选地或可选地使用带外管理260来从iso镜像启动,配置本地盘,然后指示所述资源从一个或多个本地盘920启动。一个或多个本地盘可加载启动文件。这可通过使用带外管理260、镜像识别和虚拟键盘来完成。所述资源还可能安装有启动文件和/或启动加载器。资源900和应用程序可使用全局系统规则210和控制器逻辑205例如通过san280从加载自模板230的镜像950启动。全局系统规则220可指定启动顺序。例如,全局系统规则220可能会要求首先启动资源900,然后启动应用程序910。一旦使用镜像950启动资源900,通过带内管理连接270接收的与资源900相关的信息就也可被收集和添加到it系统状态220。资源900可被添加到存储资源池,并且所述资源将变为由控制器200管理并在it系统状态220中加以跟踪的资源。应用程序910也可使用镜像950或加载在资源900上的应用程序镜像956以全局系统规则220指定的顺序启动。

控制器200可利用带外管理连接260或另一种连接配置联网资源610以将应用程序910连接到应用程序网络390。物理资源900可连接到远程存储,诸如块存储资源,诸如包括但不限于:iser(iscsioverrdma)、nvmeoffcoe、fc或iscsi、或者另一种存储后端,诸如swift、gfuster或cephfs。it系统状态220可在服务或应用程序启动并运行时使用带外管理连接260和/或带内管理连接270来更新。控制器200可使用带外管理连接260或带内管理连接270来确定物理资源900的电力状态,即确定为是接通还是切断。控制器200可使用带外管理连接260或带内管理连接270来确定服务或应用程序是处于运行状态还是处于启动状态。控制器可基于其所接收的信息以及全局系统规则210而采取其他动作。

图9b示出了直接或间接地(例如通过另一个资源或数据库)从模板230加载到计算节点以启动应用程序910的镜像950。镜像950可包括用于应用程序910的自定义内核941。

镜像950可包括用于资源类型和硬件的启动文件940。启动文件940可包括对应于待部署的资源、应用程序或服务的内核941。启动文件940还可包括initrd或用于辅助启动过程的类似的文件系统。启动系统940可包括被配置用于不同的硬件类型和资源类型的多个内核或initrd。此外,镜像450可包括文件系统951。文件系统951可包括基础镜像952和对应的文件系统,以及服务镜像953和对应的文件系统,以及易失性镜像954和对应的文件系统。所加载的文件系统和数据可根据资源类型和待运行的应用程序或服务而变化。基础镜像952可包括基础操作系统文件系统。基础操作系统可以是只读的。基础镜像952还可包括操作系统的与正在运行什么无关的基础工具。基础镜像952可包括基础目录和操作系统工具。服务文件系统953可包括用于资源、应用程序或服务的配置文件和规范。易失性文件系统594可包含特定于那一种部署的信息或数据,诸如二进制应用程序、特定地址和其他信息,所述信息或数据可配置或不配置为变量,所述变量包括但不限于:密码、会话密钥和私有密钥。文件系统可使用诸如overlayfs的技术作为一个单独的文件系统进行挂载,以允许一些只读文件系统和一些读-写文件系统,从而减少用于应用程序的复制数据的量。

图9c示出了从nt包安装应用程序的实例,所述nt包可以是一种类型的模板230。在步骤900.1处,控制器确定需要安装包blob。在步骤900.2处,控制器针对blob类型(块、文件、文件系统)在默认的数据存储上创建存储资源。在步骤900.3处,控制器经由可用于存储资源类型的存储传输连接到存储资源。在步骤900.4处,控制器将包blob拷贝到所连接的存储资源。控制器之后从存储资源断开(步骤900.5)并且将存储资源设定为只读(步骤900.6)。然后成功地安装包blob(步骤900.7)。

在另一个实例中,随附的附录b描述了有关所述系统如何将计算资源连接到overlayfs的示例细节。此类技术可使用来方便以下操作:根据图9a在资源上安装应用程序,或者根据来自图2f的步骤205.11从存储资源激活计算资源。

图9d示出了部署在资源900上的应用程序910。资源900可包括计算节点,所述计算节点可包括虚拟计算资源,例如,所述虚拟计算资源可包括超级管理系统920、一个或多个虚拟机921、922和/或容器。资源900可以与本文关于图1至图10所描述类似的方式使用加载在资源900上的镜像950来配置。在这个实例中,资源920被示出为由超级管理系统管理虚拟机921、922。控制器200可使用带内管理270来与托管超级管理系统920的资源900通信,以创建资源并配置所述资源并且分配适当的硬件资源,所述硬件资源包括但不限于:cpuram、gpu、远程gpu(其可使用rdma来远程地连接到另一个主机)、网络连接、网络构架连接和/或接至分区和/或分段网络的虚拟和物理连接。控制器200可使用虚拟控制台190(例如,包括但不限于spice或vnc)和镜像识别来控制资源900和超级管理系统920。另外地或可选地,或控制器200可使用带外管理260或带内管理连接270来指示超级管理系统920使用全局系统规则210从模板230启动应用程序镜像950。镜像950可存储在控制器200上,或者控制器200可将所述镜像移动或拷贝到存储资源410。用于vm921、922的启动镜像可在本地作为文件例如存储在镜像950、或块装置上或存储在远程主机上,并且使用镜像类型,诸如qcow2或原始镜像通过文件共享,例如像nfsoverrdma/nfs来共享,或者所述启动镜像可使用iscsi、iser、nvmeof、fc、fcoe来使用远程块装置。镜像950的部分可存储在存储资源410或计算节点310上。控制器200可使用全局规则和/或模板经由带外管理连接260或另一种连接来适当地配置联网资源610以支持所述应用程序。资源900上的应用程序910可通过以下方式来启动:使用经由san280或另一个网络加载的镜像950,使用bios启动选项或允许资源900上的超级管理系统920连接到块存储资源,诸如包括但不限于:iser(iscsioverrdma)、nvmeoffcoe、fc或iscsi、或者另一种存储后端,诸如swift、gfuster或cephfs。存储资源可从关于某一存储资源的模板目标进行拷贝。it系统状态220可通过向超级管理系统920查询信息来更新。带内管理连接270可与超级管理系统920通信并且可使用来确定资源的电力状态,即确定为是接通还是切断或者确定启动状态。超级管理系统920还可使用接至虚拟化应用程序910的虚拟带内连接923并且使用超级管理系统920来实现与带外管理类似的功能。根据服务或应用程序是否被驱动或启动,此信息可指示所述服务或应用程序是否启动和运行。

启动状态可通过镜像识别经由资源900的控制台190,或由带外管理260利用虚拟键盘查询所述资源上正监听的服务,或者查询应用程序910自身的服务来确定。一些应用程序可具有允许控制器200监视应用程序910中的设定,或者在一些情况下使用带内管理270改变所述设定的进程。一些应用程序可以是在虚拟资源上,并且控制器200可通过使用带内管理270(或带外管理260)与超级管理系统920通信来进行监视。应用程序910可能不具有这种用于监视的进程(或这种进程可被关闭来节省资源)和/或添加输入的进程;在这种情况下,控制器200可使用带外管理连接260并且使用镜像处理和/或虚拟键盘来登录到所述系统以进行改变和/或打开管理进程。与虚拟计算资源类似,可使用虚拟机控制台190。

图9e示出了用于将虚拟计算资源主机添加到it系统100的示例过程流。在步骤900.11处,将能够作为虚拟计算资源的主机添加到所述系统。控制器可根据图15b的过程流配置裸金属服务器(步骤900.12);或者可预加载操作系统和/或可预先配置主机(步骤900.13)。之后将所述资源添加到系统状态220作为虚拟计算资源池(步骤900.14),并且所述资源变得可由控制器200通过api来访问(步骤900.15)。api通常通过带内管理连接270来访问;然而,带内管理连接270可利用虚拟键盘选择性地启用和/或禁用;并且控制器可使用带外管理连接260以及虚拟键盘和监视器来通过带外连接260通信(步骤900.16)。在步骤900.17处,控制器现可利用新资源作为虚拟计算资源。

示例多控制器系统:

参考图10,示出了系统100,所述系统100具有:如本文关于图1至图10所描述的计算资源300、310,所述计算资源300、310包括多个物理计算节点311、312、313;如本文所述的存储资源400、410,所述存储资源400、410是呈多个存储节点411、412和jbod413的形式;多个控制器200a、200b,所述多个控制器200a、200b包括部件205、210、220、230(图1至图9c)并且像本文描述的控制器200那样配置;如本文所述的联网资源600、610,所述联网资源600、610包含多个构架611、612、613;以及应用程序网络390。

图10示出了一个示例实施方案的系统100的部件的可能布置,同时不对系统100的部件的可能布置进行限制。

用户界面或应用程序110与api应用程序120通信,所述api应用程序120与控制器200a或200b中的任一者或两者通信。控制器200a、200b可耦合到带外管理连接260、带内管理连接270、san280或联网带内管理连接290。如本文参考图1至图9c所描述,控制器200a、200b通过连接260、270、280以及任选地290耦合到计算节点311、312、313,存储411、412(包括jbod413)和联网资源610。应用程序网络390耦合到计算节点311、312、313,存储资源411、412、413和联网资源610。

控制器200a、200b可并行地操作。控制器200a或200b中的任一者最初可如本文关于图1至图9c所描述作为主控制器200进行操作。控制器200a、200b可被布置为从切断状态配置整个系统100。控制器200a、200b中的一者还可通过经由带外连接260和带内连接270探测其他控制器而从现有配置填充系统状态220。控制器200a、200b中的任一者可通过一个或多个连接260、270从资源或其他控制器访问或接收资源状况和相关信息。控制器或其他资源可更新其他控制器。因此,当附加控制器被添加到所述系统时,所述附加控制器可被配置为将系统100复原回到系统状态220。在所述控制器中的一者或主控制器发生故障的情况下,其他控制器可被指定为主控制器。it系统状态220还可能能够从所述资源上可用或存储的状况信息进行重建。例如,应用程序可部署在计算资源上,其中所述应用程序被配置为创建虚拟计算资源,在所述虚拟计算资源处存储或复制系统状态。全局系统规则210、系统状态220和模板230还可被保存或拷贝在某一资源或资源组合上。因此,如果所有控制器被迫离线并且添加了新的控制器,则所述系统可被配置为允许新的控制器复原系统状态220。

联网资源610可包括多个网络构架。例如,如图10所示,多个网络构架可包括以下各项中的一者或多者:sdn以太网交换机611、roce交换机612、无限带宽交换机613、或者其他交换机或构架614。在计算节点上包括虚拟机的超级管理系统可利用所述构架中的所需的一者或多者连接到物理交换机或虚拟交换机。联网布置可准许例如出于安全或其他资源优化目的而例如通过分段联网来限制物理网络。

系统100可通过如本文在图1至图10中所描述的控制器200自动地设置服务或应用程序。用户可通过用户界面110或应用程序来请求为系统100设置服务。所述服务可包括但不限于:电子邮件服务;web服务;用户管理服务;网络提供商;ldap;dev工具;voip;认证工具;计费软件。api应用程序120翻译用户或应用程序请求并且向控制器200发送消息。控制器200的服务模板或镜像230用于辨别所述服务需要哪些资源。所需的资源基于根据系统状态220的可用性而辨别。控制器200为所需的计算服务对计算资源310或者计算节点311、312或313发出请求,为所需的存储资源对存储资源410发出请求,并且为所需的联网资源对网络资源610发出请求。之后更新系统状态220,从而辨别待分配的资源。然后根据服务模板使用全局系统规则210来将所述服务安装到所分配的资源。

增强的系统安全性:

参考图13a,示出了it系统100,其中系统100包括资源1310,其中资源1310可以是裸金属或物理资源。虽然图13a仅示出了连接到系统100的单个资源1310,但是应理解,系统100可包括多个资源1310。一个或多个资源1310可以是或可包括裸金属云节点。裸金属云节点可包括但不限于连接到外部网络1380的允许远程访问物理主机或虚拟机,允许创建虚拟机,允许外部用户在一个或多个资源上执行代码的资源。一个或多个资源1310可直接或间接地连接到外部网络1380或应用程序网络390。外部网络1380可以是互联网或不由控制器200或it系统100的多个控制器管理的一个或多个其他资源。外部网络1380可包括但不限于:互联网、一种或多种互联网连接、不由控制器管理的一个或多个资源、其他广域网(例如,stratcom、对等网状网络、或者可或不可公开访问的其他外部网络)或其他网络。

当物理资源1310被添加到it系统100a时,所述物理资源耦合到控制器200并且可切断所述物理资源。资源1310通过以下一个或多个网络耦合到控制器200a:带外管理(oobm)连接260、任选地带内管理(ibm)连接270以及任选地san连接280。如本文所使用的san280可包括或不包括配置san。配置san可包括用于驱动或配置物理资源的san。配置san可以是san280的一部分或者可与san280分离。带内管理也可包括可为或不可为如本文所说明的san280的配置san。在使用资源时,配置san还可能是禁用、断开或不可用的。虽然oobm连接260对于系统100的os来说是不可见的,但是ibm连接270和/或配置san对于系统100的os来说可能是可见的。图13a的控制器200可以与本文参考图1至图12b描述的控制器200类似的方式进行配置。资源1310可包括内部存储。在一些配置中,控制器200可填充存储并且可暂时地将所述资源配置为连接到san以获取数据和/或信息。带外管理连接260可耦合到当资源1310插入时开启的独立的带外管理装置315或资源1310的电路。装置315可允许特征,包括但不限于:驱动/切断装置、附连到控制台并输入命令、监视温度和其他计算机健康相关元素以及设定bios设定和在操作系统范围之外的其他特征。控制器200可通过带外管理网络260查看资源1310。所述控制器还可辨别资源的类型并且使用带内管理或带外管理来辨别所述资源的配置。下文论述的图13c至图13e示出了用于将物理资源1310添加到it系统100a和/或以增强系统安全性的方式起动或管理系统100的各种过程流。

如本文参考网络、联网资源、网络装置和/或联网接口所使用的术语“禁用”指代此类网络、联网资源、网络装置和/或联网接口实现以下操作所利用的动作:切断(手动地或自动地),物理地断开和/或虚拟地或以某一其他方式(例如,滤除)与网络,即虚拟网络(包括但不限于:vlan、vxlan、无限带宽分区)断开。术语“禁用”还涵盖对可操作性的单向或单方面限制,诸如防止资源向目的地发送或写入数据(同时仍然有能力从资源接收或读取数据),防止资源从某个源接收或读取数据(同时仍然有能力向目的地发送或写入数据)。此类网络、联网资源、网络装置和/或联网接口可与附加网络、虚拟网络断开或从资源的耦合中断开,并且保持连接到先前连接的网络、虚拟网络或资源的耦合。此外,此类联网资源或装置可从一个网络、虚拟网络或资源的耦合切换到另一者。

如本文参考网络、联网资源、网络装置和/或联网接口所使用的术语“启用”指代此类网络、联网资源、网络装置和/或联网接口实现以下操作所利用的动作:驱动(手动地或自动地),物理地连接和/或虚拟地或以某一其他方式连接到网络,即虚拟网络(包括但不限于:vlan、vxlan、无限带宽分区)。此类网络、联网资源、网络装置和/或联网接口可在已连接到另一个系统部件的情况下连接到附加网络、虚拟网络或资源的耦合。此外,此类联网资源或装置可从一个网络、虚拟网络或资源的耦合切换到另一者。术语“启用”还涵盖对可操作性的单向或单方面允许,诸如允许资源向目的地发送、写入数据或从所述目的地接收数据(同时仍然有能力限制来自某个源的数据),允许资源向某个源发送数据,从所述源接收或读取数据(同时仍然有能力限制来自目的地的数据)。

控制器逻辑205被配置为在带外管理连接260或带内管理连接270和/或配置san280中仔细检查添加的硬件。如果检测到资源1310,则控制器逻辑205可使用全局系统规则220来确定资源是将自动地配置还是通过与用户交互来配置。如果所述资源是自动地添加,则设置将遵循控制器200内的全局系统规则210。如果所述资源是由用户添加,则控制器200内的全局系统规则210可能会要求用户确认资源的添加以及用户想要如何处理资源1310。控制器200可查询api应用程序或以其他方式请求用户或控制栈的任何程序来确认新资源已被授权。授权过程也可使用密码术来自动地且安全地完成以确认新资源的合法性。控制器逻辑205之后将资源1310添加到it系统状态220,这包括资源1310插入其中的交换机或网络。

在资源是物理的情况下,则控制器200可通过带外管理网络260驱动资源,并且资源1310可使用全局系统规则210和控制器逻辑205例如通过san280从加载自模板230的镜像350启动。所述镜像可通过其他网络连接或者间接地通过另一个资源来加载。一旦被启动,与资源1310相关的信息就也可被收集和添加到it系统状态220。这可通过带内管理和/或配置san或带外管理连接来完成。资源1310可使用全局系统规则210和控制器逻辑205例如通过san280从加载自模板230的镜像350启动。所述镜像可通过其他网络连接或者间接地通过另一个资源来加载。一旦被启动,通过带内管理连接270接收的与计算资源310相关的信息就也可被收集和添加到it系统状态220。资源1310之后可被添加到存储资源池,并且所述资源将变为由控制器200管理并在it系统状态220中加以跟踪的资源。

带内管理和/或配置san可由控制器200使用来设置、管理、使用资源1310或与所述资源通信并且运行任何命令或任务。然而,任选地,带内管理连接270可由控制器200配置为在任何时间或在设置、管理、使用或操作系统100或控制器200期间关闭或禁用。带内管理也可被配置为在任何时间或在设置、管理、使用或操作系统100或控制器200期间开启或启用。任选地,控制器200可以可控制地或可切换地使资源1310与接至一个或多个控制器200的带内管理连接270断开。这种断开或可断开性可以是物理的,例如使用自动化物理开关或某种开关来切断资源到网络的带内管理连接和/或配置san。断开例如可通过由网络交换机关断连接到资源1310的带内管理270和/或配置san280的端口的电力来完成)。这种断开或部分断开还可使用软件定义的联网来完成,或者可使用软件定义的联网关于控制器物理地滤除。这种断开可通过控制器经由带内管理或带外管理来完成。根据示例实施方案,在资源1310被添加到it系统之前、期间或之后的任何时间点处,资源1310都可响应于来自控制器200的选择性控制指令而与带内管理连接270断开。

使用软件定义的联网,带内管理连接270和/或配置san280可保留或不保留某种功能。带内管理270和/或配置san280可用作有限的连接,以进行前往或始于控制器200或前往其他资源的通信。可对连接270进行限制以防止攻击者转移到控制器200、其他网络或其他资源。所述系统可被配置为防止诸如控制器200和资源1310的装置公开地通信以避免损害资源1310。例如,带内管理270和/或配置san280通过软件定义的联网或硬件改变方法(诸如电子限制)可能仅允许带内管理和/或配置san输送数据但是不接收任何内容。带内管理和/或配置san可物理地或使用仅允许从控制器到资源的写入的软件定义的联网来配置为从控制器200到资源1310的单向写入部件或单向写入连接。连接的单向写入性质还可根据对安全的期望和系统操作的不同阶段或时间来控制或者开启或关闭。所述系统还可被配置为使得所述资源到控制器的写入或通信限于例如传达日志或报警。接口同样可通过以下技术移动到其他网络或在网络中进行添加和移除,所述技术包括但不限于:软件定义的联网、vlans、vxlans和/或无限带宽分区。例如,接口可连接到设置网络,从所述网络移除并且移动到用于运行时间的网络。可切断或限制从控制器到所述资源的通信,使得控制器在物理上可能无法对从资源1310发送的任何数据作出响应。根据一个实例,一旦资源1310被添加和启动,带内管理270就可被关闭,或者物理地或使用软件定义的联网滤除。带内管理可被配置为使得其能够向专用于日志管理的另一个资源发送数据。

带内管理可使用带外管理或软件定义的联网来开启和关闭。在带内管理断开的情况下,可能不需要守护进程运行,并且可使用键盘功能来重新启用带内管理。

另外,任选地,资源1310可能不具有带内管理连接,并且所述资源可通过带外管理来管理。

可选地或此外,带外管理可使用来通过以下方式操纵所述系统的各个方面,所述方式包括但不限于:例如键盘、虚拟键盘、盘安装控制台、附连虚拟盘、改变bios设定、改变启动参数和所述系统的其他方面、运行可能存在于可启动镜像上或安装cd的现有脚本、或者带外管理的允许控制器200和资源1310在暴露或没有暴露资源1310上运行的操作系统的情况下通信的其他特征。例如,控制器200可通过带外管理260使用此类工具来发送命令。控制器200还可使用镜像识别来协助控制资源1310。因此,使用带外管理连接,所述系统可防止或避免对通过带外管理连接连接到所述系统的所述资源的不期望的操纵。带外管理连接也可在操作所述系统期间或在操作所述系统期间的选定时间处配置为单向通信系统。

另外,如果从业人员需要的话,则带外管理连接260还可由控制器200以与带内管理连接相同的方式选择性地控制。

控制器200可能能够根据全局系统规则自动地开启和关闭资源,并且出于由it系统用户确定的原因,诸如为了节省电力而关闭资源,或者为了提高应用程序性能而开启资源或者it系统用户可能有的任何其他原因而更新it系统状态。控制器还可能能够开启和关闭配置san、带内管理连接和带外管理连接,或者在系统操作的任何时间期间并出于各种安全目的而将此类连接指定为单向写入连接(例如,在资源1310连接到外部网络1380或内部网络390时禁用带内管理连接270或配置san280)。也可使用单向带内管理来例如监视系统的健康,监视对于操作系统来说可能可见的日志和信息。

资源1310还可耦合到一个或多个内部网络390,诸如应用程序网络,在所述内部网络处,服务、应用程序用户和/或客户端可彼此通信。此类应用程序网络390也可能连接到外部网络1380或能够连接到所述外部网络。根据本文的包括但不限于图2a至图12b的示例实施方案,带内管理可被断开,能够与资源或应用程序网络390断开,或者可从控制器提供单向写入,在所述资源或应用程序网络连接到外部网络的情况下,或者在所述资源连接到没有连接到外部网络的应用程序网络的情况下提供额外的安全性。

图13a的it系统100可被配置为类似于如图3b所示的it系统100;镜像350可直接或间接地(通过另一个资源或数据库)从模板230加载到资源1310以启动计算资源和/或加载应用程序。镜像350可包括用于资源类型和硬件的启动文件340。启动文件340可包括对应于待部署的资源、应用程序或服务的内核341。启动文件340还可包括initrd或用于辅助启动过程的类似的文件系统。启动系统340可包括被配置用于不同的硬件类型和资源类型的多个内核或initrd。此外,镜像350可包括文件系统351。文件系统351可包括基础镜像352和对应的文件系统,以及服务镜像353和对应的文件系统,以及易失性镜像354和对应的文件系统。所加载的文件系统和数据可根据资源类型和待运行的应用程序或服务而变化。基础镜像352可包括基础操作系统文件系统。基础操作系统可以是只读的。基础镜像352还可包括操作系统的与正在运行什么无关的基础工具。基础镜像352可包括基础目录和操作系统工具。服务文件系统353可包括用于资源、应用程序或服务的配置文件和规范。易失性文件系统354可包含特定于那一种部署的信息或数据,诸如二进制应用程序、特定地址和其他信息,所述信息或数据可配置或不配置为变量,所述变量包括但不限于:密码、会话密钥和私有密钥。文件系统可使用诸如overlayfs的技术作为一个单独的文件系统进行挂载,以允许一些只读文件系统和一些读-写文件系统,从而减少用于应用程序的复制数据的量。

图13b示出了多个资源1310,所述多个资源1310各自包括托管或包括一个或多个虚拟机的一个或多个超级管理系统1311。控制器200a耦合到各自包括裸金属资源的资源1310。如参考图13b所示和所描述,资源1310各自耦合到控制器200a。根据本文的示例实施方案,带内管理连接270、配置san280和/或带外管理连接260可以像关于图13a所描述那样配置。虚拟机或超级管理系统中的一个或多个可能会受到损害或被损害。在常规的系统中,在其他超级管理系统上的其他虚拟机则可能会被损害。例如,这可能会在虚拟机内部的超级管理系统漏洞运行中出现。例如,可能会发生从受损的超级管理系统到控制器200a,以及从受损的控制器200a到耦合到控制器200a的其他超级管理系统的转移。例如,可能会在受损的超级管理系统与目标超级管理系统之间使用连接到两者的网络进行所述转移。图13b所示的控制器200a和资源1310的带内管理270、配置san280或带外管理260的布置(其中所述控制器和资源中的任一者或两者都可被选择性地控制来禁用在控制器200a与资源1310之间的给定链路中的带内连接(或配置san)和/或带外连接)可防止正被使用的受损的虚拟机摆脱一个超级管理系统并且转移到其他资源。

上文关于图1至图12描述的带内管理连接270和带外管理连接260也可以与关于图13a和图13b所描述类似的方式进行配置。

图13c示出了用于将诸如裸金属节点的物理资源添加到系统100,或者管理所述物理资源的示例过程流。可通过带外管理连接260和带内管理连接270和/或san将本文的如图13a和图13b所示或如关于图1至图12所示的资源1310连接到系统100的控制器。

在连接所述资源的实例之后,在步骤1370处禁用外部网络和/或应用程序网络。如上所述,各种技术中的任一种技术都可用于这种禁用。例如,在使用带内管理连接或配置san设置所述系统,添加所述资源,测试所述系统,更新所述系统或者执行其他任务或命令之前,如关于图13a和图13b所描述,禁用系统100的部件(或只有易受攻击的那些部件),将所述部件与任何外部网络或应用程序网络断开,或者将所述部件从任何外部网络或应用程序网络滤除。

在步骤1370之后,在步骤1371处则启用带内管理连接和/或配置san。步骤1370和1371的组合因此使所述资源与外部网络和/或应用程序网络隔离,同时带内管理和/或san连接是活动的。然后,可在控制器200的控制下经由带内管理连接在所述资源上运行命令(参见步骤1372)。例如,之后可在步骤1372处使用带内管理和/或配置san来执行设置和配置步骤(诸如包括但不限于本文关于图1至图13b描述的那些)。可选地或此外,可在步骤1372处使用带内管理和/或配置san来执行其他任务,包括但不限于:操作、更新或管理所述系统(这可包括但不限于任何改变管理或系统更新),测试、更新、传送数据,收集关于性能和健康的信息(包括但不限于:错误、cpu使用、网络使用、文件系统信息和存储使用)以及收集日志和可用于如本文在图1至图13b中所描述管理系统100的其他命令。

在添加所述资源,设置所述系统和/或执行此类任务或命令之后,可在步骤1373处如本文关于图13a和图13b所描述在一个或多个方向上禁用所述资源与控制器或所述系统的其他部件之间的带内管理连接270和/或配置san280。这种禁用可采用如上所述的断开、滤除等等。在步骤1373之后,在步骤1374处则可恢复接至外部网络和/或应用程序网络的连接。例如,控制器可告知联网资源允许资源1310连接到应用程序网络或互联网。在测试或更新所述系统的情况下可遵循相同的步骤,即在启用带内管理连接或将所述带内管理连接连接(单向或双向)到所述资源之前,可断开或滤除带内管理连接,或外部网络和/或应用程序网络。因此,步骤1373和1374一起操作来使所述资源在所述资源连接到外部网络和/或应用程序网络时无法通过带内管理连接和/或配置san连接到控制器。

带外管理可用于管理系统或资源,设置系统或资源,配置、启动或者添加系统或资源。带外管理在用于本文的任何实施方案中的情况下可在启动之前使用虚拟键盘向机器发送命令以改变设定,并且还可通过对虚拟键盘进行输入来向操作系统发送命令;如果所述机器没有登入,则带外管理可使用虚拟键盘来输入用户名和密码并可使用镜像识别来验证登录,并且验证其所输入的命令并检查来查看所述命令是否被执行。如果物理资源仅具有图形控制台,则还可使用虚拟鼠标并且镜像识别将允许带外管理进行改变。

图13d为用于将诸如裸金属节点的物理资源添加到系统100,或者管理所述物理资源的另一个示例过程流。在步骤1380处,可通过带外管理260将本文的如图13a和图13b所示或如图1至图12所示的资源连接到某一系统或资源。可借助于控制器通过经由带外管理提供对盘镜像(例如,iso镜像)的访问来虚拟地连接盘(参见步骤1381)。之后可从盘镜像启动所述资源或所述系统(步骤1382),然后将文件从盘镜像拷贝到可启动盘(参见步骤1383)。这也可用于启动其中资源使用带外管理以此方式进行设置的系统。这还可用于配置和/或启动可能耦合在一起(包括但不限于利用联网资源耦合)的多个资源,而不管所述多个资源是否也包括控制器或构成系统。因此,虚拟盘可使用来允许控制器将盘镜像连接到所述资源,就好像将虚拟盘附连到所述资源一样。带外管理还可用于向所述资源发送文件。可在步骤1383处将_data从虚拟盘拷贝到本地盘。盘镜像可包含所述资源在其操作中可拷贝和使用的文件。文件可通过调度的程序或来自带外管理的指令来拷贝或使用。控制器可通过带外管理使用虚拟键盘来登录到所述资源上,并且输入命令以将文件从虚拟盘拷贝到其自身的盘或所述资源可访问的其他存储。在步骤1384处,配置所述系统或资源以通过设定bios、efi或启动顺序设定来启动,因此将从可启动盘启动所述系统或资源。启动配置可在操作系统中使用efi管理器,诸如efibootmgr,所述efi管理器可通过带外管理或通过将其包括在安装程序脚本中来直接运行(例如,当所述资源启动时,所述资源会自动地运行使用efibootmgr的脚本)。此外,启动选项和任何其他bios改变可通过诸如supermicro启动管理器的带外管理工具使用启动顺序命令或上传bios配置(诸如受supermicro更新管理器支持的xmlbios配置)来设定。bios也可使用键盘和镜像识别从控制台进行配置以设定包括启动顺序的适当的bios设定。安装程序可在加载的预先配置的镜像上运行。可通过观看屏幕并使用镜像识别来测试配置。在配置之后,则可启用所述资源(例如,驱动、启动、连接到应用程序网络,或其组合)(步骤1385)。

图13e示出了用于在这种情况下使用pxe、flex启动或类似的网络启动将诸如裸金属节点的物理资源添加到系统100,或者管理所述物理资源的另一个示例过程流。在步骤1390处,可通过(1)带内管理连接270和/或san以及(2)带外管理连接260将本文的如图13a和图13b所示或如关于图1至图12所示的资源1310连接到系统100的控制器。然后可在步骤1391处禁用外部网络和/或应用程序网络连接(例如,整体或部分物理地,利用sdn或虚拟地滤除或断开)(类似于上文针对步骤1370所论述的内容)。例如,在使用带内管理连接或san设置所述系统,添加所述资源,测试所述系统,更新所述系统或者执行其他任务或命令之前,如关于图13a和图13b所描述,禁用系统100的部件(或只有易受攻击的那些部件),将所述部件与任何外部网络或应用程序网络断开,或者将所述部件从任何外部网络或应用程序网络滤除。

在步骤1392处,确定资源的类型。例如,可使用带外管理工具,或者通过将盘镜像(例如,iso镜像)连接到所述资源,就好像将所述盘附连到所述资源一样来从mac地址收集有关所述资源的信息,以暂时地启动操作系统,所述操作系统具有可用于辨别资源信息的工具。然后,在步骤1393处,将所述资源配置、或辨别为已针对pxe或flex启动等等进行预先配置。之后,在步骤1394处,驱动所述资源来进行pxe、flex启动或类似的启动(或处于暂时地启动,再次驱动所述资源的情况)。然后,在步骤1395处,将所述资源从带内管理连接或san启动,或者从所述带内管理连接或san启动所述资源。在步骤1396处,以与参考图13d的步骤1383所描述类似的方式将数据拷贝到所述资源可访问的盘。然后,在步骤1397处,以与上文关于图13d的步骤1384所描述类似的方式配置所述资源以从一个或多个盘启动。在将所述资源辨别为已针对pxe、flex启动等等进行预先配置的情况下,可在从1393至1396的任何步骤处拷贝文件。如果启用了带内管理,则可在步骤1398处禁用所述带内管理,并且可在步骤1399处重新连接或启用应用程序网络或外部网络。

更进一步地,应理解,除oobm之外的技术也可用于远程地启用(诸如驱动)资源,并且验证所述资源已被启动。例如,所述系统可提示用户按压电源按钮,并且手动地告知控制器所述系统已被启动(或使用接至控制器的键盘/控制台连接)。另外,一旦所述系统已被启动,所述系统就可通过ibm查验控制器,并且控制器登录并告知所述系统重新启动(例如,通过诸如ssh、telnet或另一种在网络上实现的方法的方法)。例如,控制器可通过ssh引入并发送重新启动命令。如果正在使用pxe并且不存在oobm,则在任何情况下,所述系统都应有办法远程地指示所述资源驱动,或者告知用户手动地驱动所述资源。

部署控制器和/或环境:

在示例实施方案中,控制器可从始发控制器200部署在系统内(其中这种始发控制器200可被称为“主控制器”)。因此,主控制器可设置可能是隔离或可隔离的it系统或环境的系统或环境。

如本文所述的环境指代计算机系统内的能够彼此进行互操作的资源的集合。计算机系统在其内可包括多个环境;但是并不需要是这种情况。环境的一个或多个资源可包括在所述环境上运行的一个或多个实例、应用程序或子应用程序。更进一步地,环境可包括一个或多个环境或者子环境。环境可包括或不包括控制器,并且环境可操作一个或多个应用程序。环境的此类资源可包括例如用于运行特定环境,包括所述环境中的应用程序的联网资源、计算资源、存储资源和/或应用程序网络。因此,应理解,环境可提供一个或多个应用程序的功能。在一些实例中,本文描述的环境可或能够与其他环境物理地或虚拟地分离。另外,在其他实例中,环境可具有接至其他环境的网络连接,其中此类连接可根据需要来禁用或启用。

此外,主控制器可在各种环境中或在单独的系统中设置、部署和/或管理一个或多个附加控制器。此类附加控制器可或变得独立于主控制器。即使独立或准独立于主控制器,此类附加控制器也可在操作期间的各个时间处从主控制器(或者单独的监视器或利用监视应用程序的环境)获取指令或向所述主控制器发送信息。所述环境可被配置用于安全目的(例如,通过使得环境能够彼此隔离和/或与主控制器隔离)和/或用于各种管理目的。某一环境可连接到外部网络,而另一个相关环境可连接或不连接,或者被连接或不被连接到外部网络。

主控制器可管理环境或应用程序,而不管所述环境或应用程序是否是单独的系统,而且不管所述环境或应用程序是否包括控制器或子控制器。主控制器还可管理全局配置文件或其他数据的共享存储。主控制器还可根据不同控制器的功能将全局系统规则(例如,系统规则210)或其子集解析到所述不同控制器。每个新的控制器(所述新的控制器可被称为“子控制器”)可接收可能为主控制器的配置规则的子集的新的配置规则。部署到控制器的全局配置规则的子集可取决于或对应于正设置的it系统的类型。主控制器可设置或部署新的控制器或单独的it系统,所述新的控制器或单独的it系统之后例如出于装运或分销或其他原因而与主控制器永久地分离。全局配置规则(或其子集)可定义用于在各种环境中设置应用程序或子应用程序的框架,以及所述应用程序或子应用程序可如何彼此交互。此类应用程序或环境可在包括由主控制器部署的全局配置规则的子集的子控制器上运行。在一些实例中,此类应用程序或环境可由主控制器管理。然而,在其他实例下,此类应用程序或环境不由主控制器管理。如果正在从主控制器产生新的控制器来管理应用程序或环境,则可跨多个应用程序对应用程序进行依赖检查以有助于新的控制器进行控制。

因此,在一个示例实施方案中,系统可包括主控制器,所述主控制器被配置为部署另一个控制器,或包括这种其他控制器的it系统。这种已实现的系统可被配置为与主控制器完全断开。一旦独立,这种系统就可被配置成作为独立的系统进行操作;或者所述系统可在操作期间的各个离散或连续的时间处由诸如主控制器的另一个控制器(或具有应用程序的环境)控制或监视。

图14a示出了示例系统,其中主控制器1401已将控制器1401a和1401b分别部署在不同的系统1400a和1400b上(其中1400a和1400b可被称为子系统;但是应理解,子系统1400a和1400b也可用作环境)。主控制器1401可以与上文论述的控制器200类似的方式进行配置。因此,所述主控制器可包括控制器逻辑205、全局系统规则210、系统状态220和模板230。

系统1400a和1400b分别包括相应地耦合到资源1420a、1420b的控制器1401a、1401b。主控制器1401可耦合到一个或多个其他控制器,诸如子系统1400a的控制器1401a和子系统1400b的控制器1401b。主控制器1400的全局规则210可包括可管理和控制其他控制器的规则。主控制器1401可连同控制器逻辑205、系统状态220和模板230一起使用此类全局规则210来通过控制器1401a、1401b以与本文参考图1至图13e所描述类似的方式设置、供给和部署子系统1400a、1400b。

例如,主控制器1401可将全局规则210(或其子集)作为规则1410a、1410b以如下方式分别加载到子系统1400a、1400b上:全局规则210(或其子集)指出控制器1401a、1401b以及其子系统1400a、1400b的操作。每个控制器1401a、1401b可具有可能为全局规则210的相同或不同子集的规则1410a、1410b。例如,全局规则210的哪个子集被供给到给定子系统可取决于正被部署的子系统的类型。控制器1401还可将待加载的数据加载或引导到系统资源1420a、1420b或控制器1401a、1401b。

主控制器1401可通过一个或多个带内管理连接270和/或一个或多个带外管理连接260或者san连接280来连接到其他控制器1401a、1401b,这些连接可在部署或管理的各个阶段以如本文所述的方式,例如参考图13a至图13e中描述的资源部署和管理进行启用或禁用。使用对带内管理连接270或带外管理连接260的选择性启用和禁用,可以子系统1400a、1400b在各个时间处可能对主系统100或控制器1401或关于彼此不了解(或具有有限、受控或受限的了解)的方式部署子系统1400a、1400b。

在一个示例实施方案中,主控制器1401可操作集中式it系统,所述集中式it系统具有由主控制器1401部署和配置的本地控制器1401a、1401b,使得主控制器1401可部署和/或运行多个it系统。此类it系统可独立或不独立于彼此。主控制器1401可将监视设置为与其已创建的it系统隔离或隔绝的单独的应用程序。用于监视的单独的控制台可被提供为连接在主控制器与一个或多个本地控制器之间和/或连接在可选择性地启用或禁用的环境之间。控制器1401可出于各种用途而部署例如隔离系统,所述隔离系统包括但不限于:商业系统、具有数据存储的制造系统、数据中心以及其他不同的功能节点,所述隔离系统各自具有不同的控制器以防运行中断或发生损害。这种隔离可以是彻底的或永久的,或者可以是准隔离的,例如,临时的、时间或任务相关的、通信方向相关的或其他参数相关的。例如,主控制器1401可被配置为向可能受限于或不限于某些预定义情形的所述系统提供指令,而子系统可能具有有限的能力或没有能力与主控制器通信。因此,这种子系统可能无法损害主控制器1401。主控制器1401和子控制器1401a、1401b可例如,如本文所述(其中下文论述了特定实例)通过禁用带内管理270,通过单向写入和/或通过限制对带外管理260的通信而彼此分离。例如,如果出现漏洞,则一个或多个控制器可关于一个或多个其他控制器禁用带内管理连接270以防止漏洞或访问的扩散。可关闭系统部段或使所述系统部段隔离。

子系统1400a、1400b还可通过带内管理270或带外管理260与另一个环境或系统共享资源或者连接到所述另一个环境或系统。

图14b和图14c是示出用于由主控制器供给子控制器的可能的步骤的示例流程。

在图14b中,在步骤1460处,主控制器供给或设置资源,诸如资源1420a或1420b。在步骤1461处,主控制器供给或设置子控制器。主控制器可使用上文针对在系统内设置资源论述的技术来执行步骤1460和1461。另外,虽然图14b示出了在步骤1461之前执行步骤1460,但是应理解,并不需要是这种情况。使用其系统规则210,主控制器1401可确定需要哪些资源,并且将资源定位到系统或网络上。主控制器可在步骤1461处通过将系统规则210加载到系统上来设置子控制器(或通过向子控制器提供关于如何设置并获取其自身的系统规则的指令)而设置或部署子控制器。这些指令可包括但不限于:配置资源、配置应用程序、用于创建由子控制器运行的it系统的全局系统规则、用于重新连接到主控制器以收集新的或改变的规则的指令、用于与应用程序网络断开以为新的生产环境腾出空间的指令。在部署所述资源之后,在步骤1463处,主控制器则可经由系统规则210和/或系统状态220的更新而将所述资源分派到子控制器。

图14c示出了用于部署的替代过程流。在图14c的实例中,主控制器在步骤1470处部署子控制器(这可以像关于步骤1461所描述那样进行)。然后,在步骤1475处,子控制器使用诸如由图3c和图7b所示的那些的技术来部署所述资源。

图15a示出了用于系统100的主控制器1501产生环境1502、1503和1504的示例系统。环境1502包括资源1522,环境1503包括资源1523,并且环境1504包括资源1524。另外,环境1502、1503、1504可共享对共享资源池1525的访问。此类共享资源可包括但不限于:例如共享数据集、api、或需要彼此通信的应用程序运行。

在图15a的实例中,每个环境1502、1503、1504共享主控制器1501。主控制器1501的全局系统规则210可包括部署和管理环境的规则。资源1522、1523和/或1524可能被其各自的环境1501、1502、1503需要来管理一个或多个应用程序。用于此类应用程序的配置规则可由主控制器实现(或由环境中的本地控制器实现,如果存在的话),以便定义每个这种环境如何操作并且如何与其他应用程序和环境交互。主控制器1401可连同控制器逻辑205、系统状态220和模板230一起使用全局规则210来以与本文参考图1至图14c所描述的资源和系统部署类似的方式设置、供给和部署环境。如果环境包括本地控制器,则主控制器1501可以全局规则(或其子集)定义所述环境的操作的方式将全局规则210(或其子集)加载到本地控制器或相关联的存储上。

控制器1501可使用配置规则与系统规则210相应地部署和配置环境1502、1503、1504的资源1522、1523、1524和/或共享资源1525。控制器1501还可监视环境,或者配置资源1522、1523、1524(或共享资源1525)以允许监视相应的环境1502、1503、1504。这种监视可利用接至可被启用或禁用的单独的监视控制台的连接来进行,或者可通过主控制器来进行。主控制器1501可通过一个或多个带内管理连接270和/或一个或多个带外管理连接260或者san连接280来连接到环境1502、1503、1504中的一者或多者,这些连接可在部署或管理的各个阶段以如本文参考图13a至图13e和图14a中的资源部署和管理所描述的方式进行启用或禁用。使用对带内管理连接270或带外管理连接260或者san连接280的启用和禁用,可以在各个时间处关于彼此或对主系统100或控制器1501可能不了解或具有有限或受控的了解,或者不具有连接或具有有限或受控连接的方式部署环境1502、1503、1504。

所述环境可包括与其他资源耦合或交互,或耦合到连接到外部、外界环境的外部网络1580的一个资源或多个资源。所述环境可以是物理或非物理的。非物理在此上下文中表示环境共享一个或多个相同的物理主机,但是彼此虚拟地分离。所述环境和系统可部署在相同、相似但不同、或不同的硬件上。在一些实例中,环境1502、1503、1504可以是彼此的有效拷贝;但是在其他实例中,环境1502、1503、1504可提供不同于彼此的功能。作为一个实例,环境的资源可以是服务器。

根据本文描述的技术将系统和资源置于单独的环境或子系统中可允许出于安全和/或出于性能原因而隔离应用程序。分离的环境还可减轻受损资源的影响。例如,一个环境可能包含敏感数据并且可被配置为较少互联网暴露,而另一个环境可托管面向互联网的应用程序。

图15b示出了如图15a所示的控制器设置一个环境的示例过程流。在这种实例中,可向所述系统分配创建和设置新环境的任务。这可由用户请求,或者在参与特定任务或特定的一系列任务时执行的系统规则触发。下文论述的图17a至图18b示出了在所述系统创建新环境的情况下的特定的改变管理任务或特定的一系列任务的实例。然而,可能存在控制器可创建和设置新环境的多种情形。

因此,参考图15b,在设置新环境的过程中,控制器选择环境规则(步骤1500.1)。根据环境规则,使用全局系统规则210和模板230,控制器为所述环境查找资源(步骤1500.2)。规则可具有优选资源选择层级,所述优选资源选择层级保持仔细检查直到查找到所述环境所需的资源为止。在步骤1500.3处,控制器例如使用图3c或图7b中描述的技术将在步骤1500.2处查找到的资源分配到所述环境。控制器之后关于新环境配置所述系统的联网资源,以确保新环境与其他系统部件之间的兼容且有效的连接(步骤1500.4)。在步骤1500.5处将系统状态更新为每个资源都被启用并且每个模板都受到处理。控制器之后设置并实现所述环境的所述资源的集成和互操作性,并且驱动任何应用程序来部署新环境(步骤1500.6)。在步骤1500.7处再次将系统状态更新为所述环境已变得可用。

图15c示出了如图15a所示的控制器设置多个环境的示例过程流。当设置多个环境时,可针对每个环境使用图15b中描述的技术来并行地设置所述环境。然而,应理解,可如图15c所描述以有序顺序或连续地设置所述环境。参考图15c,在步骤1500.10处,控制器设置并部署第一新环境(这可以像关于图15b的步骤1500.1所描述的那样执行)。对于不同类型的环境以及对于不同的环境如何互操作,可能存在不用的环境规则。在步骤1500.11处,控制器为新环境选择环境规则。在步骤1500.12处,控制器根据可由系统规则210定义的偏好顺序来查找资源。在步骤1500.13处,控制器将在步骤1500.12处查找到的资源分配到下一个环境。所述环境可共享或不共享资源。在步骤1500.14处,控制器使用系统规则210关于下一个环境并在具有依赖关系的环境之间配置所述系统的联网资源。在步骤1500.15处将系统状态更新为每个资源都被启用,每个模板都受到处理并且联网资源都已被配置,包括环境的依赖关系。控制器之后设置并实现下一个环境和各环境之间的资源的集成和互操作性,并且驱动任何应用程序来部署新环境(步骤1500.16)。在步骤1500.17处将系统状态更新为下一个环境已变得可用。

用于支持监视的单向通信:

图16a示出了第一控制器1601作为主控制器操作来设置一个或多个控制器,诸如1601a、1601b和/或1601b的示例实施方案。主控制器1601可用于使用上文关于控制器,诸如控制器200/1401/1501论述的技术来产生多个云、主机、系统和/或应用程序作为在其操作中可能彼此依赖或不依赖的环境1602、1603、1604。如图16a所示,it系统、环境、云和/或其任一个或多个组合可作为环境1602、1603、1604产生。环境1602包括第二控制器1601a,环境1603包括第三控制器1601b,并且环境1604包括第四控制器1601c。环境1602、1603、1604各自还可分别包括一个或多个资源1642、1643、1644。资源可包括在其之上运行的一个或多个应用程序1642、1643、1644。这些应用程序可连接到无论是共享还是不共享的所分配的资源。这些或其他应用程序可在互联网或者池1660中的一个或多个共享资源上运行,所述池1660还可包括共享应用程序或应用程序网络。应用程序可为用户或者环境或云中的一个或多个提供服务。环境1602、1603、1604可共享资源或数据库,和/或可包括或使用池1660中专门分配到特定环境的资源。所述系统的包括主控制器1601和/或一个或多个环境的各种部件还可能能够连接到应用程序网络或诸如互联网的外部网络1615。

在任何资源、环境或控制器与另一个资源、环境、控制器或外部连接之间,可能存在可被配置为以如本文关于图13a至图13e所描述的方式选择性地启用和/或禁用的连接。例如,任何资源、控制器、环境或外部连接可通过带内管理连接270、带外管理连接270或san连接280,或者通过物理断开来禁用,或者与控制器1601、环境1602、环境1603和/或环境1604、资源或应用程序断开。作为一个实例,为了保护控制器1601,可禁用在控制器1601与环境1602、1603、1604中的任一者之间的带内管理连接270。作为另一个实例,可在环境1602、1603、1604的运转期间选择性地禁用或启用这样的一个或多个带内管理连接270。除了本文关于图13a至图13e论述的安全目的,禁用环境1602、1603、1604或将主控制器1601与所述环境断开可允许主控制器1601将环境1602、1603、1604转变为云,所述云之后可与主控制器1601或者其他云或环境分离。在这种意义上,控制器1601被配置为产生多个云、主机或系统。

使用本文描述的元件的禁用或断开,可允许用户出于特定用途而通过主控制器1601有限地访问环境。例如,可对开发者提供对开发环境的访问。作为另一个实例,应用程序的管理员可能会受限于特定应用程序或应用程序网络。作为另一个实例,可由主控制器1601查阅日志来收集数据,而不用使所述主控制器自身受到其所产生的环境或控制器的损害。

在主控制器1601设置环境1602之后,则可将环境1602与主控制器1601断开,由此环境1602可独立于主控制器1601运转和/或可由主控制器1601或者与环境1602相关联或由所述环境运行的其他应用程序选择性地进行监视和维护。

诸如环境1602的环境可耦合到允许购买者或用户访问环境1602的用户界面或控制台1640。环境1602可将用户控制台作为应用程序进行托管。环境1602可由用户远程地访问。每个环境1602、1603、1604可由共用或单独的用户界面或控制台访问。

图16b示出了示例系统,其中环境1602、1603、1604可被配置为例如使用控制台(所述控制台可以是可直接或间接地与环境1641连接的任何控制台)对可查看日志的另一个环境1641进行写入。以此方式,环境1641可用作日志服务器,环境1602、1603、1604中的一者或多者将事件写入到所述日志服务器。主控制器1601之后可访问日志服务器1641来监视环境1602、1603、1604上的事件,而不用如下所述维持与此类环境1602、1603、1604的直接连接。环境1641还可与主控制器1601选择性地断开,并且可被配置为只能从其他环境1602、1603、1604读取。

主控制器1601可被配置为即使主控制器1601如图16c所示与其环境1602、1603、1604中的任一者断开也能监视其环境1602、1603、1604中的一些或全部。图16c示出了在主控制器1601与环境1602、1603、1604之间的带内管理连接270已被断开,这可在环境1602、1603、1604受损的情况下帮助保护主控制器1601。如图16c所示,即使主控制器1601与环境1602之间的带内连接270已被断开,仍然可维持主控制器1601与诸如1602的环境之间的带外连接260。另外,环境1641可具有接至主控制器1601的可选择性地启用或禁用的连接。主控制器1601可将监视设置为在环境1641内的与环境1602、1603、1604隔离或隔绝的单独的应用程序。主控制器1601可使用单向通信来进行监视。例如,可通过单向通信将日志从环境1602、1603、1604提供到环境1641。通过这种单向写入并经由环境1641与主控制器1601之间的连接,尽管在主控制器1601与环境1602、1603、1604之间不存在带内连接270,主控制器1601也可通过环境1641收集数据并且监视环境1602、1603、1604,从而减轻环境1602、1603、1604损害主控制器1601的风险。可滤除或控制所述访问和/或访问可独立于互联网。例如,如图16d所示,如果主控制器1601与环境1602之间的带内连接270被连接,则主控制器1601可控制网络交换机1650来将环境1602与诸如互联网的外部网络1615断开。当环境1602通过带内连接270与主控制器1601连接时,环境1602与外部网络1615的断开可为主控制器1601提供增强的安全性。

于是,应理解,图16b至图16d的示例实施方案示出了主控制器如何能够在最小化在所述环境1602、1603、1604中的暴露的同时安全地监视环境1602、1603、1604。因此,主控制器1601可使自身(或至少使自身与带内链路断开)与环境1602、1603、1604断开,同时仍然维护经由环境1641的日志服务器监视所述环境的机制,环境1602、1603、1604对于所述环境1641可具有单向写入特权。相应地,如果在查阅环境1641的日志的过程中,主控制器1601发现环境1602可能受到恶意软件的损害,则主控制器1601可使用sdn工具来隔离所述环境1602,使得仅存在带外连接260(例如,参见图16c)。另外,控制器1601可向环境1602的管理员发送关于可能的问题的通知。控制器也可通过选择性地禁用在受损的环境与其他环境1603、1604中的任一者之间的任何连接(例如,带内管理连接270)来隔离受损的环境1602。在另一个实例中,主控制器1601可能会通过日志发现环境1603内的资源运行过热。这可使主控制器干预环境1603的应用程序或服务,并且将所述应用程序或服务迁移到不同的环境(无论所述不同的环境是预先存在的环境还是新产生的环境)。

控制器1601还可根据购买者或用户请求来设置一个或多个类似的系统。如图16e所示,例如可在控制台或其他位置提供购买应用程序1650,所述购买应用程序1650允许购买者购买云、主机、系统环境或应用程序或请求为所述购买者设置所述云、主机、系统环境或应用程序。购买应用程序1650可指示控制器1601设置环境1602。环境1602可包括控制器1601a,所述控制器1601a将例如通过向环境1602分配或分派资源来部署或构建it系统。

图16f示出了在环境1602、1603、1604各自作为云进行操作并且可包括或不包括控制器的情况下可使用的用户界面1632、1633、1634。用户界面1632、1633、1634(所述用户界面分别对应于环境1602、1603、1604)各自可通过主控制器1601连接,所述主控制器1601管理用户界面与所述环境的连接。可选地或此外,接口1640a(所述接口可采用控制台的形式)可直接耦合到环境1602,接口1640b(所述接口可采用控制台的形式)可直接耦合到环境1603,并且接口1640c(所述接口可采用控制台的形式)可直接耦合到环境1604。无论与主控制器1601的连接是否分离、断开或禁用,用户都可使用接口中的一者或多者来使用环境或云。

对系统进行克隆和备份以实现改变管理支持:

环境1602、1603、1604中的一些可以是开发者使用的典型设置软件的克隆。所述环境也可以是作为一种衡量手段的当前工作环境的克隆;例如,在不同位置中的另一个数据中心中克隆环境以减少因位置所致的延迟。

因此,应理解,主控制器以单独的环境或子系统设置系统和资源可允许克隆或备份it系统的部分。这可用于如本文所述的测试和改变管理中。此类改变可包括但不限于:对代码、配置规则、安全补丁、模板的改变和/或其他改变。

根据示例实施方案,如本文所述的it系统或控制器可被配置为克隆一个或多个环境。新的或克隆的环境可包括或不包括与原始环境相同的资源。例如,可能期望或需要在新的或新克隆的环境中使用物理和/或虚拟资源的完全不同的组合。可能期望将环境克隆到可管理使用状况的优化的不同的位置或时区。可能期望将环境克隆到虚拟环境。在克隆环境的过程中,控制器或主控制器的全局系统规则210和全局模板230可包括关于如何配置和/或运行各种类型的硬件的信息。系统规则210内的配置规则可指出资源的布置和使用,使得考虑到特定的可用资源,资源和应用程序是更优的。

主控制器结构提供了其以单独的环境或子系统设置系统和资源的能力,提供用于克隆环境的结构,提供用于创建开发环境的结构,和/或提供用于部署一组标准化的应用程序和/或资源的结构。此类应用程序或资源可包括例如,包括但不限于可用于以下各项的那些:开发和/或运行应用程序,或者备份it系统的部分或从所述it系统的备份恢复和其他灾难复原应用程序(例如,lamp(apache、mysql、php)栈、包含运行web前端和react/redux的服务器和运行node.js的资源的系统以及mongo数据库和其他标准化的“栈”)。有时,主控制器可部署作为另一个环境的克隆的环境,并且所述主控制器可从用于创建原始环境的配置规则的子集获得配置规则。

根据示例实施方案,系统或系统子集的改变管理可通过克隆一个或多个环境或此类环境的配置规则或配置规则的子集来完成。可能需要改变来例如进行以下改变:代码、配置规则、安全补丁、模板、硬件改变、添加/移除部件和依赖性应用程序以及其他改变。

根据示例实施方案,系统的此类改变可被自动化来避免直接手动输入改变出错。在对活动系统自动地实现改变之前,可由用户在开发环境中测试改变。根据示例实施方案,活动的生产环境可通过使用控制器来自动地驱动、供给和/或配置使用与生产环境相同的配置规则配置的环境而进行克隆。可运行和运转克隆环境(而备份环境可优选地留作应急之用以防需要撤销改变)。这可使用控制器如上文参考图1至图16f所描述使用系统规则210、模板230和/或系统状态220创建、配置和/或供给新的系统或环境来完成。新环境可用作开发环境以测试稍后将在生产环境中实现的改变。控制器可将这种环境的基础结构从软件定义结构产生到开发环境中。

如本文所定义的生产环境表示用于操作系统的环境,而不是仅用于开发和测试的环境,即开发环境。

当克隆生产环境时,基础结构或克隆的开发环境由控制器根据全局系统规则210配置并且产生为生产环境。开发环境的改变可能是对代码、模板230(改变现有的模板或与新模板的创建相关的改变)、安全和/或应用程序或基础结构配置进行的。当开发环境中实现的新的改变根据需要通过开发和/或测试准备就绪时,所述系统对开发环境自动地进行改变,之后将运行或部署为生产环境。然后将新的系统规则210上传到环境的控制器和/或主控制器,这些控制器将对特定环境应用系统规则改变。在控制器中更新系统状态220,并且可实现附加或修正的模板230。因此,可由开发环境和/或主控制器维护基础结构的完整的系统知识,而且有能力重新创建所述基础结构的完整的系统知识。如本文所使用的完整的系统知识可包括但不限于对资源状态、资源可用性和系统配置的系统知识。完整的系统知识可由控制器从系统规则210、系统状态220收集,和/或使用一个或多个带内管理连接270、一个或多个带外管理连接260和/或一个或多个san连接280查询资源来收集。尤其可查询资源来确定资源、网络或应用程序利用情况、配置状态或可用性。

克隆的基础结构或环境可经由系统规则210进行软件定义;但是并不需要是这种情况。克隆的基础结构或环境通常可包括或不包括前端或用户界面,以及一个或多个所分配的资源,所述一个或多个所分配的资源可包括或不包括计算资源、联网资源、存储资源和/或应用程序联网资源。环境可布置或不布置为前端、中间件和数据库。服务或开发环境可利用生产环境的系统规则210启动。尤其出于克隆的目的,被分配来供控制器使用的基础结构或环境可以是软件定义的。因此,环境可能能够通过系统规则210部署并且能够通过类似的手段来克隆。在需要改变之前或需要改变时,克隆或开发环境可由本地控制器或主控制器使用系统规则210自动地设置。

在开发环境与生产环境隔离之前,生产环境的数据可写入到只读数据存储中,由此所述数据将由开发环境用于开发和测试过程中。

在生产环境在线时,用户或客户端可对开发环境进行改变并且测试所述改变。当在开发环境中测试开发和改变时,可改变数据存储中的数据。对于易失性或可写入系统,在设置或部署开发环境之后,还可使用所述数据与生产环境的数据的热同步。可在开发环境中进行对系统、应用程序和/或环境的所需的改变并且测试所述所需的改变。之后对系统规则210的脚本进行所需的改变以为环境或为整个系统和主控制器创建新版本。

根据另一个示例实施方案,新开发的环境之后可被自动地实现为新的生产环境,同时维护先前的生产环境或使所述先前的生产环境处于全功能状态,因此对早先状态的生产环境的恢复是可能的,而不会丢失大量数据。然后利用系统规则210内的新的配置规则启动开发环境,并且使数据库与生产数据库同步并切换为可写入数据库。原始生产数据库则可切换为只读数据库。先前的生产环境在所需的一段时间内完好无损地保存为先前的生产环境的拷贝,以防需要恢复回到先前的生产环境。

环境可被配置为可包括或包含物理和/或虚拟主机、网络和其他资源的单个服务器或实例。在另一个示例实施方案中,环境可以是包含物理和/或虚拟主机、网络和其他资源的多个服务器。例如,可能存在形成负载均衡的面向互联网的应用的多个服务器;并且所述服务器可连接到多个api/中间件应用程序(所述api/中间件应用程序可被托管在一个或多个服务器上)。环境的数据库可包括一个或多个数据库,api在所述环境中向所述一个或多个数据库传达查询。所述环境可以静态或易失性的形式从系统规则210构建。环境或实例可以是虚拟或物理的,或者每一者的组合。

应用程序的配置规则或系统规则210内的系统的配置规则可指定各种计算后端(例如,裸金属、amdepyc服务器、在qemu/kvm上的intelhaswell),并且可包括关于在新的计算后端上如何运行应用程序或服务的规则。因此,如果例如存在用于测试的资源的可用性降低的情形,则可将应用程序虚拟化。

使用并根据本文描述的实例,测试环境可部署在原始环境使用物理资源的虚拟资源上。使用如本文参考图1至图18b所描述的控制器,且如本文进一步所描述,系统或环境可从物理环境克隆到可整体或部分包括或不包括虚拟资源的环境。

图17a示出了系统100包括控制器1701和一个或多个环境,例如1702、1703、1704的示例实施方案。系统100可以是静态系统,即活动用户数据不会不断地改变所述系统的状态或者频繁地操纵数据的系统,例如仅托管静态web页面的系统。所述系统可耦合到用户(或应用程序)界面110。

控制器1701可以与本文描述的控制器200/1401/1501/1601类似的方式进行配置,并且可类似地包括全局系统规则210、控制器逻辑205、模板230和系统状态元素220。控制器1701可以如本文参考图14a至图16f所描述的方式耦合到一个或多个其他控制器或环境。控制器1701的全局规则210可包括可管理和控制其他控制器和/或环境的规则。此类全局规则210、控制器逻辑205、系统状态220和模板230可使用来通过控制器1701以与本文参考图1至图16f所描述类似的方式设置、供给和部署系统或环境。每个环境可使用全局系统规则210的定义环境的操作(包括关于其他环境定义环境的操作)的子集来配置。

全局系统规则210还可包括改变管理规则1711。改变管理规则1711包括在可能需要对系统100、全局系统规则210和/或控制器逻辑205的改变时可使用的一组规则和/或指令。改变管理规则1711可被配置为允许用户或开发者开发改变,在测试环境中测试改变,然后通过将所述改变自动转换为系统规则210内的一组新的配置规则来实现改变。改变管理规则1711可以是全局系统规则210的子集(如图17a所示),或者所述改变管理规则可与全局系统规则210分离。改变管理规则可使用全局系统规则210的子集。例如,全局系统规则210可包括被配置为创建新环境的环境创建规则的子集。改变管理规则1711可被配置为设置并使用由控制器1701配置和设置的系统或环境来拷贝并克隆系统100的一些或所有方面。改变管理规则1711可被配置为在通过使用系统的克隆来进行测试和实现而实现之前准许测试对所述系统提出的新的改变。

如图17a所示的克隆1705可包括系统100的特定环境或一部分的规则、逻辑、应用程序和/或资源。克隆1705可包括与系统100相似或不同的硬件,并且可使用或不使用虚拟资源。克隆1705可被设置为应用程序。克隆1705可使用系统100或控制器1701的系统规则210内的配置规则来设置和配置。克隆1705可包括或不包括控制器。克隆1705可包括如上文更详细地描述的所分配的联网资源、计算资源、应用程序网络和/或数据存储资源。此类资源可使用改变管理规则1711在控制器1701的控制下进行分配。克隆1705可耦合到允许用户对克隆1705进行改变的用户界面。用户界面可与系统100的用户界面110相同或不同。克隆1705可用于整个系统100,或者系统100的一部分,诸如一个或多个环境和/或控制器。克隆1705可为或不为系统100的完整拷贝。克隆1705可通过带内管理连接270、带外管理连接260和/或san连接280耦合到系统100,这些连接可被选择性地启用和/或完全禁用,和/或被转换为单方向读取和/或写入连接。因此,可改变通向克隆环境1705中的数据的连接,以在克隆环境1705在测试期间与生产环境隔离时,或者在克隆环境1705准备好作为新的生产环境运行之前都使克隆数据为只读的。例如,如果克隆1705具有接至环境1702的数据连接,则出于隔离目的而使此数据连接为只读的。

任选的备份1706可用于或不用于整个系统,或者系统的一部分,诸如一个或多个环境和/或控制器。备份1706可包括如上文更详细地描述的联网资源、计算资源、应用程序网络和/或数据存储资源。备份1706可包括或不包括控制器。备份1706可以是系统100的完整拷贝。备份1706可作为应用程序或者使用与系统100相似或不同的硬件来设置。备份1706可通过带内管理连接270、带外管理连接260和/或san连接280耦合到系统100,这些连接可被选择性地启用和/或完全禁用,和/或被转换为单方向读取和/或写入连接。

图17b示出了用于使用图17a的克隆和备份系统进行系统改变管理的示例过程流。在步骤1785处,用户或管理应用程序发起对系统的改变。此类改变可包括但不限于对以下各项的改变:代码、配置规则、安全补丁、模板、硬件改变、添加/移除部件和/或依赖性应用程序以及其他改变。在步骤1786处,控制器1701以关于图14a至图16f描述的方式设置环境,以成为克隆环境1705(其中克隆环境可具有其自身的新的控制器,或者所述克隆环境可使用与原始环境相同的控制器)。

在步骤1787处,控制器1701可使用包括改变管理规则1711的全局规则210来将所述系统的一个或多个环境(例如,“生产环境”)的全部或一部分克隆到克隆环境1705(例如,其中克隆环境1705可用作“开发环境”)。因此,控制器1701辨别并分配资源,使用系统规则210来设置和分配克隆资源并且将以下各项中的任一者从所述环境拷贝到克隆环境:数据、配置、代码、可执行文件和驱动应用程序所需的其他信息。在步骤1788处,控制器1701任选地通过使用系统规则210内的配置规则设置另一个环境以用作备份1706(具有或不具有控制器)来备份所述系统,并且拷贝模板230、控制器逻辑205和全局规则210。

在从生产环境产生克隆1705之后,克隆1705可用作开发环境,其中可对以下各项进行改变:克隆的代码、配置规则、安全补丁、模板和其他改变。在步骤1789处,可在实现之前测试对开发环境的改变。在测试期间,克隆1706可与生产环境(系统100)或所述系统的其他部件隔离。这可通过使控制器1701选择性地禁用在系统100与克隆1706之间的连接中的一者或多者(例如,通过禁用带内管理连接270和/或禁用应用程序网络连接)来实现。在步骤1790处,关于所改变的开发环境是否准备就绪进行确定)。如果步骤1709确定开发环境尚未准备就绪(这是通常由开发者作出的决策),则过程流返回到步骤1789以对克隆环境1705进行进一步改变。如果步骤1790确定开发环境已准备就绪,则可在步骤1791处切换开发环境和生产环境。也就是说,控制器将开发环境1705转变为新的生产环境,并且先前的生产环境可保持不变,直至到开发环境/新的生产环境的转变完成且令人满意为止。

图18a示出了可在系统的改变管理中设置和使用的系统100的另一个示例实施方案。在图18a的实例中,系统100包括控制器1801和一个或多个环境1802、1803、1804、1805。所述系统被示出为具有克隆环境1807和备份系统1808。

控制器1801以与本文描述的控制器200/1401/1501/1601/1701类似的方式进行配置,并且可包括全局系统规则210、控制器逻辑205、模板230和系统状态220元素。控制器1801可以如本文参考图14a至图16f所描述的方式耦合到一个或多个其他控制器或环境。控制器1801的全局规则210可包括可管理和控制其他控制器和/或环境的规则。此类全局规则210、控制器逻辑205、系统状态220和模板230可使用来通过控制器1801以与本文参考图1至图17b所描述类似的方式设置、供给和部署系统或环境。每个环境可使用全局规则210的定义环境的操作(包括关于其他环境定义环境的操作)的子集来配置。

全局规则210还可包括改变管理规则1811。改变管理规则1811可包括在可能需要对系统、全局规则和/或逻辑的改变时可使用的一组规则和/或指令。改变管理规则可被配置为允许用户或开发者开发改变,在测试环境中测试改变,然后通过将所述改变自动转换为系统规则210内的一组新的配置规则来实现改变。改变管理规则1711可以是全局系统规则210的子集(如图18a所示),或者所述改变管理规则可与全局系统规则210分离。改变管理规则1711可使用全局系统规则210的子集。例如,全局系统规则210可包括被配置为创建新环境的环境创建规则的子集。改变管理规则1811可被配置为设置并使用由控制器1801设置和部署的系统或环境来拷贝并克隆系统100的一些或所有方面。改变管理规则1811可被配置为在通过使用系统的克隆来进行测试和实现而实现之前准许测试对所述系统提出的新的改变。

如图18a所示的克隆环境1807可包括:控制器1807a,所述控制器1807a具有规则、控制器逻辑、模板、系统状态数据;以及所分配的资源1820,所述所分配的资源1820可根据控制器1801的全局系统规则210和改变管理规则1811来分配到一个或多个环境中并且进行设置。备份系统1808也包括:控制器1808a,所述控制器1808a具有规则、控制器逻辑、模板、系统状态数据;以及所分配的资源1821,所述所分配的资源1821可根据控制器1801的全局系统规则210和改变管理规则1811来分配到一个或多个环境中并且进行设置。所述系统可耦合到用户(或应用程序)界面110或者另一个用户界面。

克隆环境1807可包括系统的特定环境或一部分的规则、逻辑、模板、系统状态、应用程序和/或资源。克隆1807可包括与系统100相似或不同的硬件,并且克隆1807可使用或不使用虚拟资源。克隆1807可被设置为应用程序。克隆1807可使用系统100或所述环境的控制器1801的系统规则210内的配置规则来设置和配置。克隆1807可包括或不包括控制器,并且所述克隆可与生产环境共享控制器。克隆1807可包括如上文更详细地描述的所分配的联网资源、计算资源、应用程序网络和/或数据存储资源。此类资源可使用改变管理规则1811在控制器1801的控制下进行分配。克隆1807可耦合到允许用户对克隆1807进行改变的用户界面。用户界面可与系统100的用户界面110相同或不同。

克隆1807可用于整个系统,或者系统的一部分,诸如一个或多个环境和/或控制器。在一个示例实施方案中,克隆1807可包括耦合到环境1802的数据资源1820的热备用数据资源1820a。热备用数据资源1820a可在设置克隆1807时使用并且用于测试改变中。例如,如本文关于图18b所描述,热备用数据资源1820a可在改变管理期间与存储资源1820选择性地断开或隔离。克隆1807可为或不为系统100的完整拷贝。克隆1807可通过带内管理连接270、带外管理连接260和/或san连接280耦合到系统100,这些连接可被选择性地启用和/或完全禁用,和/或被转换为单方向读取和/或写入连接。因此,可改变通向克隆环境1807中的易失性数据的连接,以在克隆环境1807在测试期间与生产环境隔离时,或者在克隆环境准备好作为新的生产环境运行之前都使克隆数据为只读的。

当将旧的生产环境切换为新的生产环境时,控制器1801可指示前端、负载均衡器或者其他应用程序或资源指向新的生产环境。因此,当发生改变时,可对用户、应用程序、资源和/或其他连接进行重新定向。这可例如通过多种方法来完成,所述方法包括但不限于:改变ip/ipoib地址列表、无限带宽guid、dns服务器、无限带宽分区/opensm配置;或改变软件定义的联网(sdn)配置,这可通过向联网资源发送指令来完成。前端、负载均衡器或其他应用程序和/或资源可指向系统、环境和/或其他应用程序,包括但不限于:数据库、中间件和/或其他后端。因此,负载均衡器可用于改变管理中以从旧的生产环境切换为新环境。

克隆1807和备份1808可被设置和用于管理系统改变的各方面中。此类改变可包括但不限于对以下各项的改变:代码、配置规则、安全补丁、模板、硬件改变、添加/移除部件和/或依赖性应用程序以及其他改变。备份1808可用于整个系统,或者系统的一部分,诸如一个或多个环境和/或控制器1801。备份1808可包括如上文更详细地描述的联网资源、计算资源、应用程序网络和/或数据存储资源。备份1808可包括或不包括控制器。备份1808可以是系统100的完整拷贝。备份1808可包括从备份中所包括的配置规则重新构建系统/环境/应用程序所需的数据,并且可包括所用应用程序数据。备份1808可作为应用程序或者使用与系统100相似或不同的硬件来设置。备份1808可通过带内管理连接270、带外管理连接260和/或san连接280耦合到系统100,这些连接可被选择性地启用和/或禁用,和/或被转换为单向读取和/或写入连接。

图18b是示出尤其是在图18a的系统包括易失性数据的情况下或者在数据库可写入的情况下使用图18a的系统进行改变管理的示例过程流。这种数据库可以是系统中的环境所使用的存储资源的一部分。在步骤1870处,使用全局系统规则来部署所述系统(包括生产环境)。

在步骤1871处,则使用包括改变管理规则1811的全局系统规则210,以及由主控制器1801或控制器在克隆环境中进行的资源分配来克隆生产环境以创建只读环境,其中禁止克隆环境对所述系统进行写入。之后可将克隆环境用作开发环境。

在步骤1872处,激活热备用1820a并且将所述热备用分配到克隆环境1807以存储系统100中改变的任何易失性数据。更新克隆数据,使得能够利用更新数据测试开发环境的新版本。可在任何时间关闭热同步数据。例如,当测试从旧的环境或生产环境到开发环境的写入时可关闭热同步数据。

在步骤1873处,用户则可使用克隆环境1807作为开发环境来处理改变。之后在步骤1874处测试开发环境的改变。在步骤1875处,关于所改变的开发环境是否准备就绪进行确定(通常这种确定由开发者进行)。如果步骤1875确定改变尚未准备就绪,则过程流可返回到步骤1873,其中用户可能会退回并且对开发环境进行其他改变。如果步骤1875确定改变已准备好运行,则过程流进行到步骤1876,其中关于特定环境在系统或控制器中更新配置规则并且将使用所述配置规则来部署新的更新的环境。

在步骤1877处,则可在运行之前利用所述改变以具有所需的资源和硬件分配的所需的最终配置重新部署开发环境(或新环境)。在处于1878的下一个步骤中,禁用原始生产环境的写入能力,并且原始生产环境变为只读。虽然原始生产环境是只读的,但是作为1878的一部分,可将来自原始生产环境(或者可能还有新的生产环境)的任何新数据都缓存并辨别为过渡数据。作为一个实例,可将所述数据缓存在数据库服务器或其他合适的位置(例如,共享环境)中。然后在步骤1879处切换开发环境(或新环境)和旧的生产环境,使得开发环境(或新环境)变为生产环境。

在此切换之后,在步骤1880处使新的生产环境为可写入的。如果如由开发者所确定,认为新的生产环境是在步骤1881处工作,则在切换过程期间的任何数据丢失(其中此类数据已在步骤1878处缓存)可在步骤1884处利用写入到新环境的数据来调和。在此调和之后,完成改变(步骤1885)。

如果步骤1881确定新的生产环境不在工作(例如,辨别出需要所述系统恢复到旧系统的问题),则在步骤1882处将所述环境切换回去,使得旧的生产环境再次变为生产环境。作为步骤182的一部分,将控制器1801上的用于主题环境的配置规则恢复回到曾用于现在恢复的生产环境的先前的版本。

在步骤1883处,可例如使用缓存数据来确定数据库的改变;并且利用旧的配置规则将数据恢复到旧的生产环境。为了支持步骤1883,数据库可维护对其所进行的改变的日志,从而准许步骤1883确定可能需要撤销的改变。可使用备份数据库来缓存如上所述的数据,其中对缓存数据进行跟踪和时钟控制;可恢复时钟来确定进行了哪些改变。可将快照和日志用于这个目的。

在1883处恢复缓存数据之后,所述过程可返回到步骤1871,如果需要重新开始的话。

本文论述的示例改变管理系统可例如在升级、添加或移除硬件或软件时,在修补软件时,在检测到系统故障时,在硬件故障或检测期间迁移主机时使用,用于动态资源迁移,用于改变配置规则或模板,和/或用于进行任何其他系统相关改变中。控制器1801或系统100可被配置为检测故障,并且在检测到故障时可将改变管理规则或现有的配置规则自动地实现到可用于所述系统或所述控制器的其他硬件上。可使用的故障检测方法的实例包括但不限于:查验主机、查询应用程序和运行各种测试或测试套件。本文描述的改变管理配置规则可在检测到故障时实现。在检测到故障时,此类规则可触发由控制器实现的备份环境的自动生成、数据或资源的自动迁移。对备份资源的选择可以是基于资源参数。此类资源参数可包括但不限于:使用信息、速度、配置规则以及数据容量和使用状况。

如本文所述,任何时候发生改变,控制器都将对所述改变以及实际上执行了什么创建日志。出于安全或系统更新考虑,本文描述的控制器可被配置为根据配置规则自动地开启和关闭,并且更新it系统状态。所述控制器可能会关闭资源来节省电力。所述控制器可能会为了不同的效率而在不同的时间开启或迁移资源。在迁移中,遵循配置规则,并且可对环境或系统进行备份或拷贝。如果存在安全漏洞,则控制器可分离并关断受攻击的区域。

虽然在上文已关于本发明的示例实施方案描述了本发明,但是可对本发明进行仍然落在发明范围内的各种修改。在审阅本文的教示内容之后将能够认识到对本发明的此类修改。

附录a:示例存储连接过程

这描述了与在多个系统之间共享存储资源相关联的示例过程和示例规则。应理解,这仅仅是存储连接过程的实例,并且可使用用于将计算资源连接到存储资源的其他技术。除非另有说明,否则这些规则适用于试图发起存储连接的所有系统。

关于此附录a的定义:

存储资源:可经由存储传输共享的块、文件或文件系统。

存储传输:本地或远程地共享存储资源的方法。实例将为iscsi/iser、nvmeof、nfs、samba文件共享。

系统:可尝试通过指定的存储传输连接到存储资源的任何事物。系统可支持任何数量的存储传输,并且关于使用哪些传输可作出其自身的决策。

只读:只读存储资源不允许修改其所包含的数据。此约束由处理在存储传输上导出存储资源的操作的存储守护进程强制执行。关于附加保险,一些数据存储可将存储资源后台数据设定为只读(例如,将lvmlv设定为只读)。

读-写(或易失性):读-写(易失性)存储资源是其内容可通过连接到存储资源的系统修改的存储资源。

规则:存在控制器确定系统是否可连接到给定存储资源时必须遵守的一组规则。

1.读-写存储资源应仅在单个存储传输上导出。

2.读-写存储资源应仅连接到单个系统/由单个系统连接。

3.读-写存储资源不应作为只读进行连接。

4.只读存储资源可能在多个存储传输上导出。

5.只读存储资源可能连接到多个系统/从多个系统连接。

6.只读存储资源不应作为读-写进行连接。

过程

如果我们将连接过程视作为函数,则所述函数将采用2个自变量:

1.存储资源id

2.受支持的存储传输列表(根据顺序划分优先级)

首先,我们确定所请求的存储资源是只读的还是读-写的。

如果是读-写的,则我们需要检查来查看存储资源是否已进行连接,因为我们将读-写存储资源限制于单个连接。如果所述存储资源确实已经有连接,则我们应确保请求存储资源的系统是当前连接的系统(例如,这可能会在重新连接的情况下发生)。否则,我们将报错,因为多个系统无法连接到同一个读-写存储资源。如果请求系统是

连接到这个存储资源的系统,则我们应确保可用存储传输中的一者与此存储资源的当前的导出匹配。如果确实是的话,我们将连接信息传递到请求系统。如果不是的话,则我们报错,因为我们无法在多个存储传输上为读-写存储资源服务。

对于只读和未连接的读-写存储资源,我们针对供应的存储传输列表进行迭代,并且尝试使用所述传输来导出存储资源。如果导出失败,则我们继续完成所述列表,直到我们成功或用完存储传输为止。如果我们用完的话,则我们通知请求系统无法连接到存储资源。在成功导出时,我们将连接信息,以及新的(资源,传输)=>(系统)关系存储在数据库中。请求系统之后传递存储传输连接信息。

系统:存储连接当前在正常操作期间由控制器和计算守护进程执行。然而,将来的迭代可使服务直接连接到存储资源并且绕过计算守护进程。这可能是对示例服务物理部署的一项要求,并且使用同一个过程来进行虚拟机部署也是有用的。

附录b:接至overlayfs的示例连接

服务利用overlayfs来重复使用共用文件系统对象,并且减小服务包大小。

服务在这个实例中包括3个或更多个存储资源:

1.平台.这包含基础linux文件系统并且接受只读访问。

2.服务.这包含与服务的操作(netthunder服务守护进程、openrc脚本、二进制等)直接相关的所有软件。此存储资源接受只读访问。

3.易失性.这些存储资源包含对所述系统的所有改变,并且由lvm从服务内部进行管理(用于物理、容器和虚拟机部署)。

当在虚拟机中运行时,在qemu中使用具有initramfs的包含用于进行以下操作的逻辑的自定义linux内核来对服务进行直接内核启动:

1.从可用的读-写盘组装lvm卷组(vg)

*此vg包含一个逻辑卷(lv),所述逻辑卷包含用于服务的所有易失性存储数据。

2.挂载平台、服务和lv

3.使用联合文件系统(在我们的例子中是overlayfs)来组合三个文件系统。

相同的过程可用于物理部署。一种选项是向经由pxe启动或ipmiiso启动而启动的轻量级os远程地提供内核,然后通过kexec进入新的真正的内核。或者跳过轻量级os,并且通过pxe启动直接进入我们的内核。这种系统在内核initramfs中可能需要附加逻辑来连接到存储资源。

overlayfs配置看起来可能是以下这样的:

由于overlayfs的一些限制,我们允许将特殊目录'/data'标记为“树外(outoftree)”。如果在创建服务包时服务创建了'/data'目录,则此目录可用于服务。此特殊目录经由‘mount--rbind’挂载以允许访问不在overlayfs内部的易失性层的子集。这是不支持共享作为overlayfs的一部分的目录的诸如nfs(网络文件系统)的应用所需的。

内核文件系统布局:

我们创建/new_root目录,并且使用所述目录作为配置我们的overlayfs的目标。一旦overlayfs已被配置好,则我们就通过exec_root进入/new_directory,并且所述系统利用所有可用的资源正常起动。

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