文描述的功能可用。
[0022]该系统还可以包括恢复程序储存库140。恢复程序储存库可以存储最新版本的恢复程序。在一些实施方式中,恢复程序储存库可以存储更旧版本的恢复程序。诊断测试储存库150可以存储外壳中的每个可诊断组件的最新版本的诊断测试。尽管诊断测试可以包括在恢复设备或外壳本身中,但不保证最新版本的诊断测试在恢复设备或外壳上可用。此夕卜,如果创建新的诊断,那些新的诊断可能在恢复设备或外壳上不可用。
[0023]该系统还可以包括恢复失败储存库160。恢复失败储存库可以用于存储针对外壳采取的恢复动作的结果。如果恢复动作失败,这种信息可以存储在恢复动作失败储存库中。恢复程序开发者可以利用该信息开发新的恢复动作。这些新的恢复动作可以在稍后版本的恢复程序中实现。
[0024]该系统还可以包括网络170-a、170_b,其允许外壳、恢复设备和储存库彼此通信。尽管设备之间的通信通常通过网络进行,但本文描述的技术不需要网络。例如,恢复设备(例如,膝上型计算机)可以直接连接到外壳。此外,尽管示出两个单独的网络170-a、170-b,这两个网络实际上可以是相同的物理网络。类似地,尽管储存库被示为单独的元件,在一些实施方式中,所有储存库的功能可以合并到单个元件中。
[0025]操作时,外壳110可能经历一些类型的错误状况。这种状况可能主要在于位于外壳内的计算系统完全不可用。该状况在本质上更次要方面在于一些功能可以仍可用,但不完全起作用。不论错误状况类型如何,对于外壳的整个操作,这些状况将优选被解决。将外壳返回到完全操作功能的状态可以被称为恢复外壳。
[0026]恢复设备130可以耦合到外壳。恢复设备可以通过网络170-a耦合到外壳或可以直接连接到外壳。恢复设备可以包括小程序,其作用是通过网络170-b从恢复程序储存库获取恢复程序。如上文解释的,恢复程序储存库可以包含最新版本的恢复程序。因为从储存库中获取恢复程序,因此总是可以获取到最新版本的恢复程序。恢复程序接着可以在恢复设备上被执行。
[0027]恢复程序可以规定需要的诊断测试结果集合以便确定如何恢复外壳。恢复程序还可以规定应当运行的那些诊断测试的具体版本。恢复程序可以与外壳110通信以获取诊断测试结果(它们通过运行正确版本的诊断测试被创建)。恢复程序还可以确定是否某些诊断测试结果不可用。因为诊断测试不存在于恢复设备或外壳上或存在错误版本或者简单地,测试没有运行,因而该结果可能不可用。
[0028]恢复设备可以通过网络170-b与诊断测试储存库150通信,以获取不存在于恢复设备或外壳上、或者可能存在、但具有错误版本的任意诊断测试。恢复设备接着可以使获取的诊断测试在外壳上运行。此外,其正确版本已经可用但没有结果存在的诊断测试也能运行。
[0029]恢复程序可以接着获取在恢复程序中规定的所有诊断测试结果。这些结果可以被聚集并分析,以确定恢复外壳的正确动作。例如,恢复动作可以包括重新启动外壳、重新启动外壳的部分、或改变外壳的配置参数。换句话说,恢复程序查看诊断结果的错误模式,并基于这些错误,采取规定的恢复动作。恢复动作的确切形式不重要,然而,应当理解,恢复程序规定采取什么动作。
[0030]完成恢复动作之后,诊断可以被再次运行,并且被重新分析以确定错误状况是否被正确恢复。如果没有,可以重复该过程。例如,恢复动作可以具有固定的一些错误状况,但不是所有的错误状况。重新运行该过程可以指示不同类型的恢复以纠正剩余的错误状况。
[0031]此外,如果外壳没有被恢复,结果可以通过网络170-b被发送到恢复失败储存库160。该结果可以包括开始执行恢复之前和之后的诊断测试的结果。恢复程序的开发者可以接着修改恢复程序,以适应没有被正确恢复的具体状况。修改后的恢复程序版本可以被存储在恢复程序储存库中。因此,恢复程序的开发者可以被提供有关于当前版本的恢复程序不能恢复的错误状况的真实世界反馈。恢复程序可以被修改以适应先前失败的恢复动作。
[0032]图2是使用本文描述的恢复技术的另一个示例性系统。图2基本与图1类似,具有一些额外的细节和一些示例性可诊断组件。系统200可以包括外壳210、恢复设备230、恢复程序储存库240、诊断测试储存库250、恢复失败储存库260和固件储存库270。网络270-a、270-b可以用于实现组件之间的通信。各种储存库可以被实现为计算系统,其具有用于存储程序、测试、结果和固件的存储装置。可以使用数据库创建储存库。尽管被示为单独元件,应当理解,各种储存库的内容可以存储在单个系统或单个数据库内。
[0033]外壳210可以包括各种可诊断组件。出于解释简单的目的,示出可诊断组件的若干实例。然而,应当理解,这些仅是示例性的。可以存在更多或更少的组件。本文描述的技术不依赖于任意具体的可诊断组件集合。外壳可以包括外壳管理器214。外壳管理器可以提供到外部系统(例如,恢复设备230)的通信。外壳管理器还可以存储外壳的各种配置参数。
[0034]该外壳还可以包括冗余电源216-a、216_b。这些电源可以供应电力到包含在外壳内的元件。外壳还可以包括多个刀片218-1........218-n。这些刀片可以包括处理器、存储器、存储装置等(未示出)。连接外壳内的所有元件可以是网络220。网络可以是允许所有元件通信的IP网络。所有元件可以具有IP地址,其用于在网络220上寻址元件。
[0035]包含在外壳内的各种元件可以被合并以形成可诊断组件。如上文解释的,可诊断组件是针对其诊断测试可用的元件集合。例如,一个可诊断组件可以是电源。外壳管理器中的配置参数可以规定是否配备冗余电源。电源诊断可以确定配置是否匹配冗余电源的实际物理存在。应当注意,电源诊断测试可诊断组件内的问题,而不管可能存在的其他故障。这种故障的级联将在下文进一步详细描述。
[0036]可诊断组件的另一个实例可以是网络220。针对该组件的诊断测试可以确定是否外壳内的每个元件通过网络可到达。如果不能,这可以指示网络上的IP地址的配置存在问题,或者更大的问题。可诊断组件的另一个实例是固件,其安装在外壳内的所有元件上。该诊断测试能够确定是否正确版本的固件被安装在每个组件上。其还可以确定是否稍后版本的固件可用。
[0037]恢复设备230可以包括处理器232和永久性处理器可读介质234。包含在永久性处理器可读介质上的可以是恢复程序指令集236,当其被处理器执行时,使得处理器实现本文描述的技术。恢复程序指令可以从恢复程序储存库240中获取,如上所述。该系统还可以包括诊断测试存储库250和恢复失败储存库,它们基本与上文描述的一样。此外,该系统可以包括固件储存库280,它们的操作将在下文进一步详细描述。
[0038]操作时,外壳210可以经历错误状况。恢复设备可以用于尝试恢复外壳。应当注意,确定是否需要恢复外壳可以由用户确定或可以以自动方式发生,其中恢复设备周期性分析外壳以确定是否需要任何恢复。开始,恢复设备可以与恢复程序储存库通信,以获取最新版本的恢复程序。通过获取最新版本的恢复程序,可以保证利用最近版本的恢复程序执行恢复,这继而保证包括所有当前已知的恢复情况。
[0039]获取恢复程序之后,恢复设备可以运行恢复程序。恢复程序可以规定为正确确定如何恢复外壳而需要的诊断测试结果集合。恢复程序还可以规定应当用于产生结果的诊断测试的版本。恢复