自动数据存储器库内提供控制路径故障切换的方法和系统的制作方法

文档序号:6420122阅读:158来源:国知局
专利名称:自动数据存储器库内提供控制路径故障切换的方法和系统的制作方法
技术领域
本发明涉及利用主计算机与自动数据存储器库之间的一个或者多个控制路径对自动数据存储器库提供自动控制路径故障切换(failover)的系统。
背景技术
能提供成本效益高的存储器和检索大量数据的自动数据存储器库(automated data storage library)是已知的。自动数据存储器库提供了一种将数据存储到不是永久地安装在数据存储器驱动器上、而是存储在库内的存储器架(storage shelf)上的数据存储介质上的装置。一个或者多个机器人访问者(robot accessor)从存储器架上检索(retrieve)选择的数据存储介质,并将它们送到数据存储器驱动器。主计算机通过控制路径与自动数据存储器库通信。控制路径是包括库控制命令或库控制信号的通信接口。控制路径接口可以包括诸如RS-232、SCSI(小型计算机系统接口)、FC-AL(光纤通道-仲裁回路)等的串行接口。在某种系统配置中,主机可以包括多个为诸如双端口磁带设备的设备提供多个物理路径的主机总线适配器(HBA)。这些物理路径分别用作一个或者多个控制路径。如果诸如数据备份应用程序或设备驱动程序的主机应用程序正在通过控制路径将命令送到自动数据存储器库,而控制路径存在诸如固定路径错误的故障(例如,HBA或电缆的故障),则该应用程序将停止沿故障路径运行。在这种情况下,或者由系统管理员调用,或者由主计算机自动调用故障切换程序,以便沿替换路径重新起动该应用程序,或者重新发出命令。
如果主计算机重新起动该应用程序,则库在发生故障之前执行的所有操作均可能丢失。这可能产生长延迟,因为该应用程序有可能必须重复执行已经完成的工作。如果主计算机不知道发送到自动数据存储器库的先前命令是否被成功完成就沿替换路径重新发出命令,则有可能产生错误。例如,主计算机可能遇到在在存储器槽与驱动器之间移动介质时,库通信丢失的问题。主计算机可能不能确定命令是否被成功完成,因为自动数据存储器库不对该命令做出响应。如果主计算机重发同一个命令,则它可能发生故障,因为该库已经成功完成了该命令。在其他情况下,如果该库已经成功完成交换命令,则重发命令可能使盒式磁盘(cartridge)从其预定目的地移开。因为这些原因,本技术领域内需要用于管理自动数据存储器库的故障切换操作的改进型技术。

发明内容
本发明的目的是利用主计算机与自动数据存储器库之间的一个或者多个控制路径提供故障切换过程。
本发明公开了一种用于对自动数据存储器库提供故障切换过程的系统、方法以及计算机程序产品。在数据存储器库的运行过程中,主计算机利用一个或者多个控制路径将控制命令发送到自动数据存储器库。如果正在处理命令时,主计算机与自动数据存储器库之间的通信失败,则主计算机可以尝试利用同一个控制路径或者替换控制路径重发同一个命令。在一些解决方案中, 自动数据存储器库可能已经完成了该命令,但是主计算机未收到命令完成响应。在主计算机发出重发同一个命令时,自动数据存储器库执行本发明的过程,以防止自动数据存储器库不止一次执行相同的命令。本发明的过程还不需要主计算机对重发命令的结果进行分析。例如,如果重发命令失败,则主机不必事先尝试确定错误是否与成功完成的命令有关。通过在执行之前,使自动数据存储器库检验一些或者全部库控制命令,本发明防止出现多次执行相同的命令。
在一个实施例中,检验发送到自动数据存储器库的每一命令,以确定它是否是已经成功执行的命令。自动数据存储器库检验该命令,而且还对接收该命令之前执行的一个或者多个命令进行检验,以确定该命令是否以及被成功执行。如果即使成功执行了该命令,主计算机仍未从自动数据存储器库收到命令完成响应,则在重发先前发送的命令期间,可能出现这种情况。如果自动数据存储器库确定已经成功执行了该命令,则自动数据存储器库不二次执行该命令,而将命令完成响应发送到主计算机。因为避免了重复执行命令,所以自动数据存储器库的整个运行过程得到改进。在此实施例中,可以将某些命令排除在该特殊处理过程之外,而且可以在每次收到它们时,执行它们。例如,可以要求在主机每次发送SCSI Test Unit Ready命令时,执行该命令。对于诸如SCSI Read Elemnet Status命令的某些数据命令也同样可以如此。
在第二实施例中,检验发送到自动数据存储器库的各命令,以确定它是否是用于移动数据存储介质的命令。如果该命令不移动数据存储介质,则自动数据存储器库立即执行该命令,而不进一步检验该命令。如果该命令移动数据存储介质,则自动数据存储器库进一步检验该命令,而且还对接收该命令之前执行的一个或者多个命令进行检验,以确定是否已经执行了该命令。如果即使成功执行了该命令,主计算机仍未从自动数据存储器库收到命令完成响应,则在重发先前发送的命令期间,可能出现这种情况。如果自动数据存储器库确定已经成功执行了该命令,则自动数据存储器库不二次执行该命令,而将命令完成响应发送到主计算机。因为避免了重复执行命令,所以自动数据存储器库的整个运行过程得到改进。此外,还简化了主机控制路径故障切换过程,而且不易出错。
本发明的第三实施例将附加验证过程与上述第二实施例结合在一起。自动数据存储器库执行附加验证过程以进一步确认先前成功执行了命令。附加验证过程包括使自动数据存储器库检验该命令指定的源位置和/或目的地地址。然后,自动数据存储器库检验数据存储介质的物理源地址和/或目的地地址,以确定该数据存储介质是否实际出现在两个位置之一。利用该附加信息,自动数据存储器库确定是否已经成功执行了该命令。如果该命令被成功执行,则自动数据存储器库不二次执行该命令,而将命令完成响应发送到主计算机。
为了更全面理解本发明,请参考以下结合附图所做的详细说明。


图1是用于运行根据本发明的自动数据存储器库的电子线路的原理框图;图2是连接到一个以上的主计算机的自动数据存储器库的原理框图;图3是示出本发明一个实施例的自动数据存储器库的运行过程的流程图;图4是示出本发明第二实施例的自动数据存储器库的运行过程的流程图;图5是示出本发明第三实施例的自动数据存储器库的运行过程的流程图;图6是示出用于本发明的主计算机的运行过程的流程图。
具体实施例方式
在以下的描述中,根据优选实施例说明本发明。将参考

各优选实施例。尽管结合优选实施例说明本发明,但是本技术领域内的熟练技术人员明白,在所附权利要求所述的本发明实质范围内,本发明试图覆盖各变换例、修改以及等效例。
根据介质变换设备的SCSI命令集,说明本发明。介质变换设备(medium changer)是在存储器架与数据存储器驱动器之间移动数据存储介质的设备。还将这些设备称为自动数据存储器设备、存储器自动化设备、库、盒式磁盘装载器等。将说明移动介质命令和交换介质命令。这些命令对本技术领域内的熟练技术人员是熟知的。例如,介质变换设备的SCSI命令集包括移动介质命令和交换介质命令。移动介质命令用于在库内将数据存储介质从一个位置移动到另一个位置。交换介质命令被用于通过将一个以上的移动组合到单个命令中,提高移动命令的性能。例如,移动介质命令可以将盒式磁盘从位置A移动到位置B。交换介质命令可以将盒式磁盘从位置A移动到位置B,而且无论位于位置B的是什么均可以被移动到位置C。利用SCSI交换介质命令作为例子,该命令规定了3个位置源地址、第一目的地地址以及第二目的地地址。请注意,地址指位置标识符,而且可以交换使用术语地址和位置。上述任何一个地址规定的库位置是可以被该库内的一个或者多个机器人访问者访问的库内的位置。将源地址的盒式磁盘移动到第一目的地地址,而将原先占据第一目的地地址的盒式磁盘移动到第二目的地地址。第二目的地地址可以与源地址相同,也可以不同。此外,还将说明单元状态数据(element statusdata)。本技术领域内的熟练技术人员对单元状态数据众所周知。例如,介质变换设备的SCSI命令命令集包括用于处理单元状态数据的命令。单元状态数据包括可能含有盒式磁盘的位置的盒式磁盘映射。盒式磁盘映射可以包括关于可能的盒式磁盘位置的信息,例如该位置是否含有盒式磁盘(空或满)、是否可以访问该盒式磁盘、盒式磁盘条形码标签值、诸如存储器槽或数据存储器驱动器等的位置类型。仅为了说明问题对这些内容进行了说明,而且本技术领域内的熟练技术人员明白,在本发明实质范围内,可以采用提供同样或者类似功能的其他命令集和协议。
自动数据存储器库通常含有一个或者多个库控制器,用于控制自动数据存储器库的运行过程。库控制器可以取许多不同的形式,而且可以包括嵌入式系统、分布式控制系统、个人计算机、工作站等。图1示出具有处理器102、RAM 103、非易失性存储器104、设备专用电路101以及I/O接口105的典型库控制器100。作为一种选择,RAM 103和/或非易失性存储器104可以包含在处理器102内,设备专用电路101和I/O接口105也可以包含在处理器102内。处理器102可以包括成品(off the shelf)微处理器、客户处理器、FPGA(现场可编程门阵列)、ASIC(专用集成电路)、分立逻辑等。RAM 103通常用于保持可变数据、堆栈数据、可执行指令等。非易失性存储器104可以包括任何类型的非易失性存储器,例如EEPROM(电可擦可编程只读存储器)、闪速PROM(可编程只读存储器)、电池后备RAM(随机存取存储器)、硬盘驱动器等。非易失性存储器104通常用于保持可执行固件以及任意非易失性数据。I/O接口105是使处理器102与该控制器外部的设备进行通信的通信接口。其例子可以包括串行接口,例如RS-232或USB(通用串行总线)、SCSI(小型计算机系统接口)、FC-AL(光纤通道-仲裁回路)等。设备专用电路101提供附加硬件,以使库控制器100执行唯一功能,例如对盒式磁盘抓器(gripper)等进行马达控制。设备专用电路101可以包括提供脉宽调制(PWM)控制、模数转换器(ADC)、数模转换器(DAC)等的电子线路。此外,全部或者部分设备专用电路101可以位于库控制器100的外部。
图2示出自动数据存储器库200和主计算机210、220和230的方框图。主计算机210、220、230通过主机通信线路211、221、222和231连接到自动数据存储器库200。主机通信线路211、221、222、231包括进入库200的控制路径。主机通信线路211、221、222、231可以包括RS-232、USB(通用串行总线)、SCSI(小型计算机系统接口)、FC-AL(光纤通道-仲裁回路)或本技术领域内的熟练技术人员已知的任何通信接口。主机通信线路221和222是主机与自动数据存储器库之间的冗余控制路径。本技术领域内的熟练技术人员明白可以存在一个或者多个控制路径,而且它们可以应用于本发明。自动数据存储器库200包括诸如图1所示库控制器100的库控制器201、控制路径通信线路202、数据存储器驱动器203、数据存储器驱动器通信线路204、用于存储数据的可移动的数据存储介质208、用于支持可移动的数据存储介质208的存储器架206以及用于将可移动的数据存储介质208传送到数据存储器库/从数据存储器库传送可移动的数据存储介质208的任选输入/输出站207。作为一种选择,库控制器201可以包括处理器、PC、工作站、嵌入式系统等,或者库控制器201可以包括分布式控制系统,正如美国专利6356803所公开的那样。控制路径通信线路202提供进入库200的控制路径,而且它们允许主机系统将命令发送到库200。作为一种选择,正如美国专利6434090所公开的那样,控制路径可以通过数据存储器驱动器203,而且可以通过数据存储器驱动器通信线路204。在这种情况下,可以不需要控制路径通信线路202,而且可以将主机通信线路211、221、222、231直接连接到数据存储器驱动器203。总之,无论控制路径的起点在哪里,本发明的实施例均不发生变化。
数据存储器驱动器203提供了一种对可移动的数据存储介质208读和/或写数据的装置。数据存储器驱动器203可以包括光驱动器或磁带驱动器、光盘驱动器或磁盘驱动器、电子介质驱动器等。任选数据存储器驱动器通信线路204提供了一种在数据存储器驱动器203与库控制器201之间进行通信的装置。数据存储器驱动器通信线路204可以包括串行连接,例如RS-232或本技术领域内的熟练技术人员已知的任何通信协议。数据存储器驱动器可以直接连接到诸如主计算机210、220、230的主机系统(未示出)以对可移动的数据存储介质208读和/或写数据。在这种情况下,数据存储器驱动器主机通信线路(未示出)可以包括RS-232、USB(通用串行总线)、SCSI(小型计算机系统接口)、FC-AL(光纤通道-仲裁回路)或本技术领域内的熟练技术人员已知的任何其他通信接口。作为一种选择,数据存储器驱动器可以根本不连接到主机系统。在这种情况下,通过数据存储器驱动器通信线路204,库控制器201可以将命令和数据移动到数据存储器驱动器/从数据存储器驱动器移动命令和数据。
图3示出由自动数据存储器库实现的本发明第一实施例的方法。在步骤301,自动数据存储器库接收主机命令。在步骤302,自动数据存储器库解码该命令以确定命令类型,并确定该命令是否与先前的良好命令相同。可以将成功完成的命令看作是先前良好命令。库控制器保持命令清单。该清单可以仅含有成功执行的命令,它也可以含有命令的执行状态。该清单可以是一个简单的命令拷贝,它也可以是用于描述该命令的某些其他数据集。该清单可以仅包括该先前命令,它也可以包括多个先前命令。此外,可以根据诸如移动命令与状态命令的命令类型组织先前命令清单。在此例中,可以存在先前移动命令的命令清单,而且可以存在先前状态命令的另一个命令清单。先前命令清单用于最终确定是否成功执行了先前命令。如上所述,它可以是良好命令清单,它也可以是包括关于命令的、足以确定成功执行的信息的命令清单。此外,良好命令清单或先前良好命令清单是等效的,而且可以表示上述描述。在这方面,良好命令是被成功执行了的命令。在此,在描述命令清单、先前、良好、成功、先前良好以及先前成功时,均指同一件事情。可以将先前命令清单存储到与库控制器相连的存储器内。RAM 103和/或非易失性存储器104、包含在处理器102内的存储器或其他存储器(图1未示出)均可以用作用于存储命令清单信息的存储器部分。步骤302捕获,即使发出命令的主机系统可能未收到命令成功完成的响应,但是沿一个控制路径发送的命令实际上仍被成功完成的情况。具体地说,从自动数据存储器库的角度出发,步骤302查找重复命令。该重复命令可能是主机发送重发命令的结果,因为主机没有从自动数据存储器库接收到命令成功完成响应。主计算机起动的该故障切换过程可以使用同一个控制路径(与第一次发送命令是使用的控制路径相同的控制路径)或者另一个控制路径将重发命令发送到自动数据存储器库。例如,主机210可以利用图2所示的控制路径211发送命令,然后,通过控制路径211发送重发命令。在另一个例子中,主机220可以利用图2所示的控制路径221发送命令,然后,通过图2所示的控制路径222发送重发命令。作为一种选择,主机220可以通过不是控制路径221或222的另一个控制路径(图2未示出)发送重发命令。利用主机与自动数据存储器库之间存在的控制路径可以不止一次发送命令。参考图3,如果该命令与先前良好命令相同,如步骤302所示,则在步骤303,自动数据存储器库将良好命令状态返回主机。然而,如果该命令不同于先前良好命令,如步骤302所示,则控制转移到步骤304,在步骤304,自动数据存储器库执行该命令。在步骤305,该库确定此时该命令是否被成功执行。如果该命令被成功执行,如步骤305所示,则控制转移到步骤307,在步骤307,利用刚成功执行的命令更新先前良好命令清单。然而,如果该命令未被成功执行,如步骤305所示,则控制转移到步骤306,在步骤306,不更新先前良好命令清单。作为一种选择,可以在步骤306,从该清单中删除先前良好命令。本技术领域内的熟练技术人员明白,在本发明范围内,可以对图3所示的流程图进行各种变化。例如,可以存在不止一个先前命令清单,而且它可以基于接收命令的类型或者某个其他判据。在这种情况下,可以修改步骤302以检验先前命令的相应命令清单。在另一个例子中,如果先前命令清单含有命令执行状态,如上所述,则可以删除步骤305和306。在这种情况下,步骤307可以利用当前命令及其执行状态更新先前命令清单。
图4示出自动数据存储器库执行的本发明第二实施例的方法。在步骤401,自动数据存储器库接收主机命令。在步骤402,自动数据存储器库解码该命令以确定命令类型,更具体地说,是确定该命令是移动介质命令还是交换介质命令。移动介质命令和交换介质命令是一般类型的传输介质命令。这两种命令使数据存储介质在自动数据存储器库内传输。移动介质命令用于将数据存储介质从库内的一个位置移动到另一个位置。交换介质命令被用于通过将不一个以上的移动组合到单个命令中,提高移动命令的性能。如果该命令不是移动命令,而且也不是交换命令,如步骤402所示,控制转移到步骤403,在步骤403,自动数据存储器库执行该主机命令。步骤402减小了正确处理故障切换的问题,因为无需做进一步检验,就可以简单执行移动命令或交换命令之外的任何命令。然而,如果该命令是移动命令或交换命令,如步骤402所示,则控制转移到步骤404,在步骤404,自动数据存储器库确定该命令是否是与先前良好命令相同的命令。可以将成功完成的命令看作是先前良好命令。库控制器保持先前命令清单。该清单可以仅含有被成功执行的命令,它也可以含有命令的执行状态。该清单可以是命令的简单拷贝,它也可以是描述该命令的某个其他数据集。该清单可以仅包括该先前命令,它也可以包括多个先前命令。此外,可以根据诸如移动命令与状态命令的命令类型组织先前命令清单。在此例中,可以存在先前移动命令的命令清单,而且可以存在先前状态命令的另一个命令清单。步骤404捕获,即使发出命令的主机系统可能未收到命令成功完成的响应,但是沿一个控制路径发送的命令实际上仍被成功完成的情况。具体地说,从自动数据存储器库的角度出发,步骤404查找重复命令。该重复命令可能是主机发送重发命令的结果,因为主机没有从自动数据存储器库接收到命令成功完成响应。主计算机起动的该故障切换过程可以使用同一个控制路径(与第一次发送该命令时使用的控制路径相同的控制路径)或者另一个控制路径将重发命令发送到自动数据存储器库。例如,主机210可以利用图2所示的控制路径211发送命令,然后,通过控制路径211发送重发命令。在另一个例子中,主机220可以利用图2所示的控制路径221发送命令,然后,通过图2所示的控制路径222发送重发命令。作为一种选择,主机220可以通过不是控制路径221或222的另一个控制路径(图2未示出)发送重发命令。利用主机与自动数据存储器库之间存在的任意一个控制路径均可以不止一次发送命令。参考图4,如果该命令与先前良好命令相同,如步骤404所示,则控制转移到步骤405,在步骤405,自动数据存储器库将良好命令状态返回主机。然而,如果该命令不同于先前良好命令,如步骤404所示,则在步骤406,自动数据存储器库执行该命令。在步骤407,该库确定此时该命令是否被成功执行。如果该命令被成功执行,如步骤407所示,则控制转移到步骤409,在步骤409,利用刚成功执行的命令更新先前良好命令清单。然而,如果该命令未被成功执行,如步骤407所示,则控制转移到步骤408,在步骤408,不更新先前良好命令清单。作为一种选择,可以在步骤408,从该清单中删除先前良好命令。本技术领域内的熟练技术人员明白,在本发明范围内,可以对图4所示的流程图进行各种变化。例如,步骤402可以包括不是移动命令和交换命令的命令,或者还包括移动命令和交换命令之外的命令。在另一个例子中,如果先前命令清单含有命令执行状态,如上所述,则可以删除步骤407和408。在这种情况下,步骤409可以利用当前命令及其执行状态更新先前命令清单。
图5示出自动数据存储器库执行的本发明第三实施例的方法。在步骤501,自动数据存储器库接收主机命令。在步骤502,自动数据存储器库解码该命令以确定命令类型,更具体地说,是确定该命令是移动介质命令还是交换介质命令。移动介质命令和交换介质命令是一般类型的传输介质命令。这两种命令使数据存储介质在自动数据存储器库内传输。移动介质命令用于将数据存储介质从库内的一个位置移动到另一个位置。交换介质命令被用于通过将一个以上的移动组合到单个命令中,提高移动命令的性能。如果该命令不是移动命令,而且也不是交换命令,如步骤502所示,则控制转移到步骤503,在步骤503,自动数据存储器库执行该主机命令。步骤502减小了正确处理故障切换的问题,因为无需做进一步检验,就可以简单执行移动命令或交换命令之外的任何命令。然而,如果该命令是移动命令或交换命令,如步骤502所示,则控制转移到步骤504,在步骤504,自动数据存储器库确定该命令是否是与先前良好命令相同的命令。可以将成功完成的命令看作是先前良好命令。库控制器保持先前命令清单。该清单可以仅含有被成功执行的命令,它也可以含有命令的执行状态。该清单可以是命令的简单拷贝,它也可以是描述该命令的某个其他数据集。该清单可以仅包括该先前命令,它也可以包括多个先前命令。此外,可以根据诸如移动命令与状态命令的命令类型组织先前命令清单。在此例中,可以存在先前移动命令的命令清单,而且可以存在先前状态命令的另一个命令清单。步骤504捕获,即使发出命令的主机系统可能未收到命令成功完成的响应,但是沿一个控制路径发送的命令实际上仍被成功完成的情况。具体地说,从自动数据存储器库的角度出发,步骤504查找重复命令。该重复命令可能是主机发送重发命令的结果,因为主机没有从自动数据存储器库接收到命令成功完成响应。主计算机起动的该故障切换过程可以使用同一个控制路径(与第一次发送该命令时使用的控制路径相同的控制路径)或者另一个控制路径将重发命令发送到自动数据存储器库。例如,主机210可以利用图2所示的控制路径211发送命令,然后,通过控制路径211发送重发命令。在另一个例子中,主机220可以利用图2所示的控制路径221发送命令,然后,通过图2所示的控制路径222发送重发命令。作为一种选择,主机220可以通过不是控制路径221或222的另一个控制路径(图2未示出)发送重发命令。利用主机与自动数据存储器库之间存在的任任意一个控制路径可以不止一次发送命令。参考图5,如果该命令与先前良好命令不相同,如步骤504所示,则控制转移到步骤510,在步骤510,自动数据存储器库执行移动命令或交换命令。然而,如果该命令与先前良好命令相同,如步骤504所示,则控制转移到步骤505,在步骤505,自动数据存储器库确定移动命令或交换命令的源位置是空还是不可存取。步骤505进一步尝试确定是否已经执行了该命令。例如,如果最后一个成功命令是与当前命令相同的命令,则移动命令或交换命令的源位置应该为空,因为已经成功执行了该命令。此外,可存取性检验将进一步增强了先验执行的确定,因为它与驱动器有关。例如,通常不能访问装载到可移动的介质驱动器内的盒式磁盘,直到将该盒式磁盘从驱动器卸下。如果源位置和目的地地址是一个驱动器,则该命令可能是移动命令。如果因为检测到介质负载或线程错误(thread error)而重新装载该介质,则这可能作为例如半模(re-chuck)ERP(错误校正过程)出现。可存取性检验可以防止故障切换将盒式磁盘重新装载到驱动器的可能性。参考图5,如果源位置是空,或者是不可存取,如步骤505所示,则在步骤506,自动数据存储器库将良好命令状态返回主机。然而,如果源位置不是空,而是可存取,如步骤505所示,则控制转移到步骤507,在步骤507,自动数据存储器库确定该命令是不是交换介质命令。如果该命令不是交换介质命令,如步骤507所示,则控制转移到步骤510,在步骤510,自动数据存储器库执行移动命令。然而,如果该命令是交换命令,如步骤507所示,则控制转移到步骤508,在步骤508,自动数据存储器库确定第一目的地位置是否是空或不可存取。以与步骤505类似的方式,步骤508进一步尝试确定该交换命令是否已经被执行。如果第一目的地位置不是空,而是可存取,如步骤508所示,则控制转移到步骤510,在步骤510,自动数据存储器库执行交换命令。然而,如果第一目的地位置是空,或者不可存取,如步骤508所示,则在步骤509,自动数据存储器库将良好命令状态返回主机。如上所述,如果该命令与先前成功命令不同,如步骤504所示,或者如果该命令不是交换介质命令,如步骤507所示,或者如果第一目的地位置不是空,而是可存取,如步骤508所示,则控制转移到步骤510,在步骤510,自动数据存储器库执行该命令。在步骤511,自动数据存储器库确定该命令是否被成功执行。如果该命令被成功执行,如步骤511所示,则控制转移到步骤513,在步骤513,利用刚成功执行的命令更新先前良好命令清单。然而,如果该命令未被成功执行,如步骤511所示,则控制转移到步骤512,在步骤512,不更新先前良好命令清单。作为一种选择,在步骤512,可以从该清单中删除该先前良好命令。本技术领域内的熟练技术人员明白,在本发明方法范围内,可以对图5所示的流程图做各种修改。例如,一些库可以不支持交换介质命令,而且可以省略步骤507、508和509。在这种情况下,步骤505的否(NO)答案将引导到步骤510。作为另一个例子,可以删除或者修改步骤502和503,以将流程图的该逻辑应用到其他自动数据存储器库命令。在这种情况下,步骤504和513的先前良好命令可以包括不是移动命令和交换命令的命令,或者包括移动命令和交换命令之外的命令。此外,可以省略步骤502,因为步骤504可以确定该命令是否已经被执行。在这种情况下,可对步骤513的逻辑进行修改以便仅包括某些命令,因为任何自动数据存储器库命令均可以导致执行步骤513。此外,可以修改或者删除在步骤505进行的空和/或不可存取检验。例如,可以跳越对空和/或不可存取进行的附加检验,因为经过步骤504,自动数据存储器库含有成功完成该命令的记录。此外,可以删除为了检查当前命令是否与步骤504的最后良好命令相同进行的检验,因为在步骤505对空和/或不可存取进行的检验可以间接捕获该命令已经被执行的情况。作为又一个例子,可以改变步骤顺序。例如,可以将步骤502和504对换。最后,如果先前命令清单含有如上所述的命令执行状态,则可以删除步骤511和512。在这种情况下,步骤513可以利用当前命令及其执行状态更新先前命令清单。
图6示出主计算机执行的、上述全部3个实施例的方法。在步骤601,主计算机通过诸如图2所示主机通信线路221的第一控制路径发出命令。在步骤602,主计算机确定该命令是否完成。命令完成可以包括命令成功完成状态。作为一种选择,命令完成还可以包括命令未成功完成状态。例如,一些命令错误可能是因为控制路径中的问题产生的,而其他命令错误可能是与通过其发送命令的控制路径无关的问题产生的。因此,对一些错误的处理需要不同于对其他错误的处理。作为一种选择,步骤602可以仅检验该命令成功完成。参考图6,如果该命令完成了,如步骤602所示,则控制转移到步骤603,在步骤603,主机认为该控制路径良好,并正确处理命令响应。然而,如果自动数据存储器库命令未完成,如步骤602所示,则控制转移到步骤604,在步骤604,主机通过诸如图2所示主机通信线路222的第二控制路径发送同一个命令(重发命令)。作为一种选择,主机可以通过同一个控制路径发送同一个命令(重发命令)。可以对同一个控制路径,或者附加控制路径重复步骤602、603和604。这样可以执行任何数量的被试控制路径故障切换。
在本发明的另一个实施例中,主计算机同时沿两个或者更多个控制路径发送同一个命令。由于从库控制器的角度出发,一个命令总是比其他命令先到,所以库执行的逻辑与图1至图5所示的逻辑相同。主计算机可以监测重复响应,而不管理重发。在此,导致库执行本发明所述逻辑的任何顺序的主机命令均被称为主机重发。
尽管利用具有冗余控制路径的单个主计算机对本发明进行了大致说明,但是它可以应用于单个控制路径。例如,主计算机可以具有一个以上的与一个库控制路径相连的主机总线适配器。一个主机总线适配器发生故障可以使主机利用另一个主机总线适配器通过同一个控制路径重发命令。主机总线适配器包括主机可以利用其通过SCSI(小型计算机系统接口)总线、FC-AL(光纤通道-仲裁回路)总线、USB(通用串行总线)或者本技术领域内的熟练技术人员已知的任何其他通信方法实现通信的电路。
尽管利用具有多个控制路径的单个主计算机对本发明进行了说明,但是它可以应用于共享一个或者多个控制路径的多个主计算机。在这种情况下,可以扩充先前良好命令清单以包括关于该命令与哪个主机有关的信息。可以利用该附加信息将同一个主机发出的当前命令与先前命令进行比较。
尽管对本发明的优选实施例进行了详细说明,但是熟练技术人员明白,在所附权利要求所述的本发明范围内,可以对这些实施例进行修改和调整。
权利要求
1.一种用于对在主计算机与自动数据存储器库之间传递的重发命令进行管理的方法,所述主计算机利用一个或者多个控制路径与所述自动数据存储器库进行通信,而且所述自动数据存储器库包括用于控制所述自动数据存储器库的库控制器,所述方法包括下述步骤所述主计算机利用所述一个或者多个控制路径之一将命令发送到所述自动数据存储器库;所述主计算机利用所述一个或者多个控制路径之任一将所述命令的重发发送到所述自动数据存储器库;所述自动数据存储器库接收并解码所述命令;以及如果响应利用所述一个或者多个控制路径的所述之一发送到所述自动数据存储器库的所述命令,所述命令已经被执行,则所述自动数据存储器库将命令完成响应发送到所述主计算机,而不执行所述命令的所述重发。
2.根据权利要求1所述的方法,其中所述库控制器包括用于存储良好命令清单的存储器部分,所述方法包括附加步骤如果响应利用所述一个或者多个控制路径的所述之一发送到所述自动数据存储器库的所述命令,所述命令没有已被执行,则所述自动数据存储器库执行所述命令的所述重发;以及如果成功执行了所述命令的所述重发,则所述自动数据存储器库利用所述命令更新所述良好命令清单。
3.根据权利要求1所述的方法,其中所述自动数据存储器库包括数据存储介质和用于传输所述数据存储介质的装置,其中权利要求1所述方法中描述所述自动数据存储器库接收并解码所述命令的步骤进一步包括步骤如果所述命令不是传输所述数据存储介质的命令,则所述自动数据存储器库执行所述命令的所述重发。
4.根据权利要求3所述的方法,其中所述库控制器包括用于存储良好命令清单的存储器部分,所述方法包括附加步骤如果响应利用所述一个或者多个控制路径的所述之一发送到所述自动数据存储器库的所述命令,所述命令没有已被执行,则所述自动数据存储器库执行所述命令的所述重发;以及如果成功执行了所述命令的所述重发,则所述自动数据存储器库利用所述命令更新所述良好命令清单。
5.根据权利要求1所述的方法,其中所述自动数据存储器库包括数据存储介质和用于传输所述数据存储介质的装置,其中权利要求1所述方法中描述所述自动数据存储器库接收并解码所述命令的步骤进一步包括步骤如果所述命令是传输所述数据存储介质的命令,而且所述命令的源地址规定的库位置为空,则所述自动数据存储器库不执行所述命令的所述重发。
6.根据权利要求5所述的方法,其中所述库控制器包括用于存储良好命令清单的存储器部分,所述方法包括附加步骤如果响应利用所述一个或者多个控制路径的所述之一发送到所述自动数据存储器库的所述命令,所述命令没有已被执行,则所述自动数据存储器库执行所述命令的所述重发;以及如果成功执行了所述命令的所述重发,则所述自动数据存储器库利用所述命令更新所述良好命令清单。
7.根据权利要求1所述的方法,其中所述自动数据存储器库包括数据存储介质和用于传输所述数据存储介质的装置,其中权利要求1所述方法中描述所述自动数据存储器库接收并解码所述命令的步骤进一步包括步骤如果所述命令是交换命令,而且所述交换命令的第一目的地地址指定的库位置为空,则所述自动数据存储器库不执行所述命令的所述重发。
8.根据权利要求7所述的方法,其中所述库控制器包括用于存储良好命令清单的存储器部分,所述方法包括附加步骤如果响应利用所述一个或者多个控制路径的所述之一发送到所述自动数据存储器库的所述命令,所述命令没有已被执行,则所述自动数据存储器库执行所述命令的所述重发;如果成功执行了所述命令的所述重发,则所述自动数据存储器库利用所述命令更新所述良好命令清单。
9.一种用于对在主计算机与自动数据存储器库之间传递的重发命令进行管理的系统,所述系统包括一个或者多个控制路径,用于在所述主计算机与所述自动数据存储器库之间进行通信;库控制器,用于控制所述自动数据存储器库;所述主计算机,适于利用所述一个或者多个控制路径之一将命令发送到所述自动数据存储器库;所述主计算机,适于利用所述一个或者多个控制路径之任一将所述命令的重发发送到所述自动数据存储器库;所述自动数据存储器库,适于接收并解码所述命令;以及所述自动数据存储器库,如果响应利用所述一个或者多个控制路径的所述之一发送到所述自动数据存储器库的所述命令,所述命令已经被执行,适于将命令完成响应发送到所述主计算机,而不执行所述命令的所述重发。
10.根据权利要求9所述的系统,该系统进一步包括存储器部分,用于存储良好命令清单,所述存储器部分连接到所述库控制器;所述自动数据存储器库,如果响应利用所述一个或者多个控制路径的所述之一发送到所述自动数据存储器库的所述命令,所述命令没有已被执行,则适于执行所述命令的所述重发;以及所述自动数据存储器库,如果成功执行了所述命令的所述重发,则适于更新所述良好命令清单。
11.根据权利要求9所述的系统,该系统进一步包括数据存储介质,用于存储数据;用于传送所述数据存储介质的装置;所述自动数据存储器库,如果所述命令不是传输所述数据存储介质的命令,则适于在对所述命令进行所述解码后,执行所述命令的所述重发。
12.根据权利要求11所述的系统,该系统进一步包括存储器部分,用于存储良好命令清单,所述存储器部分连接到所述库控制器;所述自动数据存储器库,如果响应利用所述一个或者多个控制路径的所述之一发送到所述自动数据存储器库的所述命令,所述命令没有已被执行,则适于执行所述命令的所述重发;以及所述自动数据存储器库,如果成功执行了所述命令的所述重发,则适于利用所述命令良好状态更新所述良好命令清单。
13.根据权利要求9所述的系统,该系统进一步包括数据存储介质,用于存储数据;用于传送所述数据存储介质的装置;所述自动数据存储器库,如果所述命令是传输所述数据存储介质的命令,而且所述命令的源地址指定的库位置为空,则适于在对所述命令进行所述解码后,不执行所述命令的所述重发。
14.根据权利要求13所述的系统,该系统进一步包括存储器部分,用于存储良好命令清单,所述存储器部分连接到所述库控制器;所述自动数据存储器库,如果响应利用所述一个或者多个控制路径的所述之一发送到所述自动数据存储器库的所述命令,所述命令没有已被执行,则适于执行所述命令的所述重发;以及所述自动数据存储器库,如果成功执行了所述命令的所述重发,则适于更新所述良好命令清单。
15.根据权利要求9所述的系统,该系统进一步包括数据存储介质,用于存储数据;用于传送所述数据存储介质的装置;所述自动数据存储器库,如果所述命令是交换命令,而且所述交换命令的第一目的地地址指定的库位置为空,则适于在对所述命令进行所述解码后,不执行所述命令的所述重发。
16.根据权利要求15所述的系统,该系统进一步包括存储器部分,用于存储良好命令清单,所述存储器部分连接到所述库控制器;所述自动数据存储器库,如果响应利用所述一个或者多个控制路径的所述之一发送到所述自动数据存储器库的所述命令,所述命令没有已被执行,则适于执行所述命令的所述重发;以及所述自动数据存储器库,如果成功执行了所述命令的所述重发,则适于更新所述良好命令清单。
17.一种位于计算机可读介质上、可与可编程计算机一起使用的计算机程序产品,所述计算机程序产品具有嵌入其内、用于管理在主计算机与自动数据存储器库之间传递的重发命令的计算机可读程序代码,所述主计算机利用一个或者多个控制路径与所述自动数据存储器库进行通信,所述自动数据存储器库包括用于控制所述自动数据存储器库的库控制器,所述计算机程序产品包括计算机可读程序代码,使所述主计算机利用所述一个或者多个控制路径之一将命令发送到所述自动数据存储器库;计算机可读程序代码,使所述主计算机利用所述一个或者多个控制路径之任一将所述命令的重发发送到所述自动数据存储器库;计算机可读程序代码,使所述自动数据存储器库接收并解码所述命令;以及计算机可读程序代码,如果响应利用所述一个或者多个控制路径的所述之一发送到所述自动数据存储器库的所述命令,所述命令已经被执行,则使所述自动数据存储器库将命令完成响应发送到所述主计算机,而不执行所述命令的所述重发。
18.根据权利要求17所述的计算机程序产品,其中所述库控制器包括用于存储良好命令清单的存储器部分,而且该计算机可读程序产品进一步包括计算机可读程序代码,如果响应利用所述一个或者多个控制路径的所述之一发送到所述自动数据存储器库的所述命令,所述命令没有已被执行,则使所述自动数据存储器库执行所述命令的所述重发;以及计算机可读程序代码,如果成功执行了所述命令的所述重发,则使所述自动数据存储器库利用所述命令更新所述良好命令清单。
19.根据权利要求17所述的计算机程序产品,其中所述自动数据存储器库包括数据存储介质、用于传输所述数据存储介质的装置,而且进一步包括计算机可读程序代码,如果所述命令不是传输所述数据存储介质的命令,则在对所述命令进行所述解码后,使所述自动数据存储器库执行所述命令的所述重发;计算机可读程序代码,如果响应利用所述一个或者多个控制路径的所述之一发送到所述自动数据存储器库的所述命令,已经执行了所述命令,则使所述自动数据存储器库将命令完成响应发送到所述主计算机。
20.根据权利要求19所述的计算机可读程序产品,其中所述库控制器包括用于存储良好命令清单的存储器部分,而且进一步包括计算机可读程序代码,如果响应利用所述一个或者多个控制路径的所述之一发送到所述自动数据存储器库的所述命令,所述命令没有已被执行,则使所述自动数据存储器库执行所述命令的所述重发;以及计算机可读程序代码,如果成功执行了所述命令的所述重发,则使所述自动数据存储器库利用所述命令更新所述良好命令清单。
21.根据权利要求17所述的计算机程序产品,其中所述自动数据存储器库包括数据存储介质、用于传输所述数据存储介质的装置,而且进一步包括计算机可读程序代码,如果所述命令是传输所述数据存储介质的命令,而且所述命令的源地址指定的库位置为空,则在对所述命令进行所述解码后,所述自动数据存储器库不执行所述命令的所述重发。
22.根据权利要求21所述的计算机可读程序产品,其中所述库控制器包括用于存储良好命令清单的存储器部分,而且进一步包括计算机可读程序代码,如果响应利用所述一个或者多个控制路径的所述之一发送到所述自动数据存储器库的所述命令,所述命令没有已被执行,则使所述自动数据存储器库执行所述命令的所述重发;以及计算机可读程序代码,如果成功执行了所述命令的所述重发,则使所述自动数据存储器库利用所述命令更新所述良好命令清单。
23.根据权利要求17所述的计算机程序产品,其中所述自动数据存储器库包括数据存储介质、用于传输所述数据存储介质的装置,而且进一步包括计算机可读程序代码,如果所述命令是交换命令,而且所述交换命令的第一目的地地址指定的库位置为空,则在对所述命令进行所述解码后,使所述自动数据存储器库不执行所述命令的所述重发。
24.根据权利要求23所述的计算机程序产品,其中所述库控制器包括用于存储良好命令清单的存储器部分,而且进一步包括计算机可读程序代码,如果响应利用所述一个或者多个控制路径的所述之一发送到所述自动数据存储器库的所述命令,所述命令没有已被执行,则使所述自动数据存储器库执行所述命令的所述重发;以及计算机可读程序代码,如果成功执行了所述命令的所述重发,则使所述自动数据存储器库利用所述命令更新所述良好命令清单。
全文摘要
本发明公开了一种用于对自动数据存储器库提供故障切换过程的系统、方法以及计算机程序产品。在数据存储器库的运行过程中,主计算机利用一个或者多个控制路径将控制命令发送到自动数据存储器库。如果主机未收到所希望的结果,例如,如果在正在处理命令时主计算机与自动数据存储器库之间的通信失败,则主计算机可以尝试利用同一个控制路径或者替换控制路径重发同一个命令。在主计算机发出重发同一个命令时,自动数据存储器库检验该命令和所执行的一个或者多个先前命令,以防止自动数据存储器库不止一次执行相同的命令。
文档编号G06F11/36GK1499372SQ20031010443
公开日2004年5月26日 申请日期2003年10月29日 优先权日2002年11月8日
发明者弗兰克·D.·加罗, 布赖恩·G.·古德曼, 伦纳德·G.·杰森诺维斯基, G. 古德曼, G. 杰森诺维斯基, 弗兰克 D. 加罗 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1