一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

用于数据恢复的系统、方法和装置与流程

2021-11-15 18:37:00 来源:中国专利 TAG:

用于数据恢复的系统、方法和装置
1.本技术要求于2020年12月1日提交的题为“故障恢复存储装置(fault resilient storage device)”的第17/109,053号美国专利申请(其通过引用被包含)的优先权和权益,该美国专利申请要求于2020年7月13日提交的题为“故障恢复存储装置和接口(fault resilient storage device and interfaces)”的第63/051,158号美国临时专利申请(其通过引用被包含)、于2020年7月16日提交的题为“具有可持续只读特征的故障恢复驱动器(fault resilient drive with sustainable read

only feature)”的第63/052,854号美国临时专利申请(其通过引用被包含)以及于2020年7月28日提交的题为“使用故障恢复驱动器的故障恢复raid

0方法(fault resilient raid

0method using fault resilient drives)”的第63/057,744号美国临时专利申请(其通过引用被包含)的优先权和权益;本技术还要求于2020年5月11日提交的题为“故障恢复存储装置和接口(fault resilient storage devices and interfaces)”的第63/023,243号美国临时专利申请(其通过引用被包含)、于2021年1月13日提交的题为“用于存储数据恢复的系统、方法和装置(systems,methods,and devices for storage data recovery)”的第63/137,133号美国临时专利申请(其通过引用被包含)以及于2021年4月9日提交的第17/227,262号美国专利申请(其通过引用被包含)的优先权和利益。
技术领域
2.本公开总体上涉及存储设备,并且更具体地涉及用于使用奇偶校验空间(parity space)作为恢复空间的数据恢复的系统、方法和装置。


背景技术:

3.存储系统可以通过使用来自另一存储装置的奇偶校验信息重建数据来从故障存储装置恢复数据。
4.在该背景技术部分中公开的以上信息仅用于增强对发明的背景技术的理解,因此该背景技术部分中公开的以上信息可以包含不构成现有技术的信息。


技术实现要素:

5.在一些实施例中,故障恢复存储装置可以能够在各种恢复模式下操作,同时保持部分能力,或者能够返回到完整功能而不管内部故障。存储装置可以保持部分能力的方式之一是在一些情况下以只读模式操作,在只读模式下,存储装置可以响应来自主机的读取请求,但是如果存储装置从主机接收到写入请求,则返回错误消息。在raid

0存储系统中,存储装置可以转换到以只读模式操作的可能性可以通过为在存储装置已经转换到以只读模式进行操作之后执行的任何写入操作重新分配构成条带(stripe)的条带单元(strip)来适应。
6.根据本公开的实施例,提供了一种用于操作包括存储介质的存储装置的方法,所述方法包括:由存储装置确定存储装置处于能够通过对存储装置进行电源重启或通过对存
储介质进行格式化来从其进行恢复的第一故障状态;由存储装置确定存储装置处于能够通过以降低的性能、以减小的容量或以只读模式操作存储装置来从其进行部分恢复的第二故障状态;以及以降低的性能、以减小的容量或以只读模式操作存储装置。
7.在一些实施例中,所述方法还包括:由存储装置确定存储装置处于与第一故障状态和第二故障状态不同的第三故障状态;以及在读取操作和写入操作不被执行并且存储装置响应于接收到的读取命令或写入命令而返回错误的模式下操作存储装置,其中:存储装置包括包含第一核和第二核的控制器,并且第三故障状态包括第一核确定第二核已经发生故障的子状态。
8.在一些实施例中,所述方法还包括:从主机接收关于存储装置的状态的查询,以及用与状态层级中的状态对应的状态来对查询进行响应。
9.在一些实施例中,状态层级包括第一级别,第一级别包括:完全恢复状态,与第一故障状态对应;以及部分恢复状态,与第二故障状态对应。
10.在一些实施例中,部分恢复状态包括指示损失能力的第一子状态,第一子状态包括:第一子子状态,指示在可持续只读模式下操作;以及第二子子状态,指示在不可持续只读模式下操作。
11.在一些实施例中,接收查询的步骤包括通过非易失性存储器快速(nvme)接口接收查询,并且对查询进行响应的步骤包括通过非易失性存储器快速(nvme)接口进行响应。
12.在一些实施例中:第一故障状态包括第一子状态,在第一子状态下,存储装置的控制器的程序执行错误已经导致不正确的数据被写入存储介质;确定存储装置处于第一故障状态的步骤包括确定指针超出范围;并且第一故障状态包括第二子状态,在第二子状态下,自控制器对存储介质的最近写入以来已经发生存储装置的控制器的程序执行错误。
13.在一些实施例中,所述方法还包括对存储介质的一部分进行重新格式化,其中,重新格式化的步骤包括:对整个存储介质进行重新格式化。
14.在一些实施例中,所述方法包括以降低的性能操作存储装置。
15.在一些实施例中,以降低的性能进行操作的步骤包括:从连接到存储装置的主机接收包括数据的写入命令;将数据写入存储介质;以及将命令完成发送到主机,其中,将数据写入存储介质的步骤和将命令完成发送到主机的步骤作为同步写入的部分被执行。
16.在一些实施例中,以降低的性能进行操作的步骤包括:执行对存储介质的第一写入;在与降低的性能对应的时间间隔期间等待;以及执行对存储介质的第二写入。
17.在一些实施例中,所述方法包括以减小的容量操作存储装置。
18.根据发明的实施例,提供了一种存储装置,包括:处理电路;以及存储介质,处理电路被配置为:确定存储装置处于能够通过对存储装置进行电源重启或通过对存储介质进行格式化来从其进行恢复的第一故障状态;确定存储装置处于能够通过以降低的性能、以减小的容量或以只读模式操作存储装置来从其进行部分恢复的第二故障状态;以及以降低的性能、以减小的容量或以只读模式操作存储装置。
19.在一些实施例中,处理电路还被配置为:从主机接收关于装置的状态的查询,并且用与状态层级中的状态对应的状态来对查询进行响应,其中,状态层级包括第一级别,第一级别包括:完全恢复状态,与第一故障状态对应的;以及部分恢复状态,与第二故障状态对应。
20.在一些实施例中,接收查询的步骤包括通过非易失性存储器快速(nvme)接口接收查询,并且对查询进行响应的步骤包括通过非易失性存储器快速(nvme)接口进行响应。
21.在一些实施例中,处理电路被配置为以降低的性能操作存储装置,其中,以降低的性能操作的步骤包括:执行对存储介质的第一写入;在与降低的性能对应的时间间隔期间等待;以及执行对存储介质的第二写入。
22.根据本发明的实施例,提供了一种包括存储装置的系统,存储装置包括:用于处理的装置;以及存储介质,用于处理的装置被配置为:确定存储装置处于能够通过对存储装置进行电源重启或通过对存储介质进行格式化来从其进行恢复的第一故障状态;确定存储装置处于能够通过以降低的性能、以减小的容量或以只读模式操作存储装置来从其进行部分恢复的第二故障状态;以及以降低的性能、以减小的容量或以只读模式操作存储装置。
23.在一些实施例中,用于处理的装置还被配置为:从主机接收关于装置的状态的查询,并且用与状态层级中的状态对应的状态来对查询进行响应,其中,状态层级包括第一级别,第一级别包括:完全恢复状态,与第一故障状态对应;以及部分恢复状态,与第二故障状态对应。
24.在一些实施例中,接收查询的步骤包括通过非易失性存储器快速(nvme)接口接收查询,并且对查询进行响应的步骤包括通过非易失性存储器快速(nvme)接口进行响应。
25.在一些实施例中,用于处理的装置被配置为:以降低的性能操作存储装置,其中,以降低的性能操作的步骤包括:从连接到存储装置的主机接收包括数据的写入命令;将数据写入存储介质;以及将命令完成发送到主机,其中,将数据写入存储介质的步骤以及将命令完成发送到主机的步骤作为同步写入的部分被执行。
26.一种方法可以包括:将第一存储装置和第二存储装置作为冗余阵列进行操作,冗余阵列被配置为:使用奇偶校验信息来从故障存储装置恢复信息;基于第一存储装置的故障状况,在具有至少部分读取能力的故障恢复模式下对第一存储装置进行操作;以及在第二存储装置的奇偶校验空间中重建来自第一存储装置的信息。在第二存储装置的奇偶校验空间中重建来自第一存储装置的信息的步骤可以包括:将所述信息从第一存储装置复制到第二存储装置的奇偶校验空间。所述方法还可以包括:将重建的信息从第二存储装置的奇偶校验空间复制到替换存储装置。所述方法还可以包括:在第二存储装置的奇偶校验空间中,针对第一存储装置的写入操作对第一数据进行更新。所述方法还可以包括:将更新的第一数据从第二存储装置的奇偶校验空间复制到替换存储装置。所述方法还可以包括:针对重建的信息的至少一部分计算奇偶校验信息。在第二存储装置的奇偶校验空间中重建来自第一存储装置的信息的步骤可以至少部分地通过后台处理来执行。在第二存储装置的奇偶校验空间中重建来自第一存储装置的信息的步骤可以至少部分地通过批处理来执行。来自第一存储装置的信息可以包括数据。所述方法还可以包括:基于第二存储装置的奇偶校验空间的重建点,针对第一存储装置的读取操作读取第一数据。针对读取操作的第一数据可以从第一存储装置被读取。针对读取操作的第一数据可以从第二存储装置的奇偶校验空间中的重建的信息被读取。所述方法还可以包括:在第二存储装置的奇偶校验空间中,针对第一存储装置的写入操作对第一数据进行更新;以及针对第一存储装置的读取操作,从第二存储装置的奇偶校验空间读取更新的第一数据。所述方法还可以包括:针对第一存储装置的写入操作接收写入数据;以及将写入数据写入第二存储装置的奇偶校验空间。
27.一种系统可以包括:控制器;第一存储装置;以及第二存储装置,其中,第一存储装置能够基于第一存储装置的故障状况在具有至少部分读取能力的故障恢复模式下进行操作,其中,控制器可以被配置为:将第一存储装置和第二存储装置作为冗余阵列进行操作,冗余阵列被配置为使用奇偶校验信息来从故障存储装置恢复信息;以及在第二存储装置的奇偶校验空间中重建来自第一存储装置的信息。控制器还可以被配置为:将重建的信息从第二存储装置的奇偶校验空间复制到替换存储装置。控制器还可以被配置为:基于第二存储装置的奇偶校验空间的重建点,从第一存储装置读取针对读取操作的第一数据。控制器还可以被配置为:针对第一存储装置的写入操作接收写入数据;以及将写入数据写入第二存储装置的奇偶校验空间。
28.一种存储阵列控制器可以包括逻辑,逻辑被配置为:将第一存储装置、第二存储装置和第三存储装置作为具有奇偶校验的独立存储装置冗余阵列(raid)进行操作,其中,第一存储装置被配置为基于第一存储装置的故障状况而以具有至少部分读取能力的故障恢复模式对第一存储装置进行操作;以及通过将来自第一存储装置的信息复制到第二存储装置的奇偶校验空间,基于第一存储装置的故障状况来重建来自第一存储装置的信息。逻辑还可以被配置为:基于第二存储装置的奇偶校验空间的重建点,从第一存储装置读取针对读取操作数据。
附图说明
29.附图不一定按比例绘制,并且在整个附图中,为了说明性的目的,类似结构或功能的元件通常可以由其相同的参考标号或部分表示。附图仅意图便于描述在此描述的各种实施例。附图没有描述在此公开的教导的每个方面,并且不限制权利要求的范围。为了防止附图变得模糊,可能未示出所有的组件、连接等,并且可能不是所有的组件都具有参考标号。然而,组件配置的图案可以从附图中容易地清楚。附图与具体实施方式一起示出了本公开的示例实施例,并且与描述一起用于解释本公开的原理。
30.图1是根据公开的示例实施例的数据存储系统的框图。
31.图2a是根据公开的示例实施例的存储装置的故障状态的表。
32.图2b是根据公开的示例实施例的由主机发送到存储装置的命令的表。
33.图2c是示出根据公开的示例实施例的恢复模式的层级的表。
34.图3a是根据公开的示例实施例的故障恢复存储装置的第一操作方法的流程图。
35.图3b是根据公开的示例实施例的故障恢复存储装置的第二操作方法的流程图。
36.图4是根据公开的示例实施例的存储装置的示意性数据布局图。
37.图5a是根据公开的示例实施例的存储装置在故障恢复只读模式下的第一操作方法的流程图。
38.图5b是根据公开的示例实施例的存储装置在故障恢复只读模式下的第二操作方法的流程图。
39.图6a是根据公开的示例实施例的执行写入操作的raid

0系统的示意性数据布局图。
40.图6b是根据公开的示例实施例的执行读取操作的raid

0系统的示意性数据布局图。
41.图6c是根据公开的示例实施例的执行重新映射和写入操作的raid

0系统的示意性数据布局图。
42.图7a是根据公开的示例实施例的raid

0存储系统的第一操作方法的流程图。
43.图7b是根据公开的示例实施例的raid

0存储系统的第二操作方法的流程图。
44.图8示出了根据公开的示例实施例的用于raid

4存储系统的映射方案的实施例。
45.图9示出了根据公开的示例实施例的用于raid

5存储系统的映射方案的实施例。
46.图10a示出了根据公开的示例实施例的用于包括至少一个故障恢复存储装置的冗余阵列存储系统的映射方案的实施例。
47.图10b示出了根据公开的示例实施例的用于包括至少一个故障恢复存储装置和替换存储装置的冗余阵列存储系统的映射方案的实施例。
48.图11示出了根据公开的示例实施例的冗余阵列存储系统的示例实施例。
49.图12a示出了根据公开的示例实施例的没有故障恢复存储装置的raid

5存储系统的示例实施例。
50.图12b示出了根据公开的示例实施例的图12a的利用替换存储装置执行重建操作的实施例。
51.图13a示出了根据公开的示例实施例的利用故障恢复存储装置执行预重建操作的raid

5存储系统的示例实施例。
52.图13b示出了根据公开的示例实施例的利用替换存储装置执行重建操作的raid

5存储系统的示例实施例。
53.图13c示出了根据公开的示例实施例的在利用替换存储装置替换遇到故障状况的故障恢复存储装置之后执行重建操作的raid

5存储系统的另一示例实施例。
54.图14示出了根据公开的示例实施例的在单个存储装置发生故障的情况下由没有故障恢复存储装置的raid

5存储系统执行的读取操作的示例实施例。
55.图15示出了根据公开的示例实施例的在单个存储装置发生故障的情况下由没有故障恢复存储装置的raid

5存储系统执行的读取操作的示例实施例。
56.图16示出了根据公开的示例实施例的在重建操作期间由具有故障恢复存储装置的raid

5存储系统执行的读取操作的示例实施例。
57.图17示出了根据公开的示例实施例的在重建操作期间由具有故障恢复存储装置的raid

5存储系统执行的读取操作的示例实施例。
58.图18示出了根据公开的示例实施例的由没有故障恢复存储装置的raid

5存储系统执行的写入操作的示例实施例。
59.图19示出了根据公开的示例实施例的由没有故障恢复存储装置的raid

5存储系统执行的写入操作的示例实施例。
60.图20示出了根据公开的示例实施例的可以由具有故障恢复存储装置的raid

5存储系统执行的写入操作的示例实施例。
61.图21示出了根据公开的示例实施例的可以由具有故障恢复存储装置的raid

5存储系统执行的写入操作的示例实施例。
62.图22示出了根据公开的示例实施例的用于操作存储阵列的方法的实施例。
63.图23示出了根据公开的示例实施例的可以由存储装置实现的故障恢复模式和相
关联的逻辑块地址(lba)空间类型的一些示例实施例的表。
具体实施方式
64.下面结合附图阐述的具体实施方式意图作为根据本公开提供的用于存储装置和包含存储装置的系统的恢复操作的系统和方法的示例性实施例的描述,而不意图表示可以构造或利用本公开的唯一形式。该描述结合示出的实施例阐述了本公开的特征。然而,将理解的是,相同或等同的功能和结构可以通过也意图包含在公开的范围内的不同实施例来实现。如在此其他地方所表示的,相同的元件编号旨在指示相同的元件或特征。
65.在一些实施例中,故障恢复存储装置可以能够以各种恢复模式操作,并且能够保持部分能力,或者返回到完整功能,而不管内部故障。例如,响应于温度传感器故障,存储装置可以以降低的速率操作,或者针对写入操作以降低的速率操作,或者存储装置可以完全停止执行写入操作。响应于可能已经损坏存储介质的瞬时故障,存储装置可以对存储介质进行重新格式化。响应于未损坏存储介质的瞬时故障,存储装置可以重启电源。在一些情况下,存储装置可以保持部分能力的方式之一是以只读模式操作,其中,存储装置可以响应来自主机的读取请求,但是如果存储装置从主机接收到写入请求,则返回错误消息。存储装置还可以将即将到期的数据移动到救援区域(rescue area),使得数据将不会由于到期而丢失。在raid

0存储系统中,存储装置可以转换到以只读模式操作的可能性可以通过为在存储装置已经转换到以只读模式操作之后执行的任何写入操作重新分配构成条带的条带单元来适应。
66.图1示出了根据公开的示例实施例的包括连接到一个或多个存储装置110(或“驱动器”)的主机105的计算系统。存储装置110可以经由如示出的卷管理器115(在下面进一步详细讨论)连接到主机105,或者存储装置110可以直接连接到主机105。在一些实施例中,存储装置110可能遇到内部故障状况,并且存储装置可以表现出如下面进一步详细讨论的各种恢复行为,以减轻故障状况的系统级影响。每个存储装置110可以是固态驱动器(ssd),并且每个存储装置110可以包括控制器120(或“控制电路”)和存储介质125(例如,与非(nand)闪存)。存储装置110中的最小可擦除单元可以被称为“块”,并且存储装置110中的最小可写入单元可被称为“页”。每个存储装置110可以具有作为适合于永久性存储装置的多个形状因子(form factor)(包括但不限于2.5”、1.8”、mo

297、mo

300、m.2以及企业和数据中心ssd形状因子(edsff))中的任何一种的形状因子,并且每个存储装置110可以具有作为适合于永久性存储装置的多个接口(包括外围组件互连(pci)、pci快速(pcie)、以太网、小型计算机系统接口(scsi)、串行at附件(sata)和串行连接scsi(sas))中的任何一个的电接口,每个存储装置110可以通过电接口连接到主机105。
67.存储介质125可以具有保留期限(retention period)(保留期限可以取决于存储介质125的使用历史,并且因此可以在存储介质125内变化);已经存储得比保留期限长的数据(即,具有超过保留期限的年龄的数据)可能变得不可靠,并且可以称为已经过期。可以使用纠错码将数据存储在存储介质125中,纠错码可以是块码。当从存储介质125读取数据时,可以从存储介质125读取一定量的原始数据(被称为码块),并且可以尝试对该一定量的原始数据进行解码。如果尝试失败,则可以进行附加的尝试(读取重试)。随着使用,存储介质125的一部分(例如,块)可能劣化到保留期限变得不可接受地短的程度,并且该块可以被分
类为“坏块”。为了避免允许这种情况致使整个存储介质125不可操作,被称为“坏块管理保留空间”的保留空间可以存在(例如,被包括在每个闪存裸片或每个闪存平面中),并且控制器120或闪存裸片或闪存平面内部的另一控制器可以开始使用保留空间中的块并停止使用坏块。
68.图2a是根据公开的示例实施例的故障状况(或“故障状态”)的表,每个故障状况标记有情况标识符(case identifier,“情况id”)。情况1是存储装置110不再能够执行读取或写入操作并且不能通过重启电源或重新格式化存储介质来解决的任何故障状况。存储装置110以这种方式表现的状态可以具有各种子状态,且例如每个子状态与不同的故障机制对应。这样的状态或故障状况(在该状态或故障状况下存储装置110不再能够执行读取或写入操作,并且该状态或故障状况不能通过重启电源或重新格式化存储介质来解决)可能例如由控制器的固件的一部分损坏(在这种情况下,控制器可能重新启动为损坏的指令不被执行的安全模式)引起,或者由存储装置110中的处理电路的故障(例如,管理与存储介质的交互但不负责与主机105的通信的处理电路的故障)引起。当发生这种类型的故障状况时,存储装置110可以用错误消息来响应来自主机105的任何读取或写入命令。
69.情况2是任何这样的故障状况:(i)在该故障状况下,存储装置110不再能够执行读取或写入操作,并且(ii)通过对存储装置110的电源进行重启或通过对存储介质进行重新格式化,能够从该故障状况进行恢复。这样的故障状况可以例如由存储装置110的控制器120的程序执行错误(例如,由于控制器120的随机存取存储器(ram)中的位反转(bit flip)而超出范围的指针,或者由于位反转而不正确的指令)引起。如果程序执行错误尚未导致控制器120将不正确的数据写入存储介质125(例如,如果自控制器对存储介质的最近写入以来发生了程序执行错误),则对存储装置进行电源重启可能足以将存储装置110恢复到正常操作;如果程序执行错误已经导致控制器120将错误数据写入存储介质125,则对存储介质125进行重新格式化可能足以将存储装置110恢复到正常操作。
70.情况3是任何这样的故障状况:该故障状况可以通过以只读模式操作存储装置110来减轻,并且对于该故障状况,对存储介质125进行重新格式化将不会恢复完整功能。这样的故障的示例包括(i)温度传感器故障,以及(ii)存储介质125的一部分已经转换到只读模式。在温度传感器故障的情况下,可以通过确定温度传感器读数超出范围(例如,已经超过阈值温度)来检测故障,并且在这种情况下,可以通过避免写入操作来降低存储装置110过热的风险,写入操作会比读取操作消耗更多的电力。例如,如果闪存平面或裸片耗尽用于运行时坏块管理的坏块管理保留空间,则对于闪存存储介质125,可能发生存储介质125的一部分的到只读模式的转换。例如,存储装置110可以在尝试执行读取操作并做出对数据项进行解码的不成功的尝试的同时,确定存储数据的块是坏块,并且在将数据从坏块移动到坏块管理保留空间时,确定剩余的坏块管理保留空间小于阈值大小并因此不足以确保平面或裸片的可靠性。然后,存储装置110可以确定坏块管理不再被执行,并且转换到只读模式。下面进一步详细讨论只读模式的操作。如在此所使用的,“数据项”是在一个操作中被处理的任何数量的数据,例如,由对码块进行解码产生的数据可以是数据项。
71.情况4是可以通过以直写模式操作存储装置110来减轻的任何故障状况。例如,如果存储装置110中的电源备用电容器发生故障,则响应于从主机接收的任何写入命令,装置可以在将命令完成发送到主机105之前完成对存储介质125的写入,使得如果在对存储介质
125的写入已经被完成之前电源发生故障,则主机不会被错误地通知写入已被成功完成。在直写模式下操作可能导致(在吞吐量和等待时间方面的)性能降低。
72.情况5是可以通过以降低功耗的方式操作存储装置110来减轻的任何故障状况。例如,在温度传感器故障的情况下,存储装置110可以如上所述以只读模式操作,或者存储装置110可以降低执行操作(例如,会比读取操作消耗更多电力的写入操作)的速率,以降低存储装置110的功耗。例如,存储装置110可以在与降低的性能对应的时间间隔期间执行对存储介质的第一写入,然后等待(该等待导致执行写入操作的速率的降低);然后执行对存储介质的另一(例如,第二)写入。
73.情况6是任何这样的故障状况:该故障状况可以通过以只读模式操作存储装置110来减轻的任何故障状况,并且对于该故障状况,对存储介质125进行重新格式化将恢复完整功能。图2a的表的第四列针对每种情况指示:有效用户数据是否仍然可用,以及存储装置110是否可以例如通过对存储介质125进行重新格式化而返回到完整功能。
74.如图2a中列出的情况所例示的,在一些实施例中,三个级别的故障恢复可以通过存储装置110而是可实现的:完全恢复模式(fully resilient mode)、部分恢复模式(partially resilient mode)和脆弱模式(vulnerable mode)。在完全恢复模式下,存储装置110可以利用“自修复”特征进行操作,并且存储装置110可以能够通过重置操作(诸如,电源重启或存储介质125的格式化)来恢复完整功能(尽管装置中的用户数据可能丢失)。
75.在部分恢复模式下,当存在故障状况时,存储装置110可以以较低的性能、较小的容量或降低的能力操作。例如,如上所述,如果电源备用电容器发生故障,则所有的写入可以仅在数据被写入存储介质125之后被完成(即,命令完成可以被发送到主机105)(即,仅同步写入可以被执行),减慢了存储装置110的操作,并降低了存储装置110的性能。在这种情况下,用户数据可以被保留。如果用于运行时坏块(rtbb)管理的保留空间被耗尽,则存储装置110可以以较小的容量操作。在这种情况下,存储装置110中的受影响的裸片可以从磁盘空间中被排除,并且总磁盘容量可被减少。丢失的空间上的用户数据可能丢失。例如,如果io确定性(determinism)中的集合或分区命名空间中的区域不再能够接受新的数据写入,则该集合或区域可以从磁盘空间中被排除,但是剩余的磁盘空间可以保持为可用于读取操作和写入操作。该区域或集合上的用户数据可能丢失。
76.如果存储装置110不允许写入操作,并且切换到只读模式,则存储装置110可以以降低的能力操作。存储装置110可以能够以两种类型的只读模式操作:可持续只读模式(sustainable read

only mode)(其可以被称为“第一只读模式”)和不可持续只读模式(unsustainable read

only mode)(其可以被称为“第二只读模式”)。在可持续只读模式下,存储装置110可以在存储介质125的保留期限之外继续服务读取请求。当在可持续只读模式下操作不可行时(例如,当没有足够的未使用的存储空间来建立救援空间时(下面进一步详细讨论)),不可持续只读模式可以被采用。当转换到不可持续只读模式时,存储装置110可以将这样的通知发送到主机105:存储装置110正在以第二只读模式(不可持续只读模式)操作,并且存储在存储装置110中的数据项将被允许(例如,在它们各自的保留期限的末尾处)到期。在不可持续只读模式下,存储装置110可以在存储介质125的保留期限期间继续服务读取请求,并且如果存储装置110遇到数据完整性问题(例如,如通过在读取操作期间对数据进行解码的一次或多次不成功尝试而检测到的数据完整性问题),则存储装置110可
以报告无效数据区域。如上所述,在脆弱模式下操作的存储装置110可能不能执行读取操作或写入操作,但可以执行优雅退出(graceful exit),继续从主机接收命令并返回错误。
77.在一些实施例中,五种逻辑块地址(lba)空间类型可以被定义为(被称为):(i)执行(p)空间、(ii)执行不佳(up)空间、(iii)只读(ro)空间、(iv)易失性只读(vro)空间和(v)不可访问(ia)空间。执行(p)空间可以是能够以正常方式被读取和写入而不牺牲性能的包含有效数据的lba空间。执行不佳(up)空间可以是能够以正常方式被读取和写入但具有劣化的性能(例如,劣化的写入性能)的包含有效数据的lba空间。只读(ro)空间可以是只读的包含有效数据的lba空间。存储装置110可以用错误消息对来自主机的指向这种类型的lba空间的写入命令进行响应。只读空间中的数据可以在超过保留期限的一段时间内保持有效。易失性只读(vro)空间可以是只读的,并且存储装置110可以用错误消息对来自主机的指向这种类型的lba空间的写入命令进行响应。此类型的lba空间中的数据可以暂时有效,并且可以当其到期时(即,当存储介质125中的数据的年龄达到存储介质125的保留期限时)变得无效。不可访问(ia)空间可以是从主机不可访问的包含无效数据的lba空间。图23的表示出根据公开的示例实施例的在表的第二列中标识的故障状况中的每种下可以存在于存储装置110中的lba空间类型的一些组合。用星号(*)标识的模式可以支持主机使用获得特征(get feature)命令来获取关于lba空间的详细信息。图2b示出了根据公开的示例实施例的“获得特征”命令的参数,“获得特征”命令可以被传递到存储装置110以针对存储装置110的状态和相关联的参数(“iops”表示每秒的输入操作和输出操作)的值对存储装置110进行查询。
78.图2c的表示出了根据公开的示例实施例的主机105可以采用以就存储装置110的状态对存储装置110进行查询的非易失性存储器快速(nvme)命令(例如,fault_resilient_feature、fault_resilient_status、fault_resilient_volatile_blocks_(h)和fault_resilient_invalid_data_blocks)以及存储装置110可以采用以响应的在故障恢复特征的类别内枚举的常数的层级。如图2c中所示,层级可以包括第一级别(包括完全恢复状态(fr_fully_resilient)、部分恢复状态(fr_partial_resilient)和脆弱状态(vulnerable))。还可以定义子状态和子子状态。例如,如图2c中所示,部分恢复状态包括指示损失能力的第一子状态(fr_capability_loss),并且第一子状态包括指示在可持续只读模式下操作的第一子子状态(fr_sustainable_read_only)以及指示在不可持续只读模式下的操作的第二子子状态(fr_unsustainable_read_only)。
79.图3a是根据公开的示例实施例的用于在故障恢复模式下进行操作的方法的流程图。在305,主机105从存储装置发送或接收数据;在310,主机105确定在存储装置中是否已经发生错误;在315,存储装置110执行内部诊断并确定其故障恢复状态(例如,完全恢复、部分恢复或脆弱);在320,存储装置110基于诊断来修改其性能、容量或能力(例如,转换到只读模式);在325,存储装置110基于应用编程接口(api),根据来自主机105的请求发布状态;并且在330,主机105基于状态以给定带宽将给定类型的数据路由到存储装置110或不同的存储装置110。图3b是示出根据公开的示例实施例的用于在故障恢复模式下进行操作的方法的细节的流程图。该方法包括:在335,由存储装置确定存储装置处于第一故障状态,通过对存储装置进行电源重启或通过对存储介质进行格式化来从第一故障状态恢复是可行的;在340,由存储装置确定存储装置处于第二故障状态,通过以降低的性能、以减小的容量或
以只读模式对存储装置进行操作来从第二故障状态部分恢复是可行的;以及,在345,以降低的性能、以减小的容量或以只读模式操作存储装置。
80.还可以构造基于在此公开的实施例的多个实施例和变型。现场可编程门阵列(fpga)或嵌入式处理器可以执行内部块检查,并且基于存储装置110的状态将异步更新发送到主机105。事件(例如,装置内部的温度或其他参数)可以发生并被传输到主机105。如果不存在用于提供通知的装置驱动器特征,则主机105可以按预定计划对存储装置110进行轮询。fpga或嵌入式处理器可以监测存储装置110的历史性能,并使用机器学习来提供预测性分析(例如,将处于给定故障恢复状态的可能性)。命令可以引入nvme规范中;例如,nvme规范的遥测信息可以扩展(以报告存储装置110的状态)。一些实施例可以在例如以太网存储装置或键值(kv)存储装置中实现。
81.在一些实施例中,主机可以:(i)基于存储装置110的状态来发送不同的数据类型(例如,文件类型(诸如,图像、视频、文本或者高优先级或低优先级数据))(例如,高优先级数据或实时数据可以不被写入被认为处于部分脆弱模式的装置);(ii)如果存储装置110处于部分脆弱状态并且处于较低性能状态,则降低传输速率;(iii)如果存储装置110处于部分脆弱和较低容量状态,则发送减少总量的数据;(iv)如果存储装置110处于部分脆弱的不可持续只读模式,则以可能的最大速率读取数据,并将数据存储在其他地方,以避免超过保留期限(在这种情况下,主机可以基于将被复制的数据的量和保留期限来计算需要的数据速率);(v)由于从脆弱的存储装置110“读取”的数据是错误的,因此忽略从脆弱的存储装置110“读取”的数据,并且在主机105接收到数据时简单地删除数据,(vi)基于对主机与存储装置110之间的这样的事件的时序进行控制的消息,将读取/写入输入和输出临时地重新路由到正在被电源重启或格式化的完全恢复的存储装置110中的高速缓存。已经使容量减小的部分脆弱的ssd上的fpga可以对进入的数据写入进行过滤,并且仅将该数据的一部分写入存储装置110。在一些情况下,过滤可以包括压缩。这样的fpga可以从主机105接收各种类型的数据(例如,文件类型(诸如,图像、视频、文本或者高优先级或低优先级数据)),并基于存储装置110的状态进行过滤。例如,fpga可以确定高优先级数据不应被写入处于部分脆弱模式的存储装置110。fpga可以将拒绝消息发送到主机105并给出拒绝的原因。可选择地,fpga可以为了对部分恢复较低容量状态存储装置110进行写入而将特定类型的数据(例如,图像数据)滤除。例如,如果存储装置110损失性能(例如,以降低的写入速率操作),则等待时间敏感的读取和写入可以被拒绝。
82.在一些实施例中,如上所述,存储装置110可以以两种只读模式之一操作,这两种只读模式可以被称为“可持续”(或“第一”)只读模式和“不可持续”(或“第二”)只读模式。在不可持续只读模式下,存储装置110可以简单地拒绝存储装置110可以从主机105接收的任何写入命令,并且存储装置110可以进行以下操作:(i)尝试执行针对未到期数据的读取命令或(ii)尝试执行所有读取命令,返回由任何成功的解码尝试产生的数据和如果解码不成功时的错误码(数据项不能被读取的指示(例如,零))。
83.在可持续只读模式下,存储装置110可以能够在存储介质125的保留期限之外服务外部读取请求。如下面所述,尽管存储装置110可以出于内部目的而执行对存储介质125的写入,但是响应于来自主机105的任何写入命令,存储装置110可以除了返回错误消息之外不采取任何动作。为了使数据的保存能够超过保留期限,存储装置110可以分配被称为“救
援空间”的空间,存储装置110将即将到期的数据(例如,具有超过阈值年龄的年龄的数据,阈值年龄取决于存储介质125的保留期限(例如,是存储介质125的保留期限的80%))移动到该空间,使得数据的到期随后被救援空间的保留期限延期。如果救援空间中的数据即将到期,则可以根据需要在救援空间内再次移动它们,以防止数据丢失。在一些实施例中,存储装置110在数据到期之前适当地移动数据,从而利用低负载的时段来例如执行这样的移动。如上所述,可以通过坏块管理保留空间的耗尽来触发到可持续只读模式的转换。在这种情况下,受影响的平面或裸片可以变为只读的,并且一旦存储在受影响的平面或裸片中的所有数据已经被重新定位到救援空间,受影响的平面或裸片就可以从存储装置110的物理地址空间中被排除。
84.存储装置110可以跨整个lba空间对来自主机105的读取命令作出响应。因为存储装置110的物理空间会被减少(例如,因为存储介质125的一部分已经变为只读并且其数据正在被移动(或已经被移动)到救援空间),而装置的逻辑空间不变,所以如果主机105发送在不能被映射到物理块地址(pba)空间的lba空间内的读取命令,则存储装置110可以返回零。
85.救援空间可以从过供应空间(overprovisioning space)中被分配,或者从存储装置110上的任何未使用的空间中被分配。如果io确定性中的集合或分区命名空间中的区域是不可写入的,则一旦所有数据被重新定位,该集合或区域就可以变为只读并且从物理地址空间中被排除。可以使用命名空间动态地创建救援空间。一个或多个命名空间可以用于用户数据,并且附加命名空间可以被创建以用于救援空间。当存储装置110转换到可持续只读模式时,用于用户数据的命名空间中的一个或多个命名空间的大小会被减小,并且用于救援空间的命名空间的大小可以被增大。
86.如果受故障影响(例如,其内的坏块管理保留空间已经被耗尽)的存储介质125的区域的大小超过可用救援空间的大小,则存储装置110可以仅移动将最快到期的数据(例如,最旧的数据),或仅移动被标记为重要或与给定文件类型(例如,图像、视频或文档)相关联的数据,或移动连续类型的数据(例如,与文件相关联的所有数据),并且留下其他数据。被认为重要的文件类型的集合可以是用户可配置的。在采用kv存储装置110的一些实施例中,可以利用键值对数据重要性进行压缩或编码。
87.在一些实施例中,存储装置110可以确定可用救援空间的量小于阈值大小并且因此不足以支持在可持续只读模式下操作,因此,存储装置110可以转换到不可持续只读模式。可以在故障被首次检测到时做出这样的确定,或者可以是这样的:当故障被首次检测到时,存储装置110最初转换到可持续只读模式,并且在一些时间之后,救援空间被消耗(例如,通过存储介质125的故障部分中的数据的持续到期被消耗)到可用救援空间减小到小于阈值大小的程度,然后,存储装置110可以从可持续只读模式转换到不可持续只读模式。在从可持续只读模式转换到不可持续只读模式时,存储装置110可以通知主机105该转换,并且主机105随后可以尝试在数据到期之前将尽可能多的数据从存储装置110复制到另一存储装置。
88.在一些情况下,经过例如一天或一小时的一段时间,数据可能丢失。因此,存储装置110中的fpga可以监测驱动器上的数据的性质(例如,旧的、标记的、连续的或按文件类型的),以便于当存储装置110转换到可持续只读模式时的传输。fpga可以将数据进行排队,或
者按照优先顺序对将被传输到救援空间的数据进行排序,并且当数据被移动到救援空间中时,fpga可以对数据进行压缩。一些实施例可以在例如以太网存储装置或键值(kv)存储装置中实现。
89.图4是根据公开的示例实施例的存储装置110的示意性数据布局图。块寿命表405列出存储装置110中的每个块的保留期限,并且映射表410列出从逻辑块地址到物理块地址的映射。当存储装置110转换到可持续只读模式时,存储装置110将数据从故障已使用空间415(受故障状况影响的物理空间)复制到救援空间420。如果存储装置110处于正常操作模式(而不是处于可持续只读模式),则正常已使用空间425中的数据按原样被处理。因为故障状况导致物理空间的损失,所以在已使用lba空间430的大小上存在对应的减小,且先前可用的lba空间中的一些变成未使用lba空间435。由控制器120执行的固件(或称为f/w)440可以使得数据如上所述地被移动,并且使得表被更新。
90.图5a是根据公开的示例实施例的转换到可持续只读模式的方法的流程图。在505,主机105从存储装置发送/接收数据;在510,主机105确定在存储装置中是否已经发生错误;在515,存储装置110执行内部诊断并转换到可持续只读模式;在520,fpga可以可选地监测存储装置110上的有效数据的性质(例如,基于数据类型或年龄);在525,当数据的年龄接近保留期限时,存储装置110将有效数据重新定位到救援空间;并且在530,存储装置110可以可选地将关于救援空间的状态和内容的信息传输到主机105,主机105对数据进行冲刷。图5b是示出根据公开的示例实施例的用于在可持续只读模式下操作的方法的细节的流程图。该方法包括:在535,由存储装置确定存储装置处于可以通过以第一只读模式操作存储装置能够从其进行部分恢复故障状态;以及,在540,通过确定存储在存储装置的页中的第一数据项的年龄已经超过阈值年龄,并且将第一数据项复制到存储装置中的救援空间中,以第一只读模式操作存储装置。
91.在一些实施例中,如上所述,包括存储装置110的阵列和卷管理器115的raid

0系统可以被构造为适应raid

0系统的任何存储装置110的到只读模式(例如,到可持续只读模式)的转换。在正常操作中,卷管理器115可以负责跨存储装置110的阵列对数据进行条带化,例如,将每个条带的一个条带单元写入存储装置110的阵列中的相应的存储装置110(每个条带由这样的条带单元组成)。在这样的系统中,当存储装置110的阵列中的任何存储装置110转换到只读模式(或“只读状态”)时,raid

0系统转换到(可以被称为“紧急模式”的)操作模式,并且用于存储装置110的阵列的卷管理器115:(i)在剩余的未受影响的存储装置110(仍处于读写状态的存储装置110)中的每个上分配救援空间,以用于来自故障存储装置110的元数据和救援的用户数据,并且(ii)维护映射表(其可以被称为“紧急映射表”)。每个存储装置110上的救援空间可以能够存储n个条带单元,其中,n=r/(条带单元大小),r=c/m,并且c是存储装置110的阵列中的每个存储装置的容量。卷管理器115可以在主机中或在raid

0系统的raid控制器(其可以例如容纳在与主机分开的外壳中)中(例如,以硬件或软件或固件,或者以硬件、软件和固件的组合)实现。在一些实施例中,卷管理器115以fpga实现。raid

0系统可以是自容式的,并且可以将存储装置110的阵列虚拟化,使得从主机的角度来看,raid

0系统像单个存储装置110一样操作。通常,卷管理器可以是(例如,通过合适的软件或固件)被配置为执行在此描述为由卷管理器执行的操作的处理电路(下面进一步详细讨论)。
92.当raid

0系统以紧急模式操作,并且要求将条带写入存储装置110的阵列的写入命令从主机105被接收时,卷管理器115检查紧急映射表以确定条带是否被“注册”(即,是否已经建立用于条带的条目)。如果条目尚未被制作(即,如果条带是“开放映射的”(即,未被注册)),则卷管理器115在紧急映射表中制作条目,以指示通常本应当写入故障存储装置110(已经转换到只读模式的存储装置110)的条带单元将被写入的位置。如果紧急映射表已经包含用于条带的条目,则条目用于确定将通常本应当写入故障存储装置110的条带单元写入何处。在任一种情况下,卷管理器115随后将每个条带单元(如图6a中所示)写入存储装置110的阵列,将通常本应写入故障存储装置110的条带单元605写入另一存储装置110中的救援空间。作为示例,写入救援空间中的条带单元可以被表示为r

条带单元或r

条带单元。
93.当要求从存储装置110的阵列读取条带的读取命令从主机105被接收时,卷管理器115检查紧急映射表以确定是否已经制作用于条带的条目。如果条目尚未被制作,则如图6b中所示,卷管理器115读取条带,就像卷管理器115在普通操作中本应当从存储装置110(包括故障存储装置110)中的每个读取条带单元一样。如果紧急映射表包含用于条带的条目,则条目被用于确定在何处读取通常本应当从故障存储装置110读取的条带单元。
94.通常本应当写入故障存储装置110的条带单元的重新映射可以例如如下地实现。存储装置110的阵列中的每个存储装置110可以具有驱动器标识号(或“驱动器id”),驱动器标识号可以是零与m

1之间的数字,其中,m是存储装置110的阵列中的存储装置110的数量。卷管理器115可以重新分配驱动器标识号(例如,向存储装置110的阵列中的每个存储装置110分配将被用于对注册的条带执行读取操作或写入操作的替代驱动器标识号(对未注册的条带的读取操作可以继续使用原始驱动器标识号))。可以使用以下公式来生成替代驱动器识别号:
95.如果驱动器id<故障驱动器id,
96.新驱动器id=驱动器id
97.否则,
98.新驱动器id=((驱动器id

1) (m

1))mod(m

1)
99.这样做的效果可以是:(i)向具有比故障存储装置的原始驱动器标识号小的标识号的每个存储装置分配相应的原始驱动器标识号,以及(ii)向具有比故障存储装置的原始驱动器标识号大的标识号的每个存储装置分配相应的原始驱动器标识号减去一。其中,mod表示求余运算。
100.利用替代驱动器号,可以使用公式(目标驱动器id=sid%(m

1))来识别本应当写入故障存储装置110的条带单元可以被写入的目标驱动器,其中,目标驱动器id是目标驱动器的替代驱动器识别号,sid是本应当写入故障存储装置110的条带单元的条带单元标识符,并且“%”是模运算符。
101.图6c是根据公开的示例实施例的具有四个存储装置110(即,m=4)的raid

0系统的示意图,其中,驱动器1已经转换到只读模式。在图6c中,c表示存储器存储装置110的阵列的原始物理地址空间的容量。当写入条带1时,通过以下等式隐式地确定目标驱动器id:
102.目标驱动器id=条带单元id%(m

1)=1
103.即,目标驱动器是具有替代驱动器标识号1的存储装置110(即,驱动器2)。在驱动器内,救援空间可以被拆分成其大小与条带单元大小相同的条带单元(称为“救援条带单
元”或“r条带单元”)。紧急映射表可以包含条目(1,0)(其第一元素是条带id(条带单元1),并且其第二元素是目标驱动器上的r条带单元id)(参照图6a)。因此,紧急映射表中的条目(1,0)表示条带单元(1,1)被映射到r

条带单元(1,0)。
104.raid

0系统可以被构造为适应由存储装置110的阵列中的一个或多个存储装置的到可持续只读模式或到不可持续只读模式的转换。在转换到不可持续只读模式的情况下,故障存储装置110的注册条带单元可以永久地写入另一装置的救援空间。在转换到不可持续只读模式的情况下,卷管理器115可以例如以足以在数据到期之前从故障存储装置110移动所有数据的速率,将数据从故障存储装置110迁移到未受影响的存储装置110。服务器可以基于数据的量和到期前剩余的时间来计算该速率。
105.图7a是根据公开的示例实施例的用于操作raid

0系统的方法的流程图。在705,raid

0系统中的存储装置110具有故障并且转换到只读模式;在710,受影响的存储装置110执行内部诊断并确定其恢复状态为部分恢复和只读;在715,卷管理器115确定受影响的存储装置110处于只读模式并且重新分配(“存活的”)未受影响的存储装置的id;在720,卷管理器115接收写入操作,将条目添加到紧急映射表以指示受影响的存储装置的条带单元被重定向到目标(未受影响的)存储装置110,并且基于未受影响的存储装置的新驱动器id来将整个条带单元写入目标(未受影响的)存储装置的救援空间;并且,在725,卷管理器115从主机105接收读取命令,并且在从目标(未受影响的)存储装置的救援空间读取受影响的存储装置的条带单元的同时,从raid系统的存活的未受影响的存储装置110读取条带中的所有条带单元。
106.图7b是示出根据公开的示例实施例的用于操作raid

0存储系统的方法的细节的流程图。该方法包括:在730,确定第一存储装置处于只读状态并且第二存储装置处于读写状态;在735,通过将第一条带的一部分写入第二存储装置并且在映射表中制作用于第一条带的条目,来执行第一条带到存储系统的写入操作;在740,通过从第一存储装置和第二存储装置读取第二条带的一部分来执行从存储系统对第二条带的第一读取操作;以及在745,通过确定映射表包括用于第一条带的条目,并且从第二存储装置读取第一条带的一部分,来执行从存储系统对第一条带的第二读取操作。
107.在此描述的各种元件(诸如,主机105或控制器120)可以为处理电路或可以包含处理电路。术语“处理电路”或“用于处理的装置”在此用于表示用于处理数据或数字信号的硬件、固件和软件的任何组合。处理电路硬件可以包括例如专用集成电路(asic)、通用或专用中央处理器(cpu)、数字信号处理器(dsp)图形处理器(gpu)、可编程逻辑器件(诸如,现场可编程门阵列(fpga))。在处理电路中,如在此所使用,每个功能由被配置(即,硬连线)为执行所述功能的硬件执行,或由被配置为执行存储在非暂时性存储介质中的指令的更通用硬件(诸如,cpu)执行。处理电路可以制造在单个印刷电路板(pcb)上或者分布在多个互连的pcb上。处理电路可以包含其他处理电路;例如,处理电路可以包括在pcb上互连的两个处理电路、fpga和cpu。
108.如在此所使用的,某物的“一部分”表示该物的“至少一些”,并且因此可以表示该物的全部或少于全部。因此,物的“一部分”包括整个物作为特殊情况(即,整个物是物的一部分的示例)。如在此所使用的,术语“或”应解释为“和/或”,使得例如“a或b”表示“a”、“b”以及“a和b”中的任何一个。
109.在本公开部分的背景技术部分中提供的背景技术仅被包括以设置上下文,并且该部分的内容不被承认是现有技术。(例如,在此包括的任何系统图中)描述的任何组件或组件的任何组合可以用于执行在此包括的任何流程图的操作中的一个或多个。此外,(i)操作是示例操作,并且可以涉及未明确覆盖的各种附加步骤,以及(ii)操作的时间顺序可以变化。
110.如在此所使用的,当方法(例如,调整)或第一量(例如,第一变量)被称为“取决于”第二量(例如,第二变量)时,这表示第二量是对方法的输入或影响第一量,例如,第二量可以是对计算第一量的函数的输入(例如,唯一输入或多个输入中的一个输入),或者第一量可以等于第二量,或者第一量可以与第二量相同(以相同的一个或多个位置存储在存储器中)。
111.将理解的是,尽管在此可以使用术语“第一”、“第二”、“第三”等来描述各种元件、组件、区域、层和/或部分,但是这些元件、组件、区域、层和/或部分不应受这些术语的限制。这些术语仅被用于将一个元件、组件、区域、层或部分与另一元件、组件、区域、层或部分区分开。因此,在不脱离发明构思的精神和范围的情况下,在此讨论的第一元件、组件、区域、层或部分可以被称为第二元件、组件、区域、层或部分。
112.为了易于描述,在此可以使用空间相对术语(诸如,“在
……
之下”、“下方”、“下”、“下面”、“上方”、“上”等),以描述如附图中示出的一个元件或特征与另外的(一个或多个)元件或特征的关系。将理解的是,除了附图中描绘的方位之外,这样的空间相对术语意图涵盖装置在使用或操作中的不同方位。例如,如果附图中的装置被翻转,则被描述为“在”其他元件或特征“下方”或“之下”或“下面”的元件将随后被定向为“在”所述其他元件或特征“上方”。因此,示例术语“下方”和“下面”可以涵盖上方和下方的方位二者。装置可以被另外定向(例如,旋转90度或处于其他方位),并且在此使用的空间相对描述语应相应地解释。另外,还将理解的是,当层被称为“在”两个层“之间”时,该层可以是所述两个层之间的唯一层,或者也可以存在一个或多个中间层。
113.在此使用的术语仅用于描述特定实施例的目的,并不意图限制发明构思。如在此所使用的,术语“基本上”、“约”和类似术语被用作近似术语而不是程度术语,并且意图考虑本领域普通技术人员将认识到的测量值或计算值的固有偏差。
114.如在此所使用的,除非上下文另外清楚地指示,否则单数形式意图也包括复数形式。还将理解的是,术语“包括”和/或“包含”当在本说明书中使用时,说明存在所陈述的特征、整体、步骤、操作、元件和/或组件,但不排除存在或添加一个或多个其他特征、整体、步骤、操作、元件、组件和/或它们的组。如在此所使用的,术语“和/或”包括相关所列项中的一个或多个的任何组合和所有组合。诸如
“……
中的至少一个(者/种)”的表述在一列元素(元件)之后时,修饰整个元素(元件)列表,而不修饰列表的单个元素(元件)。此外,在描述发明构思的实施例时使用“可以”表示“本公开的一个或多个实施例”。此外,术语“示例性”意图表示示例或说明。如在此所使用的,术语“使用”及其变型可以被认为分别与术语“利用”及其变型同义。
115.将理解的是,当元件或层被称为“在”另一元件或层“上”、“连接到”、“结合到”或“相邻于”另一元件或层时,该元件或层可以直接在所述另一元件或层上、连接到、结合到或相邻于所述另一元件或层,或者可以存在一个或多个中间元件或中间层。相反,当元件或层
被称为“直接在”另一元件或层“上”、“直接连接到”、“直接结合到”或“紧邻”另一元件或层时,不存在中间元件或层。
116.在此叙述的任何数值范围意图包括包含在叙述的范围内的相同数值精度的所有子范围。例如,“1.0至10.0”或“1.0与10.0之间”的范围意图包括所叙述的最小值1.0与所叙述的最大值10.0之间(并且包括所叙述的最小值1.0和所叙述的最大值10.0)(即,具有等于或大于1.0的最小值且等于或小于10.0的最大值)的所有子范围(诸如,以2.4至7.6为例)。在此叙述的任何最大数值限度意图包括在其中包含的所有较低数值限度,并且本说明书中所叙述的任何最小数值限度意图包括在其中包含的所有较高数值限度。
117.本公开的一些原理涉及在存储装置发生故障的情况下可以继续在一个或多个故障恢复(fr)模式下进行操作的存储装置。例如,存储装置可以继续以受限制的方式进行操作,该受限制的方式可以使存储系统能够从存储装置的故障中快速和/或有效地恢复。
118.在一些实施例中,在一个或多个故障恢复模式下操作的存储装置可以例如通过在只读模式下操作而具有至少部分读取能力。
119.在一些实施例中,具有带有至少部分读取能力的一个或多个故障恢复模式的存储装置可以用于实现针对存储装置的组的恢复方案,其中,一个或多个奇偶校验空间可以用作用于重建操作的救援空间以从故障存储装置恢复信息。例如,存储装置的组可以被配置为冗余阵列,冗余阵列可以表现为单个(在一些情况下更多的)虚拟存储装置。在具有带有至少部分读取能力的故障恢复模式的第一存储装置的故障的情况下,冗余阵列可以实现重建操作,其中,来自故障存储装置的数据可以通过将数据从第一存储装置复制到第二存储装置的奇偶校验空间而在第二存储装置的奇偶校验空间中被预重建。
120.在一些实施例中,存储装置的组可以在第二存储装置的奇偶校验空间的至少一部分作为对故障存储装置的至少一部分的替换而操作的情况下继续无限期地操作。在这样的实施例中,可以不针对可以被第二存储装置的奇偶校验空间的部分替换的第一存储装置的部分实现奇偶校验。
121.在一些实施例中,重建操作可以通过将预重建数据中的一些或全部从第二存储装置的奇偶校验空间复制到替换存储装置来继续。然后,存储装置的组可以(例如,利用针对从故障存储装置恢复的数据而计算的奇偶校验信息)返回到正常操作。
122.在一些实施例中,存储系统可以继续从故障存储装置的读取操作,同时将数据从故障存储装置预重建到第二存储装置的奇偶校验空间。如果读取操作尝试在重建操作期间从故障存储装置读取数据,则根据重建点,数据可以从故障存储装置和/或从第二存储装置的奇偶校验空间中的对应的位置被直接读取。
123.在一些实施例中,存储系统可以继续意图针对故障存储装置的写入操作,同时将数据从故障存储装置预重建到第二存储装置的奇偶校验空间。如果写入操作尝试在重建操作期间将数据写入故障存储装置,则写入数据可以替代地被写入第二存储装置的奇偶校验空间中的对应的位置。
124.根据实现细节,这些特征中的一个或多个可以减少i/o操作、奇偶校验计算等,并且可以使存储系统能够快速恢复数据(例如,在无需奇偶校验计算和/或同步的情况下快速恢复数据)。
125.在此公开的原理具有独立的实用性并且可以被单独地实现,并且不是每个实施例
都可以利用每个原理。然而,这些原理也可以以各种组合来实现,这些原理中一些组合可以以协同的方式放大各个原理的益处。
126.在一些实施例中,存储系统可以实现可以表现为虚拟存储装置的独立驱动器冗余阵列(redundant array of independent drives,raid)。raid存储系统的一些实施例可以包括奇偶校验信息,该奇偶校验信息可以用于从故障驱动器重建数据。
127.图8示出了根据公开的示例实施例的用于raid

4存储系统的映射方案的实施例。在一些实施例中,驱动器可以被划分为被称为盘区(extent)的数据存储空间的连续区域。在一些实施例中,盘区可以包括整个驱动器。因此,在一些实施例中,并且在本公开中,除非从上下文中另外清楚,否则术语“盘区”可以与驱动器或存储装置互换使用。每个驱动器可以包括一个或多个条带单元,所述一个或多个条带可以共同形成可以具有跨越多个驱动器的条带长度的条带。每个条带单元还可以被划分为一个或多个数据块。由于奇偶校验块可以全部存储在单个驱动器上(例如,全部存储在在盘区0中),因此该示例可以被称为具有非旋转奇偶校验。
128.在单个驱动器故障的情况下,可以通过来自其他健康的驱动器的对应的奇偶校验块和剩余的数据块的异或操作来恢复来自故障驱动器的数据块。可选择地,如果故障驱动器包含奇偶校验块,则可以通过对来自其他健康的驱动器的数据块进行异或操作来重新计算奇偶校验块。
129.图9示出了根据公开的示例实施例的用于raid

5存储系统的映射方案的实施例。图9中示出的实施例可以类似于图8中示出的实施例,但是图9中示出的实施例可以具有旋转奇偶校验,其中,具有奇偶校验块的条带单元可以旋转到用于不同条带的不同驱动器。
130.图10a示出了根据公开的示例实施例的用于包括至少一个故障恢复存储装置的冗余阵列存储系统的映射方案的实施例。图10a中示出的实施例可以包括被配置为冗余阵列1000的第一存储装置1002和第二存储装置1004。冗余阵列1000可以被配置为使用任何类型的映射方案1010(例如,包括可以用于从故障存储装置重建信息的奇偶校验信息的映射方案)将虚拟存储空间1008映射到第一存储装置1002和第二存储装置1004。
131.第一存储装置1002和第二存储装置1004可以分别包括信息块1012和1014,信息块1012和1014中的一个或多个可以被实现为可以被映射到虚拟存储空间1008中的对应的数据块1018的数据块。信息块1012和1014中的一个或多个可以被实现为奇偶校验块,奇偶校验块可以用于恢复可以被实现为数据块的信息块1012和1014中的一个或多个。
132.如图10a中的省略号所示,一些实施例还可以包括被配置为冗余阵列1000的部分的直至100n的一个或多个附加的存储装置。作为示例,存储装置100n可以包括一个或多个信息块101n。
133.第一存储装置1002和第二存储装置1004中的至少一个可以被实现为故障恢复存储装置,故障恢复存储装置可以能够在一个或多个故障恢复模式下进行操作,其中,如下面更详细描述的,在所述一个或多个故障恢复模式下,尽管遇到故障状况,但是存储装置可以继续进行操作并保留至少部分读取能力。例如,在一些实施例中,故障恢复存储装置可以以只读模式操作。
134.对具有带有至少部分读取能力的故障恢复模式的存储装置的包括可以使得图10a中示出的实施例能够实现恢复方案,其中,存储系统可以继续从故障存储装置读取,同时将
数据从故障存储装置重建或预重建到健康的存储装置上的奇偶校验空间中。在一些实施例中,如图10b中所示,在预重建操作之后,可以用替换存储装置1004a替换故障存储装置,并且可以通过将预重建数据从奇偶校验空间复制到替换存储装置1004a中的一个或多个信息块1014a来继续重建操作。
135.根据实现细节,这些特征可以提供任何数量的益处(例如,减少i/o操作、等待时间、数据传输和/或奇偶校验计算的功耗、同步等)。这些特征还可以例如通过释放可能被用于其他操作的i/o带宽来增大系统吞吐量。
136.图10a和图10b中示出的实施例可以用于实现raid存储系统(诸如,raid

4系统或raid

5系统),但是在此关于图10a和图10b描述的原理不限于raid存储系统,并且可以被应用于具有被配置为具备至少一个存储装置的冗余阵列的存储装置的组的任何存储系统,尽管遇到故障状况,但是所述至少一个存储装置可以继续操作并保留至少部分读取能力。此外,尽管图10a和图10b中示出的实施例可以用存储装置1002、1004和1004a来实现,但是这些原理也可以被应用于可以用于实现冗余阵列存储系统的盘区和/或任何其他信息单元。因此,在一些实施例中,存储装置可以指存储装置(或存储装置的一部分)的盘区和/或任何其他信息单元。
137.图11示出了根据公开的示例实施例的冗余阵列存储系统的示例实施例。图11中示出的实施例可以用于例如实现图10a和图10b中示出的实施例和/或在此公开的任何其他实施例。
138.图11中示出的实施例可以包括存储阵列控制器1115以及一个或多个存储装置1110。在一些实施例中,存储阵列控制器1115可从主机1105接收读取请求和/或写入请求以及相关联的数据。每个存储装置1110可以包括存储控制器1120(其也可以被称为控制电路)和存储介质1125。在一些实施例中,存储装置1110可能遇到内部故障状况,并且如下面进一步详细讨论的,存储装置可以表现出各种故障恢复行为,以减轻故障状况的系统级影响。
139.存储阵列控制器1115可以包括被配置为实现信息恢复处理、信息重建操作、读取操作、写入操作、奇偶校验计算和在此公开的任何其他技术中的至少任何一者的逻辑1116。
140.一个或多个存储装置1110可以用任何类型的存储设备和相关联的存储介质(包括固态驱动器(ssd)、硬盘驱动器(hdd)、光学驱动器、基于任何类型的永久性存储器(诸如,具有体电阻变化的交叉网格非易失性存储器)的驱动器等和/或他们的任何组合)来实现。每个存储装置中的数据可以被布置为块、键值结构等和/或它们的任何组合。每个存储装置1110可以具有任何形状因子(诸如,3.5英寸、2.5英寸、1.8英寸、m.2、mo

297、mo

300、企业和数据中心ssd形状因子(edsff)等),每个存储装置1110使用任何连接器配置(诸如,串行ata(sata)、小型计算机系统接口(scsi)、串行连接scsi(sas)、u.2等),并且使用任何存储接口和/或协议(诸如,外围组件互连(pci)、pci快速(pcie)、非易失性存储器快速(nvme)、基于光纤的nvme(nvme

of)、以太网、无限带宽(infiniband)、光纤通道等)。一些实施例可以完全或部分地利用服务器机箱、服务器机架、数据房间(dataroom)、数据中心、边缘数据中心、移动边缘数据中心和/或它们的任何组合等来实现和/或与服务器机箱、服务器机架、数据房间(dataroom)、数据中心、边缘数据中心、移动边缘数据中心和/或它们的任何组合等结合使用。
141.下面描述的实施例中的存储控制器1120、存储阵列控制器1115、逻辑1116、奇偶校
验逻辑等中的任何一个可以用硬件、软件或它们的任何组合来实现,所述硬件、软件或它们的任何组合包括执行存储在易失性存储器(诸如,动态随机存取存储器(dram)和/或静态随机存取存储器(sram))、非易失性存储器(诸如,闪存)等中的指令的组合逻辑、顺序逻辑、一个或多个计时器、计数器、寄存器、状态机、复杂可编程逻辑器件(cpld)、现场可编程门阵列(fpga)、专用集成电路(asic)、复杂指令集计算机(cisc)处理器(诸如,x86处理器)和/或精简指令集计算机(risc)处理器等、以及图形处理器(gpu)、神经处理器(npu)等。
142.尽管发明原理不限于任何特定的实现细节,但是出于说明的目的,在一些实施例中,每个存储装置1110可以被实现为其中存储介质1125可以例如利用与非(nand)闪存被实现的ssd,并且每个存储控制器1120可以实现同对包括闪存转换层(ftl)、存储接口以及与实现在此公开的故障恢复特征相关联的任何功能的ssd进行操作相关的任何功能。存储装置1110中的最小可擦除单元可以被称为块,并且存储装置1110中的最小可写入单元可以被称为页。
143.存储介质1125可以具有保留期限(保留期限可以取决于存储介质1125的使用历史,并且因此可以在存储介质1125内变化)。已经存储比保留期限长的数据(即,具有超过保留期限的年龄的数据)可能变得不可靠,并且可以称为已经过期。可以使用纠错码(其可以是例如块码)将数据存储在存储介质1125中。当从存储介质1125读取数据时,可以从存储介质1125读取一定量的原始数据(被称为码块),并且可以尝试对该一定量的原始数据进行解码。如果尝试失败,则可以进行附加的尝试(例如,读取重试)。随着使用,存储介质1125的一部分(例如,块)可能劣化到保留期限变得不可接受地短的程度,并且该块可以被分类为坏块。为了避免允许这种情况使整个存储介质1125不可操作,被称为坏块管理保留空间的保留空间可以存在(例如,被包括在每个闪存裸片中或每个闪存平面中的),并且存储控制器1120或者闪存裸片或闪存平面内部的另外的控制器可以开始使用保留空间中的块并停止使用坏块。
144.关于图10a、图10b和图11中示出的实施例以及在此描述的所有其他实施例描述的操作和/或组件是示例操作和/或组件。在一些实施例中,一些操作和/或组件可以被省略,以及/或者其他操作和/或组件可以被包括。此外,在一些实施例中,操作和/或组件的时间顺序和/或空间顺序可以变化。尽管一些组件可以被示出为单独的组件,但是在一些实施例中,单独示出的一些组件可以集成到单个组件中,和/或示出为单个组件的一些组件可以用多个组件来实现。
145.出于说明的目的,下面可以在raid

5存储系统的上下文中描述系统、装置和/或操作的一些示例实施例。然而,原理不限于raid

5系统,并且可以被应用于其他类型的raid系统(例如,raid

4)以及其他非raid类型的冗余阵列系统,在所述其他非raid类型的冗余阵列系统中,存储装置的组可以被配置为提供一定量的冗余,而不管条带化、数据重启和/或继续、旋转和/或非旋转奇偶校验等。此外,尽管可以在完整的存储装置的上下文中示出一些实施例,但是原理可以被应用于存储装置的任何部分(包括可以用于实现存储阵列的盘区和/或任何其他信息单元)。
146.图12a示出了没有故障恢复存储装置的raid

5存储系统的示例实施例。在图12a中示出的实施例中,冗余阵列可以包括健康的存储装置1202、1204、1206、1208和1210,健康的存储装置1202、1204、1206、1208和1210可以分别被指定为装置0(dev 0)、装置1(dev 1)、装
置2(dev 2)、装置3(dev 3)和装置4(dev 4)。
147.存储装置1202、1204、1206、1208和1210中的前四个块可以共同形成第一条带(条带0)。在条带0内,dev 0中的前四个块可以包含奇偶校验信息(例如,这些块可以被称为奇偶校验块),而dev 1至dev 4中的前四个块可以包含存储数据(例如,这些块可以被称为数据块)。
148.存储装置1202、1204、1206、1208和1210中的接下来的四个块可以共同形成第二条带(条带1)。在条带1内,dev 1中的接下来的四个块可以是奇偶校验块,而dev 0和dev 2至dev 4中的接下来的四个块可以是数据块。在存储装置1202、1204、1206、1208和1210的底部示出的块以及由省略号指示的附加块可以共同形成附加条带。
149.图12b示出了图12a的利用替换存储装置执行重建操作的实施例。在图12b中示出的实施例中,存储装置1204(dev 1)可能已经发生故障并且被替换存储装置1204a替换。为了在替换存储装置1204a上重建来自故障的存储装置1204的数据块b0,系统可以分别从健康的存储装置1202、1206、1208和1210读取奇偶校验块p(0,0,0)以及数据块b4、b8和b12,并且通过使用奇偶校验逻辑1214对奇偶校验块p(0,0,0)以及数据块b4、b8和b12执行逻辑异或(xor)运算来恢复数据块b0。然后,可以将恢复的数据块b0写入替换存储装置1204a。可以以类似的方式恢复第一条带中的剩余的数据块b1、b2和b3。
150.然后,系统可以继续下一个条带,并通过分别从健康的存储装置1202、1206、1208和1210读取数据块b16、b20、b24和b28,并使用奇偶校验逻辑1214对这些数据块执行xor运算来恢复奇偶校验块p(0,1,1)。然后,可以将恢复的奇偶校验块p(0,1,1)写入替换存储装置1204a。系统可以继续通过第二条带的剩余部分和任何附加条带,以在替换存储装置1204a上重建来自故障的存储装置1204的剩余数据。
151.如图12b中所示,在一些实施例中,从故障存储装置恢复数据的块可以涉及从多个存储装置(在该示例中为四个)读取数据和/或奇偶校验块,这会增加i/o操作、等待时间、用于数据传输和/或奇偶校验计算的功耗等,并且还会减少系统吞吐量(例如,因使用可以另外由其他i/o操作使用的i/o带宽)。
152.图13a和13b示出了根据公开的示例实施例的利用故障恢复存储装置执行重建操作的raid

5存储系统的示例实施例。图13a中示出的实施例可以包括与图12a中示出的实施例中的组件类似的组件,然而,存储装置1304可以用根据公开的示例实施例的能够在具有至少部分读取能力的故障恢复模式下操作的故障恢复存储装置来实现。
153.在图13a中示出的示例实施例中,存储装置1304可能遇到故障(由阴影指示),该故障可以导致存储装置1304(例如,通过以如下面参照图23所述的故障恢复模式fr_mode_capacity_read_only、fr_mode_performance、fr_mode_read_only和fr_mode_temp_read_only中的一个或多个进行操作)在只读模式下操作。
154.因为故障存储装置1304可以以只读模式操作,所以图13a中示出的系统可以通过将第一条带中的数据块b0、b1、b2和b3从故障存储装置1304复制到健康的存储装置1302上的奇偶校验空间来执行预重建操作。预重建操作还可以将第三条带中以b36开始的数据块复制到健康的存储装置1306上的奇偶校验空间。任何附加条带中的数据块可以被复制到任何健康的存储装置上的其他奇偶校验空间。
155.在一些实施例中,在将数据中的一些或全部从故障存储装置1304复制到健康的存
储装置上的奇偶校验空间之后,系统可以(例如,通过在没有奇偶校验信息的情况下操作而)在不替换故障存储装置1304的情况下无限期地或临时地操作。在这样的实施例中,系统可以基本上以raid

0配置操作。因此,根据实现细节,将故障恢复存储装置1304和奇偶校验空间用于重建操作可以使得存储系统能够在存储装置故障之后快速返回到操作。在一些实施例中,可以以可提高效率的批处理模式将数据从故障存储装置1304复制到健康的存储装置的奇偶校验空间。
156.在一些实施例中,在将数据中的一些或全部从故障存储装置1304复制到健康的存储装置上的奇偶校验空间之后,故障存储装置1304可以被如由图13b中的虚线轮廓示出的健康的替换存储装置1304a替换。然后,如图13b中所示,系统可以通过将预重建数据(例如,b0、b1、b2、b3、b36等)从健康的存储装置中的奇偶校验空间复制到替换存储装置1304a来继续数据重建操作。在一些实施例中,可以以可提高效率的批处理模式将预重建数据从健康的存储装置复制到替换存储装置1304a。
157.为了返回到raid

5操作,系统可以执行奇偶校验计算以在替换存储装置1304a中重建奇偶校验块(例如,第一条带中的p(0,1,1)、p(1,1,1)、p(2,1,1)和p(3,1,1))。奇偶校验计算可以根据公开的示例实施例以各种方式被执行。例如,在一些实施例中,可以在每个数据块被复制时对每个数据块执行一些或全部奇偶校验计算。可选择地或附加地,可以在复制操作被完成之后执行一些或全部奇偶校验计算。在一些实施例中,一些或全部奇偶校验计算可以(例如,由存储服务器)以集中的方式执行。可选择地或附加地,例如,如果存储装置具有对等(peer

to

peer,p2p)通信和/或奇偶校验计算能力,则一些或全部奇偶校验计算可以由各个存储装置以分布的方式被执行。
158.图13c示出了根据公开的示例实施例的在用替换存储装置来替换遇到故障状况的故障恢复存储装置之后执行重建操作的raid

5存储系统的另一示例实施例。图13c中示出的实施例可以包括与图12b中示出的实施例中的组件类似的组件,然而,由替换存储装置1304a替换的故障存储装置可以已经是根据公开的示例实施例的能够在具有至少部分读取能力的故障恢复模式下进行操作的故障恢复存储装置。
159.在替换之前,数据块b0和b1可以已经通过将数据块b0和b1从(例如,以只读模式操作的)故障恢复存储装置复制到健康的存储装置1302中的奇偶校验空间而被预重建。在故障恢复存储装置遇到故障状况之后的某个时刻,如以下关于图21所述,通过将更新的数据块b0'写入健康的存储装置1302中的奇偶校验空间中的对应的位置,数据块b0可以在写入操作期间已经被更新为数据块b0'。
160.在用替换存储装置1304a替换有故障的故障恢复存储装置之后,重建操作可以通过将更新的数据块b0'复制到替换存储装置1304a来继续,如图13c中所示。在一些实施例中,奇偶校验逻辑1314可以对更新的数据块b0'以及可分别从健康的存储装置1306、1308和1310读取的数据块b4、b8和b12执行奇偶校验计算,以生成可以被写入健康的存储装置1302的更新的奇偶校验块p'(0,0,0)。
161.图14和图15示出了根据公开的示例实施例的在单个存储装置发生故障的情况下由没有故障恢复存储装置的raid

5存储系统执行的读取操作的一些示例实施例。图14和图15中示出的实施例可以包括与图12a中示出的实施例中的组件类似的组件。在图14和图15中示出的实施例中,存储装置1404和1504可能遇到可能使它们不能执行读取操作的故障状
况。在图14中,raid

5存储系统还可以包括健康的存储装置1402、1406、1408和1410。
162.在图14中示出的实施例中,由于数据块b4可以位于健康的存储装置1406上,因此数据块b4可以在不执行恢复操作的情况下被读取。
163.在图15中示出的实施例中,数据块b0可能位于故障存储装置1504上。因此,为了读取数据块b0,奇偶校验块p(0,0,0)以及数据块b4、b8和b12可以分别从健康的存储装置1502、1506、1508和1510被读取,并由奇偶校验逻辑1514处理以恢复数据块b0。因此,从故障存储装置恢复数据的块可能涉及从多个存储装置(在该示例中为四个)读取数据和/或奇偶校验块,这会增加i/o操作、等待时间、用于数据传输和/或奇偶校验计算的功耗等,并且还会减少系统吞吐量(例如,因使用可以另外由其他i/o操作使用的i/o带宽)。
164.图16和图17示出了根据公开的示例实施例的在重建操作期间由具有故障恢复存储装置的raid

5存储系统执行的读取操作的示例实施例。图16和图17中示出的存储系统的实施例可以包括与图12a中示出的实施例中的组件类似的组件,然而,故障存储装置1604和1704可以用根据公开的示例实施例的能够在具有至少部分读取能力的故障恢复模式下进行操作的存储装置来实现。在图16和图17中,健康的存储装置1602、1606、1608、1610、1702、1706、1708和1710可以进一步被包括在相应的raid

5存储系统中。
165.在图16和图17中示出的示例实施例中,故障存储装置1604和1704可以(例如,通过以如下面参照图23所述的故障恢复模式fr_mode_capacity_read_only、fr_mode_performance、fr_mode_read_only和fr_mode_temp_read_only中的一个或多个进行操作来)以只读模式进行操作。
166.在图16和图17中示出的实施例中,随着预重建点向下发展,系统可以处于这样的过程:通过分别将来自故障存储装置1604和1704的数据复制到健康的存储装置1602和1702的奇偶校验空间,对来自故障存储装置1604和1704的数据进行预重建。如果将被读取的数据块位于健康的存储装置上,则将被读取的数据的块可以以与图14中示出的方式类似的方式被读取。然而,如果将被读取的数据块位于故障存储装置1604和1704上,则根据实现细节,如图16和图17中所示,将被读取的数据块可以在没有奇偶校验计算和/或同步的情况下被快速恢复。
167.在图16中示出的实施例中,将被读取的数据块(例如,数据块b0)可以位于奇偶校验空间的可以已经被预重建的一部分中。因此,将被读取的数据块可以从健康的存储装置1602的奇偶校验空间中的对应的位置被读取。
168.在图17中示出的实施例中,数据块b2可能位于故障存储装置1704的可能尚未在健康的存储装置1702的奇偶校验空间中预重建的部分中。然而,因为故障存储装置1704可能能够以只读模式进行操作,所以数据块b2可以从故障存储装置1704被直接读取。
169.数据块b3也可能位于故障存储装置1704的可能尚未在健康的存储装置1702的奇偶校验空间中预重建的部分中。然而,数据块b3可能已经通过写入操作(诸如,下面关于图21描述的写入操作)被更新为健康的存储装置1702的奇偶校验空间中的对应的位置处的数据块b3'。因此,可以从健康的存储装置1702读取更新的数据块b3'。
170.在一些实施例中,根据实现细节,图16和图17中示出的实施例可以减少i/o操作、等待时间、用于数据传输和/或奇偶校验计算的功耗、同步等,并且还可以增大系统吞吐量(例如,因释放可用于其他i/o操作的i/o带宽)。
171.图18和19示出了根据公开的示例实施例的由没有故障恢复存储装置的raid

5存储系统执行的写入操作的示例实施例。图18和图19中示出的实施例可以包括与图12a中示出的实施例中的组件类似的组件。在图18和图19中示出的实施例中,存储装置1804和1904可能遇到可能使存储装置1804和1904不能执行读取操作或写入操作的故障状况。在图18和图19中,健康的存储装置1802、1806、1808、1810、1902、1906、1908和1910可以进一步被包括在相应的raid

5存储系统中。
172.图18示出了根据公开的示例实施例的将更新的数据块b4'写入健康的存储装置1806的操作。因为原始数据块b4和对应的奇偶校验块p(0,0,0)都不位于故障存储装置1804上,所以更新的数据块b4'可以被写入存储装置1806。可以通过读取原始奇偶校验块p(0,0,0),并使用奇偶校验逻辑1814而利用更新的数据块b4'和从存储装置1806读取的原始数据块b4对原始奇偶校验块p(0,0,0)执行奇偶校验计算,来计算对应的更新的奇偶校验块p'(0,0,0)。然后,可以将更新的奇偶校验块p'(0,0,0)写入健康的存储装置1802。
173.图19示出了根据公开的示例实施例的写入操作的示例实施例,其中,数据块或对应的奇偶校验块位于故障存储装置1904上。在写入更新的数据块b16'的情况下,对应的奇偶校验块p(0,1,1)位于故障存储装置1904上。因此,更新的数据块b16'可以被写入健康的存储装置1902,而无需计算用于条带的奇偶校验或读取任何其他数据块。
174.在写入更新的数据块b0'的情况下,可以通过从健康的存储装置1902读取原始奇偶校验块p(0,0,0)并分别从健康的存储装置1906、1908和1910读取数据块b4、b8和b12,并且用奇偶校验逻辑1914处理原始奇偶校验块p(0,0,0)以及数据块b4、b8和b12,来恢复原始数据块b0。然后,可以使用更新的数据块b0'来计算更新的奇偶校验块p'(0,0,0)并将更新的奇偶校验块p'(0,0,0)写入健康的存储装置1902。尽管更新的数据块b0'可以不被写入故障存储装置1904,但是更新的数据块b0'可以通过读取更新的奇偶校验块p'(0,0,0)以及数据块b4、b8和b12并对更新的奇偶校验块p'(0,0,0)以及数据块b4、b8和b12执行奇偶校验计算而在将来的读取操作中被恢复。
175.在图19中示出的实施例中,缺乏从故障存储装置1904读取信息的能力会增加i/o操作、等待时间、用于数据传输和/或奇偶校验计算的功耗等,并且还会减少系统吞吐量(例如,因使用可以另外由其他i/o操作使用的i/o带宽)。
176.图20和图21示出了根据公开的示例实施例的可以由具有故障恢复存储装置的raid

5存储系统执行的写入操作的示例实施例。图20和图21中示出的存储系统的实施例可以包括与图16中示出的实施例中的组件类似的组件,其中,故障存储装置2004和2104可以用根据公开的示例实施例的能够在具有至少部分读取能力的故障恢复模式下进行操作的存储装置来实现。在图20和图21中示出的示例实施例中,故障存储装置2004和2104可以(例如,通过在如下面参照图23所述的故障恢复模式fr_mode_capacity_read_only、fr_mode_performance、fr_mode_read_only和fr_mode_temp_read_only中的一个或多个下操作来)以只读模式进行操作。在图20和图21中,健康的存储装置2002、2004、2008、2010、2102、2106、2108和2110可以被进一步包括在相应的raid

5存储装置中。
177.在图20和图21中示出的实施例中,数据可以例如在后台操作下分别从故障存储装置2004和2104被复制到健康的存储装置2002和2102上的对应的奇偶校验空间。在将数据从故障存储装置2004或2104复制到对应的奇偶校验空间之前、期间或之后的任何时间,系统
可以以与raid

0系统的方式类似的方式无限期地或临时地进行操作而无需奇偶校验。
178.图20示出了根据公开的示例实施例的写入操作可能涉及健康的存储装置上的数据块的实施例。在这种情况下,更新的数据块b4'可以在不计算奇偶校验的情况下被写入健康的存储装置2006。在一些实施例中,系统还可以主动地将数据块b0从故障存储装置2004复制到健康的存储装置2002的奇偶校验空间中的对应的位置。这可以使得系统能够针对条带的该部分而在没有奇偶校验的情况下(例如,以类似于raid

0系统的方式)进行操作。可选择地,系统可以推迟将数据块b0从故障存储装置2004复制到健康的存储装置2002的奇偶校验空间中的对应的位置,直到预重建处理开始为止。
179.图21示出了根据公开的示例实施例的写入操作的实施例,其中,更新的写入数据或对应的奇偶校验块可以位于故障存储装置2104上,并且预重建处理尚未开始。更新的数据块b16'可以在不计算奇偶校验的情况下被写入更新的数据块b16'在健康的存储装置2102上的正常位置。更新的数据块b0'可以被写入健康的存储装置2102上的奇偶校验空间中的对应的位置,同样无需计算奇偶校验。这可以使得系统能够针对条带的那些部分而在没有奇偶校验的情况下(例如,以类似于raid

0系统的方式)进行操作。
180.根据实现细节,图20和图21中示出的实施例可以减少i/o操作、等待时间、用于数据传输和/或奇偶校验计算的功耗、同步等,并且还可以例如通过释放可以由其他处理使用的i/o带宽来增大系统吞吐量。
181.图22示出了根据公开的示例实施例的用于操作存储阵列的方法的实施例。该方法可以在操作2202开始。在操作2204,该方法可以将第一存储装置和第二存储装置作为冗余阵列操作,冗余阵列被配置为使用奇偶校验信息来从故障存储装置恢复信息。在操作2206,该方法可以基于第一存储装置的故障状况,以具有至少部分读取能力的故障恢复模式对第一存储装置进行操作。在操作2208,该方法可以在第二存储装置的奇偶校验空间中重建来自第一存储装置的信息。该方法可以在操作2210结束。
182.关于图22中示出的实施例以及在此描述的所有其他实施例描述的操作和/或组件是示例操作和/或组件。在一些实施例中,一些操作和/或组件可以被省略,以及/或者其他操作和/或组件可以被包括。此外,在一些实施例中,操作和/或组件的时间顺序和/或空间顺序可以变化。尽管一些组件可以被示出为单独的组件,但是在一些实施例中,单独示出的一些组件可以集成到单个组件中,和/或示出为单个组件的一些组件可以用多个组件来实现。
183.在一些实施例中,lba空间类型可以用于例如实现故障恢复模式的一些实施例。图23示出了根据公开的示例实施例的可以由存储装置实现的故障恢复模式和相关联的lba空间类型的一些示例实施例的表。根据公开的示例实施例,图23中示出的表的模式列可以包括故障恢复模式编号和名称,故障恢复模式编号和名称可以用于例如在应用编程接口(api)中标识模式,存储装置的一个或多个特征可以通过应用编程接口(api)被访问。在图23中示出的表中标记为p、up、ro、vro和ia的列可以分别指示可以在对应的模式下使用的执行(p)lba空间、执行不佳(up)lba空间、只读(ro)lba空间、易失性只读(vro)lba空间和不可访问(ia)lba空间的量。
184.在一些实施例中,图23中示出的模式可以例如由主机通过api调用。在一些实施例中,主机可以使用如下所述的获得特征命令来查询存储装置。在一些实施方式中,用星号
(*)标识的模式可以响应于获得特征命令而将关于由模式使用的每种类型的lba空间的详细信息提供到主机。在一些实施方式中,关于由其他命令使用的lba空间的信息可为隐式的。例如,在电源重启模式(模式1)下,所有存储器可以是执行(p)类型。然而,在一些实施例中,lba空间类型的其他组合和/或lba空间类型的部分可以被使用。
185.在一些实施例中,存储装置可以实现任何数量的以下故障恢复模式。例如,装置制造商可以在不同产品中实现这些故障恢复模式和其他故障恢复模式的不同组合。
186.电源重启模式(模式1,fr_mode_power_cycle)可以涉及基于对存储装置进行电源重启的自修复。例如,存储装置可能基于存储器(诸如,sram或dram)中的一个或多个反转位而遇到故障状况。反转位可以例如由归因于可能干扰存储器单元的天线或高于海平面的高海拔的老化、加热和/或辐射引起。具有故障恢复电源重启模式的存储装置可以具有自修复能力,使得对存储装置进行电源重启(例如,移除电力然后重新施加电力)可以重置当前状态并将故障的ssd恢复到正常状态。在这种情况下,提交队列中的一个或多个飞行中(inflight)命令可能丢失。存储装置的用户数据是否保持有效可以取决于实现细节(诸如,装置的分区、存储控制器的不同电路被重置的盘区等)。在一些实施例中,在电源重启模式下,存储装置的整个存储空间(百分之100(100%))可以正常操作(例如,作为执行(p)空间正常操作)。
187.重新格式化模式(模式2,fr_mode_reformat)可以涉及基于对存储装置的全部或一部分进行格式化的自修复。在一些实施例中,对存储装置进行格式化可以重置存储装置的当前状态并将故障的存储装置恢复到其正常状态。然而,根据实现细节(例如,快速格式化、完全格式化、分区细节等),磁盘上的所有数据可能丢失。在一些实施例中,在重新格式化模式下,存储装置的整个存储空间(100%)可以正常操作(例如,作为执行(p)空间正常操作)。
188.在减小容量的只读模式(模式3)下,存储装置的存储空间的第一部分(例如,x%)可以正常操作(例如,作为执行(p)空间正常操作),并且第二部分(例如,(100

x)%)可以作为只读(ro)存储空间操作。因此,存储装置中的性能(p)空间的大小可以被减小,并且存储装置可以相对于该空间表现得像正常的驱动器,但是只读(ro)类型的空间可以是不可写入的。在一些实施例中,存储装置可以例如响应于获得特征命令而将用于性能(p)空间和/或只读(ro)空间的lba范围的列表提供到主机。如果存储装置支持io确定性,则lba范围可以表示集合。如果存储装置支持分区命名空间(zns),则lba范围可以表示区域。在一些实施例中,存储装置还可响应于获得特征命令而提供关于集合和/或zns的地址范围的信息。
189.在减小容量模式(模式4,fr_mode_capacity*)下,存储装置的存储空间的第一部分(例如,x%)可以正常操作(例如,作为执行(p)空间正常操作),并且第二部分(例如,(100

x)%)可能是不可访问的(ia)。因此,存储装置中的性能(p)空间的大小可以被减小,并且存储装置可以相对于该空间表现得像正常的驱动器,但是不可访问(ia)空间可能不可用于正常输入和/或输出(io)。例如,如果rtbb被耗尽,则有问题的裸片可能从磁盘空间中被排除,并且因此总磁盘容量可能被减小。存储装置可以提供用于性能(p)类型和/或不可访问(ia)类型的空间的lba范围的列表。如果存储装置支持io确定性,则lba范围可以表示集合。如果存储装置支持zns,则lba范围可以表示区域。在一些实施例中,存储装置可以响应于获得特征命令而提供关于lba范围、集合、区域等的信息。
190.在降低性能模式(模式5)下,存储装置的性能的一个或多个方面可以被降低。例如,存储装置可以执行正常操作,但是以降低的吞吐量和/或增加的等待时间执行正常操作。在一些实施例中,存储装置可以包括一个或多个备用电容器,所述一个或多个备用电容器在主电源丢失的情况下可以向存储装置提供电力足够长的时间段,以使存储装置能够完成写入操作。如果这些备用电容器中的一个或多个发生故障,则存储装置可以不通知主机写入操作完成,直到数据被写入介质之后为止。(这可以被称为同步写入操作。)这可以减少每秒输入和/或输出操作(iops)和/或增加等待时间,从而降低存储装置的性能。因此,在一些实施例中,降低性能模式可以用100%的执行不佳(up)空间进行操作。根据实现细节,用户数据中的一些或全部可以保持有效。在一些实施例中,存储装置可以将推测的性能信息提供到主机,这可以使得主机能够决定以可以减轻故障状况的系统级影响的方式将写入数据发送到存储装置。
191.在只读模式(模式6)下,存储装置可以仅允许读取操作并且可以阻止外部写入操作。根据实现细节,只读空间中的数据可以例如在保留期限之后保持有效。只读模式可以用100%的只读(ro)空间进行操作。
192.在部分只读模式(模式7,fr_mode_partial_read_only*)下,存储装置的存储空间的第一部分(例如,x%)可以作为只读(ro)空间进行操作,并且第二部分(例如,(100

x)%)可以是不可访问(ia)空间。因此,存储装置可以仅允许读取操作,并且外部写入操作可以在存储空间的第一部分中被禁止。根据实现细节,只读空间中的数据可以仍然有效(例如,在保留期限之后仍然有效)。存储装置可以提供用于只读(ro)类型和/或不可访问(ia)类型的空间的lba范围的列表。如果存储装置支持io确定性,则lba范围可以表示集合。如果存储装置支持zns,则lba范围可以表示区域。在一些实施例中,存储装置可以响应于获得特征命令而提供关于lba范围、集合、区域等的信息。
193.在临时只读模式(模式8)下,数据可以从存储装置的可用100%的vro空间进行操作的存储空间被读取,但是外部写入会被禁止。该空间中的数据可以是临时有效的,但是可以在保留期限之后变得无效。
194.在临时部分只读模式(模式9,fr_mode_temp_partial_real_only*)下,数据可以从存储装置的存储空间的可以作为vro空间进行操作的第一部分(例如x%)被读取,同时外部写入可以被禁止。第二部分(例如,(100

x)%)可以是不可访问(ia)空间。第一部分中的数据可以是临时有效的,但是可以在保留期限之后变得无效。如果存储装置支持io确定性,则lba范围可以表示集合。如果存储装置支持zns,则lba范围可以表示区域。在一些实施例中,存储装置可以响应于获得特征命令而提供关于lba范围、集合、区域等的信息。
195.在脆弱模式(模式10,fr_mode_vulnerable)中,存储装置可能不可用于i/o操作。然而,存储装置可以继续从主机接收命令并返回错误。
196.在正常模式(模式11,fr_mode_normal)中,存储装置可以正常操作。
197.已经在各种实现细节的上下文中描述了上面公开的实施例,但是本公开的原理不限于这些或任何其他具体细节。例如,一些功能已经被描述为由特定组件实现,但是在其他实施例中,该功能可以分布在不同位置中且具有各种用户接口的不同系统和组件之间。某些实施例已经被描述为具有特定的处理、操作等,但是这些术语还包含其中特定的处理、步骤等可以用多个处理、操作等实现的实施例,或者其中多个处理、操作等可以集成到单个处
理、步骤等中的实施例。对组件或元件的引用可以仅指组件或元件的一部分。例如,对集成电路的引用可以指集成电路的全部或仅一部分,并且对块的引用可以指整个块或者一个或多个子块。除非从上下文中另外清楚,否则在本公开和权利要求书中使用诸如第一和第二的术语可以仅用于将它们所修饰的事物区分开的目的,并且可能不指示任何空间或时间顺序。在一些实施例中,基于(取决于)可以指至少部分地基于(取决于)。在一些实施例中,禁用可以指至少部分地禁用。对第一元件的引用可以不暗示存在第二元件。作为方便,可以提供各种组织辅助(诸如,章节标题等),但是根据这些辅助布置的主题和本公开的原理不受这些组织辅助限定或限制。
198.上述各种细节和实施例可以被组合以产生根据本公开的发明原理的附加实施例。由于在不脱离发明构思的情况下,可以在布置和细节上修改本公开的发明原理,因此这样的改变和修改被认为落入所附权利要求的范围内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献