虚拟层系统中的故障跟踪的方法和设备 【技术领域】
本发明涉及错误跟踪,及具体地说,涉及到在主机应用和装置间具有虚拟层的环境中的错误跟踪。
背景技术
故障检测和隔离的问题—跟踪复杂系统中的问题直到它的根原因—是非常重要的。在一些环境中,没有任何简单的错误报告信息,但是在许多企业级的环境中,对收集和记录所检测到地故障投入许多精力。在容错系统中,如此的信息对确保连续容错是关键的。在缺乏有效的检测和修复机制中,容错系统将简单地掩饰问题直到进一步错误引起故障。
当问题发生时,它的影响通常是很难预测的。例如,在存储控制器子系统中,从磁盘驱动器到主机应用的路径或“堆栈”中有许多组件。很难将实际检测和记录的错误与由应用或用户主机系统所知道的效果联系起来。
当在同一时间产生许多错误时,确定这些错误中的哪一个引起具体的应用失败是特别困难的。强制地修复所有报告的错误可能使其工作,但是基于这些影响业务最重要的应用的错误的配置的优先权来修复将是较有效的花费,以及对于系统用户将有大的价值。
缺乏任何可跟踪性也减少了以解决用户或系统碰到的任何特殊问题而修复正确的错误的自信。
具有RAID阵列、诸如快速拷贝(Flash Copy)和高速缓冲存储器(cache)的先进的现有系统已经对自顶向下分析增加了相当大的混乱(在系统中跟踪从应用到组件的错误)。花大量的时间和知识来选择引起故障的根原因错误。
随着虚拟层在许多系统中的引进,问题越来越严重。虚拟不仅间接的增加另外的层,而且在基本的现实子系统中,许多虚拟配置容许动态的移动数据,甚至使系统已经更难于来执行精确的故障跟踪。
例如,已经从美国专利5,974,544得之,使用便宜的磁盘的冗余阵列的存储系统中的RAID控制器层上维护逻辑缺陷列表。然而,使用与其它外围装置相连的如此的阵列多个的系统,特别是当与其它外围装置相连的多个如此阵列形成存储区网络(SAN)的一部分时,引入具有诸如虚拟特征的软件层,使得更难于从错误的外部表现跟踪到错误的根原因。
因此,存在减轻这个问题的方法、系统或计算机程序的需要,最好以客户花最少的金钱、处理资源和时间来减轻所述问题。
【发明内容】
因此,在第一方面,本发明提供一种用于将一个或多个主机系统的用户应用界面上检测的错误与虚拟层以下的堆栈层上的根原因错误联系在一起的堆栈系统的方法,该方法包括下列步骤:在用户应用界面上检测错误;在较低的堆栈层上识别相关的根原因错误;为所述的错误建立错误跟踪条目;使出错日志识别符与所述错误跟踪条目相联系;使所述组合的出错日志识别符与错误跟踪条目成为错误识别符,该错误识别符在所述堆栈系统中的多个主机系统之内是唯一的;当由于根原因错误导致所述服务必定失败时,向一个或多个主机系统的用户应用界面上的任何服务的请求者传送错误识别符。
最好,使所述组合的出错日志识别符与错误跟踪条目成为所述堆栈系统中的多个主机系统之内的唯一错误识别符的步骤包括:使错误跟踪条目和出错日志识别符与整数值组合以形成所述多个主机系统内的唯一错误识别符。
最好,在较低堆栈层上的所述根原因错误是在所述堆栈系统的外围装置中。
最好,所述外围装置是存储装置。
最好,堆栈系统包括存储区网络。
在第二方面,本发明提供一种用于将一个或多个主机系统的用户应用界面上检测的错误与虚拟层以下的堆栈层上的根原因错误联系在一起的堆栈系统的设备,该设备包括:错误检测器,用于检测用户界面上的错误;诊断组件,用于识别较低堆栈层上的相关的根原因错误;跟踪组件,用于建立所述错误的错误跟踪条目;识别组件,用于使出错日志识别器与所述错误跟踪条目联系在一起;广域系统识别组件,用于使所述组合的出错日志识别符与错误跟踪条目成为错误识别符,该错误识别符在所述堆栈系统中的多个主机系统之内是唯一的。和通信组件,用于当由于根原因错误导致所述服务必定失败时,向一个或多个主机系统的用户应用界面上的任何服务的请求者传送错误识别符。
最好,用于使所述组合的出错日志识别符与错误跟踪条目成为在所述堆栈系统中的多个主机系统之内的唯一错误识别符的广域系统识别组件包括:使错误跟踪条目和出错日志识别符与整数值组合以形成所述多个主机系统内的唯一错误识别符的组件。
最好,在较低堆栈层上的所述根原因错误是在所述堆栈系统的外围装置中。
最好,所述外围装置是存储装置。
最好,堆栈系统包括存储区网络。
在第三方面,本发明进一步提供一种确实包含在存储媒介中的计算机程序产品,当其装入计算机系统且运行时,引起所述计算机系统使一个或多个主机系统的用户应用界面上检测的错误与虚拟层下的堆栈层上的根原因错误联系在一起,所述计算机程序产品包括计算机程序代码装置,其用于:检测在用户界面上的错误;识别较低堆栈层上的相关的根原因错误;为所述错误建立错误跟踪条目;将错误跟踪条目与出错日志识别符联系在一起;使所述组合的出错日志识别符与所述错误跟踪条目成为在所述堆栈系统中的多个主机系统之内的唯一错误识别符;当由于根原因错误导致所述服务必定失败时,向一个或多个主机系统的用户应用界面上的任何服务的请求者传送错误识别符。
使用唯一错误识别符的根原因信息标记错误的虚拟存储子系统中的故障隔离的本发明优选实施例。对于单个故障,这个提供了能够快速地诊断系统中由单个故障引起的多个错误的优势。在另外的高的可获得的系统中,这个加速了诊断过程和减少了发生故障的时间
【附图说明】
参考附图,本发明的优选实施例将仅用示例的方式来描述,其中:
图1示出了示例的虚拟子系统组件堆栈;
图2示出了根据本发明优选实施例的出错日志的示例。
【具体实施方式】
本发明的优选实施例以采用诸如已存在于许多企业级的环境中的传统的出错日志(170)开始。该出错日志用来记录由系统中的组件检测到的故障。有一些典型的连接外部世界的组件,例如,网络和驱动器层,它们首先检测,然后处理该错误。
唯一识别符(120)被加到现有的传统的出错日志条目,这可以通过对每个条目使用大的(如,32比特)整数来实现。当由日志的识别符限定复制时,识别以后可能引起I/O服务或其它动作失败的具体事件。该出错日志包含详述所检测的故障(220)的补充信息,足以容许用户或服务个人来修复根原因故障。
然后,唯一识别符被用作对任何由于错误必定导致失败的服务请求(如,I/O请求)的响应的一部分。该请求的请求者的请求在收到针对该请求失败的响应时判断它自己的服务或请求的哪一个必定是失败的。依次,请求者破坏自己的请求,再重新引用它最初收到的、识别这些失败的原因的唯一识别符。
这样,引起失败的事件的识别通过失败请求链,直到它到达每个请求的始发者。然后该始发者有要求为每个检测的失败来精确地判断哪个错误事件必须被修复、分派修复过程和确保最关键的应用首先被修复的信息,此外,对需矫正的错误已被修复、避免时间的拖延和不成功恢复的相关花费有较高的自信度。
在本发明的最优选的实施例中,传送请求的组件是软件堆栈(100)中的层,执行诸如管理RAID控制器(110)、虚拟(120)、快速拷贝(130)、高速缓冲存储器(140)、远端拷贝(150)和连接到主机系统(160)的功能。本发明的优选实施例的方法容许经由该系统向堆栈以下直到存储控制器的边缘可跟踪。
作为最初的失败事件的结果,软件堆栈中的每个组件可能自己发生错误。例如,来自应用服务(190)的写操作可以作为故障被返回到SCSI后端,即,写入因物理存储器的一些原因而失败。这产生被记录的错误和被返回到发生错误的组件的唯一识别符。该失败的写入随同唯一识别(210)符返回到上一层。它们返回直到堆栈。在每一层上写入可以在那个组件内导致失败,例如,如果快速拷贝对照写入失败的磁盘是有效的,该快速拷贝操作将暂停执行,并发生错误。这个新错误本身被分配唯一识别符,它用唯一识别符或根原因(230)来标记,由下面的组件传递。同样的情况可以在软件堆栈中的每一层中发生。最终,最初的错误作为SCSI感测数据的一部分返回到要求写入的应用服务器。
然后,用户可以将失败的写入操作与不能写入的物理磁盘,以及不在软件堆栈内的操作和功能相联系,如上面所描述的快速拷贝。
应该理解上述方法将典型地以运行于一个或多个处理器(未显示)上的软件实施,并且该软件可以作为携带在任何诸如计算机的磁盘和光盘这样的合适的数据载体(也未显示)的计算机程序单元而被提供。同样地,数据的传输信道可以包括所有描述的存储媒介以及信号运送媒介,例如有线或无线信号媒介。
本发明可以合适地被具体表达为计算机所用的计算机程序产品。这样一种实现可以包括固定在诸如计算机可读媒介磁盘、CD-ROM、ROM或硬盘的有形的媒介上的一系列计算机可读指令,或者通过调制解调器或其它接口装置,在包括但不限于光或模拟的通信线的有形的媒介上或包括但不限于微波、红外线或其它传输技术的无形的无线技术上可传输到计算机系统的一系列计算机可读指令。这里,该计算机可读指令系列实施先前所描述的全部或部的功能。
本领域熟练技术人员应该理解,如此的计算机可读指令能够以为许多计算机结构和操作系统所用的许多程序语言来编写。而且,如此的指令可以用目前或未来的包括但不限于半导体、磁的或光的任何存储器技术来存储,或者如此的指令可以用目前或未来的包括但不限于光、红外线或其它传输技术的任何通信技术来传输。期望如此的带有打印的或电子的文档的计算机程序产品可以作为可移动的媒介被分发,例如,用计算机系统预装载压缩包裹(shrink-wrapped)的软件,例如,装在系统ROM或固定的磁盘上,或从服务器或网络上的电子公告牌分发,例如,通过因特网或万维网传送。
本领域普通的技术人员可知,对上述实施例做出各种各样的修改是显而易见的。