CN105988853A - 用于在所管理的部件上执行代码加载操作的方法与系统 - Google Patents
用于在所管理的部件上执行代码加载操作的方法与系统 Download PDFInfo
- Publication number
- CN105988853A CN105988853A CN201610111403.2A CN201610111403A CN105988853A CN 105988853 A CN105988853 A CN 105988853A CN 201610111403 A CN201610111403 A CN 201610111403A CN 105988853 A CN105988853 A CN 105988853A
- Authority
- CN
- China
- Prior art keywords
- code
- managed
- parts
- nodal point
- point group
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/656—Updates while running
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44568—Immediately runnable code
- G06F9/44578—Preparing or optimising for loading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1433—Saving, restoring, recovering or retrying at system level during software upgrading
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/202—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Hardware Redundancy (AREA)
- Stored Programmes (AREA)
Abstract
提供了一种用于在系统中的所管理的部件上执行代码加载操作的计算机程序产品、系统、以及方法。计算机系统中包含至少一个计算节点的第一节点组执行针对所管理的部件的代码加载操作。把所管理的部件处的代码加载操作的状况写至状况数据结构,同时,在所管理的部件处执行代码加载操作。第一节点组把针对所管理的部件的代码加载操作的控制转交给计算机系统中包含至少一个计算节点的第二节点组,同时,在所管理的部件处正在进行代码加载操作。第二节点组读取所管理的部件的状况数据结构,以确定所述代码加载操作的状况,并且继续所管理的部件处的所述代码加载操作。
Description
技术领域
本发明涉及一种用于在系统中所管理的部件上执行代码加载操作的计算机程序产品、系统、以及方法。
背景技术
在具有诸如企业存储服务器的许多部件的复杂系统中,必须执行代码加载操作,以更新不同部件处的代码水平。诸如固件升级的代码更新操作令所述部件离线,并且可能中断系统操作。对于要求高可用性的企业存储系统,这样的中断可能会成为问题。另外,对要求代码更新操作的系统部件进行扩展,可能影响代码加载的性能。
在这一技术领域,存在着对用于在系统中所管理的部件上执行代码加载操作的改进的技术的需求。
发明内容
所提供的是一种用于在系统中所管理的部件上执行代码加载操作的计算机程序产品、系统、以及方法。计算机系统中包含至少一个计算节点的第一节点组执行针对所管理的部件的代码加载操作。把所管理的部件处的代码加载操作的状况写至状况数据结构,与此同时,在所管理的部件处执行代码加载操作。第一节点组把针对所管理的部件的代码加载操作的控制转交给至少包含计算机系统中至少一个计算节点的第二节点组,与此同时,在所管理的部件处正在执行代码加载操作。第二节点组读取所管理的部件的状况数据结构,以确定所管理的部件处的代码加载操作的状况,并且继续所管理的部件处的代码加载操作。
附图说明
图1示出了计算环境的一个实施例。
图2示出了所管理的部件的代码加载状况信息的一个实施例。
图3示出了启动代码加载操作的操作的一个实施例。
图4示出了把代码加载操作从第一节点组转交给第二节点组的操作的一个实施例。
图5示出了开始所管理的部件上的代码加载操作的第一节点组的操作的一个实施例。
图6示出了使第二节点组从第一节点组接管代码加载操作的操作的一个实施例。
图7示出了其中可以实现图1的部件的计算环境的一个实施例。
具体实施方式
所描述的实施例提供了用于在具有许多所管理的部件的系统中执行代码加载操作、以允许系统操作在节点正进行代码升级的同时继续进行的技术。使用所描述的实施例,至少一个计算节点的第一节点组处理代码加载操作和通常的系统操作。第一节点组可以针对一个冗余组的所管理的部件部分的一个第一实例执行代码加载操作,与此同时,所管理的部件的第二实例可用于支持系统操作,因此,在代码加载期间系统依然可用。如果第一节点组需要停止处理代码加载操作,则把代码加载操作转交给第二节点组,以在第一节点组停止代码加载操作的位置继续代码加载操作。
某些所描述的实施例提供了执行代码加载操作的计算节点的多个节点组。当一个节点组的计算部件需要离线时,例如,当需要运行其自己的代码更新过程时,另一个节点组能够接管针对该节点组的代码加载操作。所描述的实施例提供了一个管理控制台,所述管理控制台包含可通往所有节点组,并且维护所管理的部件的代码加载状况信息的公共通信平台。这允许节点组接管代码加载操作,以访问状况信息,从而能够从第一节点组离开的位置继续代码加载操作。另外,使用所描述的实施例,向系统添加所管理的部件将不增加代码加载的复杂度或者时间,因为也接管针对正在进行代码加载操作的所管理的部件的系统操作的另一个节点组在执行代码加载操作。
图1示出了具有计算机系统100的计算环境的一个实施例,计算机系统100包括至少两个节点组1021和1022,每一个节点组分别包括一或多个计算节点1041和1042。计算节点1041、1042包含诸如中央处理器(CPU)的处理元件、处理器上的内核、虚拟处理器等,其执行加载于内存中的程序。节点组1021和1022可以管理针对系统100的计算操作。所管理的部件1061、1062…、106n执行支持节点组1021和1022的计算操作的部件操作。在一个实施例中,节点组1021和1022可以管理导向存储器108的输入/输出请求(I/O)请求,所管理的部件1061、1062…、106n可以包括,但非仅限于存储附件、网络适配器、存储适配器、功率部件等。
管理控制台110用于管理针对节点组1021和1022以及所管理的部件1061、1062…、106n的代码加载操作。代码加载可以包含对所管理的部件1061、1062…、106n施加软件或者固件更新。当完成了与代码加载相关的操作时,每一个所管理的部件1061、1062…、106n可以向管理控制台110所维持的状况信箱1121、1122、…、112n提供状况信息。当执行代码加载操作时,所管理的部件1061、1062…、106n可以把诸如“已经启动”、“正在进行之中”、“已经完成”、“发生故障”等的状况信息传送于它们相应的状况信箱1121、1122、…、112n。代码加载引擎114包括管理节点组1021和1022以执行针对所管理的部件1061、1062…、106n的代码加载操作以及更新节点组1021和1022的计算节点1041和1042中的代码与固件的逻辑。
计算节点1041、1042均包括执行更新所管理的部件1061、1062…、106n处的代码与/或固件的代码加载操作以及与管理控制台110进行交互的代码加载管理器1051、1052。计算节点1041、1042还可以包括执行其它系统操作的操作系统和应用。在其中计算节点1041、1042执行存储控制器操作的实施例中,计算节点1041、1042将包括执行系统操作的操作系统或者其它代码。在可选的一些实施例中,计算节点1041、1042可以执行把系统(例如,数据库系统等)导向其的任何系统操作。
在图1中,把管理控制台110示出为包括在系统100中。在可选的实施例中,可以把管理控制台110定位在与系统100相分离的系统上,并且可以通过网络或者其它通信线路与系统100进行通信。
在图1中,把所管理的部件1061、1062…、106n的状况信息维持在专门针对所管理的部件的状况信箱1121、1122、…、112n中。在可选的一些实施例中,可以把多个所管理的部件的状况信息维持在一个单一的状况信箱中。另外,也可以使用可选的数据结构收集有关所管理的部件1061、1062…、106n处的代码加载操作的状况信息。按照这一方式,不同的节点组1021和1022可以访问有关所管理的部件1061、1062…、106n处的代码加载进展情况的状况信息,因为通过管理控制台110和状况信箱数据结构1121、1122、…、112n共享这一状况信息。
图1中所描述的体系结构具有可扩展性,因为如果向系统100添加新的所管理的部件,则可以为这些新的部件以及更新的代码加载引擎114和代码加载管理器1051、1052提供新的状况信箱1121、1122、…、112n,以向新添加的所管理的部件提供将加以执行的代码加载操作。于是,向系统添加所管理的部件对代码加载操作没有大的影响,因为执行代码加载操作的节点组可以与其它代码加载操作并行地这些针对新的所管理的部件的代码加载操作。
存储器系统108可以包括这一技术领域中人们所熟悉的一或多种存储设备,例如,互连存储设备,其中,存储设备可以包括硬盘驱动器、由固态电子装置构成的固态存储设备(SSD)、EEPROM(电可擦可编程只读存储器)、闪存、闪盘、随机存取存储器(RAM)驱动器、存储类内存(SCM)等、相变存储器(PCM)、电阻随机存取存储器(RRAM)、旋转传递扭矩存储器(STM-RAM)、传导桥接RAM(CBRAM)、磁硬盘驱动器、光盘、磁带等。尽管描述了元件的一定数目的实例,例如节点组、所管理的部件、信箱等,然而也可以存在任何数目的所述部件。
图2说明了所管理的部件1061、1062…、106n生成的、并且存储在状况信箱1121、1122、…、112n中的状况信息200的一个实施例。状况信息200包括所执行的代码加载操作的操作名202,例如,预先验证、代码分配、完好性检查、以及代码激活等。预先验证可以包含一个判断所管理的部件1061、1062…、106n是否需要更新其代码水平的操作。代码分配可以包含把用于代码加载的代码分配于所管理的部件1061、1062…、106n,以进行更新。完好性检查可以包含一个判断所管理的部件是否处于接收代码加载更新的完好操作状态的操作。代码激活操作可以包含把所分配的代码安装在完好的所管理的部件1061、1062…、106n上的操作。
图3示出了在管理控制台110处启动代码加载操作的操作的一个实施例。可以响应用户对代码加载更新的调用而启动代码加载操作,或者可以根据调度自动地执行代码加载操作。当(在方框300处)启动了代码加载操作时,代码加载引擎114(在方框302处)指示第一节点组1021中的一或多个计算节点1041执行代码加载操作302。响应这一指示,代码加载管理器1051将执行图5中的操作。
在这一描述中,此处,把最初调用的节点组称为第一节点组1021,把接下来调用的从第一节点组1021接管代码加载操作的节点组称为第二节点组1022。然而,节点组1021和1022均可用作此处所描述的第一节点组或者第二节点组。
图4示出了把代码加载操作从第一节点组1021转交给第二节点组1022的代码加载引擎114所执行的操作的一个实施例,例如,如果第一节点组1021需要更新其计算节点1041中的代码与/或固件。当代码加载引擎114断定(在方框400处)正在执行代码加载操作的当前节点组(例如,1021)需要执行其计算节点(例如,1041)的代码更新时,代码加载引擎114判断(在方框402处)状况信箱1121、1122、…、112n是否指示在所有所管理的部件1061、1062…、106n处已经完成所有代码加载操作。如果当前状况204表示“已经完成”、“出现故障”或者“没有开始”,则针对所管理的部件1061、1062…、106n的代码操作已经完成,而如果状况信箱1121、1122、…、112n中的当前状况204指示“已经启动”、“正在进行之中”等,则代码加载操作尚未完成。
如果(在方框402处)已经完成了所有代码加载操作,则代码加载引擎114指示(在方框404处)当前未正在处理代码加载操作的另一个节点组1022接管系统100的操作,例如,在系统100处执行的与代码加载无关的存储操作或者其它操作。然后指示(在方框406处)当前节点组1021启动其更新,以更新计算节点1041处的软件、固件以及代码。
如果(在方框402处)所管理的部件1061、1062…、106n处的代码加载操作尚未完成,则代码加载引擎114指示(在方框408处)当前正在处理代码加载操作的当前节点组(例如,1021)停止代码加载操作,并且指示(在方框410处)当前未在处理代码加载操作的另一个节点组(例如,1022)接管代码加载和系统操作。在被指示停止代码加载操作之前,所述另一个节点组1022可以一直在执行系统操作。节点组执行系统操作,除非当节点或者节点组必须进行代码加载时。然后,指示(在方框412处)当前节点组1021在其计算节点处开始代码更新操作。此时,已经接管系统和代码加载操作的另一个节点组(例如,1022)变为当前节点组。
在图4的操作中,当需要更新计算节点1041中的代码时,执行从第一节点组1021到第二节点组1022的代码加载操作的控制的转交。在可选一些实施例中,其它事件可以触发从第一节点组1021到第二节点组1022转交代码加载操作控制的需求,例如,第一节点组1021处的故障、第一节点组1021正遭遇低资源可用性并且需要关闭操作以保存资源、或者把第一节点组1021导向其它操作的需求。
图5说明了作为第一节点组的被代码加载引擎114所调用的以开始代码加载操作的节点组1021、1022之一(例如,1021)的代码加载管理器1051、1052所执行的操作的一个实施例。当启动了(在方框500处)代码加载操作时,代码加载管理器1051确定(在方框502处)所管理的部件1061、1062…、106n中的每一个的冗余的实例。代码加载管理器1051可以考虑提供所管理的部件1061、1062…、106n的不同实例的冗余的组中的所管理的部件1061、1062…、106n,使得一次仅处理所管理的部件1061、1062…、106n中的一个实例,留下所管理的部件1061、1062…、106n中的其它冗余的组或者实例,使它们可用于支持第一节点组102所执行的系统操作。代码加载管理器1051针对每一个所管理的部件i,j(其中,i为所管理的部件1061,1062…106n的类型,例如电源、附件、适配器等,以及j为所管理的部件i的一个实例),执行方框504~518处的操作的一个循环。代码加载管理器1051针对所管理的部件i的每一个实例j,执行方框506~516处的操作的一个内循环。按照这一方式,仅针对某一具体的所管理的部件i的一个实例执行代码加载操作,从而使另一个实例依然可用于执行系统100中的部件操作。
对于所管理的部件i,j的每一个所处理的实例,代码加载引擎1051针对一系列代码加载操作中的每一个代码加载操作k,执行方框508~514处的操作的循环。在方框510处,代码加载引擎1051启动代码加载操作k。如果(在方框512处)针对所管理的部件i,j的状况信箱1121,1122…112n中的最新状况200指示代码加载操作k(在状况信息字段202中标识的)已经完成(在状况字段204中标识的),则控制继续处理所述系列中的下一个代码加载操作(k+1),直至处理了所述系列中的所有代码加载操作。如果(在方框512处)最新状况200没有指示代码加载操作k已经完成,则控制循环返回至方框512等待,直至操作k完成。
所述系列中的代码加载操作可以包含任何数目的操作,例如,预先验证、代码分配、完好性检查、以及激活代码等。当被调用执行代码加载操作k时,所管理的部件i,j将把状况信息200发送给其状况信箱1121,1122…112n,状况信箱1121,1122…112n指示处理代码加载操作k的状况,例如,“已经启动”、“正在进行之中”、“已经完成”、“出现故障”等。
在图5的操作中,第一节点组(例如,1021)针对所管理的部件i,j中的每一个实例执行代码加载操作,以致在针对诸如所管理的部件i,1的第一实例执行代码加载操作的同时,另一个所管理的部件i,2的实例也正在执行部件操作。
图5示出了可以如何执行所述逻辑的一个实施例。可以按不同的操作次序处理所管理的部件1061,1062…106n。另外,一或多个计算节点1041可以针对不同所管理的部件类型并行地执行代码加载操作,也可以顺序地执行代码加载操作。
图6示出了当其它节点组1021需要更新其代码时,接管代码加载操作的节点组1022所执行的操作的一个实施例。在以下的实例中,节点组1022包含把代码加载操作的控制被转交给其的第二节点组,而第一节点组1021放弃代码加载操作,以执行其计算节点1041的代码更新。作为选择,节点组1021可以执行从节点组1022接管代码加载操作的图6的操作。当第二节点组1022(在方框600处)从代码加载引擎114接收到指示接管代码加载操作的指令时,代码加载管理器1052针对每一个所管理的部件i,j(其中,i为所管理的部件1061,1062…106n的类型,例如电源、附件、适配器等,以及j为所管理的部件i的实例),执行方框602~620处的操作的循环。代码加载管理器1052针对所管理的部件i的每一个实例j,执行方框604~618处的操作的内循环。按照这一方式,仅针对某一具体的所管理的部件i的一个实例执行代码加载操作,从而使另一个实例依然可用于执行系统100中的部件操作。
对于所管理的部件i,j,如果(在方框606处)针对所管理的部件i,j的状况信箱1121,1122…112n中的状况信息200指示已经针对所管理的部件i,j完成了所述系列中的所有代码加载操作,则已经针对所管理的部件i,j完成了代码加载,并且控制(在方框618处)可以针对所管理的部件i的下一个实例返回至方框604,或者如果已经考虑了所管理的部件i的所有实例,则控制从方框620进行至方框602,继续考虑下一个所管理的部件i,j。如果(在方框606处)针对所管理的部件i,j的状况信箱1121,1122…112n中的最新状况信息200指示尚未完成所有代码加载操作,则(在方框608处)根据最新状况信息200的操作字段204确定所述操作系列中具有最新状况的操作k。如果(在方框610处)在状况字段204中针对操作k的最新状况指示操作已经完成,而且如果(在方框612处)所述系列中还存在操作k之后的操作,则递增k,并且在所管理的部件i,j处(在方框616处)启动所述系列中的下一个操作的代码加载操作k。在启动了所述系列中的下一个代码加载操作之后,控制返回至方框610。如果(在方框610处)当前状况204中针对操作k的最新状况指示操作没有完成,则控制循环回到方框610,以等待所管理的部件i,j完成代码加载操作,以添加指示“已经完成”状况的操作k的状况信息200。如果(在方框612处)所述系列中不存在进一步的操作,则控制(在方框618处)继续考虑所管理的部件i的任何进一步的实例,或者如果存在任何进一步的实例,则前进至方框620,考虑下一个所管理的部件。
使用图6的所描述的操作,第二节点组1022寻找尚未完成代码加载操作的任何所管理的部件1061,1062…106n,以完成代码加载操作。与图5的操作一样,接管代码加载操作的第二节点组1022一次将仅针对所管理的部件的一个实例执行所述操作,从而可以使用另一个实例执行系统100中的部件操作。
另外,如果第二节点组1022出于任何目的(例如,执行其自己的代码更新)需要离线,则管理控制台110可以调用第一节点组1021或者另一个节点组执行图6的接管代码加载操作的操作。于是,当任何节点组需要把代码加载操作移交给另一个节点组时,可以使用图6的操作。
本发明可以是系统、方法与/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
可以在一或多个计算机系统(例如,图7中所示的计算机系统702)中实现包括计算机系统100和计算节点1041、1042的图1的计算部件。可以在计算机系统执行的诸如程序模块的计算机系统可执行指令的一般情境中描述计算机系统/服务器702。通常,程序模块可以包括执行具体任务或者实现具体抽象数据类型的例程、程序、对象、部件、逻辑、数据结构等。可以在其中通过通信网络链接的远程处理设备执行任务的分布式云计算环境中实现计算机系统/服务器702。在分布式云计算环境中,可以把程序模块定位在包括内存存储设备的本地和远程两种计算机系统存储介质中。
如图7中所示,按通用计算设备的形式描述了计算机系统/服务器702。计算机系统/服务器702的部件可以包括,但不局限于一或多个处理器或者处理单元704、系统内存706、以及耦合包括系统内存706的各系统部件至处理器704的总线708。总线708代表一或多个任何类型的总线结构,包括内存总线或者内存控制器、外围总线、加速图形端口、以及处理器或者使用各种总线体系结构中任何一种总线体系结构的局部总线。例如,但非限制地,这样的体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强的ISA(EISA)总线、视频电子标准协会(VESA)局部总线、以及外部部件互连(PCI)总线。
计算机系统/服务器702通常包括多种计算机系统可读介质。这样的介质可以为计算机系统/服务器702可以访问的任何可用的介质,而且其既包括易失与非易失介质,也包括可拆卸与不可拆卸介质。
系统内存706可以包括易失存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)710与/或超高速缓冲存储器712。计算机系统/服务器702还可以包括其它可拆卸/不可拆卸、易失/非易失计算机存储介质。仅为举例,可以提供存储系统713,以从不可拆卸、非易失磁介质(未加以描述,通常将其称为“硬驱动器”)读取以及向其写入。尽管未加以描述,但可以提供用于从可拆卸、非易失磁盘(例如“软盘”)读取以及向其写入的磁盘驱动器、以及用于从可拆卸、非易失光盘(例如“CD-ROM”、“DVD-ROM”、或者其它光介质)读取以及向其写入的光盘驱动器。在这样的实例中,可以通过一或多个数据介质接口把每一个实例连接于总线708。如以下将进一步加以描述与说明的,内存706可以包括至少一个程序产品,所述程序产品具有一组(例如,至少一个)配置为执行本发明实施例的功能的程序模块。
例如,但非限制地,可以把具有一组(例如,至少一个)程序模块716的程序/实用程序714、以及操作系统、一或多个应用程序、其它程序模块与程序数据存储在系统内存706中。操作系统、一或多个应用程序、其它程序模块、以及与程序数据或者它们的某一组合均可以包括网络连接环境的实现。可以把计算机702的部件作为通常执行此处所描述的本发明实施例的功能与/或方法的程序模块716加以实现。可以在一或多个计算机系统702中实现图1的系统,其中,如果在多个计算机系统702中实现它们,则这些计算机系统可以通过网络进行通信。
计算机系统/服务器702也可以与如下一或多个外部设备718进行通信:例如,键盘、鼠标设备、显示器720等;一或多个能够使用户与计算机系统/服务器702进行交互的设备;与/或任何能够使计算机系统/服务器702与一或多个其它计算设备进行通信的设备(例如,网卡、调制解调器等)。可以经由输入/输出接口(I/O)接口722进行这样的通信。另外,计算机系统/服务器702还可以经由网络适配器724与诸如局域网(LAN)、通常的广域网(WAN)、与/或公共网络(例如,Internet)的一或多个网络进行通信。如所描述的,网络适配器724经由总线708与计算机系统/服务器702的其它部件进行通信。应该意识到,尽管未示出,也可以与计算机系统/服务器702一起使用其它硬件与/或软件部件。实例包括,但不局限于:微代码、设备驱动器、冗余的处理单元、外部盘驱动器阵列、RAID系统、磁带驱动器、以及数据档案库存储系统等。
术语“一实施例”、“实施例”、“一些实施例”、“所述实施例”、“所述一些实施例”、“一或多个实施例”、“某些实施例”、以及“一个实施例”意指本发明的一或多个(而不是全部)实施例,除非明确加以指出。。
术语“包括”、“包含”、“具有”及其变体意指“包括,但不局限于”,除非明确加以指出。
项目的枚举列表不意味着任何或者全部项目是互斥的,除非明确加以指出。
术语“一个”以及“该或者所述”意指“一或多个”,除非明确加以指出。
互相通信的设备不需要互相连续地进行通信,除非明确加以指出。另外,互相通信的设备可以直接或者间接通过一或多个互连介质进行通信。
对一个具有互相通信的若干部件的实施例的描述不意味着需要所有这样的部件。相反,为了说明本发明的广泛可能的实施例,描述了各种可选的部件。
当此处描述一个单一的设备或者产品时,应该明显意识到,可以取代单一的设备/产品,使用一个以上的设备/产品(无论它们是否合作)。相类似,在描述一个以上的设备/产品(无论它们是否合作)的地方,应该明显意识到,可以取代一个以上的设备/产品使用一个单一的设备/产品,或者使用不同数目的设备/产品取代所描述数目的设备或者产品。某一设备的功能和/或特性也可以由未明确描述为具有这样功能与/或特性的一或多个其它设备来实施。因此,本发明的其它实施例不需要包括设备本身。
已经说明性和描述性地对本发明的各实施例进行了以上描述。这一描述不旨在穷举或者把本发明限制于所公开的精确形式。鉴于以上描述,可以对本发明进行多方面的修改与变动。不旨在通过这一详细描述限制本发明的范围,而本发明的范围由此处所附权利要求加以限制。以上说明、示例以及数据提供了对本发明的制造与使用的一个完整的描述。由于可以在不背离本发明的宗旨与范围的情况下实现本发明的许多实施例,所以本发明体现于以下所附权利要求。
Claims (15)
1.一种用于在计算机系统的所管理的部件处执行代码加载操作的系统,包含:
第一节点组,包含计算机系统中的至少一个计算节点;
第二节点组,包含计算机系统中的至少一个计算节点;
具有程序指令的计算机可读存储介质,当第一节点组和第二节点组中的计算节点执行所述程序指令时,致使第一节点组和第二节点组执行操作,所述操作包含:
第一节点组执行针对所管理的部件的代码加载操作;
把所管理的部件的代码加载操作的状况写至状况数据结构,同时在所管理的部件处执行代码加载操作;
第一节点组把针对所管理的部件的代码加载操作的控制转交给第二节点组,同时在所管理的部件处正在进行代码加载操作;
第二节点组读取所管理的部件的状况数据结构,以确定代码加载操作的状况,并且继续所管理的部件处的代码加载操作。
2.根据权利要求1所述的系统,其中,响应于对在第一节点组中至少一个计算节点处执行代码更新的判断,第一节点组把代码加载操作的控制转交给第二节点组。
3.根据权利要求1所述的系统,其中,存在所管理的部件的冗余的第一和第二实例,其中,第一节点组和第二节点组在所管理的部件处通过执行以下操作执行代码加载操作:
在所管理的部件的第一实例处执行代码加载操作,同时,所管理的部件的第二实例执行与所述代码加载操作无关的部件操作;以及
响应于根据在第一实例处已经完成代码加载操作的所管理的部件之一的第一实例的状况数据结构的判断、以及所管理的部件的第一实例可用,执行所管理的部件的第二实例处的代码加载操作,同时,所管理的部件的第一实例执行与所述代码加载操作无关的部件操作。
4.根据权利要求3所述的系统,其中,第一和第二组节点执行针对存储的存储控制器和输入/输出操作,而且其中,所管理的部件包括存储附件、适配器、以及功率部件至少之一的冗余的实例,而且其中,所管理的部件的第二实例支持至存储器的I/O操作,同时,在所管理的部件的第一实例处执行代码加载,而且其中,所管理的部件的第一实例支持至存储器的I/O操作,同时,在所管理的部件的第二实例处执行代码加载。
5.根据权利要求1所述的系统,其中,第一和第二组节点通过针对每一个所管理的部件执行下列操作执行代码加载操作:
启动所管理的部件处的一系列代码加载操作,其中,在完成所述系列中的前一个代码加载操作之前,不执行所述系列中的代码加载操作;以及
报告记录在每一个代码加载操作的状况数据结构中的状况,所述状况指示所述系列中的操作以及“已经启动”、“正在进行之中”、“已经完成”、“发生故障”之一的状况。
6.根据权利要求5所述的系统,其中,所述针对至少一个所管理的部件的代码加载操作的系列包含:
预先验证所管理的部件进行代码加载更新的需求;
响应于对所管理的部件需要进行代码加载更新的预先验证,把将施加于所管理的部件的代码分配给第一节点组;
响应于把代码向第一节点组的分配,对所管理的部件进行完好性检查,以判断其是否处于接收代码加载更新的完好操作状态;
其中,指示第一节点组响应于完好性检查的完成以及对所管理的部件处于接收代码加载更新的完好操作状态的判断,根据向所管理的部件所分配的代码,执行代码加载更新。
7.根据权利要求1所述的系统,其中,管理控制台执行下列操作:
指示第一节点组执行针对所管理的部件的代码加载操作;
确定第一节点组将更新第一节点组处的至少一个计算节点中的代码;
指示第一节点组停止代码加载操作,并且开始第一节点组中的至少一个计算节点的代码更新操作;
指示第二节点组根据状况数据结构中所指示的代码加载操作的状况,继续所管理的部件的代码加载操作。
8.一种用于在计算机系统的所管理的部件处执行代码加载操作的方法,包含:
包含计算机系统中的至少一个计算节点的第一节点组执行针对所管理的部件的代码加载操作;
把所管理的部件处的代码加载操作的状况写至状况数据结构,同时在所管理的部件处执行代码加载操作。
第一节点组把针对所管理的部件的代码加载操作的控制转交给包含计算机系统中的至少一个计算节点的第二节点组,同时,在所管理的部件处正在进行代码加载操作;
第二节点组读取所管理的部件的状况数据结构,以确定代码加载操作的状况,并且继续在所管理的部件处的代码加载操作。
9.根据权利要求8所述的方法,其中,响应于对在第一节点组中的至少一个计算节点处执行代码更新的判断,第一节点组把代码加载操作的控制转交给第二节点组。
10.根据权利要求8所述的方法,其中,存在所管理的部件的冗余的第一和第二实例,其中,第一节点组和第二节点组在所管理的部件处通过执行以下操作执行代码加载操作:
在所管理的部件的第一实例处执行代码加载操作,同时,所管理的部件的第二实例执行与所述代码加载操作无关的部件操作;以及
响应于根据在第一实例处已经完成代码加载操作的所管理的部件之一的第一实例的状况数据结构的判断、以及所管理的部件的第一实例可用,执行所管理的部件的第二实例处的代码加载操作,同时,所管理的部件的第一实例执行与所述代码加载操作无关的部件操作。
11.根据权利要求10所述的方法,其中,第一和第二组节点执行针对存储的存储控制器和输入/输出操作,而且其中,所管理的部件包括存储附件、适配器、以及功率部件至少之一的冗余的实例,而且其中,所管理的部件的第二实例支持至存储器的I/O操作,同时,在所管理的部件的第一实例处执行代码加载,而且其中,所管理的部件的第一实例支持至存储器的I/O操作,同时,在所管理的部件的第二实例处执行代码加载。
12.根据权利要求8所述的方法,其中,第一和第二组节点通过针对每一个所管理的部件执行下列操作来执行代码加载操作:
启动所管理的部件处的一系列代码加载操作,其中,在完成所述系列中的前一个代码加载操作之前,不执行所述系列中的代码加载操作;以及
报告记录在每一个代码加载操作的状况数据结构中的状况,所述状况指示所述系列中的操作以及“已经启动”、“正在进行之中”、“已经完成”、“发生故障”之一的状况。
13.根据权利要求12所述的系统,其中,所述针对至少一个所管理的部件的代码加载操作的系列包含:
预先验证所管理的部件进行代码加载更新的需求;
响应于对所管理的部件需要进行代码加载更新的预先验证,把将施加于所管理的部件的代码分配给第一节点组;
响应于把代码向第一节点组的分配,对所管理的部件进行完好性检查,以判断其是否处于接收代码加载更新的完好操作状态;
其中,指示第一节点组响应于完好性检查的完成以及对所管理的部件处于接收代码加载更新的完好操作状态的判断,根据向所管理的部件所分配的代码,执行代码加载更新。
14.根据权利要求8所述的方法,其中,管理控制台执行下列操作:
指示第一节点组执行针对所管理的部件的代码加载操作;
确定第一节点组将更新第一节点组处的至少一个计算节点中的代码;
指示第一节点组停止代码加载操作,并且开始第一节点组中的至少一个计算节点的代码更新操作;
指示第二节点组根据状况数据结构中所指示的代码加载操作的状况,继续所管理的部件的代码加载操作。
15.一种用于在计算机系统的所管理的部件处执行代码加载操作的系统,包含用于执行权利要求8~14任何之一的方法的任何步骤的装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/659,491 | 2015-03-16 | ||
US14/659,491 US9557984B2 (en) | 2015-03-16 | 2015-03-16 | Performing code load operations on managed components in a system |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105988853A true CN105988853A (zh) | 2016-10-05 |
Family
ID=55586156
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610111403.2A Pending CN105988853A (zh) | 2015-03-16 | 2016-02-29 | 用于在所管理的部件上执行代码加载操作的方法与系统 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9557984B2 (zh) |
EP (1) | EP3073372A1 (zh) |
CN (1) | CN105988853A (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9286056B2 (en) * | 2014-05-19 | 2016-03-15 | International Business Machines Corporation | Reducing storage facility code load suspend rate by redundancy check |
FR3057086B1 (fr) * | 2016-10-04 | 2018-11-23 | Stmicroelectronics (Rousset) Sas | Procede de gestion d'une mise a jour d'au moins un microcode au sein d'une unite de traitement, par exemple un microcontroleur, et unite de traitement correspondante |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1892605A (zh) * | 2005-06-28 | 2007-01-10 | 国际商业机器公司 | 用于动态群集代码管理的方法和系统 |
CN1996254A (zh) * | 2006-01-03 | 2007-07-11 | 国际商业机器公司 | 用于冗余控制器固件更新的装置、系统和方法 |
CN103946844A (zh) * | 2011-11-29 | 2014-07-23 | 国际商业机器公司 | 跨集群文件系统同步更新 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6085333A (en) | 1997-12-19 | 2000-07-04 | Lsi Logic Corporation | Method and apparatus for synchronization of code in redundant controllers in a swappable environment |
US20020078437A1 (en) * | 2000-12-15 | 2002-06-20 | International Business Machines Corporation | Code load distribution |
US8874302B2 (en) | 2005-05-27 | 2014-10-28 | Bosch Automotive Service Solutions Llc | Automotive scanner with advanced module programming options |
US20060282831A1 (en) * | 2005-05-31 | 2006-12-14 | Maria Toeroe | Method and hardware node for customized upgrade control |
US7743224B2 (en) | 2006-01-06 | 2010-06-22 | Dot Hill Systems Corp. | Method and apparatus for virtual load regions in storage system controllers |
US7661018B2 (en) | 2006-12-21 | 2010-02-09 | International Business Machines Corporation | Method, apparatus and program storage device for providing automatic recovery from premature reboot of a system during a concurrent upgrade |
JP4467623B2 (ja) * | 2008-03-19 | 2010-05-26 | 富士通株式会社 | アップデート管理プログラム、管理ノード、アップデート管理方法、およびクラスタシステム |
US20090319699A1 (en) * | 2008-06-23 | 2009-12-24 | International Business Machines Corporation | Preventing Loss of Access to a Storage System During a Concurrent Code Load |
EP2141590A1 (en) | 2008-06-26 | 2010-01-06 | Axalto S.A. | Method of managing data in a portable electronic device having a plurality of controllers |
TWI447579B (zh) | 2011-05-18 | 2014-08-01 | Phison Electronics Corp | 程式碼載入與存取方法、記憶體控制器與記憶體儲存裝置 |
CN102968357B (zh) | 2012-11-01 | 2015-09-16 | 中兴通讯股份有限公司 | 一种分布式通信设备软件升级方法及系统 |
US9674105B2 (en) | 2013-06-19 | 2017-06-06 | International Business Machines Corporation | Applying a platform code level update to an operational node |
-
2015
- 2015-03-16 US US14/659,491 patent/US9557984B2/en active Active
-
2016
- 2016-02-29 CN CN201610111403.2A patent/CN105988853A/zh active Pending
- 2016-03-11 EP EP16159948.5A patent/EP3073372A1/en not_active Withdrawn
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1892605A (zh) * | 2005-06-28 | 2007-01-10 | 国际商业机器公司 | 用于动态群集代码管理的方法和系统 |
CN1996254A (zh) * | 2006-01-03 | 2007-07-11 | 国际商业机器公司 | 用于冗余控制器固件更新的装置、系统和方法 |
CN103946844A (zh) * | 2011-11-29 | 2014-07-23 | 国际商业机器公司 | 跨集群文件系统同步更新 |
Also Published As
Publication number | Publication date |
---|---|
EP3073372A1 (en) | 2016-09-28 |
US9557984B2 (en) | 2017-01-31 |
US20160274886A1 (en) | 2016-09-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103297492B (zh) | 用于在联网计算环境之间迁移数据的方法和系统 | |
US20150169313A1 (en) | Integrated system and firmware update method | |
CN102761566B (zh) | 迁移虚拟机的方法和装置 | |
CN107038089A (zh) | 支持编排的服务的高可用性的方法与系统 | |
CN106020854A (zh) | 将固件更新应用在具有零停机时间的系统中 | |
CN106462505A (zh) | 同步计算环境中对状态指示符的更新 | |
US20200174769A1 (en) | Cognitive microcode simulation, planning, and risk assessment | |
CN105975254A (zh) | 用于智能移动应用更新的方法和系统 | |
US10938826B2 (en) | Intelligent device security | |
CN105103132A (zh) | 在升级期间修复云服务 | |
CN101221551A (zh) | 用于对称多处理器互连的方法和设备以及多处理器 | |
CN110149231A (zh) | 更新虚拟交换机的方法、装置、存储介质和设备 | |
CN112099917B (zh) | 调控系统容器化应用运行管理方法、系统、设备及介质 | |
JP2005242574A (ja) | 情報処理システム、および情報処理方法 | |
CN106502654A (zh) | 虚拟现实场景加载方法及设备 | |
CN106066812A (zh) | 基于应用的历史信息管理资源 | |
CN105786593A (zh) | 用于重启上下文相关的应用集的方法和系统 | |
CN105960635A (zh) | 从具有不同时间点的源数据的存储库中的源数据的拷贝创建复原拷贝 | |
CN108369489A (zh) | 预测固态驱动器可靠性 | |
CN102325159A (zh) | 一种虚拟实验平台离线应用交互系统 | |
US20050166080A1 (en) | Systems and methods for reliability and performability assessment | |
CN116490830A (zh) | 控制系统以及控制方法 | |
CN113050929A (zh) | 一种基于Hyperledger Fabric的智能合约开发运维一体化平台 | |
CN105988853A (zh) | 用于在所管理的部件上执行代码加载操作的方法与系统 | |
US9372731B1 (en) | Automated firmware settings framework |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20161005 |