CN100421083C - 更新适配器代码映像的装置、系统和方法 - Google Patents
更新适配器代码映像的装置、系统和方法 Download PDFInfo
- Publication number
- CN100421083C CN100421083C CNB2005101187514A CN200510118751A CN100421083C CN 100421083 C CN100421083 C CN 100421083C CN B2005101187514 A CNB2005101187514 A CN B2005101187514A CN 200510118751 A CN200510118751 A CN 200510118751A CN 100421083 C CN100421083 C CN 100421083C
- Authority
- CN
- China
- Prior art keywords
- code image
- communication adapter
- module
- data
- code
- 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.)
- Expired - Fee Related
Links
Images
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
Abstract
本发明公开了一种更新通信适配器代码映像的装置、系统以及方法。该装置包括保存模块、更新模块、以及恢复模块。保存模块保存与通信适配器处的连接有关的配置数据。更新模块更新通信适配器上的代码映像。恢复模块响应于代码映像更新,恢复配置数据。该装置方便地消除了在代码映像更新之后传统主机恢复的必要,包括重新登录以及通道和连接的重新建立。
Description
技术领域
本发明涉及嵌入式代码,例如微码,尤其是涉及更新通信适配器上的代码映像而不需要执行主机恢复。
背景技术
用户不断的要求高可用性的计算机系统和计算机子系统。网络服务器、数据库服务器、应用服务器等都被期望是始终可用的。即使有脱机的情况,对这些系统的维护和升级也应该使系统脱机的时间最小。
计算机系统或者子系统包含一组执行操作的基本指令集。这组基本指令集由一组基础的计算机指令组成,类似于操作系统,定义计算机系统或子系统如何运行。通常,这组基本指令集被称作代码映像(code image)、微码、嵌入式代码等。代码映像典型地包括汇编代码指令或者原始机器语言的二进制代码指令,这些指令针对具体的微处理器和/或硬件组被优化。
典型地,基本输入输出系统(BIOS)程序在计算机系统加电时将代码映像加载到易失性随机存储器(RAM)。另一方面,代码映像被存储在非易失性RAM或其它形式的存储器中。一旦计算机系统正确初始化,代码映像中的指令就开始执行。
代码映像必须被周期性地更新,以提供改进的功能、解决编程缺陷和/或支持新的硬件。大家期望的是,应该在老代码映像运行的同时,用计算机系统最少的中断,来完成新代码映像对老代码映像的更新。代码映像更新应该要求用最少的时间,包含复杂性最低的操作,并且一旦更新完成,应该用最短延迟来恢复正常操作。
传统上,代码映像更新是由老代码映像中的一段来执行,称作引导代码。引导代码响应于中断而执行,然后发起代码映像更新操作。复制操作用新代码映像部分或全部地覆盖老代码映像。这个过程被称作代码覆盖。
图1描述了一个传统的代码覆盖方法。执行一个传统的代码覆盖并重新初始化一个通信适配器的标准方法,包括使通信适配器脱机和因此中止输入/输出(I/O)操作。通信适配器随后切断光,这是在光纤通信信道上使用的光传输信号。随着通信适配器脱机,新代码映像被加载到通信适配器上,替换老代码映像。传统上,代码覆盖由一段引导代码实现,例如,存储在老代码映像或者闪存映像里。加载新代码映像后,通信适配器随后导通光。
然后为了重新初始化通信适配器,新代码映像可以初始化任何代码结构并使主机总线适配器回到联机状态。不幸的是,在传统的代码覆盖期间,通信适配器脱机的时间太长,以至于一个远程主机的I/O请求会被拒绝。为了继续I/O操作,远程主机必须重新登录并与该通信适配器建立新的通道和连接。
另一种最新的代码更新方法采用一种降低通信适配器脱机时间的代码覆盖操作。在此方法中,许多相关的代码覆盖操作在通信适配器脱机之前执行。这种技术可以被称作“快速加载”,以区别于其它的传统技术。然而,执行快速加载覆盖以及使适配器脱机后恢复光所需的时间,仍然可能需要主机重新登录并和通信适配器建立新的通道和连接。
具有主机总线适配器的主机,可以在主机总线适配器脱机期间重试发送I/O请求。如果主机在一个重试周期期间不能发送I/O操作,命令就可能在这个周期内超时,其根据特定的硬件或者应用程序配置而不同。一旦超时,远程主机就可能认为通信适配器失效,将端口标记为“坏”,并且从通道组中移除该通道。为了重新建立通道,如上所述,远程主机不得不执行一个恢复序列。
如上所述,典型的代码覆盖过程要求受影响的硬件设备要在相当的时间内是脱机的。对于通信适配器,例如主机适配器或者主机总线适配器,这个过程可能需要几分钟来完成,在这段时间内,主机可能确定适配器已经发生故障并切换到备用通道。在没有备用通道存在的情况下,整个系统就可能在这个冗长的过程中被终止。无论系统在超时和故障切换期间被终止,还是系统在代码覆盖过程中完全脱机,I/O通道和对用户的系统可用性的破坏可能产生代价很大的影响。
经过前面的讨论,很明显,存在一种研发一种装置、系统和方法的需求,能够更新通信适配器上的代码映像,而不需要主机重新登录并重新建立连接通道。这种装置、系统和方法所带来的技术效果将解决与传统的代码覆盖技术有关的现有难题。
发明内容
针对现有技术的状况,开发本发明的几个实施例,具体地讲,针对本技术领域中那些目前可用的代码映像更新系统还没有完全解决的问题和需求。因此,本发明已经被开发以提供一种装置、系统和方法,用来更新适配器的代码映像,克服多数或者全部上面讨论的存在于本技术领域中的缺限。
用于更新代码映像的该装置具有包含多个模块的逻辑单元,在功能上被配置为执行代码映像更新所必需的操作。在所描述的实施例中,这些模块包括更新模块、保存模块、恢复模块、快速加载模块、登录模块以及通道模块。
在一个实施例中,更新模块用来更新通信适配器上的代码映像。在另外一个实施例中,更新模块可能实现快速加载更新以更新代码映像。
在一个实施例中,保存模块用来保存与该通信适配器处的连接有关的配置数据。在另外一个实施例中,保存模块可能响应于适配器快速加载操作,保存配置数据。在一个实施例中,配置数据可能包括登录数据和/或通道连接数据。或者,配置数据可能包括其它描述在主机和存储系统之间通信信道的一个或多个方面的配置数据。
在一个实施例中,恢复模块响应于代码映像更新,恢复连接数据。特别是,恢复模块可以恢复在代码映像更新之前保存模块所保存的登录数据、通道连接数据或者其它数据。更特别地,恢复模块还可以按照与代码映像更新之前基本相同的次序,向通信适配器上的每个本地端口重新注册主机。此外,恢复模块可以在与代码映像更新之前基本相同的逻辑通道上,逻辑上将主机与通信适配器重新连接。换句话说,在通信适配器上的代码映像更新以后,恢复模块可以将通信系统的配置恢复到与代码映像更新之前基本相同。
在一个实施例中,快速加载模块实现快速加载代码更新。如在这里所述的,快速加载代码更新区别于其它传统的代码更新技术之处在于快速加载代码更新可以减少通信适配器在代码覆盖操作期间的脱机时间。
在一个实施例中,登录模块在代码映像更新之前,将登录数据保存在登录数据结构中。登录模块可以将登录数据保存到通信适配器的电子存储设备或者另一个耦合到通信适配器的数据存储设备。
在一个实施例中,通道模块在代码映像更新之前,将通道连接数据保存在通道数据结构中。通道模块可以将通道连接数据保存到通信适配器的电子存储设备或者另一个耦合到通信适配器的数据存储设备。
一种本发明的系统也被提出,用来更新代码映像。在一个实施例中,该系统可能包含在通信系统中,其包括存储系统和耦合到存储系统的一个或多个主机。存储系统可能具有多个电子数据存储设备。在一个实施例中,通信适配器可以耦合到存储系统,并且适配器可以在其上存储代码映像。主机被配置为向存储系统发送I/O请求。此外,更新装置可能耦合到适配器。该更新装置可以在代码覆盖之前存储与通信适配器有关的配置数据,并响应于代码覆盖,恢复配置数据。
本系统的另一个实施例可能包括耦合到通信适配器的电子存储设备。此外,本系统可能包括快速加载模块和更新模块,它们都耦合到通信适配器。另外,老代码映像和新代码映像可能存储在电子存储设备中。
一种信号承载介质也被提出,用来存储程序,该程序运行时,执行一个或多个操作以更新代码映像。在一个实施例中,这些操作包括保存与通信适配器处的连接有关的配置数据,更新通信适配器上的代码映像以及响应于代码映像更新,恢复配置数据。
在另一个实施例中,这些操作也可能包括在代码映像更新之前将登录数据保存在登录数据结构中,并且/或者在代码映像更新之后,按照与代码映像更新之前基本相同的次序,向多个本地端口重新注册多个远程端口。在另一个实施例中,这些操作还可能包括在代码映像更新之前将通道连接数据保存到通道数据结构,并且/或者在代码映像更新之后,在与代码映像更新之前的多个逻辑通道基本类似的多个逻辑通道上,根据其中的通道连接数据,逻辑上将多个远程端口与多个本地端口重新连接。
还提出一种方法,用来配置计算基础架构。计算基础架构包括集成到计算机系统里的计算机可读代码。在一个实施例中,计算机可读代码,与计算系统结合,可以更新代码映像。特别地,关于所述装置和系统的操作方面,公开实施例中的方法基本上包括部署代码,能够实现上面提到的功能所必需的操作。此外,该代码的部分或所有操作基本上类似于当信号承载介质上的程序执行时所完成的操作。
贯穿本说明书中所涉及到的特性、优点或者类似的术语并不意味着本发明可以实现的所有特性和优点应该在或正在本发明的任何单个实施例中。而是,涉及特性和优点的术语可以理解为,所述的与实施例有关的一个具体的特性、优点或特征至少被包括在本发明的一个实施例中。因此,对贯穿本说明书的特性、优点及类似术语的讨论,可能但不是必须,指相同的实施例。
此外,所述的本发明的特性、优点以及特征可以在一个或多个实施例中以任何适当的方式结合。一个相关技术领域的技术人员会认识到,本发明可以没有特定实施例的一个或多个具体的特性或优点而被实现。在其它情况下,另外的特性和优点可以在某些实施例中出现,而可能并不存在于本发明的所有实施例中。
本发明的这些特性和优点,将从以下描述和所附权利要求中更充分地显现出来,或者可以从在下文中阐明的本发明的实现中了解到。
附图说明
为了使本发明的优点容易被理解,将参考附图中图示的具体实施例,为本发明提供比上面的简单描述更为详细的说明。应当理解,这些附图只是描述本发明的典型实施例,并不能因此而当作它的范围限制。通过结合附图,将用另外的特征和细节来描述和说明本发明,其中
图1是一个示意流程图,图示传统的更新方法;
图2是一个示意方框图,图示通信系统的一个实施例;
图3是一个示意方框图,图示通信适配器的一个实施例;
图4是一个示意方框图,图示更新装置的一个实施例;
图5是一个示意方框图,图示通道数据结构的一个实施例;
图6是一个示意方框图,图示登录数据结构的一个实施例;
图7是一个示意流程图,图示更新方法的一个实施例;
图8是一个示意流程图,图示更新方法的另一个实施例;以及
图9是一个示意流程图,图示主机通信方法的一个实施例;
具体实施方式
为了着重强调他们实现的独立性,在本说明书中描述的多个功能单元已经被标注为模块。例如,模块可以实现为一块硬件电路,该硬件电路包括定制的超大规模集成电路(VLSI)或者门阵列,非定制的半导体例如逻辑芯片、晶体管或者其它分离元件。模块也可以以可编程的硬件设备的形式实现,例如现场可编程门阵列、可编程阵列逻辑、可编程逻辑设备等。
这些模块也可以在软件中实现,由多种类型的处理器执行。例如,可执行代码的识别模块,可能包含一个或多个物理或逻辑计算机指令块,这些指令块可以组织为诸如对象、过程或函数。然而,这些经识别的模块的可执行代码不需要从物理上被放置在一起,而是可以包含存储在不同位置上的分散指令,当这些指令在逻辑上被连接在一起时,就构成模块并完成其规定的作用。
实际上,可执行代码模块可以是一条单一指令,也可以是多条指令,甚至可以分布在几个不同的代码段,几个不同的程序中,并且跨越几个存储设备。类似地,操作数据可以在模块内部被识别并被解释,可能以任何适当的形式被具体化,并组织在任何适当类型的数据结构中。操作数据可能集中为一个单数据集,也可能分布在不同的位置,包括跨越不同的存储设备,并且,至少部分地,可能仅仅作为在系统或网络上的电子信号存在。
图2描述了通信系统200的一个实施例。图示的通信系统200包括3个连接到存储系统208的主机202、204、206。在一个实施例中,存储系统208被配置为存储数据的存储服务器。第一和第二主机202、204互为冗余通过交换机210连接到存储系统208。第三个主机206直接连接到存储系统208。为了清晰起见,其它潜在的连接性设备被忽略。
尽管有三个主机202、204、206图示在所描述实施例中,但在少于或多于主机202、204、206及存储系统208时,通信系统200可以运行。此外,在改变冗余和直联的替代配置中,主机202、204、206可以连接到存储系统208。进一步,所描述的电缆连接可能包含光纤信道、企业系统连接(ESCON)、光纤连接(FICON)信道、小型计算机系统接口(SCSI)等等。另外,通信系统200可以被配置为支持各种拓扑结构,包括点对点、光纤交换(Fabric Switched)、光纤信道判优环路(FC-AL)等等。而且,通信系统200可以支持多种上层协议(ULP),包括光纤信道协议(FCP)和FICON(FC-SB-2)。
所述主机202、204、206中的每个都包括一个或多个总线适配器(HBA)212、214、216。每个HBA 212、214、216都可以被配置为管理在对应的主机202、204、206和存储系统208之间传递数据所必须的I/O操作中的多数情况。尤其是,每个主机总线适配器212、214、216都被优化,以便能够非常快速地执行很多I/O操作,而主机202、204、206尽量少参与或者不参与,这样使主机202、204、206的工作负荷达到最小。主机总线适配器212、214、216也可以称为通信适配器。
所述的存储系统208包括多重、备用的主机适配器218、220和集群器222、224。如上所述,主机适配器218、220基本上类似于主机总线适配器212、214、216,也可以称为通信适配器。每个集群器222、224可以包括一个或多个多处理器226、228以及到多个逻辑单元号(LUN)230、232、234、236的连接。在具体的实施例中,集群器222可能首先访问偶数LUN 230、234,而另一集群器224则可能首先访问奇数LUN 232、236。在故障的情况下,例如硬件故障,在主机适配器218、220和集群器222、224之间以及在多处理器226、228和LUN 230、232、234、236之间的备用通道,将允许数据存储和访问。此外,存储系统208可以采用独立磁盘冗余阵列(RAID),来尽可能地镜像和剥离存储的数据以及计算和存储校验数据。
除非被另外明确的注明,否则,对图示主机202、204、206之一的任何引用,都应该理解为是指主机202、204、206的任何一个或者全部。同样,对所述的主机总线适配器212、214、216之一的任何引用,都应该被理解为是指通信适配器中的任何一个或者全部,包括主机总线适配器212、214、216和/或主机适配器218、220,除非被另外明确注明。类似地,对图示的备用的集群器222、224,多处理器226、228,或者LUN 230、232、234、236之一的引用,应该分别被理解为是指任何一个对应的设备,除非被另外明确注明。
在描述本发明时,为了简洁和清晰,贯穿本说明书,将描述不同的实施例,该实施例特别涉及在主机总线适配器212、214、216和主机适配器218、220中所使用的处理器和存储器。在这里所述的实施例都是代表性的例子,并没有打算像权利要求书所定义的那样限制本发明的范围。本技术领域的技术人员将很愿意看到某些实施例可以在任何计算机或电气系统中实现,其包括运行代码映像并使用代码覆盖来更新代码映像的处理器,诸如微处理器、特定用途集成电路(ASIC)等等。
图3描述了通信适配器300的一个实施例,基本类似于图2中的主机适配器218、220。图示的通信适配器300包括处理器(CPU)302、一个或多个闪存设备304、一个或多个可编程逻辑阵列(PLA)306、I/O端口308、本地存储设备310以及更新装置312。在另一个实施例中,通信适配器300可以包括多个I/O端口308。参照图4,更新装置312的一个例子被描述的更加详细。
在一个实施例中,现有的代码映像314存储在本地存储设备310上。该现有的代码映像314指的是老代码映像314,因为其可以被新代码映像316替换或丢弃。新代码映像316可以被加载到并存储在本地存储设备310,最终覆盖老代码映像314。
CPU 202配置为运行老代码映像314中的操作指令。在一个实施例中,老代码映像314配置为允许通信适配器300执行高速I/O操作,例如在主机202和存储系统208之间。闪存设备304和PLA 306与CPU 302交互,以正确地执行I/O操作。此外,I/O端口308允许通信适配器300与诸如主机202等其它设备交换数据和控制信息。这样的连接可以通过集线器、交换机210和/或其它连接设备实现。在一个实施例中,本地存储设备310可以是高速主存,例如随机存取存储器(RAM)、非易失性随机存取存储器(NVRAM)等等。
图4描述了更新装置400的一个实施例,该更新装置基本类似于图3中的更新装置312。图示的更新装置400包括更新模块402、保存模块404、恢复模块406、快速加载模块408、登录模块410以及通道模块412。尽管更新装置312的一个实施例被描述为在通信适配器300内,但更新装置400或者一个或更多模块可以连接到通信装置300并存储在处理器226或者存储系统208中的另一个设备上。
在一个实施例中,更新模块402更新通信适配器300上的代码映像。例如,更新模块402可能用新代码映像316覆盖老代码映像314。或者,更新模块402可能用另一种可能导致通信适配器300脱机一段时间的方式来更新代码映像。
在一个实施例中,保存模块404保存与通信适配器300处的连接有关的配置数据。例如,保存模块404可能响应于代码映像更新请求,保存配置数据,但先于代码映像覆盖的执行。在另外一个实施例中,保存模块404可以响应于适配器快速加载操作,保存配置数据。
配置数据可能包括登录数据和/或通道连接数据。或者,配置数据可以包括用来描述主机202和存储系统208之间通信信道的一个或多个方面的其它配置数据。参考图5,登录数据的一个例子将有更详细的描述。参考图6,通道连接数据的一个例子将有更详细的描述。
在一个实施例中,恢复模块406响应于代码映像更新,恢复连接数据。尤其是,恢复模块406可以在代码映像更新之前恢复由保存模块404保存的登录数据、通道连接数据或其它数据。例如,恢复模块406可以按照与代码映像更新之前基本相同的次序,向通信适配器300上的每个本地端口重新注册主机202、204、206。此外,恢复模块406可以在与代码映像更新之前基本相同的逻辑通道上,逻辑上将主机202、204、206与通信适配器重新连接。换句话说,恢复模块406可以在通信适配器300上的代码映像更新之后,将通信系统200的配置恢复到与代码映像更新之前基本相同。
在一个实施例中,快速加载模块408实现了快速加载代码更新。如上所述,快速加载代码更新区别于其它传统的代码更新技术之处在于快速加载代码更新可以减少通信适配器300在代码覆盖操作期间的脱机时间。
在一个实施例中,登录模块410在代码映像更新之前将登录数据保存在登录数据结构中。登录模块410可能保存与保存模块404关联的登录数据,或者,也可能保存与保存模块404无关的登录数据。尽管在图6中只图示了一个示例性数据结构,其中登录模块410可以保存登录数据,但如上所述,登录模块410还可以将登录数据以任何格式或数据结构保存,由此允许恢复模块406稍后能够恢复登录数据。另外,登录模块410可以将登录数据保存到通信适配器300的电子存储设备310或者另一个耦合到通信适配器300的数据存储设备。
在一个实施例中,通道模块412在代码映像更新之前将通道连接数据保存在通道数据结构中。通道模块412可以保存与保存模块404关联的通道连接数据,或者,也可能保存与保存模块404无关的通道连接数据。尽管在图5中只图示了一个示例性数据结构,其中通道模块412可以保存通道连接数据,但如上所述,通道模块412还可以将通道连接数据以任何格式或数据结构保存,由此允许恢复模块406稍后能够恢复通道连接数据。另外,通道模块412可以将通道连接数据保存到通信适配器300的电子存储设备310或者另一个耦合到通信适配器300的数据存储设备。
图5描述了通道数据结构500的一个实施例,可以被通道模块412用来存储通道连接数据。尤其是,图示的通道数据结构500包括逻辑通道号502,信道(比如,FICON主机202)的逻辑映像号504以及控制单元(比如,存储系统208)的逻辑映像号。图示的通道数据结构500也包括由通信适配器300指定的远程端口指示符(RPI)508,光纤信道N端口标识符606以及一个或多个用以指示对应逻辑连接通道状态的标志512。
尽管图示的通道数据结构500包括大量特定的属性字段,但通道数据结构500的另外的实施例可以包括较少或更多的属性字段,并且可以将或多或少的数据或元数据包含在每一个在这里描述的属性字段中。另外,所描述的用来存储数据或元数据的通道数据结构500的格式仅仅是一个示范性的格式,在其它的实施例中,可以用不同的格式来存储相同或者基本相同的信息。一个通道数据结构500的特别示例是FICON逻辑通道表,其包含关于已建立的逻辑通道的信息。
图6描述了登录数据结构600的一个实施例,其可以被登录模块412用来存储登录数据。尤其是,图示的登录数据结构600包括由通信适配器300指定的远程端口指示符(RPI)602、指示远程端口的状态的远程端口状态指示符604以及光纤信道N端口标识符606。图示的登录数据结构600也包括标识I/O端口308的全球端口名(WWPN)608、标识通信适配器300的全球节点名(WWNN)610、一类服务参数612以及其它类服务参数614(例如,二类、三类等)。
尽管图示的登录数据结构600包括大量特定的属性字段,但登录数据结构600的另外的实施例可能包括较少或更多的属性字段,并且可以将或多或少的数据或元数据包含在每一个在这里描述的属性字段中。另外,所描述的用来存储数据或元数据的登录数据结构600的格式仅仅是一个示范性的格式,在其它的实施例中,可以用不同的格式来存储相同或者基本相同的信息。一个登录数据结构600的特别示例是包含光纤信道登录信息的远程端口表。
图7描述了更新方法700的一个实施例,可以被使用在通信系统200上,以更新通信适配器300上的代码映像。图示的更新方法700可以开始于响应一个代码映像更新请求,或者,一个相关的操作,例如,加载新代码映像316到存储器310。
保存模块402随后将登录数据保存到702登录数据结构600。在一个实施例中,保存模块402可以调用登录模块410以创建登录数据结构600和/或将登录数据保存到登录数据结构600。类似地,保存模块402将通道连接数据保存704到通道数据结构500。在一个实施例中,保存模块402可以调用登录模块410以创建通道数据结构500和/或将通道连接数据保存到通道数据结构500。
如果新代码映像316还没有被加载,则更新模块402随后会将其加载706到存储器310。接着,更新模块402使708通信适配器300脱机,并中止通信适配器300上的I/O操作。一旦通信适配器300脱机并且切断光710,更新模块402就可以用新代码映像316覆盖712老代码映像314。
在更新712代码映像之后,但在试图通过通信适配器300恢复通信之前,恢复模块408从登录数据结构600中重新加载714登录数据。类似地,恢复模块408从通道数据结构500中重新加载716通道连接数据。通过重新加载714、716登录数据和通道连接数据,远程主机202可以不必被要求重新登录或者与已更新的通信适配器300重新建立连接通道。
在重新加载714、716登录数据和通道连接数据之后,更新模块402随后在通信适配器300处导通光,随后其再次允许720主机202的I/O操作。在一个实施例中,与多数传统的代码映像更新技术不同,本更新方法700可以通过更新装置400在一个小的时间窗口内完成。这个小的时间窗口不足以要求远程主机202重新登录或者与已更新的通信适配器300重新建立连接通道。
图8描述了更新方法800的另一个实施例,该方法可以在通信系统200上使用以更新在通信适配器300上的代码映像。图示的更新方法800开始于将通道数据结构600和登录数据结构500保存802到永久存储器。在一个实施例中,保存模块404将数据结构500、600保存到存储系统208中的永久存储器。
接着,更新模块402将新代码映像316加载到804通信适配器300上的存储器310,并更新代码映像。随后,恢复模块406可以将通道数据结构600和登录数据结构500从永久存储器位置拷贝806到通信适配器300上的电子存储设备310。在一个实施例中,通道数据结构600和登录数据结构500被分别拷贝到适配器的存储器310。
恢复模块406随后设定808计数器(例如,n=1)和计数器阈值(例如,MAX_RPI=登录数据结构600中的最大非零远程端口指示符(RPI)),准备恢复预更新适配器(pre-update adapter)的配置。随后,恢复模块406从登录数据结构500中读取810与计数器对应的元素(例如,第一元素对应n=1,第二元素对应n=2,等等)。然后,恢复模块406确定812所选择的元素是否是空项或者是保留的光纤网络N端口标识符,如果是,则标记814该元素为“哑元”项。恢复模块406还将为所选的元素指定814唯一的“哑元”N端口标识符。另外,举例来说,在将所选的元素标记814为“哑元”元素后,恢复模块406将通过光纤信道端口注册816N端口标识符。在一个实施例中,所选元素的远程端口索引(RPI)与计数器有同样的值。
恢复模块406随后增加818计数器的值,并且,如果计数器的值小于820阈值,则返回,以读取登录数据结构500中的下一个元素。更新方法800继续按上面所述的过程执行,直到所有来自登录数据结构500中的元素都已经被读取,并且计数器的值增加818到超过阈值。恢复模块406随后将登录数据结构500中所有的“哑元”元素取消注册822,然后,所描述的更新方法800结束。
图9描述了主机通信方法900的一个实施例,可以在对应的主机适配器300上的代码映像更新期间,将该方法应用到主机202上。图示的更新方法900开始于主机202通过通信适配器300发送902 I/O请求到存储系统208。如果通信适配器300是有效的904,则I/O请求将按照存储系统208的正常操作被执行906。
然而,如果通信适配器300是无效的904(也就是,由于更新装置400的代码映像更新而脱机),则I/O请求将不被执行。相反地,主机202可以发送908状态改变通知请求,用来确定通信适配器300是否仍然有效,或者是否需要通过诸如备用的连接通道来建立新的连接。例如,就FCP通信来说,主机202可以发送908端口搜索(PDISC)请求。或者,就FICON通信来说,主机202则可以发送908测试初始化(TIN)请求。
因为对应的通信适配器300脱机的时间长度最小,并且因为登录数据结构600和通道数据结构500与它们被更新之前相同,所以主机202随后收到910状态改变通知响应,其表明通信适配器300仍然有效。换句话说,主机202不被要求重新登录或重新建立通道和连接,其原因是通信适配器300在代码映像更新之后被重新配置,其配置方式与代码映像更新之前基本相同。因此,主机202可以重新发送912I/O请求以便被存储系统208执行906,就好像通信适配器300从来没有脱机。所描述的主机通信方法900到此结束。
因此,提供具有更新装置400的通信适配器300可能是有利的,该更新装置使该通信适配器300因代码映像更新而脱机的时间最小。如上所述,这样的更新装置400使主机202和存储系统208之间的通信变得容易,即使是在代码映像更新的条件下,也不再必须要求主机202重新登录或者重新建立与存储系统208的连接。
这其中包括的示意流程图表通常被表述为逻辑流程图表。同样,所描述的次序和所标注的操作表现为所述方法的一个实施例。其它的操作和方法可以被理解为在功能、逻辑或效果上等效于所图示的方法的一个或多个操作,或者其中的部分。此外,所用的格式和符号被用来说明本方法的逻辑操作,并且被理解为不限制本方法的范围。尽管各种箭头类型和直线类型可能被用在流程图中,但它们应该被理解为不限制对应方法的范围。实际上,部分箭头或者其它连接符号可能只被用来表示本方法的逻辑流。例如,箭头可以表示等待或监控周期,该周期是一段介于描述的方法中列举的操作之间的未指定持续时间。此外,具体方法的发生次序,可能遵守,也可能不严格遵守图示的对应操作次序。
贯穿本说明书中所涉及的“一个实施例”、“实施例”或者类似的术语,意思是,所描述的与该实施例有关的详细特性、结构或特征,至少被包含在本发明的一个实施例中。因此,“在一个实施例中”,“在实施例中”以及贯穿本说明书中类似术语的出现,可以但不是必须全都指相同的实施例。
所涉及的信号承载介质可以采用任何能够产生信号、导致信号产生或导致数字处理装置上的机器可读指令程序执行的形式。信号承载介质可以具体化为传输线、压缩盘、数字视频盘、磁带、伯努利驱动器、磁盘、穿孔卡、闪存、集成电路或者其它数字处理装置存储设备。
此外,所描述的本发明的特性、结构或特征可以在一个或多个实施例中以任何适当的方式组合。在接下来的描述中,提出了大量具体细节,例如程序设计、软件模块、用户选择、网络交易、数据库查询、数据库结构、硬件模块、硬件电路、硬件芯片等,以提供对本发明实施例的全面理解。但是,相关领域的技术人员会认识到,在没有一个或多个具体细节,或者用其它的方法、组件、部件等,本发明也可能实现。在其它的实例中,众所周知的结构、部件或操作没有被详细的描述或说明,以避免使本发明的特点模糊晦涩。
本发明可以在不脱离其精神和基本特征的情况下用其它特定形式实例化。所描述的实施例无论从哪方面来看,都应该被理解为仅仅是说明性的和非限制性的。因此,本发明的范畴是由所附带的权利要求书而不是前述的说明来指明的。所有的改变,只要与权利要求书有等效的意义和范围,都将被包含在他们的范畴之内。
Claims (17)
1. 一种用于更新代码映像的装置,该装置包括:
保存模块,配置为保存与通信适配器处的连接有关的配置数据;
更新模块,配置为更新通信适配器上的代码映像;以及
恢复模块,配置为在代码映像更新之后,恢复代码映像更新之前的配置数据。
2. 如权利要求1所述的装置,其中,配置数据包括与耦合到通信适配器的主机对应的登录数据。
3. 如权利要求2所述的装置,其中,登录数据包括在代码映像更新之前,多个远程主机向该适配器处对应的多个本地端口注册的次序。
4. 如权利要求2所述的装置,还包括登录模块,配置为在代码映像更新之前,将登录数据保存在登录数据结构中。
5. 如权利要求3所述的装置,其中,恢复模块进一步可以配置为在代码映像更新之后,按照与代码映像更新之前相同的次序,向该多个本地端口重新注册多个远程端口。
6. 如权利要求1所述的装置,其中,配置数据包括与耦合到通信适配器的多个主机对应的通道连接数据。
7. 如权利要求6所述的装置,其中,通道连接数据包括在代码映像更新之前的、在多个远程端口与该适配器处对应的多个本地端口之间的逻辑连接通道。
8. 如权利要求6所述的装置,还包括通道模块,配置为在代码映像更新之前,将通道连接数据保存在通道数据结构中。
9. 如权利要求7所述的装置,其中,恢复模块进一步配置为在代码映像更新之后,以与代码映像更新之前相同的逻辑通道,逻辑上将该多个远程端口与该多个本地端口重新连接。
10. 如权利要求1所述的装置,其中,保存模块进一步配置为在适配器脱机之前执行相关的代码覆盖操作之前,保存配置数据。
11. 一种用于更新代码映像的系统,该系统包括:
存储系统,具有多个电子数据存储设备;
通信适配器,耦合到存储系统,该适配器上具有代码映像;
主机,耦合到通信适配器,该主机配置为向存储系统发送I/O请求;以及
更新装置,耦合到通信适配器,该更新装置配置为更新通信适配器上的代码映像,在代码映像更新之前保存与通信适配器有关的配置数据以及在代码映像更新之后,恢复代码映像更新之前的配置数据。
12. 如权利要求11所述的系统,还包括交换机,主机通过该交换机耦合到通信适配器。
13. 如权利要求11所述的系统,还包括电子存储设备,耦合到通信适配器,该电子存储设备配置为在代码映像更新期间存储配置数据。
14. 如权利要求11所述的系统,其中,配置数据至少包括登录数据和通道连接数据之一。
15. 一种用于更新代码映像的系统,该系统包括:
在通信适配器中的电子存储设备;
存储在电子存储设备中的老代码映像;
存储在电子存储设备中的新代码映像;
快速加载模块,配置为用新代码映像覆盖老代码映像;以及
更新装置,用于在代码覆盖之前,保存与通信适配器有关的配置数据以及在代码覆盖之后,恢复代码覆盖之前的配置数据。
16. 如权利要求15所述的系统,其中,配置数据包括与耦合到通信适配器的主机对应的登录数据,该登录数据包括在代码覆盖之前、多个远程主机向该通信适配器处对应的多个本地端口注册的次序。
17. 如权利要求15所述的系统,其中,配置数据包括与耦合到通信适配器的多个主机对应的通道连接数据,该通道连接数据包括在代码映像更新之前、在多个远程端口与该适配器处对应的多个本地端口之间的逻辑连接通道。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/991,736 US7454605B2 (en) | 2004-11-18 | 2004-11-18 | Method for adapter code image update |
US10/991,736 | 2004-11-18 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1776639A CN1776639A (zh) | 2006-05-24 |
CN100421083C true CN100421083C (zh) | 2008-09-24 |
Family
ID=36462326
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005101187514A Expired - Fee Related CN100421083C (zh) | 2004-11-18 | 2005-10-31 | 更新适配器代码映像的装置、系统和方法 |
Country Status (3)
Country | Link |
---|---|
US (2) | US7454605B2 (zh) |
CN (1) | CN100421083C (zh) |
TW (1) | TWI342516B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7454605B2 (en) * | 2004-11-18 | 2008-11-18 | International Business Machines Corporation | Method for adapter code image update |
TWI263143B (en) * | 2004-12-31 | 2006-10-01 | Inventec Corp | World wide port name embedding method and interface for network transmission control chip |
US7921431B2 (en) * | 2006-01-20 | 2011-04-05 | Emulex Design & Manufacturing Corporation | N-port virtualization driver-based application programming interface and split driver implementation |
US8352933B2 (en) * | 2009-03-26 | 2013-01-08 | International Business Machines Corporation | Concurrent patching of operating systems |
US8578148B2 (en) * | 2010-01-22 | 2013-11-05 | Broadcom Corporation | Method and system to transmit code to a system on a chip (SOC) |
US8819672B2 (en) * | 2010-09-20 | 2014-08-26 | International Business Machines Corporation | Multi-image migration system and method |
US8751549B2 (en) * | 2012-01-06 | 2014-06-10 | International Business Machines Corporation | Persistent data management in multi-image code load systems |
US9317678B2 (en) * | 2014-03-25 | 2016-04-19 | Avago Technologies General Ip (Singapore) Pte. Ltd. | System and method for managing logins in a network interface |
US10353834B2 (en) * | 2016-02-11 | 2019-07-16 | International Business Machines Corporation | Adapter configuration for a storage area network |
CN106027634B (zh) * | 2016-05-16 | 2019-06-04 | 白杨 | 消息端口交换服务系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001216146A (ja) * | 2000-02-04 | 2001-08-10 | Nec Commun Syst Ltd | 無中断ファイル更新処理方式および方法 |
US20020167952A1 (en) * | 2001-05-09 | 2002-11-14 | Chiaro Networks, Ltd. | System and method for TCP connection protection switching |
CN1439128A (zh) * | 2000-01-07 | 2003-08-27 | 汤姆森特许公司 | 代码更新期间在电源出故障时备份应用代码的方法和装置 |
WO2003093993A2 (en) * | 2002-05-06 | 2003-11-13 | Accenture Global Services Gmbh | Workstation deployment |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6151609A (en) * | 1996-08-16 | 2000-11-21 | Electronic Data Systems Corporation | Remote editor system |
US6301661B1 (en) * | 1997-02-12 | 2001-10-09 | Verizon Labortories Inc. | Enhanced security for applications employing downloadable executable content |
JP2000010911A (ja) | 1998-06-18 | 2000-01-14 | Hitachi Ltd | Ioバス専用に記憶装置を持つ情報処理システム |
US6912276B1 (en) * | 1999-04-12 | 2005-06-28 | Silicon Laboratories, Inc. | Modem on hold |
US20020186249A1 (en) * | 1999-10-28 | 2002-12-12 | Qi Lu | Method and system of facilitating automatic login to a web site using an internet browser |
JP2002289768A (ja) | 2000-07-17 | 2002-10-04 | Rohm Co Ltd | 半導体装置およびその製法 |
JP4189570B2 (ja) * | 2001-12-28 | 2008-12-03 | コニカミノルタビジネステクノロジーズ株式会社 | 画像処理装置、ファームウェアの送信方法、及び画像処理装置の管理システム |
US7062515B1 (en) * | 2001-12-28 | 2006-06-13 | Vignette Corporation | System and method for the synchronization of a file in a cache |
CA2383881A1 (en) * | 2002-04-29 | 2003-10-29 | Ibm Canada Limited-Ibm Canada Limitee | Generic control interface with multi-level status |
KR20030092459A (ko) | 2002-05-29 | 2003-12-06 | 박치민 | 자동 로그인 시스템 |
US20030233361A1 (en) * | 2002-06-13 | 2003-12-18 | Cady C. Conrad | Resumption of user authentication and restoration of interrupted virtual sessions in a stateless network |
US6996673B2 (en) * | 2003-08-21 | 2006-02-07 | International Business Machines Corporation | Method and apparatus for managing inventory and door status during firmware update of an automated data storage library |
US7313681B2 (en) * | 2003-11-20 | 2007-12-25 | International Business Machines Corporation | Apparatus, system, and method for adapter fastload |
CN100373333C (zh) * | 2004-05-19 | 2008-03-05 | 寺泽阳一郎 | 信息处理设备、软件更新系统、更新软件的方法以及其程序 |
US7454605B2 (en) * | 2004-11-18 | 2008-11-18 | International Business Machines Corporation | Method for adapter code image update |
-
2004
- 2004-11-18 US US10/991,736 patent/US7454605B2/en not_active Expired - Fee Related
-
2005
- 2005-10-31 CN CNB2005101187514A patent/CN100421083C/zh not_active Expired - Fee Related
- 2005-11-14 TW TW094139986A patent/TWI342516B/zh not_active IP Right Cessation
-
2008
- 2008-09-23 US US12/236,349 patent/US7870375B2/en not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1439128A (zh) * | 2000-01-07 | 2003-08-27 | 汤姆森特许公司 | 代码更新期间在电源出故障时备份应用代码的方法和装置 |
JP2001216146A (ja) * | 2000-02-04 | 2001-08-10 | Nec Commun Syst Ltd | 無中断ファイル更新処理方式および方法 |
US20020167952A1 (en) * | 2001-05-09 | 2002-11-14 | Chiaro Networks, Ltd. | System and method for TCP connection protection switching |
WO2003093993A2 (en) * | 2002-05-06 | 2003-11-13 | Accenture Global Services Gmbh | Workstation deployment |
Also Published As
Publication number | Publication date |
---|---|
CN1776639A (zh) | 2006-05-24 |
TWI342516B (en) | 2011-05-21 |
US20090271598A1 (en) | 2009-10-29 |
US7870375B2 (en) | 2011-01-11 |
US20060112381A1 (en) | 2006-05-25 |
US7454605B2 (en) | 2008-11-18 |
TW200636568A (en) | 2006-10-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100421083C (zh) | 更新适配器代码映像的装置、系统和方法 | |
CN108616382B (zh) | 升级网卡固件的方法、装置、网卡和设备 | |
CN101589592B (zh) | 多协议可移动存储设备 | |
US6934873B2 (en) | Automatic BIOS recovery in a multi-node computer system | |
CN102193817B (zh) | 简化物理和虚拟部署的管理 | |
US7000231B1 (en) | Method of manufacturing operating system master template, method of manufacturing a computer entity and product resulting therefrom, and method of producing a production version of an operating system | |
CN103365696B (zh) | Bios镜像文件获取方法及装置 | |
CN101449246B (zh) | 用于集群恢复的装置和方法 | |
CN102200921A (zh) | 智能引导设备选择和恢复 | |
CN101322105A (zh) | 用于重新配置存储阵列的装置和方法 | |
US8387013B2 (en) | Method, apparatus, and computer product for managing operation | |
US7127638B1 (en) | Method and apparatus for preserving data in a high-availability system preserving device characteristic data | |
US6760862B1 (en) | Methods and apparatus for performing a maintenance procedure on a data storage system | |
CN100349118C (zh) | 用于适配器快速加载的设备、系统和方法 | |
US8429392B2 (en) | Function expansion apparatus for connecting an information processing apparatus to an external storage apparatus | |
CN100421082C (zh) | 自动复制功能选择的系统、设备和方法 | |
CN103973470A (zh) | 用于无共享集群的集群管理方法和设备 | |
CN102184158A (zh) | 带两级fpga芯片的子板及两级fpga芯片的配置方法 | |
CN101957728B (zh) | 用于向本地物理卷复制远程虚拟卷的装置和方法 | |
CN111475104B (zh) | 一种存储设备数据在线迁移方法、系统、终端及存储介质 | |
WO2021004256A1 (zh) | 一种节点故障时进行节点切换的方法及相关设备 | |
US8140475B1 (en) | Dynamic configuration archival and retrieval | |
EP1816564A1 (en) | Resource exchange processing program and resource exchange processing method | |
US7103639B2 (en) | Method and apparatus for processing unit synchronization for scalable parallel processing | |
KR100605031B1 (ko) | Usb 메모리 장치를 이용한 임베디드 시스템의 장애복구 및 업그레이드 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20080924 Termination date: 20181031 |