存储设备故障策略转让专利

申请号 : CN201680022781.1

文献号 : CN107636617A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : T.D.埃文斯

申请人 : 慧与发展有限责任合伙企业

摘要 :

示例实现涉及故障策略。例如,在实现中,将存储设备状态数据编码为存储设备状态。根据故障策略、基于存储设备状态来选择动作,其中故障策略规定,基于概率模型,对于特定存储设备状态,对应动作是不采取动作还是在存储设备上启动故障减轻过程。根据相关于存储设备的故障而选择启动故障减轻过程的时间性,对故障策略进行奖励。

权利要求 :

1.一种系统,包括:

用于从存储设备收集状态数据的存储设备接口;和

策略学习代理,用于:

将收集的状态数据编码为存储设备状态,以及

应用强制学习过程来在所述存储设备状态上训练主动学习故障策略,所述主动学习故障策略包含状态-动作对,每一对基于针对给定存储设备状态从动作集合中选择动作的概率,所述动作集合包括在所述存储设备上启动故障减轻过程或不采取动作,其中所述强制学习过程用于:监视所述主动学习故障策略响应于所述存储设备状态选择什么动作,以及根据与所述存储设备的故障相关的选择启动所述故障减轻过程的时间性,奖励所述主动学习故障策略。

2.根据权利要求1所述的系统,其中,所述策略学习代理将所述主动学习故障策略初始化为由监督机器学习使用针对已知存储设备故障的存储设备状态的历史数据所导出的静态故障策略。

3.根据权利要求2所述的系统,还包括策略执行器,所述策略执行器用于从外部服务器接收静态故障策略,并且基于从所收集的状态数据所编码的存储设备状态来在所述存储设备上实现所述静态故障策略,其中所述策略执行器用于实现静态故障策略,并且所述策略学习代理并行地应用所述强制学习过程以训练所述主动学习故障策略。

4.根据权利要求1所述的系统,其中,所述强制学习过程是利用SARSA(λ)。

5.根据权利要求1所述的系统,其中,所述状态数据包括SCSI模式页面或密钥代码限定符。

6.根据权利要求1所述的系统,其中,所述强制学习过程用于针对在所述存储设备故障之前的预定时间段内选择在所述存储设备上启动所述故障减轻过程用最大奖励来奖励所述主动学习故障策略,以及所述强制学习过程用于针对在所述存储设备故障之前的预定时间段内未选择在所述存储设备上启动所述故障减轻过程用惩罚来奖励所述主动学习故障策略。

7.根据权利要求1所述的系统,其中,所述存储设备的故障包括所述存储设备报告SMART跳闸,并且所述预定时间段至少是执行所述故障减轻过程的持续时间。

8.一种用于由存储系统学习故障策略的方法,所述存储系统包括用于实现机器可读指令的物理处理资源,所述方法包括:基于从耦合到所述存储系统的存储设备收集的状态数据对存储设备状态进行编码;

根据包含状态-动作对的主动学习故障策略、基于所述存储设备状态来选择动作,所述状态-动作对基于概率模型规定对于特定存储设备状态,对应动作是等待下一个存储设备状态还是在所述存储设备上启动故障减轻过程;和基于从先前选择的动作产生的奖励来调整所述主动学习故障策略,奖励的幅度是与存储设备的故障相关的先前选择的动作的时间性的函数。

9.根据权利要求8所述的方法,包括:

将所述主动学习故障策略初始化为由监督机器学习系统使用针对已知存储设备故障的存储设备状态的历史数据所导出的静态故障策略;和向所述监督机器学习系统发送与所述主动学习故障策略相关联的调用归属数据,以供所述监督机器学习系统来与所述静态故障策略进行比较。

10.根据权利要求8所述的方法,其中,根据Q(λ)、时间差(λ)或SARSA(λ)来执行调整所述存储设备故障策略。

11.根据权利要求8所述的方法,其中,所述状态数据包括SCSI模式页面或密钥代码限定符。

12.根据权利要求8所述的方法,其中,如果所述先前选择的动作正在启动所述故障减轻过程并且所述存储设备在此后的预定时间段失败,则所述奖励的幅度包括最大正值。

13.根据权利要求12所述的方法,其中,所述存储设备的故障包括由所述存储设备报告的SMART跳闸,并且所述预定时间段为二十四小时。

14.一种存储可由存储系统的处理资源执行的指令的非暂时机器可读介质,所述非暂时机器可读介质包括:用于基于从与所述存储系统通信的存储设备收集的状态数据对存储设备状态进行编码的指令;

用于基于所述存储设备状态在所述存储设备上实现第一故障策略的指令,所述第一故障策略由离线监督机器学习使用针对已知存储设备故障的存储设备状态的历史数据而导出;

用于基于所述存储设备状态和包括状态-动作对的第二故障策略来选择动作的指令,所述状态-动作对规定根据概率模型,针对特定存储设备状态,对应动作是在所述存储设备上启动所述故障减轻过程还是不采取动作;和用于经由强制学习过程、基于从先前选择的动作产生的奖励来调整所述第二故障策略的指令,所述奖励的幅度是与所述存储设备的故障相关的先前选择的动作的时间性的函数。

15.根据权利要求14所述的非暂时机器可读介质,其中,如果所述先前选择的动作是所述故障减轻过程并且所述存储设备在此后的预定时间段失败,则所述奖励的幅度为最大正值。

说明书 :

存储设备故障策略

背景技术

[0001] 可以在RAID(独立冗余磁盘阵列)配置中的存储阵列中实现诸如硬盘驱动器或固态驱动器之类的存储设备。存储设备可能会意外失败。多个存储设备在同一时间或者大约同一时间的故障可能会破坏RAID集合。

附图说明

[0002] 下面将参考以下附图描述各种示例。
[0003] 图1是描绘实现静态故障策略并在存储设备状态上训练主动学习故障策略的示例系统的框图。
[0004] 图2描绘了与启动故障减轻策略相关的基于时间的示例奖励功能。
[0005] 图3是描绘用于学习故障策略的示例方法的流程图。
[0006] 图4是描绘应用强制学习过程来在存储设备状态上训练故障策略的示例系统的框图。
[0007] 图5是描绘用于学习故障策略的示例方法的流程图。
[0008] 图6是示例存储系统的框图,该示例存储系统包括用经由强制学习过程来调整故障策略的示例指令进行编码的非暂时机器可读介质。
[0009] 遍及整个附图,相同的参考标号可以指定相似但不必相同的元素。附加到一些参考标号的带有连字符号的索引号“N”可以被理解为仅表示多个,并且对于具有这样的索引号“N”的每个参考标号,可以不必表示相同的数量。另外,本文中使用不带有连字符号的索引号的参考标号——其中,这些参考标号在其他地方以带有连字符号的索引号来指代——可以是集体地或单独地对于相应的多个元素的一般性参考。

具体实施方式

[0010] 诸如硬盘驱动器或固态驱动器之类的存储设备可以在存储阵列或存储系统中实现。一些存储阵列或存储系统可以将存储设备实现为RAID(独立冗余磁盘阵列)配置中的集合,诸如RAID 5或RAID 50。
[0011] 存储设备可能意外失败。在某些情形下,可以将存储设备故障定义为存储设备报告SMART(自我监视、分析和报告技术)跳闸(trip)的点,即,由存储设备中包括的SMART监视系统所报告的错误代码或指示器。尽管某些RAID配置可以针对整个存储设备的读取错误或者甚至故障提供一些保护,但是多个存储设备在大约同一时间的故障可能会破坏RAID集合。在同一存储阵列或RAID集合中多个存储设备在同一时间或者大约同一时间的故障可能会针对具有相同容量、速度和类型的存储设备发生,这些存储设备由同一供应商制造并且处于同一批次中并且暴露于相同或类似的工作负载、循环时间和环境条件(温度、压力、湿度、振动等)。
[0012] 为了避免与存储设备故障相关联的问题,特别是多个存储设备的并发故障,启动存储设备故障减轻过程(包括向另一存储设备的数据迁移)并在SMART跳闸前从服务中移除存储设备可能是有用的。但是,在出现故障之前提前太久就将存储设备移除例如在供应商或制造商的保修金额方面可能成本高昂。
[0013] 因此,提供一种智能地学习存储设备故障策略的系统可能是有用的,该策略预计即将发生的存储设备故障,并且在实际存储设备故障之前的适当的时刻启动存储设备故障减轻过程。例如,适当的时刻可以意味着有足够的时间来完成从失败存储设备到另一存储设备的数据迁移。
[0014] 除其他之外,本文所公开的示例还可以涉及训练主动学习故障策略。在一些实现中,系统收集来自存储设备的状态数据,并将收集的状态数据编码为存储设备状态。系统可以应用强制学习过程来在存储设备状态上训练主动学习故障策略。主动学习故障策略可以包含状态动作对,每一对都基于针对给定存储设备状态从动作集合中选择动作的概率,其中动作集合包括在存储设备上启动故障减轻过程或不采取动作。特别而言,随着时间的推移,强制学习过程可以监视主动学习故障策略响应于编码的存储设备状态选择了哪些动作,并且可以根据相关于存储设备的故障而选择启动故障减轻过程的时间性来奖励主动学习故障策略。
[0015] 现在参考附图,图1是描绘实现静态故障策略并在存储设备状态上训练主动学习故障策略的示例系统100的框图。术语“静态”表示静态故障策略由系统100保持稳定或不变,而术语“主动学习”表示主动学习故障策略可以由系统100例如经由无监督机器学习来进行调整。系统100包括策略执行器110、存储设备接口120和策略学习代理130,其每一个都可以是硬件设备(例如,电子电路或逻辑)或硬件和用于实现其在本文中所描述的各自功能的编程的任何组合。例如,编程可以包括存储在非暂时机器可读介质上的可执行指令,诸如随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、闪速存储器、硬盘驱动器等等。硬盘可以包括处理资源,诸如微控制器、微处理器、(一个或多个)中央处理单元(CPU)核、专用集成电路(ASIC)、现场可编程门阵列(FPGA)和/或适于从机器可读介质检索和/或执行指令的其他硬件设备。
[0016] 系统100可以与至少一个存储设备进行通信,诸如多个存储设备140-1至140-N中的一个或多个(通常被集体地称为存储设备140或单独地被称为存储设备140)。例如,存储设备接口120可以根据SCSI标准提供系统100和存储设备140之间的通信,但是可以利用其他通信协议。每个存储设备140可以包括例如固态驱动器(SSD)、硬盘驱动器(HDD)、磁带驱动器、永久存储器或基于其他存储介质的设备。
[0017] 在一些实现中,系统100可以用作或形成存储系统的存储控制器的一部分,并且存储设备140可以用作或形成存储系统的存储容量的一部分。在一些实现中,系统100和存储设备140可以一起集成在同一存储系统中和/或在同一外壳中。在操作中,诸如服务器、工作站、台式计算机、膝上型计算机、移动/便携式设备等的主机系统(未示出)可以发布旨在针对存储设备140的数据访问(读取和/或写入)请求,并且这样的请求可以被系统100处置或处理。
[0018] 系统100还可以经由任何有线和/或无线通信技术以及通过网络(例如,因特网、内联网、广域网、局域网、校园区域网、存储区域网络、无线网络、蜂窝通信网络等)来与监督学习系统150进行通信。监督学习系统150可以是诸如服务器、工作站、台式计算机、膝上型计算机等的计算系统。在一些示例中,监督学习系统150可以被认为是相对于系统100的外部服务器。监督学习系统150可以利用历史存储设备状态和故障数据152(为方便起见,在本文中也被称为历史数据152)的数据库作为训练数据集,以生成静态故障策略154。如在下面将描述的,系统100可以实现静态故障策略154以预计或预测存储设备140的故障并尝试减轻这种预测的故障。
[0019] 例如,历史数据152可以涉及已经失败的存储设备(例如,SMART跳闸、实际故障或用户失败)并且已经从(例如,由存储设备供应商或制造商)服务返回用于分析。历史数据152可以包括关于来自故障之前的各个时间点的每个失败存储设备的状态数据,其中状态数据可以包括SCSI模式页面、密钥代码限定符等。更具体地,对于每个失败的存储设备,状态数据可以包括,诸如供应商和型号、上电小时数、硬读取错误的数量、软读取错误的数量、硬写入错误的数量、软写入错误的数量、命令超时的数量、写入的块数、读取的块数和/或其他存储设备诊断数据之类的信息。可能已经将失败驱动器的状态数据作为调用归属数据(例如,通过诸如因特网的网络)发送到监督学习系统150和/或可以存储在失败驱动器上。
历史数据152还可以包括状态数据的状态空间表示(也称为存储设备状态)。状态数据和/或状态空间表示是时间的函数,并且因此可能在时间上与存储设备的故障相关。
[0020] 监督学习系统150可以使用用于已知存储设备故障的存储设备状态的历史数据(历史数据152)导出静态故障策略154。例如,监督学习系统150可以使用概率模型来处理历史数据152,以导出静态故障策略154,其将鉴于历史数据152中的存储设备状态来不迟于但尽可能接近该存储设备故障之前的预定时间段而启动故障减轻过程。例如,预定时间段可以是至少执行故障减轻过程的持续时间(例如,用于将数据从故障存储设备迁移出去的足够时间量)。在一些情况下,预定时间段可以是大约二十四(24)小时的时段(例如其中大约可以包括+/-1小时的余量)。凭借附加的时间来完全迁移更高容量的存储设备,预定时间段可以与存储设备的容量成比例。
[0021] 静态故障策略154可以包括状态-动作对,即,对于任何给定的存储设备状态,策略154指示动作。更具体地,该动作可以是不采取动作(例如,无操作,空闲任务等)或启动故障减轻过程。在一些实现中,可以作为状态-动作对的可能性包括附加动作。基础的每个状态-动作对是在给定状态下时采取动作的概率。在一些实现中,具有最高概率的动作被分配给该对中的状态(例如,具有两个可能动作的实现中,>50%概率)。
[0022] 特别而言,系统100或策略执行器110可以从诸如监督学习系统150的外部服务器接收静态故障策略154。例如,策略执行器110可以检索静态故障策略154或监督学习系统150可以发送或推送静态故障策略154。系统100可以将静态故障策略154作为静态故障策略
112存储在上述非暂时机器可读介质中、存储在存储装置中、存储在存储器等中。此外,特别而言,系统100或策略学习代理130可以将主动学习故障策略136初始化为静态故障策略
112。也就是说,主动学习故障策略135的状态-动作对和基础概率模型作为那些静态故障策略112的副本而开始。
[0023] 存储设备接口120收集来自存储设备140的状态数据142。例如,如上所述,存储设备接口120可以根据SCSI标准进行操作,在这种情况下,状态数据142可以包括SCSI模式页面、密钥代码限定符等。更具体地,状态数据142可以包括诸如供应商和型号、开机小时数、硬读取错误的数量、软读取错误的数量、硬写入错误的数量、软写入错误的数量、命令超时的数量、写入块数、读取块数和/或其他存储设备诊断数据之类的信息。
[0024] 策略学习代理130可以将收集的状态数据142编码为存储设备状态132。存储设备状态132可以与特定存储设备140和特定时间点相关联。因为状态数据142可以随时间收集,所以多个存储设备状态132可以表示存储设备140随时间的状态。在一些实现中,为了对存储设备状态132进行编码,策略学习代理130可以应用瓦片编码以减少或离散其中状态数据142存在的状态空间,这可以改进策略学习代理130的效率以导出活动-学习故障策略136。
[0025] 编码的存储设备状态132可以被策略执行器110和策略学习代理130并行地利用。策略执行器110可以使用从收集的状态数据142所编码的对应的存储设备状态132来在至少一个存储设备140上实现静态故障策略112,而策略学习代理130使用相应的存储设备状态
132来模拟主动学习故障策略136在存储设备140中的至少一个上的实现以便在策略136上执行机器学习。如上所述,可以将主动学习故障策略136初始化为与静态故障策略112相同,但是主动学习故障策略136可以由策略学习代理130基于新信息进行调整或改变,而静态故障策略112不被系统100修改,无论是通过策略执行器110还是策略学习代理130都不被修改,以便向存储设备140的用户提供可预测的服务级别。
[0026] 关于策略执行器110,策略执行器110可以在当前时间“t”处采用用于存储设备140的存储设备状态132作为输入,根据静态故障策略112的状态-动作对来确定针对该存储设备状态132的对应动作,并且在存储设备140上执行该动作(被描绘为114)。如上关于静态故障策略154所述,可能的动作可以包括不采取动作或启动故障减轻过程。
[0027] 故障减轻过程可以由策略执行器110或策略执行器110以外的系统100的另一方面(例如,由系统100的编程资源所实现的附加编程)来控制或者包括在其中。在一些实现中,由针对特定存储设备140的动作114如此启动的故障减轻过程包括从该特定存储设备140转移数据访问请求并将数据从该特定存储设备140迁移到不同的、未失败的存储设备140 。
[0028] 在完成数据迁移之后,故障减轻过程可以关闭特定存储设备140。可替代地,故障减轻过程可以保持特定存储设备140活着,其可以包括在存储设备140上运行参考模式,使得策略学习代理130可以收集附加数据以训练主动学习故障策略136。在一些实现中,特定存储设备140可以在启动故障减轻过程预定时间段之后保持活着,直到特定存储设备140 SMART跳闸或其他条件。
[0029] 关于策略学习代理130,策略学习代理130应用强制学习过程134来在存储设备状态132上训练主动学习故障策略136(即,针对每个存储设备140在不同时间段上的状态132)。与静态故障策略112类似,主动学习故障策略136包含状态-动作对,其对于给定存储设备状态,涉及从动作集合中选择动作的概率。与静态故障策略112一样,动作集合至少包括在存储设备140上启动故障减轻过程或者不采取动作。
[0030] 执行强制学习过程134的策略学习代理130监视主动学习故障策略130响应于针对每个存储设备140且随着时间的存储设备状态而选择哪些动作(即,模拟的动作)。执行强制学习过程134的策略学习代理130还监视存储设备140的故障,其中例如可以将故障定义为由存储设备140报告的SMART跳闸的发生。
[0031] 执行强制学习过程134的策略学习代理130根据相关于该存储设备140故障的时间而在特定存储设备140上选择启动故障减轻过程的时间性来向主动学习故障策略130分配奖励。例如,强制学习过程134可以利用Q(λ)、TD(λ)(TD是用于时间差的缩写)、SARSA(λ)(SARSA是用于状态-动作-奖励-状态-动作的缩写)或编码为机器可读指令的其他类似过程。
[0032] 现在将描述用于调整主动学习故障策略130的强制学习过程134的公式。令“st”表示在时间t处的存储设备140的存储设备状态132,“at”表示响应于st而采取的动作(即,无动作或启动故障减轻过程),并且“(s,a)”表示状态-动作对。
[0033] 每个状态-动作对具有值“Q(s,a)”,其表示根据主动学习故障策略130在给定状态s下用于采取动作a的预期奖励。在数学上,Q(s,a)由以下等式提供:对于所有s,a,Qt+1(s,a) = Qt(s,a) + αδtet(s,a)
在用于Q(s,a)的上述等式中,误差“δ”(delta)驱动学习,并由等式定义:
δt = rt+1 + γQt(st+1,at+1) – Qt(st,at)
奖励值“r”可以被分配一个至少部分地与采取动作a和存储设备140的未来故障之间的时间成比例的值。为了说明,图2描绘了参考存储设备140失败的故障时间点210的用于采取动作a以启动故障减轻策略的基于时间的奖励功能200的仅仅一个示例。减轻时间点220在故障时间点210之前预定时间段212,诸如二十四小时或足够的时间,以将数据从失败的存储设备140迁移出去。可以在动作a在存储设备140的故障之前的预定时间段处要在存储设备140上启动故障减轻过程时分配最大值r(图2上的202)。换句话说,强制学习过程134针对在存储设备140故障之前的预定时间段内选择在存储设备140上启动故障减轻过程用最大奖励来奖励主动学习故障策略136。在一些实现中,对于在减轻时间点220之前过早地启动故障减轻过程,可以将较低的奖励值分配给r。
[0034] 可以分配也被称为惩罚的负奖励以阻止动作。例如,如果在故障时间点210之后、以及在某些情况下在减轻时间点220之后启动故障减轻过程,可以分配负值r(图2上的204)。换句话说,强制学习过程可以针对在存储设备140的故障之前的预定时间段内在存储设备140上未选择启动故障减轻过程而用惩罚来奖励主动学习故障策略138。在一些实现中,可以分配负奖励值给在未经历故障的存储设备140上启动故障减轻过程的采取动作a。
还可以将负值奖励值分配给没有动作并且存储设备140随后失败的采取动作a。
[0035] 可以调整各种参数以调节强制学习过程134的性能。学习因子“α”(alpha)在0≤α≤1的范围内是可配置的,以规定导致单个动作的新信息在多大程度上覆盖旧信息。较高的α因子使得强制学习过程134能够更快地响应新信息。在δ等式中,折扣因子“γ”(gamma)因子在0≤λ≤1的范围内是可配置的,以规定未来奖励的重要性。一的折扣率有利于未来的奖励,并且零的折扣率则仅考虑当前的奖励。
[0036] 资格追踪“e(t s,a)”与每个状态-动作对相关联。策略学习代理130可以利用资格跟踪来跟踪状态-动作对的发生。每当对特定存储设备状态s进行编码并且根据主动学习故障策略136采取对应动作a时,针对该状态-动作对的资格跟踪增加。在数学上表述:如果s=st并且a=at,则et(s,a) = γλet-1(s,a)+1
否则,et(s,a) = γλet-1(s,a)。
[0037] 使用如上所述的γ并且取决于多少权重被给予最近的状态事务而在0≤λ≤1(例如0.9)的范围内是可配置的跟踪衰减“λ”(lambda),资格跟踪以γλ的速率随时间衰减。
[0038] 随着时间的推移并跨越多个(例如,全部)存储设备140-1至140-N,策略学习代理130重复强制学习过程134的执行,其观察存储设备状态、基于主动学习故障策略136的状态-动作对选择相应的动作、观察后续存储设备状态、并奖励策略,从而更新Q(s,a)值。在多次迭代中,Q(s,a)值可以指示对于给定状态,往往最常选择特定动作。例如,如果a0表示不采取任何动作,而a1表示启动故障减轻过程的动作,则对于给定的存储设备状态s(132),不采取动作的概率可以由Q(s,a0) / (Q(s,a0) + Q(s,a1)来给出,启动故障减轻过程的概率可以由Q(s,a1) / (Q(s,a0) + Q(s,a1)来给出。可以通过各种技术来将在每个存储设备状态s(假定已经观察或探测到该状态)处执行特定动作的这种概率编码到主动学习故障策略
136中,诸如选择具有最大概率的动作。因此,凭借上述,策略学习代理130可以不断地微调和优化主动学习故障策略136,以在存储设备故障之前的预定时间段为存储设备故障做准备。
[0039] 返回去参考图1,系统100可以将调用归属数据160发送到监督学习系统150。调用归属数据160可以包括例如状态数据142、存储设备状态132、主动学习故障策略136(包括Q(s,a)值,编码的状态-动作对等)、与存储设备140相关的故障数据(例如,SMART跳闸的时间、SMART跳闸代码)。系统100可以间或地发送调用归属数据160,诸如在周期性的基础上、基于预定义的条件(例如,主动学习故障策略136与静态故障策略112分歧)、根据请求等等。监督学习系统150可以将调用归属数据160包括到历史存储设备状态和故障数据152中。监督学习系统150可以分析主动学习故障策略136以及存储设备状态132和存储设备140故障数据,以改进静态故障策略154。
[0040] 图3是描绘用于学习故障策略的示例方法300的流程图。方法300可以以存储在机器可读介质上并由处理资源(例如,微控制器、微处理器、(一个或多个)中央处理单元核、ASIC、FPGA等)执行的可执行指令的形式和/或以电子电路的形式来实现。例如,方法300可以由存储系统执行,其中系统100——更具体地策略学习代理130可以形成其一部分。在本公开的一些实现中,方法300的一个或多个块可以基本上同时执行或以与图3中所示不同的顺序执行。在本公开的一些实现中,方法300可以包括比图3中所示更多或更少的块。在一些实现中,方法300的一个或多个块可以以某些次数持续和/或可以重复。
[0041] 方法300可以在块302开始,并且继续到块304,其中存储系统(例如,100)接收由监督机器学习系统(例如,150)导出的静态故障策略(例如,154),所述监督机器学习系统(例如,150)将监督或离线机器学习应用于针对已知存储设备故障的存储设备状态的历史数据集。在块306处,存储系统将主动学习故障策略(例如,136)初始化为静态故障策略。例如,主动学习故障策略最初可以是静态故障策略的副本。静态故障策略和主动学习故障策略每个都可以基于概率模型来规定对于特定存储设备状态,对应的动作是等待下一个存储设备状态(即,不采取动作)还是启动存储设备上的故障减轻过程,诸如向另一存储设备的数据迁移。
[0042] 在块308处,存储系统基于从与存储系统耦合或以其他方式与存储系统通信的存储设备(例如,140)收集的状态数据(例如,142)来对存储设备状态(例如,132)进行编码。例如,状态数据可以包括SCSI模式页面或密钥代码限定符等。在块308之后,块310、312与块314、316、318并行地执行。
[0043] 在块310处,根据静态故障策略,存储系统基于在块308处编码的存储设备状态来选择动作(例如,等待或启动故障减轻过程)。在块312处,存储系统在存储设备上执行在块310处选择的动作。在块312之后,该方法进行到块220,然而,将首先描述块314、316、318。
[0044] 在块314处,存储系统基于在块308处编码的存储设备状态并根据主动学习故障策略来选择动作(例如,等待或启动故障减轻过程)。在块316处,存储系统确定存储设备是否失败(例如,由存储设备报告的SMART跳闸)。
[0045] 在块318处,存储系统基于由先前选择的动作(例如,块308、314、316、318的先前迭代)产生的奖励来调整主动学习故障策略。在一些实现中,可以根据Q(λ)、TD(λ)、SARSA(λ)或类似技术来执行在块318处对主动学习故障策略的调整。奖励的幅度可以是与由块316确定的存储设备的故障相关的先前执行的动作的时间性的函数(例如,图2)。例如,在一些实现中,如果先前选择的动作正在启动故障减轻过程,并且存储设备在其后的预定时间段——诸如24小时的预定时间段内——失败,则奖励的幅度是最大正值。
[0046] 在块312和318之后,方法300进行到块320,其中存储系统确定是否已经满足调用归属条件,诸如预定时间、主动学习故障策略和静态故障策略之间的差异或来自外部服务器的对于调用归属数据的请求。如果尚未满足调用归属条件(在块320为“否”),则方法300返回到块308。如果已经满足调用归属条件(块320处为“是”),则方法300进行到块322,其中存储系统将与主动学习故障策略相关联的调用归属数据(例如,160)发送到外部服务器(例如,监督学习系统150)。调用归属数据还可以包括在调整主动学习故障策略中利用的存储设备状态和存储设备故障数据(例如,在块318处)。可以由外部服务器分析调用归属数据并将其与静态故障策略进行比较。在一些实现中,可以基于调用归属数据来调整或优化静态故障策略,并且继而可以向存储系统更新静态故障策略(例如,以类似于块304的方式)。该方法可以在块324处结束。在一些实现中,方法300可以例如通过返回到块308而在块322之后继续进行。
[0047] 图4是描绘了应用强制学习过程来在存储设备状态上训练故障策略的示例系统400的框图。系统400包括存储设备接口420和策略学习代理430,其每一个可以是硬件设备(例如,电子电路或逻辑、处理资源)或硬件和用于实现其在此描述的相应功能的编程的任何组合。
[0048] 系统400可以经由存储设备接口420收集来自存储设备440的状态数据442。例如,存储设备接口420可以包括SCSI接口,并且状态数据442可以包括SCSI模式页面或密钥代码限定符。状态数据442可以是时间序列数据。
[0049] 策略学习代理430可以将收集的状态数据442编码为存储设备状态432。在一些实现中,可以将状态数据442的每个时间点编码为单个存储设备状态432。策略学习代理430可以应用强制学习过程434(例如,Q(λ)、SARSA(λ)、TD(λ)等)来在存储设备状态432上训练主动学习故障策略436。主动学习故障策略436包含状态-动作对,其中每一对都基于针对给定的存储设备状态432从动作集合中选择动作的概率,所述动作集合包括在存储设备440上启动故障减轻过程或不采取动作(即等待下一个状态)。
[0050] 更具体地,强制学习过程434监视主动学习故障策略436响应于存储设备状态432选择哪些动作,并且根据相关于存储设备440的后续故障响应于存储设备状态432选择启动故障减轻过程的时间性来奖励主动学习故障策略436。
[0051] 图5是用于学习故障策略的示例方法500的流程图。类似于方法300,方法500可以以存储在机器可读介质上并由处理资源(例如,微控制器、微处理器、(一个或多个)中央处理单元核、ASIC、FPGA等等)执行的可执行指令的形式和/或以电子电路的形式来实现。例如,方法500可以由存储系统执行,其中系统100或400——更具体地策略学习代理130或430可以形成其一部分。在本公开的一些实现中,方法500的一个或多个块可以基本上同时执行或者以与图5中所示不同的顺序执行。在本公开的一些实现中,方法500可以包括比图5中所示更多或更少的块。在一些实现中,方法300的一个或多个块可以以某些次数持续和/或可以重复。
[0052] 方法500可以在块502开始,并且继续到块504,其中存储系统基于从耦合到存储系统的存储设备收集的状态数据来对存储设备状态进行编码。
[0053] 在块506处,存储系统基于在块502处编码的存储设备状态并根据主动学习故障策略来选择动作。主动学习故障策略可以包含状态-动作对,其基于概率模型规定对于特定存储设备状态的对应动作是等待下一个存储设备状态还是在存储设备上启动故障减轻过程。
[0054] 在块508处,存储系统基于从先前选择的动作产生的奖励来调整主动学习故障策略,奖励的幅度是与存储设备的失败相关的先前选择的动作的时间性的函数。在块510处,方法500可以结束。
[0055] 图6是示例存储系统600的框图,其包括耦合到机器可读介质604的至少一个处理资源602。存储系统600可以经由存储设备接口(例如, SCSI接口)与(一个或多个)存储设备通信。在一些实现中,存储系统600可以用作或形成图1的系统100或图4的系统400的一部分。特别而言,在一些实现中,耦合到机器可读介质604的处理资源602可以用作或形成图1的策略学习代理130的一部分。
[0056] 处理资源602可以包括微控制器、微处理器、(一个或多个)中央处理单元核、ASIC、FPGA和/或适于从机器可读介质604检索和/或执行指令以执行与各种示例相关的功能的其他硬件设备。另外地或可替代地,处理资源602可以包括用于执行本文所述的指令的功能性的电子电路。
[0057] 机器可读介质604可以是适于存储可执行指令的任何介质,诸如RAM、ROM、EEPROM、闪速存储器、硬盘驱动器、光盘等。在一些示例实现中,机器可读介质604可以是有形的非暂时介质,其中术语“非暂时”不包括暂时传播信号。可以将机器可读介质604安置在存储系统600内,如图6中所示,在这种情况下,可执行指令可被视为“安装”或“嵌入”在存储系统600上。可替代地,机器可读介质604可以是便携式(例如,外部)存储介质,并且可以是“安装包”的一部分。
[0058] 如在此下文进一步描述的,机器可读介质604可以用可执行指令集606、608、610、612进行编码。应当理解,包括在一个框内的可执行指令和/或电子电路的部分或全部在替代实现中可以包括在图中所示的不同框中或者包括在未示出的不同框中。
[0059] 指令606当由处理资源602执行时,基于从与存储系统600通信的存储设备收集的状态数据对存储设备状态进行编码。指令608当由处理资源602执行时,基于存储设备状态来在存储设备上实现第一故障策略。第一故障策略可以使用针对已知的存储设备故障的存储设备状态的历史数据、通过离线监督机器学习来导出。例如,第一故障策略在许多方面可能与图1的静态故障策略112类似。实现第一故障策略可以包括基于当前存储设备状态来查找要执行的动作。
[0060] 指令610当由处理资源602执行时,基于存储设备状态(由指令606编码)和第二故障策略来选择动作。第二故障策略包含状态-动作对,其基于概率模型规定对于特定存储设备状态,相应动作是在存储设备上启动故障减轻过程还是不采取动作。例如,第二故障策略在许多方面可与图1的主动学习故障策略136类似。在一些实现中,可以将第二故障策略初始设置为等于第一故障策略。
[0061] 指令612当由处理资源602执行时,经由强制学习过程基于从先前选择的动作产生的奖励来调整第二故障策略。奖励的幅度可以是与存储设备的后续故障相关的先前选择的动作的时间性的函数。例如,在一些实现中,如果先前选择的动作是故障减轻过程并且存储设备在此后的预定时间段内失败,则奖励的幅度为最大正值。
[0062] 鉴于前面的描述,可以理解,通过实现无监督机器学习技术的系统,故障策略或换句话说用于预期和减轻存储设备即将发生的故障的策略可以经历优化。特别而言,可以凭借跨在多个存储设备上的数据集和在若干时间段上来调整或优化策略。
[0063] 在前面的描述中,阐述了许多细节以提供对本文所公开的主题的理解。然而,可以在没有这些细节中的一些或全部的情况下实践这些实现。其他实现可以包括上面讨论细节的修改和变型。以下权利要求旨在涵盖这些修改和变型。