主机与存储系统之间的带内问题日志数据收集的制作方法

文档序号:6476712阅读:224来源:国知局
专利名称:主机与存储系统之间的带内问题日志数据收集的制作方法
技术领域
本申请一般地涉及改进的数据处理系统和方法。具体地说,本申请涉 及一种用于主机系统与存储系统之间的带内问题日志数据收集的系统和方 法。
背景技术
存储区域网络(SAN)是存储盘的网络。在典型的大型企业实施方式 中,SAN将多个服务器连接到集中的存储系统池。与管理每个都具有其自 己的盘的数百个服务器相比,SAN改进了系统管理。通过将公司的所有存 储视为单个资源,盘维护和例行备盼变得更易于调度和控制。SAN以及其 他网络数据处理系统包括多个层,例如应用、数据库应用、文件系统、主 机服务器系统、网络^5出设施以及存储系统。
在现代SAN环境中,由于SAN环境倾向于变得非常复杂,所以将非 常难以调试故障。典型地,在SAN环境中检测故障并收集数据以确定问题 根源的組件是与经历故障的组件不同的组件。结果,经常在检测到故障之 后解决导致该故障的问题并且通常通过利用外部手段和针对SAN环境的 组件的定制来解决该问题。这经常需要"重新测试,,导致所检测到的故障 的情况,即,在SAN环境中重新创建导致故障的条件以便可以执行数据收 集来确定故障原因。此重新创建可以包括必须在出现问题之后扫描日志数 据结构以查找与确定的故障时刻有关的信息,然后将来自各个日志的此信 息相关联以试图获得系统状态在故障时的情形。
由于典型地由与经历故障的组件不同的组件来执行故障检测和数据收 集,所以从复杂SAN环境中的多个组件收集数据经常会因为通信中的等待
5时间和通过较慢接口的激活而造成丢失可以帮助调试故障的关键信息。因
此,经常地,来自远程主机系统、交换机或SAN环境的各个层处的其他存 储设备的数据不可用,或在导致故障的错误情况已经过很久之后才收集所 述数据。例如,SAN元素的某些组件(例如,主机总线适配器(HBA)緩 冲器)存储非常少量的数据(例如, 一次存储几帧数据),当由于用于检 测故障和收集数据的机制中的等待时间而造成直到在故障发生后的相当一 段时间后才检测到故障并执行数据收集时,所述数据将被迅速覆盖并丢失。 结果,以及还因为公知SAN环境的有限记录能力,将在上述过程中丟失某 些信息。

发明内容
本发明相应地在第一实施例中提供了一种在计算设备中的用于收集与 数据处理系统中的故障对应的数据的方法,包括接收包括多个数据处理 系统的网络中的数据处理系统的组件的故障状况的故障通知;从所述网络 中的所述多个数据处理系统接收状态保存数据,其中在所述多个数据处理 系统中生成所述状态保存数据以响应带内状态保存命令;以及输出所述状 态保存数据以在解决所述组件的所述故障状况中使用,其中所述带内状态 保存命令是跨所述多个数据处理系统中的第 一数据处理系统与至少 一个第
二数据处理系统之间的数据通道发出的命令。
优选地,所述第一数据处理系统是存储系统并且所述至少一个第二数 据处理系统是至少 一个主机系统。
优选地,将所述带内状态保存命令从所述存储系统的存储控制器发送 到所述至少 一个主机系统以响应所述故障状况是所述存储系统中的存储设 备的故障。
优选地,经由所述存储系统的与多个主机系统中的每个主机系统都建 立数据通道的多主机系统接口向所述多个主机系统发出所述带内状态保存 命令,所述多个主机系统中的每个主机系统都收集所述状态保存数据并经 由所述多主机系统接口建立的所述数据通道将所述状态保存数据提供给所述存储控制器,以及将所述多个主机系统中的每个主机系统收集的所述状 态保存数据与来自所述存储系统的状态保存数据一起封装成与所检测的故 障状况关联的单个数据封装。
优选地,将所述带内状态保存命令从在所述至少一个主;f几系统中的主 机系统上执行的至少 一个驱动器发送到所述存储系统的存储控制器以响应 所述故障状况是在所述主机系统上执行的应用实例的故障。
所述方法还可以包括请求所述至少一个主机系统中的第一状态保存 操作以由此生成至少一个主机状态保存日志数据结构;以及请求所述存储 系统中的第二状态保存操作以由此生成存储系统状态保存日志数据结构。
所述方法还可以包括将所述至少一个主机状态保存日志数据结构与 所述存储系统状态保存日志数据结构一起封装成存储在所述存储系统中并 与所述故障状况关联的单个状态保存封装数据结构,其中输出所述状态保 存数据以在解决所述组件的所述故障状况中使用的步骤包括将所述状态 保存封装数据结构输出到第三数据处理系统。
优选地, 一旦在所述组件中检测到所述故障状况,就基本上立即收集 所述至少 一个主机系统和所述存储系统的所述状态保存数据。
优选地,响应于接收到对所述至少一个主机系统中的所述第一状态保 存操作的请求,所述至少一个主机系统通过暂停所述主机系统的操作、保 持所述主机系统的组件的状态,以及存储所述主机系统的所述组件的状态 信息来启动所述第 一状态保存操作。
优选地,所述主机系统的组件包括其中存储有短期跟踪值的主机总线 适配器緩冲器,并且其中一,测到所述故障状况,就基本上立即收集这 些短期跟踪值。
优选地,由所述存储系统的存储控制器检测所述组件的所述故障状况, 并且其中请求所述至少一个主机系统中的状态保存操作包括在所述至少 一个主机系统的多个主机系统的每个中启动状态保存操作,每个状态保存 操作都生成与所述存储系统状态保存日志数据结构一起封装的单独主机状 态保存日志数据结构。
7优选地,所述计算设备被提供为所述至少一个第二数据处理系统之一 的 一部分并执行至少 一个驱动器,所述至少 一个驱动器包括在所述计算设 备的驱动器栈中提供的故障转移驱动器或主机总线适配器驱动器中的至少 一个。
优选地,所述故障转移驱动器或者检测所述组件的故障状况,或者接 收来自所述第 一数据处理系统的所述带内状态保存命令,并且其中所述主 机总线适配器驱动器在所述计算设备中启动状态保存操作以响应检测到所 述故障状况或接收到所述带内状态保存命令。
所述方法还可以包括确定是否先前在当前检测的故障状况的预定时 段内响应于检测的故障状况而接收到状态保存命令,其中只有先前在所述 预定时段内尚未接收到状态保存命令时才发出带内状态保存命令、收集状 态保存数据,以及输出所述状态保存数据。
在第二方面中,提供了一种包括计算机程序代码的计算机程序,当所 述计算机程序代码被加载到计算机系统中并在其上执行时,将导致所述计 算机系统执行根据第一方面的方法的所有步骤。
第二方面的计算机程序可以体现为计算机程序产品,所述计算机程序 产品包括具有计算机可读程序的计算机可用介质,其中所述计算机可读程 序在计算设备上执行时,将导致所述计算设备执行以下操作接收包括多 个数据处理系统的网络中的数据处理系统的组件的故障状况的故障通知; 从所述网络中的所述多个数据处理系统接收状态保存数据,其中在所述多 个数据处理系统中生成所述状态保存数据以响应带内状态保存命令;以及 输出所述状态保存数据以在解决所述组件的所述故障状况中使用,其中所 述带内状态保存命令是跨所述多个数据处理系统中的第 一数据处理系统与 至少 一个第二数据处理系统之间的数据通it^出的命令。
优选地,所述第 一数据处理系统是存储系统并且所述至少 一个第二数 据处理系统是至少 一个主机系统。
优选地,将所述带内状态保存命令从所述存储系统的存储控制器发送 到所述至少 一个主机系统以响应所述故障状况是所述存储系统中的存储设备的故障。
优选地,经由所述存储系统的与多个主机系统中的每个主机系统都建 立数据通道的多主机系统接口向所述多个主机系统发出所述带内状态保存 命令,所述多个主机系统中的每个主机系统都收集所述状态保存数据并经 由所述多主机系统接口建立的所述数据通道将所述状态保存数据提供给所 述存储控制器,以及将所述多个主机系统中的每个主机系统收集的所述状 态保存数据与来自所述存储系统的状态保存数据一起封装成与所检测的故 障状况关联的单个数据封装。
优选地,将所述带内状态保存命令从在所述至少 一个主机系统中的主 机系统上执行的至少 一个驱动器发送到所述存储系统的存储控制器以响应 所述故障状况是在所述主机系统上执行的应用实例的故障。
优选地,所迷计算机可读程序还导致所述计算设备执行以下操作请 求所述至少 一个主机系统中的第 一状态保存操作以由此生成至少 一个主机 状态保存日志数据结构;以及请求所述存储系统中的第二状态保存操作以 由此生成存储系统状态保存日志数据结构。
优选地,所述计算机可读程序还导致所述计算设备执行以下操作将 所述至少一个主机状态保存日志数据结构与所述存储系统状态保存日志数 据结构一起封装成存储在所述存储系统中并与所述故障状况关联的单个状 态保存封装数据结构,其中输出所述状态保存数据以在解决所述组件的所 述故障状况中使用的操作包括将所述状态保存封装数据结构输出到第三 数据处理系统。
优选地, 一旦在所述组件中检测到所述故障状况,就基本上立即收集 所述至少 一个主机系统和所述存储系统的所述状态保存数据。
优选地,响应于接收到对所述至少一个主机系统中的所述第一状态保 存操作的请求,所述至少一个主机系统通过暂停所述主机系统的操作、保 持所述主机系统的组件的状态,以及存储所述主机系统的所述组件的状态 信息来启动所述第 一状态保存操作。
优选地,所述主机系统的组件包括其中存储有短期跟踪值的主机总线适配器緩冲器,并且其中一M测到所述故障状况,就基本上立即收集这 些短期跟踪值。
优选地,由所述存储系统的存储控制器检测所述组件的所述故障状况,
并且其中所述计算机可读程序导致所述计算设备执行以下操作通过在所 述至少一个主机系统的多个主机系统的每个中启动状态保存操作,来请求 所述至少一个主机系统中的状态保存操作,每个状态保存操作都生成与所 述存储系统状态保存日志数据结构一起封装的单独主机状态保存日志数据 结构。
优选地,所述计算设备被提供为所述至少一个第二数据处理系统之一 的一部分并执行至少 一个驱动器,所述至少一个驱动器包括在所述计算设 备的驱动器栈中提供的故障转移驱动器或主机总线适配器驱动器中的至少 一个。
优选地,所述故障转移驱动器或者检测所述组件的故障状况,或者接 收来自所述第一数据处理系统的所述带内状态保存命令,并且其中所述主 机总线适配器驱动器在所述计算设备中启动状态保存操作以响应检测到所 述故障状况或接收到所述带内状态保存命令。
优选地,所述计算机可读程序还导致所述计算设备执行以下操作确 定是否先前在当前检测的故障状况的预定时段内响应于检测的故障状况而 接收到状态保存命令,其中只有先前在所述预定时段内尚未接收到状态保 存命令时才发出带内状态保存命令、收集状态保存数据,以及输出所述状 态保存数据。
在第三方面中,提供了一种数据处理系统,包括至少一个主机系统; 以及与所述至少一个主机系统耦合的存储系统,其中所述至少一个主机 系统或所述存储系统之一接收所述数据处理系统的组件的故障状况的故障 通知;所述存储系统接收来自所述至少一个主机系统的第一状态保存数据, 并从所述存储系统的一个或多个存储设备收集第二状态保存数据,其中生 威所述第 一状态保存数据或所述第二状态保存数据中的至少 一个以响应带 内状态保存命令;以及所述存储系统输出所述第一状态保存数据和第二状态保存数据以在解决所述组件的所述故障状况中使用,其中所述带内状态
保存命令是跨所述存储系统与所述至少 一个主机系统之间的数据通iUc出 的命令。
优选地,将所述带内状态保存命令从所述存储系统的存储控制器发送 到所述至少 一个主机系统以响应所述故障状况是所述存储系统中的存储设 备的故障。
优选地,经由所述存储系统的与多个主机系统中的每个主机系统都建
命令,所述多个主机系统中的每个主机系统都收集所述状态保存数据并经 由所述多主机系统接口建立的所述数据通道将所述状态保存数据提供给所 述存储控制器,以及将所述多个主机系统中的每个主机系统收集的所述第 一状态保存数据与所述第二状态保存数据一起封装成与所检测的故障状况 关联的单个数据封装。
优选地,将所述带内状态保存命令从在所述至少 一个主机系统中的主 机系统上执行的至少 一个驱动器发送到所述存储系统的存储控制器以响应 所述故障状况是在所述主机系统上执行的应用实例的故障。
优选地,所述存储系统的存储控制器执行以下操作请求所述至少一 个主机系统中的第一状态保存操作以由此生成至少一个主机状态保存曰志 数据结构;以及请求所述存储系统中的第二状态保存操作以由此生成存储 系统状态保存日志数据结构。
优选地,所述存储系统的存储控制器执行以下操作将所述至少一个 主机状态保存日志数据结构与所述存储系统状态保存日志数据结构一起封 装成存储在所述存储系统中并与所述故障状况关联的单个状态保存封装数
处理系统来输出所述状态保存数据以在解决所述组件的所述故障状况中使 用。
在一个实施例中,可以提供一种在数据处理系统中的用于收集与所述 数据处理系统中的故障对应的数据的方法,包括由所述数据处理系统中
ii的在主机系统上执行的至少一个驱动器或所述数据处理系统中的存储系统
的存储控制器中的一个检测所述数据处理系统的组件的故障状况;从所述 至少 一个驱动器或所述存储控制器中的 一个向所述至少 一个驱动器或所述 存储控制器中的另 一个发出带内状态保存命令;收集所述主才几系统和所述 存储系统的状态保存数据以响应发出所述带内状态保存命令;以及向客户
件的所述故障状况中使用,其中所述带内状态保存命令是跨所述主机系统 与所述存储控制器之间的数据通ii^出的命令。
示例性实施例提供了 一种在主机系统与存储系统之间的带内问题曰

数据收集的系统和方法。示例性实施例为诸如主机系统、主机应用、服务 器系统、存储系统之类的数据处理系统提供了工具以利用直接命令发起状 态保存操作以响应错误或故障。在一个示例性实施例中,所述主机系统包 括应用程序接口 (API),以强制存储设备在与主机系统日志互锁的特定时 刻收集一组状态保存数据用于调试目的。由于主机系统使用直接命令发起 状态保存操作,而不是需要存储区域网络(SAN)中的外部组件来检测故 障和执行数据收集,所以可以收集更多数量的瞬态数据以提供更全面的状 态信息用于调试目的。
可以例如在故障转移驱动器和/或主机总线适配器(HBA )驱动器中提 供示例性实施例的API。因此,可以在主代码路径内提供所述API,以便 通过增加在最初检测到错误时可用的数据量来最大化错误之后的首次数据 捕获。所述API提供了用于交换请求来自所述存储设备的状态保存操作的 命令的功能。所述存储设备利用通信通道API (例如以太网或光纤通道 API)来接收命令并处理命令。
所述存储设备中包括的逻辑可包括频率功能,其确定是否已采取状态 保存操作以避免由于状态保存命令而使所述存储设备过饱和。在所述主机 系统上生成主机日志,其具有以下细节哪些存储设备执行了状态保存操 作,以及所收集的状态保存数据文件的名称。
示例性实施例还提供了数据收集工具,其利用服务器系统所使用的数据通道与存储系统通信以在数据收集活动期间请求和传输主才几侧日志和数 据以便调试存储故障。示例性实施例的系统和方法利用故障转移驱动器来 收集主机系统日志、故障转移驱动器日志、主机配置数据、固件/软件级别 以及基本配置数据,并将其传输到存储系统。所述存储系统然后可以将主 机系统数据封装为其状态保存数据的一部分以便确定问题。
此外,提供了允许存储系统的存储控制器或类似设备启动一个或多个 主机系统中的状态保存操作的机制。对于此类示例性实施例,故障转移驱
动器中的API可以识别存储命令以收集从存储系统发送的数据,并且自身 可在临时目录的归档文件中收集所述一组主机侧状态保存数据,如主;f几系 统日志、故障转移驱动器日志等。故障转移驱动器中的API然后可以例如 借助多主机系统接口与存储系统协商以打开传输归档后的文件的数据通 道。
所述存储设备上对数据收集的支持涉及包括多主机系统接口 ,后者可 以与到多个主机系统的主机故障转移驱动器的命令交互。所述多主机系统 接口处理数据请求并打开数据通道以传输来自主机系统的数据。所述存储 系统可以在存储介质上创建临时存储位置以临时地存储可能来自多个主机 系统的状态保存数据,然后将所有存储系统状态数据与主机系统状态数据 封装在一起。所述多主机接口系统还提供了这样的工具将收集的主机和 存储系统状态数据封装传输到客户端系统或其他数据处理设备,以便在调 试存储系统中使用,从而解决故障状况。
在一个示例性实施例中,提供了 一种收集与数据处理系统中的故障对 应的数据的方法。所述方法可以包括接收包括多个数据处理系统的网络 中的数据处理系统的组件的故障状况的故障通知。所述方法还可以包括 从所述网络中的所述多个数据处理系统接收状态保存数据,其中在所述多 个数据处理系统中生成所述状态保存数据以响应带内状态保存命令。可以 输出所述状态保存数据以在解决所述组件的所述故障状况中使用,其中所 述带内状态保存命令是跨所述多个数据处理系统中的第 一数据处理系统与 至少 一个第二数据处理系统之间的数据通道发出的命令。所述第 一数据处理系统可以例如是存储系统并且所述至少 一个第二数 据处理系统可以例如是至少 一个主机系统。可以将所述带内状态保存命令 从所述存储系统的存储控制器发送到所述至少 一个主机系统以响应所述故 障状况是所述存储系统中的存储设备的故障。可以经由所述存储系统的与 多个主机系统中的每个主机系统都建立数据通道的多主机系统接口向所述 多个主机系统发出所述带内状态保存命令。所述多个主机系统中的每个主 机系统都可收集所述状态保存数据并经由所述多主机系统接口建立的所述 数据通道将所述状态保存数据提供给所述存储控制器。可以将所述多个主 机系统中的每个主机系统收集的所述状态保存数据与来自所述存储系统的 状态保存数据一起封装成与所检测的故障状况关联的单个数据封装。
可以从在所述至少 一个主机系统中的主机系统上执行的至少 一个驱动
器发送所述带内状态保存命令。所述带内状态^M^命令可以^L^送到所述
存储系统的存储控制器以响应所述故障状况是在所述主机系统上执行的应 用实例的故障。
所述方法还可以包括请求所述至少一个主机系统中的第 一状态保存 操作以由此生成至少一个主机状态保存日志数据结构。可以请求所述存储 系统中的第二状态保存操作以由此生成存储系统状态保存日志数据结构。 所述方法还可以包括将所述至少一个主机状态保存日志数据结构与所述 存储系统状态保存日志数据结构一起封装成存储在所述存储系统中并与所 述故障状况关联的单个状态保存封装数据结构。输出所述状态保存数据以 在解决所述组件的所述故障状况中使用的步骤包括将所述状态保存封装 数据结构输出到第三数据处理系统。 一旦在所述组件中检测到所述故障状 况,就可以基本上立即收集所述至少一个主机系统和所述存储系统的所述 状态保存数据。
响应于接收到对所述至少 一个主机系统中的所述第 一状态保存操作的 请求,所述至少一个主机系统通过暂停所述主机系统的操作、保持所述主 机系统的组件的状态,以及存储所述主机系统的所述组件的状态信息来启 动所述第 一状态保存操作。所述主机系统的组件包括其中存储有短期跟踪值的主机总线适配器緩冲器,并且其中一旦检测到所述故障状况,就基本 上立即收集这些短期跟踪值。
由所述存储系统的存储控制器检测所述组件的所述故障状况。请求所
述至少 一个主机系统中的状态保存操作可以包括在所述至少 一个主机系 统的多个主机系统的每个中启动状态保存操作,每个状态保存操作都生成 与所述存储系统状态保存日志数据结构一起封装的单独主机状态保存日志 数据结构。
所述计算设备可被提供为所述至少 一个第二数据处理系统之一的 一部 分并执行至少 一个驱动器,所述至少一个驱动器包括在所述计算设备的驱 动器栈中提供的故障转移驱动器或主机总线适配器驱动器中的至少一个。 所述故障转移驱动器可以或者检测所述组件的故障状况,或者接收来自所 述第一数据处理系统的所述带内状态保存命令。所述主机总线适配器驱动 器可以在所述计算设备中启动状态保存操作以响应检测到所述故障状况或 接收到所述带内状态保存命令。
所述方法还可以包括确定是否先前在当前检测的故障状况的预定时 段内响应于检测的故障状况而接收到状态保存命令。只有先前在所述预定 时段内尚未接收到状态保存命令时才发出带内状态保存命令、收集状态保 存数据,以及输出所述状态保存数据。
其他示例性方法实施例可以包括由所述数据处理系统中的在主机系 统上执行的至少 一个驱动器或所述数据处理系统中的存储系统的存储控制 器中的一个检测所述数据处理系统的组件的故障状况。可以从所述至少一 个驱动器或所述存储控制器中的一个向所述至少一个驱动器或所述存储控 制器中的另 一个发出带内状态保存命令。可以收集所述主机系统和所述存 储系统的状态保存数据以响应发出所述带内状态保存命令。可以向客户端
的所述故障状况中^f吏用。所述带内状态保存命令可以是跨所述主机系统与 所述存储控制器之间的数据通iOL出的命令。
在其他示例性实施例中,提供了一种包括具有计算机可读程序的计算
15机可用介质的计算机程序产品。当所述计算机可读程序在计算设备上执行 时,将导致所述计算设备执行上述关于方法示例性实施例的操作中的各个 操作或操作的组合。
在其他示例性实施例中,提供了一种系统。所述系统可以包括至少一 个主机系统以及与所述至少 一个主机系统耦合的存储系统。所述至少 一个
中的各个操作或操作的组合。
本发明的这些和其他特征和优点将在以下对本发明的示意性实施例的 详细说明中进行描述,或者鉴于以下对本发明的示意性实施例的详细说明, 本发明的这些和其他特征和优点将对本领域的技术人员变得显而易见。


现在将仅通过示例的方式参考附图描述本发明的优选实施例,这些附
图是
图1示出了其中可实现本发明的各方面的存储区域网络的图示; 图2是其中可实现本发明的各方面的示意性数据处理系统的框图; 图3是示出示例性实施例的主要运行组件响应于主机应用的故障的示
意性操作的示意性框图4是示出示例性实施例的主要运行组件响应于存储系统中的存储设
备故障的示意性操作的示意性框图5是才艮据一个示例性实施例的概述执行数据收集以响应主机应用故
障的示意性操作的流程图;以及
图6是根据一个示例性实施例的概述执行数据收集以响应存储设备故
障的示意性操作的流程图。
具体实施例方式
示例性实施例提供了一种用于主机系统与存储系统之间的带内问题日 志数据收集的系统和方法。示例性实施例的系统和方法可以在诸如存储区域网络(SAN)之类的分布式数据处理系统中实现。因此,为了提供理解 示例性实施例的主要运行组件的上下文,以下提供了图l-2作为其中可实 现示例性实施例的示意性方面的示意性数据处理环境和示意性数据处理设 备。提供图3作为可通过示例性实施例的机制从其收集数据的存储区域网 络的多个层的实例。
现在参考附图,具体地说,参考图1-2,提供了其中可以实现本发明的 实施例的数据处理环境的示意图。应理解的是,图l-2仅是示意性的并且 并非旨在断言或暗示有关其中可实现本发明的方面或实施例的环境的任何 限制。在不脱离本发明的精神和范围的情况下可以对所示环境做出许多修 改。
现在参考附图,图1示出了其中可实现示例性实施例的各方面的存储 区域网络的图示。存储区域网络(SAN) 100包含SAN结构102,后者是 共同地提供SAN 100内的路由选择^P出设施的互连交换机的组合。
在所示示例中,主机110连同存储系统或设备120 —起连接到SAN结 构102。主机110可以例如是个人计算机、网络计算机、服务器等。在所 示示例中,主机110通过SAN结构中的路径访问存储系统/设备120。 SAN 100可以包括未示出的附加主机和/或其他存储设备。图1旨在作为示例, 并非旨在作为对本发明的架构限制。
SAN结构102是用于提供在SAN 100内连接在一起的各种设备和计算 机之间的通信链路的介质。SAN结构102可以包括诸如有线、无线通信链 路或光缆之类的连接。在一个实施例中,SAN结构102可以代表使用传输 控制协议/网际协议(TCP/IP )协议集来相互通信的网络和网关的集合。当 然,SAN结构102还可以被实现为包括多种不同类型的网络,如光纤通道、 以太网、串行连接小型计算机系统接口 (串行连接的SCSI或SAS)等。 实际上,许多当前的SAN使用光纤通道用于数据传输并使用以太网传送管 理信息。
如上所述,图1旨在作为一个示例,并非旨在作为对本发明的不同实 施例的架构限制,因此,图1中示出的特定元素不应被一见为限制有关其中可实现本发明的示例性实施例的环境。
现在参考图2,示出了其中可实现示例性实施例的各方面的示意性数 据处理系统的框图。数据处理系统200是诸如图1中的主机110之类的计 算机的一个示例,实现本发明的示例性实施例的过程的计算机可用代码或 指令可以位于其中。
在所示示例中,数据处理系统200采用包括北桥和存储器控制器集线 器(NB/MCH) 202以及南桥和输7W输出(I/O )控制器集线器(SB/ICH ) 204的集线器架构。处理单元206、主存储器208以及图形处理器210与 NB/MCH 202相连。图形处理器210可通过加速图形端口 ( AGP )与 NB/MCH 202相连。
在所示示例中,局域网(LAN)适配器212与SB/ICH 204相连,音 频适配器216、键盘和鼠标适配器220、调制解调器222、只读存储器(ROM ) 224 、石更盘驱动器(HDD ) 226 、 CD-ROM驱动器230 、通用串行总线(USB ) 端口及其他通信端口 232,以及PCI/PCIe设备234通过总线238和240与 SB/ICH 204相连。PCI/PCIe设备可以例如包括以太网适配器、附加卡以 及笔记本计算机的PC卡。PCI使用卡总线控制器,而PCIe则不使用。 ROM 224可以例如是闪速二进制输^/输出系统(BIOS )。
HDD 226和CD-ROM驱动器230通过总线240与SB/ICH 204相连。 HDD 226和CD-ROM驱动器230可以例如使用集成驱动电子设备(IDE ) 或串行高级技术附件(SAT A )接口 。超级I/0( SIO )设备236可与SB/ICH 204相连。
操作系统在处理单元206上运行。所述操作系统协调和提供对图2中 的数据处理系统200内的各种组件的控制。作为客户端,所述操作系统可 以是诸如Microsoft Windows XP之类的商业操作系统(Microsoft和 Windows是Microsoft Corporation在美国和/或其他国家/地区的商标)。 诸如JavaTM编程系统之类的面向对象的编程系统可以与操作系统一起运 行并从在数据处理系统200上执行的JavaTM程序或应用来提供对操作系统 的调用(Java是Sun Microsystems, Inc.在美国和/或其他国家/地区的商标)。
作为服务器,数据处理系统200可以例如是运行高级交互执行(AIX ) 操作系统或LINUX操作系统的IBM eServerTM pSeries⑧计算机系统 (eServer、 pSeries和AIX是国际商业机器公司在美国和/或其他国家/地区 的商标,而LINUX是Linus Torvalds在美国和/或其他国家/地区的商标)。 数据处理系统200可以是在处理单元206中包括多个处理器的对称多处理 器(SMP)系统。备选地,可以使用单处理器系统。
操作系统、面向对象的编程系统以及应用或程序的指令位于诸如HDD 226之类的存储设备上,并且可以被加载到主存储器208以便由处理单元 206执行。本发明的示例性实施例的过程可以由处理单元206使用计算机 可用程序代码来执行,所述程序代码可以例如存储在诸如主存储器208、 只读存储器224之类的存储器之中,也可以存储在一个或多个外围设备226 和230中。
总线系统(例如图2中示出的总线238或总线240)可以包括一个或 多个总线。当然,总线系统可以使用在与通信结构或架构相连的不同组件 或设备之间提供数据传输的任何类型的通信结构或架构来实现。通信单元 (例如图2的调制解调器222或网络适配器212)可以包括一个或多个用 于传输和接收数据的设备。存储器可以例如是主存储器208、 ROM 224或 诸如在图2中的NB/MCH202中找到的高速緩存。
本领域中的技术人员将理解图1-2中的硬件可以根据实施方式而不同。 除了图1-2中所示的硬件或代替这些硬件,可以使用诸如闪存、等价的非 易失性存储器或光盘驱动器之类的其他内部硬件或外围设备。此外,除了 上述SMP系统以外,所述示例性实施例的过程还可以应用于多处理器数 据处理系统而不脱离本发明的精神和范围。
此外,数据处理系统200可以采取多种不同数据处理系统中的任意系 统的形式,包括客户端计算设备、服务器计算设备、平板电脑、膝上型计 算机、电话或其他通信设备、个人数字助理(PDA)等。在某些示例性实 施例中,数据处理系统200可以例如是具备闪存来提供用于存储操作系统文件和/或用户生成的数据的非易失性存储器的便携式计算设备。本质上,
数据处理系统200可以是没有架构限制的任何已知的或未来开发的数据处 理系统。
再次参考图l,典型地,如果SAN 100中的组件存在故障,则在经历 故障的组件外部的SAN 100的组件必须检测到该故障并启动数据收集用于 调试目的。结果,经常在已经过错误状况很长时间之后才收集数据用于调 试目的,并且SAN组件的有限记录能力意味着可能在等待时段中丢失某些
示例性实施例提供了一种机制,借助该机制,诸如主机110的主机系 统可以在主机应用出现故障的情况下在主^L系统110和存储系统120两者 上启动"状态保存"操作。此外,示例性实施例提供了一种机制,借助该 机制,诸如存储系统120的存储系统可以在主机系统110 (其可以是多个 主机系统)和存储系统120两者上启动"状态保存"操作以响应存储系统 120中的存储设备的检测到的故障。
应理解的是,虽然将根据执行特定操作的主机系统110和存储系统120 的特定元素描述示例性实施例,但是示例性实施例仅是例示本发明的可能 实施方式并且并非旨在声称或暗示任何有关可以执行所述操作的元素的限 制。因此,例如,存储系统120的存储控制器所执行的操作可同等地在主 机系统110上执行的驱动器中执行,反之亦然。此外,可以提供不同于主
作。在不脱离本发明精神和范围的情况下,如鉴于本说明将对本领域技术 人员显而易见的,可以对示例性实施例做出其他修改。
此外,应理解的是,虽然示例性实施例涉及存储系统与一个或多个主 机系统之间的存储区域网络(SAN)中的状态保存操作,但是示例性实施 例和本发明并不限于此。相反,示例性实施例的机制可以与任何其中在出 现故障时需要状态保存操作的数据处理系统和/或设备(例如,服务器系统、 客户端设备、工作站等)的网络一起使用。因此,本发明不限于主机系统 和存储系统中的状态保存操作并且其他环境被视为在本发明的精神和范围
20之内。
在示例性实施例中,使用带内命令启动"状态保存,,操作(即,将所 有寄存器都转储到日志文件),所述带内命令是在作为主代码路径一部分 的通信协议基础设施中生成的命令,其产生近似在故障时所有组件的即时 定格。这些命令指示主机系统和存储系统在原始故障时执行数据收集,而 不是如公知系统中那样利用在检测到故障之后的时间执行此类数据收集的
外部组件。在出现故障之后,可以基本上立即或基本上实时地跨SAN的多 个组件执行数据收集。结果,由于用于执行数据收集的时间帧尽可能地接 近实际故障,所以可以在"状态保存"操作中收集的与故障时的实际状况 关联的数据量被最大化。
在一个示例性实施例中,提供了使主机系统110、主机应用、服务器 系统等利用直接命令在存储系统(例如存储系统120)中启动状态保存操 作以响应错误或故障的工具。在一个示例性实施例中,主机系统110包括 应用编程接口 (API),后者强制存储系统120在与主机系统日志互锁的 特定时刻收集一组状态保存数据用于调试目的。
可以例如在故障转移驱动器和/或主机总线适配器(HBA)中提供示例 性实施例的API。因此,可以在主代码路径内提供所述API,以^便通过增 加在最初检测到错误或故障时可用的数据量来最大化错误或故障之后的首 次数据捕获。所述API提供了用于交换请求来自存储系统120的状态保存 操作的命令的功能。存储系统120利用通信通道API (例如以太网或光纤 通道API)来接收命令并处理命令。
存储系统120中包括的逻辑可包括频率功能,其确定是否已在预定时 段内采取状态保存操作以避免由于状态保存命令而使存储系统120过饱 和。可以在主机系统110上生成主机日志,其具有以下细节哪些存储系 统120或存储系统120中的哪些存^f^殳备(多个)执行了状态保存操作, 以及所收集的状态保存数据文件的名称。
示例性实施例还提供了数据收集工具,其利用主机系统110所使用的 数据通道与存储系统(例如存储系统120)通信以在数据收集活动期间请求和传输主机侧日志和数据以便调试存储故障。示例性实施例的系统和方 法利用故障转移驱动器来收集主机系统日志、故障转移驱动器日志、主机
配置数据、固件/软件级别以及基本配置数据,并将其传输到存储系统120。 存储系统120然后可以将主机系统数据封装为其状态保存数据的一部分以 便确定问题和解决故障状况。
故障转移驱动器中的API可以识别存储命令以收集从存储系统发送的 数据,并且自身可在临时目录的归档文件中收集所述一组主机侧状态保存 数据,如主机系统日志、故障转移驱动器日志等。故障转移驱动器中的API 然后可以与存储设备协商以打开传输归档后的文件的数据通道。
存储系统120上对数据收集的支持涉及包括多主机接口系统,后者可 以与到多个主机系统110的主机故障转移驱动器的命令交互。所述多主机 接口系统处理数据请求并打开数据通道以传输来自主机系统110的数据。 存储系统120可以在存储介质(例如,硬盘)上创建临时存储位置以临时 地存储可能来自多个主机系统110的状态保存数据,然后将所有存储系统 状态数据与主机系统状态数据封装在一起。所述多主机接口系统还提供了 将收集的主机和存储系统状态数据封装传输到客户端系统以便在调试存储 系统故障中使用的工具。
因此,如上所述,示例性实施例较之公知的故障数据收集方法的优点 之一是在原始故障时执行示例性实施例所执行的数据收集。与使用SAN中 来自故障所涉及组件中的组件以便检测故障并执行数据收集不同,示例性 实施例提供了在主机系统与存储系统之间的通信路径内的机制。在从包括 具有极短跟踪(如主机总线适配器(HBA)緩沖器等)的组件(例如,寄 存器)的系统组件收集数据时,所述机制强制主机系统和/或存储系统在所 有组件中暂停。因此,示例性实施例的机制以在出现故障时能够立即收集 短期跟踪信息的方式执行数据收集。
图3是示出主要运行组件响应于主机应用的故障的示意性操作的示意 性框图。应理解的是,图3中示出的运行组件可以以硬件、软件,或硬件 和软件的组合来实现。在优选实施例中,所述运行组件被实现为由一个或多个处理器执行的软件指令。
如图3所示,存储区域网络(SAN )300可以包括多个主机系统310-330 和多个存储系统340、 392和394。出于说明目的,图3中仅详细示出了一 个存储系统(即存储系统340)。
如图3所示,存储系统340包括多个存储设备342-348、存储控制器 350,以及在存储控制器350中提供的多个主机接口 360。存储子系统340 的存储控制器350还可以包括应用程序接口 (API) 370,其例如被提供为 以太网或光纤通道API以^更从主机系统310-330接收状态保存命令。在一 个或多个存储设备342-348中,提供了状态保存数据结构来存储从存储系 统340和一个或多个主机系统310-330收集的状态保存数据。
主机系统310-330包括主机总线适配器(HBA)驱动器314、 324和 334,以及故障转移驱动器312、 322和332。 HBA驱动器314、 324和334 以及故障转移驱动器312、 322和332包括在微代码中提供的API,后者允 许交换请求在存储系统340的存储设备342-348中执行状态保存操作的命 令。例如,故障转移驱动器312、 322和332可以具有与存储设备342-348 通信的API/CIMOM,以便传递指示存储设备启动状态保存操作的"执行 状态保存"命令。
在操作中,主机系统310-330运行各种可访问存储系统340的存储设 备342-348的应用。在应用执行期间,应用实例中可能发生故障,导致需 要收集与主机系统310-330和存储系统340的状态有关的数据以在调试中 使用或以其他方式确定导致故障的错误源。故障转移驱动器312、 322和 332的微代码API提供了检测应用故障并向HBA驱动器314、 324和334 发出状态^M^命令以便执行数据收集的功能。
在典型系统中,检测故障并将其报告给主机系统日志,但是在主机系 统获取故障数据之前通常存在数分钟或数小时的时间滞后。借助示例性实 施例的机制, 一,测到故障就基本上立即执行状态保存。这增加了收集 最大量的数据用于根本原因分析的可能性。
HBA驱动器314、 324和334的微代码API提供了经由传输介质390(例如,包括一个或多个交换机、路由器等的SAN结构(例如,图1中的 SAN结构102)的数据网络)向存储系统340发出状态保存命令的功能, 此类状态保存命令是经由现有以太网或光纤通道数据通道从HBA驱动器 314、 324和334直接发送到存储系统340的"带内"命令。术语"带内" 指在与数据通道相同的路径内发送命令的能力。公知的系统使用带外方法, 即,在光纤通道适配器通道中检测错误并通过数据通道外部的以太网命令 路径(即,光纤通道适配器通道)发送收集数据的命令。这需要冗余路径 以及需要维护具有关联等待时间的附加连接。
对于公知的系统,可以使用脚本来被动地监视错误日志,其中事件将 触发代码切换。这引入了相当大量的等待时间。对于此处的示例性实施例, 在是错误路径一部分的驱动器栈中提供了逻辑,使得在检测到错误的同时 激活逻辑,而不是间接通过被动监视可能需要若干秒钟来印出和反应的错 误日志。
因此,当例如故障转移驱动器312检测到主机系统310中的应用实例 318的故障时,故障转移驱动器312立即经由主机系统310与存储系统340 之间的数据通道向HBA驱动器314发送状态保存操作命令。该状态保存 操作命令导致HBA驱动器314立即暂停主机系统310中的操作并执行各 种主机系统状态数据(例如,主机系统日志、故障转移驱动器日志、主机 配置数据、固件/软件级别、基本配置数据、HBA寄存器信息、应用日志 信息等)的数据收集。此暂停本质上导致主机系统310将其当前状态保持 较短的一段时间(例如,几毫秒),以便可以存储寄存器和正在处理的日 志信息。任何在此短暂的暂停时间间隔期间尝试的操作都将被返回"忙碌,, 响应并且可以在稍后的时间重试操作。
由于在主机系统310中发生故障后基本上立即执行此操作并且借助故 障转移驱动器312在经历该故障的主机系统310内启动此操作,所以此数 据收集可以从主机系统310中具有极短跟踪的设备(例如HBA緩冲器, 其通常每次仅存储几帧数据并且因此很快会^a盖)收集数据。由于因使 用外部设备来检测故障和启动数据收集而造成的公知系统中的等待时间,所以会在执行数据收集时丢失此类短期跟踪数据。
除了启动数据收集以响应从故障转移驱动器312接收到状态保存命令 以夕卜,HBA驱动器314还经由传输介质3卯向存储系统340发送状态保存 命令。发送给存储系统340的状态保存命令是经由主机系统310与存储系
通道元件发送并由存储系统340处的以太网/光纤通道元件接收的"带内"命令。
存储系统340在存储控制器350的以太网/光纤通道API 370中接收到 状态保存命令。以太网/光纤通道API 370处理所述状态保存命令以在存储 系统340处执行数据收集。作为此处理的一部分,以太网/光纤通道API 370 可以执行频率确定,以确定是否已在预定时段内处理来自主机系统310的 状态保存命令。这样,以太网/光纤通道API370避免了由于状态保存请求 而使得存储设备(多个)342-348过饱和。如果在预定时段内以太网/光纤 通道API 370从存储系统340接收到先前的状态保存命令,则不会响应于 故障检测而执行另 一状态保存操作。
以太网/光纤通道API 370可以标识与主机系统310关联并发送状态保 存命令的存储设备342-348并且可以然后启动与主4几系统310关联的所标 识存储"i殳备(多个)342-348的暂停或即时定格。再次地,所述暂停或即时 定格将存储设备342-348的活动暂停较短的一段时间(几毫秒),例如, 它们返回"忙碌,,响应,使得可以捕获存储设备342-348的状态。在暂停 时段结束后将重试所有活动。
一旦与主机系统310关联的存储设备342-348被暂停,以太网/光纤通 道API 370就可以在所标识存储设备(多个)342-348上启动状态保存操作 (例如,寄存器值的转储),以由此在另 一存储设备(例如,存储设备348 ) 或不同的临时存^f^i殳备(未示出)的临时存储位置中生成存储系统日志文 件。这样,可以保留基本上在主机系统310中发生故障时的与主机系统310 关联的存储设备(多个)342-348的寄存器值,以便以后在调试故障原因中使用。
以太网/光纤通道API 370可以向主机系统310报告以下细节从哪个 (哪些)存储设备342-348收集了存储系统状态保存日志数据结构的数据, 以及存储系统340创建的状态保存日志数据结构的名称。此信息可被报告 回主机系统310以便在用户的主机日志数据结构中通知用户数据收集的位 置和信息。这样,向用户提供了已发生故障的附加指示并且可以提供与故 障关联的数据位于存储系统上的何处的指示。此信息可用于生成问题票以 指示故障时间和哪些数据文件应被收集为问题票的一部分。这还有助于应 用调试。
因此,可以将标识从其收集数据的存储设备(多个)342-348的信息与 HBA驱动器314从主机系统310收集的状态保存数据一起存储在主机曰志 数据结构中以响应来自故障转移驱动器312的状态保存命令。这样,主机 日志数据结构可用于在执行故障调试时访问存储系统的状态保存日志数据 结构。然后,可以例如经由传输介质390将主机日志数据结构传送到客户 端设备395,以便在根据任何公知的或以后开发的故障调试方法执行故障 调试中使用。
备选地,响应于存储系统340返回与存储系统的状态保存日志数据结 构有关的信息,主机系统310可以将主机系统的日志数据结构传送到存储 系统340以便与存储系统的状态保存日志数据结构封装在一起。所得到的 封装可以存储在存储系统340的存储设备(例如,存储设备348)中以例 如经由传输介质390传送到客户端设备395以便在故障调试中使用。
因此,借助以上在图3中概述的操作和机制,在主机系统310上的应 用实例318出现故障的情况下,可以在检测到主机系统310内的故障时几 乎立即地执行数据收集。结果,不太可能经历数据丟失。此外,由于经由 以太网/光纤通道才几制的直接命令将状态保存命令发送到存储系统340,所 以可最小化发送状态保存命令中经历的任何等待时间,并且可以在检测到 主机系统310中的故障之后几乎立即地暂停与主机系统310关联的经历故 障的存储设备(多个)342-348。然后可以在存储设备(多个)342-348上
26执行状态保存操作。
这样,可以收集最大量的状态数据并将其汇集成已与主机系统310的 所检测故障的特定时刻关联的日志数据结构。可以将日志数据结构封装在 一起以便提供直接与故障相关的信息的单个封装。无需如公知系统中那样 扫描日志文件以尝试标识与故障时刻对应的表项,因为已保证封装后的数 据与主;f几系统310中所检测故障的时刻相关。
图4是示出示例性实施例的主要运行组件响应于存储系统中的存储设 备故障的示意性操作的示意性框图。图4中示出的组件本质上与图3中示 出的组件相同。但是,图4中的操作响应于存储系统340检测到存储系统 340的存储i殳备342-348中的故障而发生。应理解的是,在SAN 300内, 可以执行图3和图4中示出的两种操作,具体取决于故障在何处发生。
如图4所示,在SAN300的正常运行期间的某些时刻,可以发生存储 系统340的存储设备(例如,存储设备342)的故障。此类故障的示例包 括存储控制器重新引导、丢失路径或连接、多个驱动器故障、阻止访问 数据的瞬时代码挂^/缺陷等。
管理存储系统340及其存储i殳备342-348的存储控制器350可以以多 种不同方式中的任何方式检测存^fti殳备342的此故障。例如,存储控制器 350可以对存储设备342执行"ping"操作并确定是否接收到响应。基于 心跳信号的机制可用于检测故障。可以使用检测在预定时段内何时未从存 储设备接收到通信的超时机制。可以使用任何公知的或未来开发的检测存 储系统340中的存^i殳备342的故障的机制而不脱离本发明的精神和范围。
例如,响应于检测到存储设备342的故障,存储控制器350根据其内 部逻辑经由其多主才几接口 360向主机系统310-330发出状态保存命令。多 主机接口 360可以与主机系统310-330建立数据通道(在数据通道尚未建 立的情况下)以便将主机状态保存数据从主机系统310-330发送到存储系 统340。以此方式经由以太网/光纤通道建立数据通道通常是本领域公知的。
多主机接口 360经由建立的数据通道向主机系统310-330发送带内状 态保存命令,请求主机系统310-330执行其状态的暂停或即时定格并执行状态保存操作。同时,存储控制器350在存储系统340内启动关于出现故 障的存储设备342的状态*操作。即,存储控制器350执行存储设备 342-348的暂停或即时定格,并导致与存储设备342关联的状态寄存器的转 储,收集关于错误状况的数据以及任何将绕回的日志等。此信息被收集到 在存储系统340内的确定位置中存储的状态保存数据结构中,例如在另一 未出现故障的存^i殳备(如存储设备348)上。存储控制器350 —检测到 存储设备342的故障就基本上立即执行此存储系统状态保存数据的收集。
在主才几系统310-330处,以主机系统310作为示范,HBA驱动器314 接收到由存储控制器350的多主机接口 360发出的状态保存命令并将其提 供给故障转移驱动器312。故障转移驱动器312识别出状态保存命令并向 HBA驱动器314发出内部状态保存命令。HBA驱动器314然后暂停主机 系统310的操作并在内部向主机系统310组件发出命令以收集基本配置信 息、HBA寄存器信息、故障转移驱动器日志信息、应用日志信息等。此信 息被汇集成存储在主机系统310中的主机状态保存日志数据结构。
此后,主机系统310经由所建立的数据通道将主机状态保存日志数据 结构传输到存储控制器350。将主机状态保存日志数据结构与存储系统状 态保存日志数据结构一起封装成包括存储设备342的故障时刻的所有状态 保存信息的单个封装。在之后的某个时刻,存储控制器350可经由传输介 质3卯将状态保存信息封装传送到客户端设备395,以在执行故障调试操 作中使用以便分离出存储设备342的故障原因。
应理解的是,此操作可在主机系统310-330中的每个上执行,其中每 个主机系统310-330都向存储控制器350提供主机系统状态保存日志数据 结构。存储控制器350可以将所有主机系统状态保存日志数据结构与存储 系统的状态保存日志数据结构一起封装成一个封装。结果,将生成确保与 存储设备342的故障时刻关联的状态保存日志数据的单个封装。因此,在 使用示例性实施例的机制执行故障调试时,无需外部设备在日志中扫描与 故障对应的时刻。
为了进一步例示示例性实施例的示意性操作,假设运行时环境中这样的常见情形其中主机系统具有访问数据库的问题并因此在错误日志中生 成I/0错误。未向存储系统340给出任何已发生故障的指示。对于示例性 实施例,经由应用实例318、故障转移驱动器312、 HBA驱动器314以及 以太网/光纤通道API370将故障告知存储系统340。故障转移驱动器312 可以发送告知存储系统340已发生故障的信号帧。存储系统340然后可以 启动数据收集响应。主机故障转移驱动器312和HBA驱动器314收集主 机系统310上的主机日志、故障转移驱动器日志、HBA驱动器日志等并将 它们存储在具有包含适当时间戳的日志文件的适当目录中。存储系统340 强制状态保存操作,该操作将所有主机系统310-330的寄存器值、设备特 定信息、错误状况、以及任何将绕回的日志收集在状态保存数据文件中。 存储系统340然后在存储设备上创建临时存储空间并将所存储的日志文件 从主机系统310-330传送到临时存储空间。所有日志文件都被归档到具有 指示源、时间戳以及系统细节的日志的单个文件中。
图5和6是示出根据一个示例性实施例的执行关于SAN组件故障的数 据收集的示意性操作的流程图。将理解的是,流程图中的每个方块和方块 的组合可以由计算机程序指令来实现。这些计算机程序指令可以被提供给 处理器或其他可编程数据处理装置以产生机器,以^更在所述处理器或其他 可编程数据处理装置上执行的指令将创建用于实现一个或多个流程图方块 中指定的功能的装置。这些计算机程序指令还可以存储在可以引导处理器 或其他可编程数据处理装置以特定方式运行的计算机可读存储器或存储介 质中,以便所述计算机可读存储器或存储介质中存储的所述指令将产生包 括实现一个或多个流程图方块中指定的功能的指令装置的制品。
相应地,流程图的多个方块支持用于执行指定功能的装置的组合、用 于执行指定功能的步骤的组合和用于执行指定功能的程序指令装置。还应 理解,流程图中的每个方块和流程图中的方块的组合可以由执行指定功能 或步骤的基于硬件的专用计算机系统来执行,或者通过专用硬件和计算机 指令的组合来实现。
此外,流程图被提供为示范示例性实施例中执行的操作。所述流程图并非旨在声称或暗示关于特定操作,或更具体地说,关于操作顺序的限制。 可以修改流程图的操作以适合特定实施方式。
图5是根据一个示例性实施例的概述执行数据收集以响应主机应用故 障的示意性操作的流程图。如图5所示,操作始于故障转移驱动器检测到 应用实例的故障(步骤510)。故障转移驱动器然后向主机总线适配器 (HBA)驱动器发送状态保存命令(步骤520)并在主机系统内启动状态 保存操作(步骤530)。作为主机系统内的状态保存操作的一部分,故障 转移驱动器和/或HBA驱动器向各个主机系统组件发送命令以便从这些主 机系统组件收集数据,该数据然后被存储在主机系统状态保存日志数据结 构中(步骤540)。
HBA驱动器将状态保存命令发送到存储系统(步骤550)。存储系统 从HBA驱动器接收状态保存命令并确定哪些存储设备与从其接收状态保 存命令的主机系统对应(步骤560)。存储系统然后在所确定的存储设备 上执行状态保存操作(步骤570)并将收集的状态信息存储在存储系统状 态保存日志数据结构中(步骤580)。存储系统然后向主机系统返回响应, 指示受影响的存储设备和创建了存储系统状态保存日志数据结构(步骤 5卯)。
主机系统然后可以将主机系统状态保存日志数据结构传送到存储系统 (步骤592),其中存储系统将主机系统状态保存日志数据结构与存储系 统状态保存日志数据结构一起封装成单个状态保存日志封装(步骤594 )。 该状态保存日志封装然后可以被提供给客户端设备以便在执行故障调试中 使用(步骤596)。所述操作然后结束。
图6是根据一个示例性实施例的概述执行数据收集以响应存储设备故 障的示意性操作的流程图。如图6所示,操作始于存储控制器检测到存储 设备的故障(步骤610)。存储控制器与每个与之通信的主机系统建立数 据通道(步骤620)并将状态保存命令发送到每个主机系统(步骤630)。 存储控制器还在存储系统内启动状态保存操作(步骤640)。作为存储系 统内的状态保存操作的一部分,存储控制器向各个存储系统组件发送命令以从这些存储系统组件收集数据,该数据然后被存储在存储系统状态保存
日志数据结构中(步骤650 )。
主机系统从存储控制器接收状态保存命令并生成其中存储主机系统内 的状态保存信息的数据结构(步骤660)。主机系统然后执行状态保存操 作(步骤670)并且将收集的状态信息存储在主机系统状态保存日志数据 结构中(步骤680)。主机系统然后将主机系统状态保存日志数据结构传 送到存储系统(步骤6卯),其中存储系统将主机系统状态保存日志数据 结构与存储系统状态保存日志数据结构一起封装成单个状态保存日志封装 (步骤694)。然后可以将状态保存日志封装提供给客户端设备以便在执 行故障调试中使用(步骤696)。所述操作然后结束。
因此,示例性实施例提供了一种系统和方法,其中在主机系统和存储 系统中的每个内都提供了机制,以促进在主机系统上的应用或存储系统中 的存储设备出现故障的情况下立即收集数据。由于一发生故障就立即执行 数据收集,所以收集的数据被最大化。此外,示例性实施例的机制捕获非 常瞬态的数据(即,存储在具有很小的跟踪数据存储装置的组件中的数据)。 此外,响应于检测到的故障而从主机系统和存储系统两者收集的状态信息 可以被封装在一起并用于调试目的。结果,由于存储在封装中的数据被确 保与SAN在故障时的状态相关,所以最小化了详细扫描日志文件以确定与 特定故障有关的信息。
如上所述,应理解的是,虽然根据执行特定操作的主机系统和存储系 统的特定元素描述了示例性实施例,但是示例性实施例只是本发明可能实 施方式的示范并且并非旨在声称或暗示任何关于可执行所述操作的元素的 限制。因此,例如,存储系统的存储控制器所执行的操作可同等地在主机 系统上执行的驱动器中执行,或反之亦然。此外,可以提供不同于主机系
在不脱离本发明精神和范围的情况下,如鉴于本说明将对本领域技术人员 显而易见的,可以对示例性实施例做出其他修改。
此外,虽然示例性实施例涉及存储系统与一个或多个主机系统之间的状态保存操作,但是示例性实施例和本发明并不限于此。相反,示例性实 施例的机制可以与任何其中在出现故障时需要状态保存操作的数据处理系 统的网络一起使用。因此,本发明不限于主机系统和存储系统中的状态保 存操作并且其他环境被视为在本发明的精神和范围之内。
应理解的是,示例性实施例可以采取完全硬件实施例、完全软件实施 例或包含硬件和软件元素两者的实施例的形式。在一个示意性实施例中, 示例性实施例的机制以软件实现,所述软件包括但不限于固件、驻留软件、 微代码等。
此外,示例性实施例可以采取可从计算机可用或计算机可读介质访问 的计算机程序产品的形式,所述计算机可用或计算机可读介质提供了可以 被计算机或任何指令执行系统使用或与计算机或任何指令执行系统结合的 程序代码。出于此描述的目的,计算机可用或计算机可读介质可以是任何 能够包含、存储、传送、传播或传输由指令执行系统、装置或设备使用或 与所述指令执行系统、装置或设备结合的程序的装置。
所述介质可以是电、磁、光、电磁、红外线或半导体系统(或装置或 设备)或传播介质。计算机可读介质的实例包括半导体或固态存储器、磁
带、可移动计算机盘、随才;^取存储器(RAM)、只读存储器(R0M)、硬磁盘 和光盘。光盘的当前实例包括光盘-只读存储器(CD-ROM)、光盘-读/写 (CR-R/W)和歸。
适合于存储和/或执行程序代码的数据处理系统将包括至少一个直接 或通过系统总线间接连接到存储器元件的处理器。所述存储器元件可以包 括在程序代码的实际执行期间采用的本地存储器、大容量存储装置以及提 供至少某些程序代码的临时存储以减少必须在执行期间从大容量存储装置 检索代码的次数的高速緩冲存储器。
输入/输出或1/0设备(包括但不限于键盘、显示器、指点设备等)可 以直接或通过中间I/O控制器与系统相连。网络适配器也可以被连接到系 统以使所述数据处理系统能够通过中间专用或公共网络变得与其他数据处 理系统或远程打印机或存储设备相连。调制解调器、电缆调制解调器和以 太网卡只是几种当前可用的网络适配器类型。出于示例和说明目的给出了对本发明的描述,并且所述描述并非旨在 是穷举的或是将本发明限于所公开的形式。对于本领域的技术人员来说, 许多修改和变型都将是显而易见的。
权利要求
1.一种在计算设备中的用于收集与数据处理系统中的故障对应的数据的方法,包括接收包括多个数据处理系统的网络中的数据处理系统的组件的故障状况的故障通知;从所述网络中的所述多个数据处理系统接收状态保存数据,其中在所述多个数据处理系统中生成所述状态保存数据以响应带内状态保存命令;以及输出所述状态保存数据以在解决所述组件的所述故障状况中使用,其中所述带内状态保存命令是跨所述多个数据处理系统中的第一数据处理系统与至少一个第二数据处理系统之间的数据通道发出的命令。
2. 根据权利要求l的方法,其中所述第一数据处理系统是存储系统并 且所述至少 一个第二数据处理系统是至少 一个主机系统。
3. 根据权利要求2的方法,其中将所述带内状态保存命令从所述存储 系统的存储控制器发送到所述至少 一个主机系统以响应所述故障状况是所 述存储系统中的存储设备的故障。
4. 根据权利要求3的方法,其中经由所述存储系统的与多个主机系统中的每个主机系统都建立数据通 道的多主机系统接口向所述多个主机系统发出所述带内状态保存命令,所述多个主机系统中的每个主机系统都收集所述状态保存数据并经由 所述多主机系统接口建立的所述数据通道将所述状态M数据提供给所述 存储控制器,以及将所述多个主机系统中的每个主机系统收集的所述状态保存数据与来 自所述存储系统的状态保存数据一起封装成与所检测的故障状况关联的单 个数据封装。
5. 根据权利要求2至4中的任一权利要求的方法,其中将所述带内状 态保存命令从在所述至少 一个主机系统中的主机系统上执行的至少 一个驱动器发送到所述存储系统的存储控制器以响应所述故障状况是在所述主机系统上执行的应用实例的故障;并且所述方法还包括请求所述至少 一个主机系统中的第 一状态保存操作以由此生成至少一 个主机状态保存日志数据结构;请求所述存储系统中的第二状态保存操作以由此生成存储系统状态保 存日志数据结构;以及将所述至少一个主机状态保存日志数据结构与所述存储系统状态保存 曰志数据结构一起封装成存储在所述存储系统中并与所述故障状况关联的 单个状态保存封装数据结构,其中输出所述状态保存数据以在解决所述组 件的所述故障状况中使用的步骤包括将所述状态保存封装数据结构输出 到第三数据处理系统。
6. —种包括计算机程序代码的计算机程序,当所述计算机程序被加载 到计算机系统中并在其上执行时,将导致所述计算机系统执行根据权利要 求1至5中的任一权利要求的方法的所有步骤。
7. —种数据处理系统,包括 至少一个主才几系统;以及与所述至少一个主机系统耦合的存储系统,其中所述至少 一个主机系统或所述存储系统之一接收所述数据处理系统的 组件的故障状况的故障通知;所述存储系统接收来自所述至少一个主机系统的第一状态保存数据, 并从所述存储系统的 一个或多个存储设备收集第二状态保存数据,其中生 成所述笫 一状态保存数据或所述第二状态保存数据中的至少一个以响应带 内状态保存命令;以及所述存储系统输出所述第 一状态保存数据和第二状态保存数据以在解 决所述组件的所述故障状况中使用,其中所述带内状态保存命令是跨所述 存储系统与所述至少 一个主机系统之间的数据通it^出的命令。
8. 根据权利要求7的系统,其中将所述带内状态保存命令从所述存储 系统的存储控制器发送到所述至少一个主机系统以响应所述故障状况是所述存储系统中的存储设备的故障。
9. 根据权利要求8的系统,其中经由所述存储系统的与多个主机系统中的每个主机系统都建立数据通 道的多主机系统接口向所述多个主机系统发出所述带内状态保存命令,所述多个主机系统中的每个主机系统都收集所述第 一状态保存数据并 经由所述多主机系统接口建立的所述数据通道将所述第 一状态保存数据提 供给所述存储控制器,以及将所述多个主机系统中的每个主机系统收集的所述第一状态保存数据 与所述第二状态保存数据一起封装成与所检测的故障状况关联的单个数据 封装。
10. 根据权利要求7至9中的任一权利要求的系统,其中将所述带内 状态保存命令从在所述至少 一个主机系统中的主机系统上执行的至少 一个 驱动器发送到所述存储系统的存储控制器以响应所述故障状况是在所述主 机系统上执行的应用实例的故障;并且其中所述存储系统的存储控制器执 行以下操作请求所述至少 一个主机系统中的第 一状态保存操作以由此生成至少一 个主机状态保存日志数据结构;请求所述存储系统中的第二状态保存操作以由此生成存储系统状态保 存日志数据结构;以及将所述至少一个主机状态保存日志数据结构与所述存储系统状态保存 曰志数据结构一起封装成存储在所述存储系统中并与所述故障状况关联的 单个状态保存封装数据结构,其中所述存储系统通过将所述状态保存封装的所述故障状况中使用
全文摘要
提供了一种带内问题日志数据收集的系统和方法。为主机系统、主机应用或服务器系统提供了工具以在使用直接命令的存储系统中发起状态保存操作以响应错误或故障。所述主机系统可以包括应用程序接口(API),以便强制存储设备在与主机系统日志互锁的特定时刻收集一组状态保存数据用于调试目的。可以在主代码路径内的故障转移驱动器和/或主机总线适配器(HBA)驱动器中提供示例性实施例的API,以便最大化错误之后的首次数据捕获。由于主机系统使用直接命令发起状态保存操作,所以可以收集更多数量的瞬态数据以提供更全面的状态信息用于调试目的。
文档编号G06F11/07GK101652751SQ200880009768
公开日2010年2月17日 申请日期2008年2月22日 优先权日2007年3月28日
发明者A·格莱姆斯, N·坎德沃 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1