CN117616376A - 数据存储设备阵列中被中断的设备的选择性重建 - Google Patents
数据存储设备阵列中被中断的设备的选择性重建 Download PDFInfo
- Publication number
- CN117616376A CN117616376A CN202280048888.9A CN202280048888A CN117616376A CN 117616376 A CN117616376 A CN 117616376A CN 202280048888 A CN202280048888 A CN 202280048888A CN 117616376 A CN117616376 A CN 117616376A
- Authority
- CN
- China
- Prior art keywords
- raid
- block
- data storage
- storage device
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000013500 data storage Methods 0.000 title claims abstract description 220
- 238000000034 method Methods 0.000 claims abstract description 46
- 230000004044 response Effects 0.000 claims abstract description 27
- 230000000977 initiatory effect Effects 0.000 claims description 3
- 238000004891 communication Methods 0.000 description 32
- 230000006870 function Effects 0.000 description 31
- 230000036961 partial effect Effects 0.000 description 17
- 238000012545 processing Methods 0.000 description 14
- 238000010586 diagram Methods 0.000 description 13
- 238000005516 engineering process Methods 0.000 description 11
- 230000008569 process Effects 0.000 description 11
- 239000004744 fabric Substances 0.000 description 10
- 230000007246 mechanism Effects 0.000 description 9
- 238000004590 computer program Methods 0.000 description 8
- 238000007726 management method Methods 0.000 description 8
- 239000007787 solid Substances 0.000 description 8
- 230000003068 static effect Effects 0.000 description 7
- 238000011084 recovery Methods 0.000 description 4
- 230000001360 synchronised effect Effects 0.000 description 4
- 230000008685 targeting Effects 0.000 description 4
- 230000001960 triggered effect Effects 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 239000004020 conductor Substances 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 230000001351 cycling effect Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 230000004931 aggregating effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 239000000872 buffer Substances 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 230000001010 compromised effect Effects 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000013403 standard screening design Methods 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/1092—Rebuilding, e.g. when physically replacing a failing disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/24—Handling requests for interconnection or transfer for access to input/output bus using interrupt
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1048—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/108—Parity data distribution in semiconductor storages, e.g. in SSD
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/1088—Reconstruction on already foreseen single or plurality of spare disks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明描述了用于存储阵列中被中断的数据存储设备的选择性重建的系统和方法。控制器确定独立磁盘冗余阵列(RAID)配置中的数据存储设备的操作中断。响应于该中断,该控制器确定该被中断的存储设备中的上一成功存储的RAID块的上一块时间值以及该被中断的存储设备没有完成的一个或多个不完整RAID条带。然后,该控制器从该RAID配置中的其他存储设备选择性地重建该不完整RAID条带。
Description
相关申请的交叉引用
本申请出于所有目的要求2021年11月17日提交的名称为“SELECTIVE REBUILD OFINTERRUPTED DEVICES IN DATA STORAGE DEVICE ARRAYS”的美国非临时申请17/528,768号的全部内容的权益并且特此以引用方式并入。
技术领域
本公开整体涉及支持独立磁盘冗余阵列(RAID)配置的存储系统,并且更具体地涉及管理用于数据存储设备的RAID集合的重建操作。
背景技术
多设备存储系统利用多个分立的数据存储设备,通常为磁盘驱动器(固态驱动器(SSD)、硬盘驱动器(HDD)、混合驱动器、磁带驱动器等)用于存储大量数据。这些多设备存储系统通常被布置成由公共通信结构互连的驱动器阵列,并且在许多情况下,由存储控制器、独立磁盘冗余阵列(RAID)控制器或通用控制器控制,以用于协调跨驱动器阵列的存储和系统活动。存储在阵列中的数据可根据定义的RAID级别、RAID模式的组合或用于提供所需数据冗余、性能和容量利用的其他配置来存储。一般来讲,这些数据存储配置可涉及冗余副本(镜像)、数据剥离和/或奇偶校验(计算和存储)的某种组合,并且可结合其他数据管理、纠错和数据恢复过程,有时特定于所使用的磁盘驱动器的类型(例如,固态驱动器与硬盘驱动器)。
这些多设备存储系统可被配置在数据中心中,该数据中心包括具有对应的可交换数据存储设备集合的大量基于机架的存储系统。这些基于机架的存储系统可包括用于保持操作的多种电力、网络和其他物理连接。这些系统的尺寸和复杂性可能导致临时的电力、连接和/或其他服务中断,诸如当松散的连接以及相关联机架中的振动或其他移动导致临时性断开或者系统管理员意外地移除不正确的设备、注意到错误并且立即将其放回到其插槽中时。电力和插槽位置的变化也可能导致设备的电源管理状态的定时的变化,其中一个设备先于组(诸如设备的RAID集合)中的其他设备而离线。这些临时性中断在大型分布式多设备存储系统中变得越来越常见。
上述错误中的任何错误尽管是临时性的,但是可能导致RAID集合中的一个或多个存储设备与同一RAID集合中的其他存储设备不同步。在一些配置中,不同步的存储设备可触发受到影响的RAID集合的重建。随着数据存储设备的容量持续增加,从服务丢失、系统设计和能量角度来看,重建RAID集合所要求的时间量已经变得非常大并且昂贵。
因此,仍然存在对支持针对临时性中断之后再同步存储设备的部分重建的存储系统的需要。
发明内容
描述了RAID阵列中被中断的数据存储设备的选择性重建的各个方面。更具体地,时间计数器可以与每个RAID块一起存储在存储设备中,并且用于确定哪些设备不同步以选择性地重建包含不完整块的条带。这可使得能够部分重建在中断期间受到损害的有限数量的条带,而不需要完全重建RAID集合。
一个一般方面包括一种系统,该系统包括多个数据存储设备和独立磁盘冗余阵列(RAID)控制器。该多个数据存储设备可包括被配置为存储主机数据的非易失性存储介质,其中:主机数据被配置在多个RAID块中;每个RAID块对应于跨该多个数据存储设备分布的RAID条带;并且每个RAID块具有块时间值,该块时间值对应于当该RAID块被存储到该多个数据存储设备中的对应数据存储设备时的时间。该RAID控制器被配置为:确定该多个数据存储设备中的至少一个数据存储设备的操作中断;响应于该操作中断而确定由该至少一个数据存储设备存储的上一RAID块的上一块时间值;基于该上一块时间值来确定至少一个不完整RAID条带;以及选择性地重建该至少一个不完整RAID条带。
实施方式可包括下列特征中的一者或多者。该多个数据存储设备中的每个数据存储设备可被配置为将每个RAID块的块时间值与该RAID块相邻地存储在该非易失性存储介质中。该多个数据存储设备中的每个数据存储设备可被配置为块存储设备,该块存储设备包括主机数据块尺寸和扩展块尺寸,该扩展块尺寸限定超出每个主机数据块的主机数据块尺寸的附加存储位置,并且被进一步配置为将块时间值存储在对应于每个RAID块的扩展块尺寸的附加存储位置中。该多个数据存储设备中的每个数据存储设备可被配置为将设备时间值存储在元数据存储中,该设备时间值对应于当最近RAID条带中的最近RAID块被存储在该数据存储设备的非易失性存储介质中时的时间。该RAID控制器可被进一步配置为:将存储在该多个数据存储设备中的最近RAID条带的时间计数器值存储在RAID元数据中;从该至少一个数据存储设备确定上一块时间值;并且基于时间计数器值和上一块时间值来确定该至少一个不完整RAID条带。该RAID控制器可被进一步配置为向该多个数据存储设备发送要作为块时间值与每个RAID块相邻地存储在非易失性存储介质中的时间计数器值。该RAID控制器可被进一步配置为:以可配置的颗粒度阈值选择性地递增时间计数器值;并且在每次递增之间将多个RAID条带写入到该多个数据存储设备。该RAID控制器可被进一步配置为:基于存储在该至少一个数据存储设备中的RAID块的块时间值来确定上一完整RAID条带;并且基于存储在该多个数据存储设备中的另一数据存储设备中的RAID块的块时间值来确定自从上一完整RAID条带以来的该至少一个不完整RAID条带。该RAID控制器可被进一步配置为:确定该至少一个数据存储设备的操作丢失;响应于该操作丢失而进入针对对应于该多个数据存储设备的RAID集合的降级状态;检测对应于该至少一个数据存储设备的位置的操作数据存储设备;基于设备签名来确定该操作数据存储设备是该至少一个数据存储设备;并且响应于该操作数据存储设备是该至少一个数据存储设备而确定该操作中断。该RAID控制器可被进一步配置为:确定中断计数器以测量从操作丢失起的实耗时间;确定中断阈值;响应于该中断计数器超过该中断阈值而选择性地发起该RAID集合的完全重建;确定该至少一个不完整RAID条带的重建计数;确定重建阈值;并且响应于该重建计数超过该重建阈值而选择性地发起该RAID集合的该完全重建。
另一个一般方面包括一种计算机实现的方法,其包括:将主机数据存储到包括非易失性存储介质的多个数据存储设备,其中主机数据被配置在多个RAID块中,每个RAID块对应于跨该多个数据存储设备分布的RAID条带,并且每个RAID块具有块时间值,该块时间值对应于当该RAID块被存储到该多个数据存储设备中的对应数据存储设备时的时间;确定该多个数据存储设备中的至少一个数据存储设备的操作中断;响应于该操作中断而确定由该至少一个数据存储设备存储的上一RAID块的上一块时间值;基于该上一块时间值来确定至少一个不完整RAID条带;以及选择性地重建该至少一个不完整RAID条带。
实施方式可包括下列特征中的一者或多者。该计算机实现的方法可包括将每个RAID块的块时间值与该RAID块相邻地存储在该非易失性存储介质中。该计算机实现的方法可包括将该多个数据存储设备配置为块存储设备,该块存储设备包括:主机数据块尺寸和扩展块尺寸,该扩展块尺寸限定超出每个主机数据块的主机数据块尺寸的附加存储位置,其中存储每个RAID块的块时间值包括将块时间值存储在对应于该RAID块的扩展块尺寸的附加存储位置中。该计算机实现的方法可包括将设备时间值存储在该多个数据存储设备中的每个数据存储设备的元数据存储中,该设备时间值对应于当最近RAID条带中的最近RAID块被存储在该数据存储设备的非易失性存储介质中时的时间。该计算机实现的方法可包括:将存储在该多个数据存储设备中的最近RAID条带的时间计数器值存储在RAID元数据中;从该至少一个数据存储设备确定上一块时间值;以及基于时间计数器值和上一块时间值来确定该至少一个不完整RAID条带。该计算机实现的方法可包括向该多个数据存储设备发送要作为块时间值与每个RAID块相邻地存储在非易失性存储介质中的时间计数器值。该计算机实现的方法可包括:以可配置的颗粒度阈值选择性地递增时间计数器值;以及在每次递增之间将多个RAID条带写入到该多个数据存储设备。该计算机实现的方法可包括:基于存储在该至少一个数据存储设备中的RAID块的块时间值来确定上一完整RAID条带;以及基于存储在该多个数据存储设备中的另一数据存储设备中的RAID块的块时间值来确定自从上一完整RAID条带以来的该至少一个不完整RAID条带。该计算机实现的方法可包括:确定该至少一个数据存储设备的操作丢失;响应于该操作丢失而进入针对对应于该多个数据存储设备的RAID集合的降级状态;检测对应于该至少一个数据存储设备的位置的操作数据存储设备;基于设备签名来确定该操作数据存储设备是该至少一个数据存储设备;以及响应于该操作数据存储设备是该至少一个数据存储设备而确定该操作中断。
又一个一般方面包括一种系统,其包括多个数据存储设备,该多个数据存储设备包括被配置为存储主机数据的非易失性存储介质,其中:主机数据被配置在多个RAID块中;每个RAID块对应于跨该多个数据存储设备分布的RAID条带;并且每个RAID块具有块时间值,该块时间值对应于当该RAID块被存储到该多个数据存储设备中的对应数据存储设备时的时间。该系统还包括:用于确定该多个数据存储设备中的至少一个数据存储设备的操作中断的装置;用于响应于该操作中断而确定由该至少一个数据存储设备存储的上一RAID块的上一块时间值的装置;用于基于该上一块时间值来确定至少一个不完整RAID条带的装置;以及用于选择性地重建该至少一个不完整RAID条带的装置。
各种实施方案有利地应用数据存储设备和/或多设备存储系统的教导内容,以改进此类计算机系统的功能。各种实施方案包括克服或至少减少存储阵列和/或系统中先前遇到的问题的操作,因此比其他计算系统更为可靠和/或有效。即,本文所公开的各种实施方案包括具有更有效地响应于RAID集合中的数据存储设备的临时性中断而重建数据的功能性的硬件和/或软件,诸如通过使用与RAID存储操作相关联的时间计数器来识别受到中断影响的RAID条带。因此,本文所公开的实施方案为存储网络和/或存储系统提供了各种改善。
应当理解,本公开中使用的语言主要是出于可读性和指导目的而选择的,并不限制本文公开的主题的范围。
附图说明
图1示意性地示出了支持被中断的存储设备的选择性重建的多设备存储系统。
图2a示意性地示出了在存储设备中断之前在第一时间的块时间值的使用。
图2b示意性地示出了在存储设备中断之后在第二时间的块时间值的使用。
图3示意性地示出了图1的多设备存储系统的存储节点。
图4示意性地示出了图1的多设备存储系统的主机或控制器节点。
图5示意性地示出了图1至图4的存储系统的一些元件的更多细节。
图6是存储RAID块时间值以及使用它们来选择性地重建不完整RAID条带的示例性方法的流程图。
图7是将RAID块时间值存储在数据存储设备的RAID集合中的示例性方法的流程图。
图8是确定操作中断以选择性地发起数据存储设备的RAID集合的部分重建的示例性方法的流程图。
具体实施方式
图1示出了示例性数据存储系统100的实施方案,该系统具有通过存储控制器102支持多个主机系统112的多个数据存储设备120。虽然示出了一些示例性特征部,但是为了简洁起见且为了不模糊本文公开的示例性实施方案的相关方面,并未示出各种其他特征部。为此,作为非限制性示例,数据存储系统100可包括被配置在带有存储控制器102的存储节点中的一个或多个数据存储设备120(有时也称为信息存储设备、存储设备、盘驱动器或驱动器),并且一个或多个数据存储设备各自包含非易失性存储介质。在一些实施方案中,存储设备120可被配置在服务器、存储阵列刀片、全闪存阵列设备或类似的存储单元中,以在数据中心存储机架或机箱中使用。存储设备120可与一个或多个主机节点或主机系统112连接并为那些主机系统或通过那些主机系统提供数据存储和检索能力。在一些实施方案中,存储控制器102的RAID功能可具体体现在主机系统112中或从主机系统进行管理。在一些实施方案中,存储设备120可被配置在存储层级结构中,该存储层级结构包括存储节点、存储控制器(诸如存储控制器102)和/或存储设备120与主机系统112之间的其他中间部件。例如,每个存储控制器102可负责存储节点中对应的存储设备120集合,并且其相应存储设备可通过对应的背板网络或包括存储接口总线108和/或控制总线110的内部总线架构来连接,尽管仅示出了存储控制器102和对应的存储节点部件的一个实例。在一些实施方案中,存储控制器102可包括或被配置在用于将存储设备120连接到结构网络114以与主机系统112进行通信的主机总线适配器内。
在所示的实施方案中,多个存储设备120附接到公共存储接口总线108以用于通过存储控制器102进行主机通信。例如,存储设备120可包括布置在存储阵列中的多个驱动器,诸如共享数据中心中的共用机架、单元或刀片的存储设备或者全闪存阵列中的SSD。在一些实施方案中,存储设备120可共享背板网络、网络交换机和/或通过存储接口总线108和/或控制总线110访问的其他硬件和软件部件。例如,存储设备120可通过多个物理端口连接而连接到存储接口总线108和/或控制总线110,这些物理端口连接限定物理、传输和其他逻辑信道,用于与用于建立到主机112的通信信道的不同部件和子部件建立通信。在一些实施方案中,存储接口总线108可提供用于存储设备管理和主机数据传输的主要主机接口,并且控制总线110可包括用于低层控制功能的对主机的有限连接性。
在一些实施方案中,存储设备120可被称为对等组或对等存储设备,因为它们通过存储接口总线108和/或控制总线110互连。在一些实施方案中,存储设备120可被配置用于在有或没有存储控制器102和/或主机系统112辅助的情况下,通过存储接口总线108进行的存储设备120之间的对等通信。例如,存储设备120可被配置用于使用一个或多个协议(诸如非易失性存储器快速(NVMe)、远程直接存储器访问(RDMA)、结构上的NVMe(NVMeOF)等)来直接访问存储器,以使用高带宽存储接口和存储接口总线108在存储设备之间提供命令消息传送和数据传输。
在一些实施方案中,数据存储设备120是或包括固态驱动器(SSD)。每个数据存储设备120.1至120.n可包括基于计算资源(处理器和存储器)的非易失性存储器(NVM)或设备控制器130以及用于数据存储的多个NVM或非易失性存储介质设备140(例如,一个或多个NVM设备,诸如一个或多个闪存存储器设备)。在一些实施方案中,一个或多个数据存储设备中的相应数据存储设备120包括一个或多个NVM控制器,诸如闪存控制器或信道控制器(例如,用于在多个存储器通道中具有NVM设备的存储设备)。在一些实施方案中,数据存储设备120可各自封装在外壳中,诸如具有限定形状因数的多部件密封外壳以及用于与存储接口总线108和/或控制总线110互连的端口和/或连接器。
在一些实施方案中,相应的数据存储设备120可包括单个介质设备,而在其他实施方案中,相应的数据存储设备120包括多个介质设备。在一些实施方案中,介质设备包括NAND型闪存存储器或NOR型闪存存储器。在一些实施方案中,数据存储设备120可包括一个或多个硬盘驱动器(HDD),其包括写入到磁头和对应的读写通道电子器件并由磁头和对应的读写通道电子器件读取的磁性非易失性存储介质盘。在一些实施方案中,数据存储设备120可包括闪存存储器设备,该闪存存储器设备继而包括一个或多个闪存存储器管芯、一个或多个闪存存储器封装、一个或多个闪存存储器通道等。然而,在一些实施方案中,数据存储设备120中的一个或多个数据存储设备可具有其他类型的非易失性数据存储介质(例如,相变随机存取存储器(PCRAM)、电阻式随机存取存储器(ReRAM)、自旋转移扭矩随机存取存储器(STT-RAM)、磁阻式随机存取存储器(MRAM)等)。
在一些实施方案中,每个存储设备120包括设备控制器130,该设备控制器包括被配置为在一个或多个程序中执行指令的一个或多个处理单元(有时也称为中央处理单元(CPU)或处理器或微处理器或微控制器)。在一些实施方案中,一个或多个处理器由在设备控制器的功能内并在一些情况下超出其功能的一个或多个部件共享。在一些实施方案中,设备控制器130可包括用于控制写入到介质设备140和从该介质设备读取的数据的固件、用于与其他部件通信的一个或多个存储(或主机)接口协议,以及各种内部功能,诸如垃圾收集、耗损均衡、介质扫描以及其他存储器和数据维护。例如,设备控制器130可包括用于运行NVMe存储协议的NVM层连同专用于存储设备的介质设备接口和管理功能的固件。介质设备140通过连接件耦接到设备控制器130,该连接件除了数据之外通常还传输命令,并且除了传输要存储在介质设备中的数据值和从介质设备140读取的数据值之外,还可选地传输元数据、纠错信息和/或其他信息。介质设备140可包括任何数量(即,一个或多个)的存储器设备,该存储器设备包括但不限于非易失性半导体存储器设备,诸如闪存存储器设备。
在一些实施方案中,存储设备120中的介质设备140被划分为多个可寻址和可单独选择的块,有时称为擦除块。在一些实施方案中,可单独选择的块是闪存存储器设备中尺寸最小的可擦除单元。换句话讲,每个块包含可被同时擦除(即,在单个擦除操作中)的最小数量的存储器单元。每个块通常进一步划分为多个页面和/或字线,其中每个页面或字线通常是块中最小的可单独访问(可读)部分的实例。然而,在一些实施方案(例如,使用某些类型的闪存存储器)中,数据集的最小可单独访问单元是扇区或码字,该扇区或码字是页面的子单元。也就是说,块包括多个页面,每个页面包含多个扇区或码字,并且每个扇区或码字是用于从闪存存储器设备读取数据的最小数据单元。
数据单元可描述数据的任何尺寸分配,诸如主机块、数据对象、扇区、页面、多片页面、擦除/编程块、介质设备/封装等。存储位置可包括存储设备120上的物理和/或逻辑位置并且可根据存储介质、存储设备/系统配置和/或上下文以不同的颗粒度级别来描述和/或分配。例如,出于主机读写目的,存储位置可按主机逻辑块地址(LBA)数据单元大小和可寻址性来分配,但在其他上下文中作为具有管理在介质闪存转换层(FTL)中的存储设备寻址的页面来管理。介质段可包括存储设备120上的物理存储位置,该物理存储位置也可对应于一个或多个逻辑存储位置。在一些实施方案中,介质段可包括一系列连续的物理存储位置,诸如存储介质上的相邻数据单元,并且对于闪存存储器设备,该介质段可对应于一个或多个介质擦除或编程块。逻辑数据组可包括不管存储位置如何可在逻辑基础上分组的多个逻辑数据单元,诸如数据对象、文件或由多个主机块构成的其他逻辑数据构造。
在一些实施方案中,存储设备120可被配置为具有限定的主机数据块尺寸(诸如512字节、2048字节、4096字节或另一主机块尺寸)的块存储设备。存储设备120可被配置用于扩展块存储,其包括超出分配给主机块尺寸的存储位置的附加存储位置。例如,每个512字节主机块可包括用于系统或安全性相关数据(诸如满足T10保护信息标准的保护信息)的附加字节。在一些实施方案中,8字节数据完整性字段可被添加到每个主机数据块以提供520字节的扩展块尺寸,并且可用于保护信息,或可在未启用保护信息的情况下由系统用于另一目的。一些块存储配置可包括其他扩展块配置,诸如544字节、560字节、580字节等的扩展块尺寸,其中主机块尺寸保持512字节并且不同量的系统存储空间被添加到每个块,诸如32、48或68字节的扩展存储位置。
在一些实施方案中,存储控制器102可通过网络接口耦接到数据存储设备120,该网络接口作为包括作为主机结构接口的存储接口总线108的主机结构网络114的一部分。在一些实施方案中,主机系统112通过结构网络114耦接到数据存储系统100,并且存储控制器102可包括存储网络接口、主机总线适配器或能够支持与多个主机系统112的通信的其他接口。结构网络114可包括可以合适的方式耦接以用于传输数据的有线和/或无线网络(例如,任何数量和/或配置的公共和/或专用计算机网络)。例如,结构网络可包括常规数据通信网络的任何装置,诸如局域网(LAN)、广域网(WAN)、电话网络诸如公共交换电话网络(PSTN)、内联网、互联网或任何其他合适的通信网络或通信网络的组合。从存储设备120的角度来看,存储接口总线108可被称为主机接口总线并且通过存储控制器102和/或到结构网络114的另选接口在存储设备120与主机系统112之间提供主机数据路径。
主机系统112或具有多个主机的系统中的相应主机可以是任何合适的计算机设备,诸如计算机、计算机服务器、膝上型计算机、平板设备、上网本、互联网信息亭、个人数字助理、移动电话、智能电话、游戏设备或任何其他计算设备。主机系统112有时被称为主机、客户端或客户端系统。在一些实施方案中,主机系统112是服务器系统,诸如数据中心中的服务器系统。在一些实施方案中,一个或多个主机系统112是与容纳多个存储设备120的存储节点和/或存储控制器102不同的一个或多个主机设备。在一些实施方案中,主机系统112可包括属于多个实体并且支持针对那些实体及其应用程序的一个或多个服务质量(QoS)标准的拥有、操作和/或托管应用程序的多个主机系统。
存储控制器102可包括一个或多个中央处理单元(CPU)或处理器104,用于执行计算操作、存储管理操作、RAID操作和/或通过存储接口总线108访问存储设备120的其他指令。在一些实施方案中,处理器104可包括多个处理器内核,其可被指派或分配给用于不同存储操作和/或主机存储连接的并行处理任务和/或处理线程。在一些实施方案中,处理器104可被配置为执行用于通过结构网络114进行通信的结构接口协议和/或用于通过存储接口总线108和/或控制总线110进行通信的存储接口协议。在一些实施方案中,单独的网络接口单元和/或存储接口单元(未示出)可提供网络接口协议和/或存储接口协议和相关的处理器和存储器资源。
存储控制器102可包括存储器106,该存储器被配置为支持主机系统112与存储设备120之间的RAID控制器150,以管理跨存储设备120分布的冗余数据的存储,从而用于数据可靠性和恢复。在一些实施方案中,RAID控制器150可被配置用于当存储设备120中的一个或多个存储设备的操作被暂时中断从而导致不完整RAID条带时选择性地重建RAID条带。例如,RAID控制器150可被配置为确定和重建在中断期间或之后写入或更新的条带。存储设备操作中断可包括使得存储设备暂时不可用于写入RAID条带的一个或多个分配的块并且导致存储设备对来自存储控制器102的命令或操作无响应的任何事件。例如,存储设备可能由于松散的物理连接或对电缆、安装件、壳体或其中存储设备正在操作的其他机架部件的操纵而失去电力、网络和/或存储接口(到存储接口总线108和/或控制总线110)连接,并且那些中断可快速恢复。存储设备暂时不可用的一个示例性原因可能是其从其所安装的插槽或槽口中意外移除,随后在检测到错误之后立即替换。另一示例可以是各个存储设备的意外或不均匀的电力循环。
RAID控制器150可包括块写入功能152和中断重建功能154以支持不完整RAID条带的选择性重建。在一些实施方案中,块写入功能152可被配置为将时间计数器值添加到存储到存储设备120的每个RAID块。例如,每个RAID块可包括附加元数据,该附加元数据包括由RAID控制器150确定并且跨在特定时间窗口期间写入的所有RAID块和RAID条带共享的时间计数器值。在一些实施方案中,写入到特定RAID块的时间计数器值可作为块时间值存储在由扩展块格式提供的附加存储位置中。块时间值稍后可用于确定哪些块(和对应的条带)是完整的并且识别由存储设备中断导致的任何不完整条带。
中断重建功能154可被配置为响应于存储设备中断并且使用由块写入功能152写入的块时间值来确定部分重建的范围。在一些实施方案中,中断重建功能154可被配置为当RAID集合(诸如存储设备120.1至120.n)由于至少一个存储设备的操作丢失而进入降级状态时进行操作。一旦确定了操作丢失,RAID控制器150可等待某个可配置的等待时段以检测丢失的存储设备的返回并且验证返回的存储设备是与丢失的存储设备相同的存储设备(并且不是替换存储设备),诸如通过比较存储设备签名值。在确定操作中断后,中断重建功能154可以将由被中断的存储设备存储的上一块的块时间值与由未中断的存储设备中的至少一个存储设备存储的上一块的块时间值进行比较,以确定一个或多个不完整RAID条带。对于每个不完整RAID条带,如果来自被中断的存储设备的缺失数据块在RAID配置的恢复能力内并且数据块(包括奇偶校验数据)被存储到未中断的存储设备,则中断重建功能154可发起仅以不完整RAID条带为目标的RAID集合的部分重建。在完成不完整RAID条带的重建后,部分重建的(并且现在是完整的)RAID集合可脱离降级状态并且返回到正常操作。
在一些实施方案中,数据存储系统100包括一个或多个处理器、一种或多种类型的存储器、显示器和/或其他用户界面部件诸如键盘、触摸屏显示器、鼠标、触控板,和/或任何数量的添加功能的补充设备。在一些实施方案中,数据存储系统100不具有显示器和其他用户界面部件。
图2a和图2b示出了用于确定不完整RAID条带的块时间值的使用的示意图。图2a示出了在操作中断之前在第一时间的存储系统200的状态。图2b示出了在操作中断已经发生、RAID集合已经进入降级状态并且需要确定要部分重建的RAID条带之后在第二时间的存储系统200的状态。在一些实施方案中,存储系统200可以与图1中的数据存储系统100相似地配置,但是RAID控制器在主机级(例如,在主机210中)实现,并且数据存储设备在驱动器220(例如,HDD或SSD)中实现。
通过将块时间值存储在驱动器220.1至220.n中的每个RAID块或扇区的系统数据字节中,确定要部分重建的不完整RAID条带可实现更快的重建(仅重建不同步扇区)。例如,可使用特殊格式化的驱动器(诸如保护信息(PI)格式化的驱动器)来存储块时间值,这些特殊格式化的驱动器包括超出用户的512字节数据扇区(例如,520或528字节扇区等)的系统数据字节驱动器。类似的策略可应用于4K驱动器或具有附加的每块系统空间的其他驱动器格式化。每个扇区/块的系统空间可用于存储计数器信息以更好地进行重建过程。在一些实施方案中,系统空间可支持多个系统特征,诸如用于PI的数据完整性字段和用于计数器信息的块时间值两者。在图2a和图2b中,仅示出了块时间值323.1和232.2,并且每个块时间值将与对应的主机数据块(包括奇偶校验块)一起存储在条带230的相应驱动器220中。示出了附加的条带230.5至230.n以说明可以将任何数量的条带写入到RAID集合,并且为了简洁省略了对应的块时间值。需注意,图2a和图2b中的条带次序不一定对应于条带被写入和/或更新的次序。
主机210可被配置为保持具有限定颗粒度的时间计数器214,该颗粒度通常为大于正常时钟或时间戳增量(诸如一分钟)的时间窗口。较大时间颗粒度的使用减少了用于跟踪和存储时间计数器214的写入时间开销,但可能在由任何给定中断导致的不同步或未知条带的数量上做出让步。主机将主机数据与系统空间中的时间计数器一起写入每个驱动器的扇区中的RAID块中。对于每个完整RAID条带,条带内的所有扇区将具有相同或类似的时间计数器。例如,条带230.1的每个块时间值是123,条带230.3的每个块时间值是101,并且条带230.4的每个块时间值是1000。在一些实施方案中,颗粒度值被设定为使得多个RAID条带可以在每个时间计数器值的窗口内被写入。例如,可以在时间计数器101、123和1000时写入多个条带。周期性地,诸如在基于颗粒度值的每次递增时,主机210可更新RAID元数据212中的主机时间计数器。
在图2a中的第一时间,块时间值232.1指示随时间推移的条带/扇区写入。在时间计数器(TC)1000时在条带230.4上已发生最新(上一或最近)写入。在一些实施方案中,最近时间计数器值(块时间值)可被周期性地写入到每个驱动器220中的驱动器元数据222,以辅助快速地识别驱动器已完成指派的块写入的上一时间窗口。
在图2b中,在第一时间之后的第二时间点,驱动器220.3离线较短时段并恢复。在该离线时间内,仅条带230.2得到更新。当驱动器220.3恢复在线时,主机210可使用元数据(例如,块时间值)来确定哪些RAID条带是不完整的或不同步的,并且仅更新那些条带。在图2b中,主机210可确定写入到被中断的驱动器220.3的上一块是具有块时间值1000(对应于块在那期间被写入的时间计数器)的条带230.4。因此,在时间计数器大于1000时写入的任何条带都是不完整的,因为驱动器220.3没有参与(或者不能保证已经参与)写入其分配的块。主机210可扫描未中断的驱动器(未中断的驱动器220.1、220.2、220.n)中的任一者的块时间值,以识别具有在更高的时间计数器值时写入的块的列。在图2b中,条带230.2在时间计数器1003时被写入或更新,并且驱动器220.3在缺失块240处不同步。
主机210可检查每个条带的时间计数器值(基于未中断的驱动器的块时间值),并且确定要重建的不完整条带的列表,以使驱动器220.3重新与其他驱动器同步。例如,成功存储在未中断的驱动器220.1、220.2和220.n上的RAID数据可用于计算缺失块240的主机和/或奇偶校验数据,然后经重建的数据可被存储到驱动器220.3中的最初分配的块以完成条带230.2。仅重建不同步条带可减少在降级状态中度过的时间并且防止完全重建。
图3示出了存储节点302的示意图。例如,存储控制器102可被配置为用于访问作为存储元件300的存储设备120的存储节点302。存储节点302可包括总线310、存储节点处理器320、存储节点存储器330、一个或多个任选的输入单元340、一个或多个任选的输出单元350、通信接口360、存储元件接口370和多个存储元件300.1至300.10。在一些实施方案中,总线310、处理器320、本地存储器330、通信接口360、存储元件接口370中的至少部分可包括存储控制器、背板管理控制器、网络接口控制器或主机总线接口控制器,诸如存储控制器102。总线310可包括允许在存储节点302的部件之间进行通信的一个或多个导体。处理器320可包括解译和执行指令的任何类型的常规处理器或微处理器。本地存储器330可包括:随机存取存储器(RAM),或存储供处理器320执行的信息和指令的另一类型的动态存储设备和/或只读存储器(ROM),或存储供处理器320使用的静态信息和指令的另一类型的静态存储设备。输入单元340可包括允许操作者向所述存储节点302输入信息的一个或多个常规机构,诸如键盘、鼠标、笔、语音识别和/或生物识别机构等。输出单元350可包括向操作者输出信息的一个或多个常规机构,诸如显示器、打印机、扬声器等。通信接口360可包括使存储节点302能够与其他设备和/或系统通信的任何收发器状机构,例如用于与其他存储节点302或主机系统112通信的机构。存储元件接口370可包括存储接口,诸如串行高级技术附件(SATA)接口、小型计算机系统接口(SCSI)、外围计算机接口快速(PCIe)等,用于将总线310连接到一个或多个存储元件300(诸如一个或多个存储设备120,例如2太字节(TB)SATA-II磁盘驱动器或2TB NVMe固态驱动器(SSD)),并且控制从这些存储元件300读取数据/将数据写入到这些存储元件。如图3所示,此类存储节点302可包括十个2TB SATA-II磁盘驱动器作为存储元件300.1至300.10,并且以这种方式,存储节点302将向存储系统100提供20TB的存储容量。
存储元件300可被配置为冗余的或者彼此独立地操作。在一些配置中,如果一个特定存储元件300失效,则其功能可容易地由存储系统中的另一个存储元件300接管。此外,存储元件300的独立操作允许在特定存储系统100中使用存储元件300的类型的任何合适的混合。可使用例如具有不同存储容量的存储元件、不同制造商的存储元件、使用不同硬件技术诸如例如常规硬盘和固态存储元件的存储元件、使用不同存储接口等的存储元件。所有这些产生存储系统100的可扩展性和灵活性的特定优点,因为其允许添加或移除存储元件300,而不对与该存储系统100中已经使用的其他存储元件300相关的设计提出特定要求。
图4示出了示例性主机系统112的示意图。主机系统112可包括总线410、处理器420、本地存储器430、一个或多个任选的输入单元440、一个或多个任选的输出单元450和通信接口460。总线410可包括允许在主机112的部件之间进行通信的一个或多个导体。处理器420可包括解译和执行指令的任何类型的常规处理器或微处理器。本地存储器430可包括随机存取存储器(RAM)或存储供处理器420执行的信息和指令的另一类型的动态存储设备和/或只读存储器(ROM)或存储供处理器420使用的静态信息和指令的另一类型的静态存储设备和/或任何合适的存储元件诸如硬盘或固态存储元件。任选的输入单元440可包括允许操作者向主机112输入信息的一个或多个常规机构,诸如键盘、鼠标、笔、语音识别和/或生物识别机构等。任选的输出单元450可包括向操作者输出信息的一个或多个常规机构,诸如显示器、打印机、扬声器等。通信接口460可包括使主机112能够与其他设备和/或系统通信的任何收发器状机构。
图5示意性地示出了被配置用于被中断的存储设备的选择性重建的存储系统500的所选模块。存储系统500可与类似图1至图4所示的元件和配置相结合。在所示的配置中,控制器502被配置为执行RAID控制器功能。例如,控制器502可具体体现在主机系统、存储控制器、专用RAID控制器或被配置为管理被配置在RAID集合中的数据存储设备集合的RAID块分配和恢复的另一设备中。在一些实施方案中,控制器502的部件和功能可以在多个系统之间划分,诸如独立的RAID写入和RAID重建系统。数据存储设备504为存储系统500提供示例性存储设备或驱动器配置。数据存储设备504的多个实例可存在于存储系统500中,并且通常可对应于给定具体实施的RAID集合中的数据存储设备的数量。
控制器502和数据存储设备504可各自包括互连至少一个处理器512、552、至少一个存储器514、554和至少一个接口(诸如存储接口516和主机接口556)的至少一个总线510、550。总线510、550可分别包括允许在控制器502和数据存储设备504的部件之间进行通信的一个或多个导体。处理器512、552可包括任何类型的解译和执行指令或操作的处理器或微处理器。存储器514、554可包括随机存取存储器(RAM)或存储供处理器512、552执行的信息和指令的另一类型的动态存储设备和/或只读存储器(ROM)或存储供处理器512、552使用的静态信息和指令的另一类型的静态存储设备和/或诸如硬盘或固态存储元件的任何合适的存储元件。
存储接口516和主机接口556可包括用于使用支持存储设备访问的接口协议将控制器502连接到一个或多个数据存储设备504的物理接口。例如,存储接口516和主机接口556可各自包括PCIe、或支持NVMe访问包括非易失性存储器设备560在内的固态介质的类似存储接口连接器。如上所述,其他网络和/或外围接口标准可用于存储接口516和主机接口556。
控制器502和数据存储设备504可各自包括一个或多个非易失性存储器设备520、560或类似的存储元件。例如,非易失性存储器设备520可包括被配置为向控制器502提供系统和元数据存储的板载闪存存储器和/或数据存储设备,并且非易失性存储器设备560可包括SSD的闪存存储器封装、HDD的磁盘子系统(例如,读写通道、伺服控制、磁头和介质)、或组织为可寻址存储器阵列的其他非易失性存储器系统。在一些实施方案中,非易失性存储器设备520、560可包括由单级单元(SLC)、多级单元(MLC)、三级单元、四级单元等组成的NAND或NOR闪存存储器设备。
控制器502可包括多个模块或子系统,这些模块或子系统存储在存储器514中和/或在存储器中实例化,以供处理器512作为指令或操作执行。例如,存储器514可包括存储管理器530,其被配置为接收主机命令并且管理对数据存储设备(诸如数据存储设备504)的对应的读取、写入和其他操作。存储器514可包括RAID控制器540,其被配置为管理涉及被配置在RAID集合中的多个数据存储设备(包括数据存储设备304)的RAID写入操作、RAID元数据和RAID重建操作。
存储管理器530可包括用于接收、解析、响应以及以其他方式管理来自主机节点或系统(或从在包括控制器502的系统上运行的其他应用程序生成)针对在由RAID控制器540管理的被配置在RAID集合中的多个数据存储设备的请求的接口协议和/或功能和参数。例如,存储管理器530可包括用于根据主机通信和存储协议接收和处理的针对读取、写入、修改或以其他方式操纵数据块和其相应客户端或主机数据和/或元数据的主机存储请求的功能。在一些实施方案中,存储管理器530还可包括用于管理数据存储设备初始化、配置、电力管理和/或其他数据存储设备管理特征的功能。
在一些实施方案中,存储管理器530可包括多个硬件模块和/或软件模块,该硬件模块和/或软件模块被配置为使用处理器512和存储器514来处理或管理存储管理器530的限定操作。例如,存储管理器530可包括存储接口协议532,该存储接口协议被配置为符合由主机和/或数据存储设备支持的用于通过存储接口516通信的物理、传输和存储应用程序协议。存储管理器530可包括主机命令处理器534,其被配置为接收主机存储命令并且确定要对数据存储设备执行的对应的存储命令或操作。主机命令处理器534可调用RAID控制器540以进行写入、删除以及影响根据RAID配置存储的主机数据的其他操作。存储管理器530可包括设备中断检测器,其被配置为确定对一个或多个数据存储设备的操作何时被中断。
在一些实施方案中,存储接口协议532可支持用于兼容通信、命令以及语法功能、程序和数据结构的一个或多个标准。例如,存储接口协议532可支持PCIe、SATA、小型计算机外围设备接口(SCSI)、串行附接SCSI(SAS)、光纤通道(FC)、通用串行总线(USB)和/或网络附接存储接口,并且可支持高级存储协议诸如NVMe和RDMA和/或网络协议诸如传输控制协议/互联网协议(TCP/IP)。在一些实施方案中,存储接口协议532可确保控制器502符合用于通过存储接口516和主机接口556与数据存储设备504交互的主机请求、命令和响应语法。
在一些实施方案中,主机命令处理器534可包括用于处理针对数据存储设备的存储请求的接口、功能、参数和/或数据结构。例如,主机或应用程序可以向控制器502发送以存储在数据存储设备的RAID集合中的数据为目标的任何数量的存储命令。主机命令处理器534可解析并且验证传入的存储命令并且随后将存储命令传递到存储命令处理器。在一些实施方案中,主机命令处理器534可以向RAID控制器540传递以存储在或将要存储在RAID集合中的数据为目标的存储命令。主机命令处理器534还可保持来自存储命令的响应的返回路径,该响应然后可返回到请求主机或主机应用程序。
设备中断检测器536可包括用于管理与RAID集合中的存储设备的存储接口连接以及确定与存储设备中的一个或多个存储设备的操作连接何时丢失的接口、功能、参数和/或数据结构。例如,设备中断检测器536可监视与每个存储设备的通信和/或电力连接,且/或接收与命令或与每个存储设备的其他通信相关的状态或错误消息。在一些实施方案中,操作丢失检测器536.1可被配置为确定存储设备的通信或操作丢失状态。例如,操作丢失检测器536.1可使用电力信号、通信ping、命令错误监视器或其他操作丢失指示标识来确定何时已丢失与存储设备的连接。在一些实施方案中,任何存储设备的操作丢失可生成状态或错误指示标识,该状态或错误指示标识被传递到RAID控制器540和/或其他系统部件,指示存储设备不再响应或可用于存储操作。例如,操作丢失可触发RAID集合响应于存储设备中的一个存储设备的潜在故障而进入降级状态。
在一些实施方案中,设备检测器536.2可以是用于检测数据存储设备的存在的接口功能。例如,丢失的存储设备可以与特定插槽、槽口、接口连接或其他物理连接相关联,并且设备检测器536.2可监视物理连接的初始化、握手或新存储设备已经连接在相同位置的其他指示标识。存储设备的出现可触发验证过程以确定关于新存储设备的身份、配置和/或其他信息。例如,在加电、初始化或连接存储设备后,可通过读取存储在存储设备中的设备签名560.4以确定该存储设备的唯一标识符或签名来执行签名检查536.3。在一些实施方案中,签名检查536.3可以将新存储设备的签名与失去连接的存储设备的签名进行比较,以确定它们是否是同一数据存储设备。如果两个存储设备的签名匹配,则设备中断检测器536可确定已发生设备中断并且将该设备中断传达给RAID控制器540以确定同一设备的重新连接是否可允许部分重建来校正RAID集合的降级状态。如果两个存储设备的签名不匹配,则设备中断检测器536可确定已提供替换设备,并且向RAID控制器传达替换设备的存在以进行完全重建。
RAID控制器540可包括用于读取、写入和删除连接到控制器502的数据存储设备(诸如数据存储设备504)中的一个或多个RAID配置中的数据单元的接口协议和/或功能和参数集合。另外,RAID控制器540可包括用于禁止对已进入降级状态的RAID集合的存储操作以及用于执行部分或完全重建以使RAID集合恢复正常操作的功能。RAID控制器540可包括用于执行与通过主机命令处理程序534接收的主机存储命令有关的主机数据操作的功能。例如,PUT命令或写入命令可被配置为将主机数据单元写入到RAID集合。GET或读取命令可被配置为从RAID集合读取数据。DELETE命令可被配置为从RAID集合删除数据,或者至少标记待删除的数据位置直到未来垃圾收集或类似操作实际删除该数据,或者将物理存储位置重新分配给另一目的。在一些实施方案中,RAID控制器540可被配置为分配主机存储命令以在RAID集合中的数据存储设备之间提供冗余存储。例如,可以将主机数据块写入、聚集或划分成RAID块,并且进行奇偶校验计算以生成一个或多个附加奇偶校验块,从而生成并存储能够重建数据的RAID条带(直到限定级别的故障存储设备和/或对应的丢失RAID块)。
在一些实施方案中,RAID控制器540可包括多个硬件模块和/或软件模块,该硬件模块和/或软件模块被配置为使用处理器512和存储器514来处理或管理RAID控制器540的限定操作。例如,RAID控制器540可包括RAID配置542,其被配置为限定一个或多个RAID集合、RAID级别以及限定RAID存储和重建过程的操作的其他参数。RAID控制器540可包括RAID写入引擎544,其被配置为将每个RAID条带的RAID数据块写入到数据存储设备的RAID集合。RAID控制器540可包括重建管理器546,其被配置为执行部分或完全重建以在数据丢失(或可能的数据丢失)之后恢复RAID集合中的主机数据。
RAID配置542可包括限定用于由RAID控制器540管理的一个或多个RAID集合的特定RAID配置的接口、功能、参数和/或数据结构。例如。RAID配置542可具体体现在为特定RAID集合提供RAID配置参数集合的配置文件、页、表或类似的数据结构中。在一些实施方案中,RAID配置参数可包括存储设备的数量、每个存储设备的唯一标识符(诸如存储设备签名值)、每个存储设备的能力和/或其他技术规范、RAID级别(RAID 4、RAID 5、RAID 6等)、奇偶校验参数、RAID元数据参数、重建参数等。在一些实施方案中,一个或多个RAID配置参数可以是用户通过命令行或管理界面可配置的。用户可配置的RAID配置参数可包括与被中断的数据存储设备的部分重建特别相关的一个或多个参数。例如,颗粒度阈值544.3、用于重建管理器546的中断和/或重建阈值、启用或禁用设备时间值560.1在每个存储设备中的存储等可以是如以下进一步讨论的用户可配置的参数。
RAID写入引擎544可包括用于管理主机数据如何被发送到RAID集合中的存储设备的接口、功能、参数和/或数据结构。例如,写入到或更新RAID集合中的主机数据块的主机存储命令可被解析并被分配在RAID数据块中以存储在存储设备中。在一些实施方案中,RAID写入引擎544可包括用于接收、聚集、划分和/或以其他方式分配主机数据到包括主机数据和对应的奇偶校验数据的RAID块集合中的一种或多种算法和相关缓冲器。对于新的RAID条带,RAID块扩展器544.1可确定哪些RAID块被写入到每个RAID条带的RAID集合中的哪些存储设备。例如,RAID块扩展器544.1可被配置为在RAID 5或RAID 6配置中将奇偶校验块跨存储设备分布。RAID写入引擎544可被配置为针对由RAID块扩展器544.1分配的其相应RAID块执行对每个存储设备的写入命令或put命令。
在一些实施方案中,RAID写入引擎544可包括时间计数器544.2,其被配置为确定用于写入RAID条带以及在每个RAID块被写入时将块时间值附加到每个RAID块的时间间隔。例如,时间计数器544.2可包括周期性地递增的时间计数器值,以提供可随着每个RAID数据块由时间计数器写入器544.4一起写入的统一时间值。在一些实施方案中,时间计数器544.2的增量可基于与RAID控制器540和/或控制器502相关联的时钟时间。在一些实施方案中,颗粒度阈值544.3可被配置为提供大于时钟时间增量的时间增量并且减小时间计数器544.2改变的频率。例如,颗粒度阈值544.3可包括可配置的时间参数,诸如每10秒或每分钟。在另选实施方案中,颗粒度阈值544.3可基于其他值,诸如写入的RAID条带的数量(例如,每5个RAID条带)、自从上一RAID条带被写入以来的时间增量(从上一RAID块集合写入被发送到存储设备的时间起5秒)、在接收到针对先前RAID条带中的每个RAID数据块的写入响应之后、或者其他事件和/或基于时间的触发器。在一些实施方案中,用户可配置颗粒度阈值544.3,诸如选择时间增量或用于递增时间计数器544.2的逻辑规则集合。在一些实施方案中,时间计数器值可包括对应于当时间计数器544.2被递增时的时钟时间的时间值、针对经过的每个颗粒度阈值而递增的序数计数值、或者使得RAID控制器能够确定在不同的(并且有序的)时间窗口期间写入的RAID条带集合的其他有序的值集合。在一些实施方案中,时间计数器544.2可周期性地(诸如在每次递增之后)将当前时间计数器值作为时间计数器值520.2存储在非易失性存储器520中。例如,时间计数器值520.2可作为参数值写入到RAID元数据520.1和/或写入到在时间计数器544.2的对应时间窗口期间写入的每个RAID条带的对应条目。在一些实施方案中,时间计数器值可作为设备时间值560.1周期性地写入到RAID集合中的每个数据存储设备的元数据,以保持由该数据存储设备接收的最近块时间值的状态信息。
在一些实施方案中,时间计数器写入器544.4可以将针对当前时间窗口的时间计数器值与每个RAID块一起写入到RAID集合中的每个存储设备。例如,来自时间计数器544.2的当前时间计数器值可附加到每个RAID数据块,该RAID数据块要在原子写操作中写入到具有该RAID块的目标存储设备的非易失性存储器(例如,在非易失性存储器560中的连续存储位置中)。在一些实施方案中,数据存储设备可以被格式化为在写入块中提供附加系统存储位置的扩展块格式,并且时间计数器写入器544.4可以将时间计数器值作为块时间值(例如,块时间值560.3)包括在与RAID数据块相同的写入块和写入操作中。时间计数器写入器544.4可被配置为将时间计数器值作为块时间值写入到每个存储设备,而不需要独立的操作,诸如元数据操作,其可以与RAID数据块的成功写入独立地被执行或中断。在一些实施方案中,时间计数器写入器544.4可确保成功写入到每个数据存储设备的每个RAID数据块可必然伴随有块时间值,该块时间值反映由RAID写入引擎544在其中发出写入命令的时间窗口。
重建管理器546可包括被配置为响应于一个或多个数据存储设备变得无响应而确定并执行RAID集合的完全或部分重建的接口、功能、参数和/或数据结构。例如,RAID控制器540可诸如基于来自设备中断检测器536的指示标识来确定存储设备的操作已被中断,从而指示一个或多个RAID条带可能尚未被成功存储,并且RAID集合可能折衷而利用期望冗余存储附加的主机数据。在一些实施方案中,重建管理器546可包括降级状态引擎546.1,其包括用于确定RAID集合应当何时被置于降级状态使得不对其执行新的存储操作直到其离开降级状态并返回到正常操作的逻辑。例如,降级状态引擎546.1可监视来自设备中断检测器536、RAID控制器540的其他部件(例如,RAID写入引擎544)、读取引擎和/或可检测无响应数据存储设备的其他功能的存储设备状态信息和/或错误状况。
在一些实施方案中,重建管理器546可包括操作中断逻辑546.2,其被配置为确定操作中断,而不是存储设备的完全(或扩展)丢失。例如,操作中断逻辑546.2可以从设备中断检测器536.1接收与一个或多个存储设备的操作丢失相关的通知、事件和/或状态信息,诸如响应于降级状态和/或在降级状态期间。操作中断逻辑546.2可包括多个逻辑规则,该多个逻辑规则可被评估以确定操作中断事件是否已发生、识别被中断的存储设备并且确定是否应该触发完全或部分重建。在一些实施方案中,中断计数器546.3可用于确定自从与存储设备的操作接触丢失以来的实耗时间。例如,中断计数器546.3可测量实耗时间并且将该时间与中断阈值进行比较。如果中断计数器546.3在存储设备返回到操作之前的实耗时间值超过中断阈值,则操作丢失可被视为完全的,并且当存储设备返回到操作或者被替换存储设备替换时,可触发完全重建546.5。
在一些实施方案中,重建计数器546.4可用于确定由操作中断产生的不完整RAID条带的数量。例如,重建计数器546.4可以对使用块时间值和时间计数器比较结果确定的不完整RAID条带的数量进行计数,并且将该计数与完全重建阈值进行比较。如果该计数满足或超过完全重建阈值,则可触发完全重建阈值546.5。如果在中断完成之后,该计数没有达到或超过完全重建阈值,则可触发部分重建546.6。完全重建546.5可被配置为假设先前写入RAID集合中的所有RAID条带可能已经丢失包含在一个或多个(取决于RAID配置和中断的存储设备的数量)存储设备中的数据,并且RAID集合中的每个RAID条带可基于剩余存储设备中的RAID块来排队进行重建过程。部分重建546.6可被配置为假设仅来自操作中断的不完整或不同步RAID条带可能已经丢失数据,并且仅那些不完整RAID条带可排队进行重建过程。在任一种情况下,对于重建队列中的每个RAID条带,同步RAID块(包括一个或多个奇偶校验块)可用于重建或计算被中断的存储设备的缺失或不同步RAID块的替换RAID块。
在一些实施方案中,重建管理器546可被配置为使用被中断的存储设备和至少一个未中断的存储设备中的RAID块的块时间值之间的差值来确定哪些RAID条带应当被标识为不完整RAID条带。例如,可根据与RAID块一起存储在存储设备中的块时间值来确定成功写入到被中断的存储设备的上一RAID块,并且该块时间值可对应于当存储设备正在处理命令时的上一时间计数器值。写入到被中断的存储设备的最近、最新或上一块时间值可确定上一完整RAID条带,并且重建管理器546可使用该时间计数器值以及具有较高时间计数器值的每个RAID条带来标识不完整RAID条带。在一些实施方案中,重建管理器546可包括设备时间读取546.7,其被配置为读取至少一个未中断的存储设备的设备时间值560.1,以确定写入到未中断的存储设备的上一RAID条带或RAID条带集合。在一些实施方案中,重建管理器546可包括块时间读取546.8,其被配置为读取数据存储设备中的每个RAID块的块时间值560.3,以确定最近或最高块时间值和/或确定块时间值等于或大于所选时间计数器值的RAID条带。例如,块时间读取546.8可读取存储在被中断的数据存储设备中的每个RAID块的块时间值560.3,以确定写入的上一RAID条带(或多个条带)以及对应的时间计数器值。不完整条带逻辑546.9可被配置为使用来自块时间值、设备时间值和/或RAID元数据的时间计数器值来确定要部分重建546.6的不完整或不同步RAID条带。例如,不完整条带逻辑546.9可使用来自被中断的存储设备的上一块时间值作为上一有效RAID条带值,并且将其与从至少一个未中断的存储设备读取的块时间值进行比较以确定不完整RAID条带。在一些实施方案中,来自被中断的存储设备中的上一块时间值的时间计数器值可以与RAID元数据520.1中和/或从设备时间值560.1中读取的时间计数器值进行比较以确定不完整RAID条带。例如,RAID元数据520.1可包括每个RAID条带的条目,这些条目包括在该时间窗口期间写入的RAID条带的时间计数器值520.2,并且上一块时间值可用作用于确定时间计数器大于(或等于)上一块时间值的所有RAID条带条目可以是不完整RAID条带并且应当被重建的索引。
示例性数据存储设备504可包括多个模块或子系统,这些模块或子系统被存储和/或实例化在存储器554中以供处理器552按指令或操作执行。例如,存储器554可包括主机接口570,其被配置为接收主机命令并且管理对非易失性存储器560以及对应的主机数据和元数据执行的对应的读取、写入和其他操作。存储器554可包括元数据管理器580,其被配置为管理存储在数据存储设备504中的元数据。存储器554可包括设备存储管理器590,其被配置为管理写入对非易失性存储器560和从非易失性存储器读取的主机和系统数据。
主机接口570可包括用于接收、解析、响应以及以其他方式管理来自主机节点或系统(直接地或通过一个或多个存储控制器,诸如控制器502)的请求的接口协议和/或功能和参数。例如,主机接口570可包括用于根据主机通信和存储协议接收和处理的针对读取、写入、修改或以其他方式操纵数据块和其相应客户端或主机数据和/或元数据的存储请求的功能。
在一些实施方案中,主机接口570可包括多个硬件模块和/或软件模块,该硬件模块和/或软件模块被配置为使用处理器552和存储器554处理或管理主机接口570的限定操作。例如,主机接口570可包括存储接口协议572,该存储接口协议被配置为符合由主机支持的用于通过存储接口556通信的物理、传输和存储应用程序协议。在一些实施方案中,存储接口协议572可被配置为类似于存储接口协议532,但用于存储设备角色。主机接口570可包括如上文关于图1中的存储设备120所描述的配置数据存储设备504的扩展块配置574。主机接口570可包括存储命令处理器576,其被配置为从控制器502接收存储命令或操作并且确定要对非易失性存储器560执行的对应的存储操作。例如,存储命令处理器576可以从控制器502接收并解析读取、写入、删除和其他命令,并且将对应的操作引导到元数据管理器580和存储管理器590。主机接口570可包括设备初始化逻辑578,其被配置为管理设备电力循环并且在启动或其他初始化事件时发起与控制器502的通信(根据存储接口协议572)。例如,设备初始化逻辑578可以向控制器502发送初始化消息,该初始化消息包括用于建立或重建与控制器502的操作通信的设备签名560.4和/或其他存储设备元数据。
元数据管理器580可包括用于管理存储在数据存储设备504中的元数据(诸如FTL数据或扇区映射信息、设备参数和其他系统信息)的接口协议和/或功能和参数。例如,元数据管理器580可包括用于限定和管理非易失性存储器560的系统区域中的元数据表、页或其他数据结构的功能。在一些实施方案中,元数据管理器580可包括多个硬件模块和/或软件模块,该硬件模块和/或软件模块被配置为使用处理器552和存储器554来处理或管理元数据管理器580的限定操作。例如,元数据管理器580可包括设备时间写入582,其被配置为将针对限定的操作窗口(以及对应的RAID条带/块)的时间计数器值作为设备时间值560.1写入存储设备元数据中。设备时间值560.1的时间值可以在来自控制器502的元数据写入命令中被接收并且被存储在为最近设备时间值指定的存储器位置中。对应的读取操作可被配置为在收到请求后将设备时间值560.1返回到控制器502。
设备存储管理器590可包括用于管理存储到非易失性存储器560的数据(诸如到主机存储位置的主机/RAID数据块和到系统存储位置的系统数据)的接口协议和/或功能和参数。例如,设备存储管理器590可被配置为使用数据存储设备304的读取和写入路径基于主机LBA名称和构成非易失性存储器560的对应存储器位置或扇区来对非易失性存储器560执行写入和读取操作。在一些实施方案中,设备存储管理器590可包括多个硬件模块和/或软件模块,该硬件模块和/或软件模块被配置为使用处理器552和存储器554来处理或管理设备存储管理器590的限定操作。例如,设备存储管理器590可包括RAID块写入592,其被配置为基于从RAID写入引擎544接收的命令来执行RAID块写入,包括将每个块时间值560.3与每个RAID块560.2相邻地写入,作为原子写入操作的一部分。例如,设备存储管理器590可包括块时间读取594,其被配置为基于从重建管理器546接收的命令来执行块时间读取,包括读取针对每个RAID块560.2的块时间值560.3。
如图6所示,可根据用于存储RAID块时间值以及使用它们来选择性地重建不完整RAID条带的示例性方法,即根据图6中框610至框630所示的方法600,操作存储系统500。
在框610处,可确定主机存储命令。例如,控制器可接收主机存储命令以在由控制器管理的数据存储设备的RAID集合中存储或修改一个或多个主机数据块。
在框612处,可确定用于存储主机数据的RAID块。例如,控制器可以将主机数据划分成多个RAID块。
在框614处,可以从主机数据确定一个或多个奇偶校验块。例如,基于RAID配置,控制器可以为包含主机数据的RAID块集合计算至少一个奇偶校验块,并且将该奇偶校验块添加到构成对应的RAID条带的RAID块集合。
在框616处,可以为RAID条带确定时间计数器。例如,控制器可包括时间计数器,该时间计数器被递增以提供规则间隔或时间窗口,在该规则间隔或时间窗口期间可以按特定时间计数器值对RAID条带进行分组。
在框618处,可以将RAID块分配给RAID集合中的存储设备。例如,对于每个RAID条带,RAID块可以连同作为块时间值的当前时间计数器值一起被发送到RAID集合中的每个存储设备。
在框620处,可以将RAID块及其对应的块时间值存储到存储设备。例如,每个数据存储设备可以从控制器接收包括其分配的RAID块和块时间值的写入命令,并且将RAID块与块时间值一起存储在非易失性存储器中。
框610至620可针对多个主机存储命令重复任何次数,并且在RAID集合的正常操作期间递增时间计数器值。当RAID集合中的一个或多个存储设备遭受与控制器的操作或通信丢失时,方法600可进行到框622。
在框622处,可确定操作中断。例如,控制器可确定与存储设备的通信和/或存储设备的操作状态丢失,中断操作并且触发RAID集合的降级状态。
在框624处,可确定至少一个被中断的存储设备。例如,控制器可确定同一存储设备的操作丢失和返回,从而将存储设备标识为被中断的(而不是被替换的)。
在框626处,可确定被中断的存储设备的上一块时间值。例如,控制器可读取与被中断的存储设备中的RAID块一起存储的块时间值,以确定上一或最近的块时间值以及对应的RAID块。
在框628处,可确定至少一个不完整RAID条带。例如,控制器可使用上一块时间值来标识被写入到未中断的存储设备的所有RAID条带(例如,具有更大的时间计数器值的那些条带),并且对于那些条带,其对应的RAID块未被写入或更新到被中断的存储设备。不完整RAID条带的集合可包括在具有比上一块时间值更大的时间计数器值的时间间隔中写入的所有RAID条带。
在框630处,可选择性地重建不完整RAID条带。例如,控制器可以将在框628处确定的不完整RAID条带的集合添加到重建队列并且排除时间计数器值小于上一块时间值的RAID条带,因为它们在操作中断之前被成功写入。
如图7所示,可根据用于将RAID块时间值存储在数据存储设备的RAID集合中的示例性方法,即根据图7中的框710至框734所示的方法700,操作存储系统500。
在框710处,可配置扩展块数据存储设备。例如,控制器或另一配置实用程序可以将RAID集合中的每个数据存储设备格式化为具有附加到每个主机数据位置的系统存储位置的扩展块存储设备。
在框712处,数据存储设备集合可被配置为RAID集合。例如,控制器可配置由限定数量的数据存储设备组成的RAID集合,这些数据存储设备在冗余和允许的存储设备故障方面符合期望的RAID配置,主机数据可以从该存储设备故障恢复。
在框714处,可配置颗粒度阈值。例如,控制器可包括存储在RAID配置参数中的可配置的颗粒度阈值,并且可以由系统默认值或用户或管理员输入来确定。
在框716处,可配置一个或多个完全重建阈值。例如,控制器可包括存储在RAID配置参数中的可配置的中断阈值和/或重建阈值,用于基于实耗时间或不完整RAID条带的数量来确定是发起完全重建还是部分重建。
在框718处,可初始化RAID操作。例如,控制器可初始化RAID集合中的数据存储设备并且开始接收指向RAID集合的主机存储操作或命令。
在框720处,可确定时间计数器值。例如,控制器可初始化用于跟踪操作时间窗口的时间计数器,在该操作时间窗口期间,一个或多个RAID条带可以被写入到RAID集合。
在框722处,可以将时间计数器值存储在RAID元数据中。例如,控制器可以在每个操作窗口开始时将时间计数器存储在RAID元数据中。
在框724处,可以将时间计数器值作为设备时间值存储在RAID集合中的每个数据存储设备中。例如,控制器可使用元数据写入命令来将当前时间计数器值存储在RAID集合中的每个数据存储设备的元数据中。
在框726处,可以将时间计数器值作为块时间值附加到每个RAID块。例如,控制器可以将时间计数器值添加到在框710处配置的扩展块格式的系统存储位置中的块时间值位置中。
在框728处,可以将包括块时间值的RAID块写入到数据存储设备。例如,控制器可以在同一写入命令和原子写入操作中发送针对包括附加块时间值的RAID数据块的写入命令。
在框730处,可确定完整RAID条带。例如,控制器可以在RAID块(和块时间值)被成功存储之后从每个数据存储设备接收通知。
在框732处,可监视实耗时间。例如,控制器可监视自从当前时间计数器值被确定并且对应的RAID写入操作被发起以来的实耗时间。
在框734处,可根据颗粒度阈值来递增时间计数器值。例如,当在框732处监视的实耗时间满足颗粒度阈值时,时间计数器值可递增并且新的时间计数器值可用于RAID操作,从而带着针对下一RAID条带集合的新的当前时间计数器值返回到框722。
如图8所示,可根据确定操作中断以选择性地发起数据存储设备的RAID集合的部分重建的示例性方法,即根据图8中的框810至框836所示的方法800,操作存储系统500。
在框810处,可确定中断阈值。例如,控制器可以从RAID配置参数读取用户配置的中断阈值。
在框812处,可确定重建阈值。例如,控制器可以从RAID配置参数读取用户配置的完全重建阈值。
在框814处,可确定存储设备的操作丢失。例如,控制器可检测数据存储设备已离线、失去电力和/或不再响应通信尝试。
在框816处,可进入降级状态。例如,控制器可以将其操作状态改变为降级,并且通知主机系统RAID集合不再接受存储操作,直到完成重建并且可返回正常操作。
在框818处,可初始化中断计数器。例如,控制器可初始化基于时间或基于事件的计数器,用于确定在框814处确定的操作丢失的持续时间。
在框820处,如果超过中断阈值,则可选择性地发起完全重建。例如,在框810处设定的中断阈值可确定在确定应当发起完全重建之前控制器应当等待存储设备返回多长时间(例如,当存储设备最终确实返回时,在其插槽中检测到替换设备,或者可以从另一位置选择替换驱动器,诸如预留的驱动器或热备用)。
在框822处,可检测操作数据存储设备。例如,控制器可检测存储设备已重新出现或者已从先前被丢失的存储设备占用的物理插槽或者与RAID集合相关联的另一物理插槽建立通信。
在框824处,可比较设备签名。作为存储设备初始化和/或检测的一部分,唯一设备签名值由在框822处检测到的存储设备提供,并且与先前存储在RAID元数据或丢失的存储设备的其他配置数据中的设备签名进行比较。
在框826处,可确定操作中断。例如,基于在中断阈值之前检测到正在操作的存储设备并且设备签名匹配丢失的存储设备的签名,控制器可确定已发生操作中断并且被中断的存储设备可仍然具有针对多个完整且同步RAID条带的分配的RAID块。
在框828处,可以从被中断的存储设备读取块时间值,以确定写入到被中断的存储设备的最近RAID块的上一块时间值。例如,控制器可发起针对被中断的存储设备中的每个RAID块的读取操作,以与每个RAID块一起存储的块时间值为目标,并且将它们相互比较以找到对应于上一块时间值的最高时间计数器值。
在框830处,可以从至少一个未中断的存储设备读取块时间值以确定不完整RAID条带。例如,控制器可针对未中断的存储设备中的一个存储设备中的每个RAID块发起读取操作,以确定写入到未中断的存储设备的最近RAID条带,并且将它们与上一块时间值(来自块828)进行比较,以确定具有更高块时间值(对应于针对不完整RAID条带的更高时间计数器值)的RAID块(以及对应的不完整RAID条带)。
在框832处,可确定重建计数。例如,控制器可以对在框830处确定的不完整RAID条带的数量进行计数。
在框834处,如果超过重建阈值,则可选择性地发起完全重建。例如,控制器可确定存在比重建阈值所允许的更多的不完整RAID条带,并且发起完全重建。
在框836处,可发起部分重建。例如,如果不完整RAID条带的数量小于重建阈值,则控制器可发起仅不完整RAID条带的部分重建。
尽管在本技术的前述详细描述中已经呈现了至少一个示例性实施方案,但应当理解,可存在大量变化。还应当理解,一个或多个示例性实施方案是示例,并且不旨在以任何方式限制技术的范围、适用性或配置。相反,前面的详细描述将为本领域技术人员提供用于实现本技术的示例性实施方案的便利指导方针,应当理解,在不脱离如所附权利要求及其合法等同物所阐述的技术范围的情况下,可以对示例性实施方案中描述的元件的功能和/或布置进行各种修改。
如本领域普通技术人员将理解的,本技术的各个方面可以具体体现为系统、方法、或计算机程序产品。因此,本技术的一些方面可以采取完全为硬件的实施方案、完全为软件的实施方案(包括固件、驻留软件、微代码等)、或硬件和软件方面的组合的形式,这些方面通常都可以在本文中称为电路、模块、系统和/或网络。此外,本技术的各个方面可以采取具体体现在一个或多个计算机可读介质中的计算机程序产品的形式,包括在其上具体体现的计算机可读程序代码。
可以利用一个或多个计算机可读介质的任何组合。计算机可读介质可以是计算机可读信号介质或物理计算机可读存储介质。例如,物理计算机可读存储介质可以是但不限于电子、磁性、光学、晶体、聚合物、电磁、红外或半导体系统、装置或设备等,或前述的任何合适组合。物理计算机可读存储介质的非限制性示例可包括但不限于包括一个或多个电线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、闪速存储器、光纤、紧凑式光盘只读存储器(CD-ROM)、光学处理器、磁处理器等,或前述的任何合适的组合。在本文档的上下文中,计算机可读存储介质可以是可包含或存储用于供指令执行系统、装置、和/或设备使用或与其结合的程序或数据的任何有形介质。
计算机可读介质上具体体现的计算机代码可以使用任何适当的介质来传输,包括但不限于无线、有线、光纤电缆、射频(RF)等,或者前述的任何合适组合。用于执行本技术的各方面的操作的计算机代码可以用任何静态语言编写,诸如C编程语言或其他类似的编程语言。计算机代码可以完全在用户的计算设备上执行,部分在用户的计算设备上执行,作为独立的软件包,部分在用户的计算设备上并且部分在远程计算设备上执行,或者完全在远程计算设备或服务器上执行。在后一种情况下,远程计算设备可以通过任何类型的网络或通信系统连接到用户的计算设备,包括但不限于,可以对外部计算机(例如,通过使用互联网服务提供商的互联网)建立局域网(LAN)或广域网(WAN)、统合式网络或连接。
以上可以参考方法、装置、系统和计算机程序产品的流程图图示和/或框图来描述本技术的各方面。应当理解,流程图图示和/或框图的每个框以及流程图图示和/或框图中的框的组合可以由计算机程序指令实现。可以将这些计算机程序指令提供给通用计算机、专用计算机、或其他可编程数据处理装置的处理设备(处理器)以生产机器,使得可经由处理设备或其他可编程数据处理装置执行的指令创建用于实现在流程图中和/或框图的框中指定的操作/动作的装置。
一些计算机程序指令还可以存储在计算机可读介质中,该计算机可读介质可以指示计算机、其他可编程数据处理装置或其他设备以特定方式操作,使得该指令存储在计算机可读介质中以产生包括实现在流程图中和/或框图的框中指定的操作/动作的指令的制品。一些计算机程序指令也可以被加载到计算设备、其他可编程数据处理装置、或其他设备上,以致使在计算设备、其他可编程装置、或其他设备上执行一系列操作步骤以产生计算机实现的过程,使得由计算机或其他可编程装置执行的指令提供用于实现在流程图中和/或框图的框中指定的操作/动作的一个或多个过程。
以上附图中的流程图和/或框图可以示出根据本技术的各方面的装置、系统、方法和/或计算机程序产品的可能具体实施的架构、功能和/或操作。在这方面,流程图或框图中的框可以表示代码的模块、片段或部分,其可以包括用于实现一个或多个指定逻辑功能的一个或多个可执行指令。还应当指出,在一些另选的方面中,框中示出的一些功能可以不按图中所示的顺序发生。例如,事实上,连续示出的两个框可基本上同时执行,或者这些框有时可以采用相反的顺序执行,这取决于所涉及的操作。还应当注意,框图和/或流程图图示的框或框图和/或流程图图示中的框的组合可以由可执行一个或多个指定操作或动作的基于专用硬件的系统,或专用硬件和计算机指令的组合来实现。
虽然已经详细说明和讨论了本技术的一个或多个方面,但本领域普通技术人员将理解,在不脱离如所附权利要求中阐述的本技术的范围的情况下,可以对各个方面进行修改和/或调整。
Claims (20)
1.一种系统,包括:
多个数据存储设备,所述多个数据存储设备包括被配置为存储主机数据的非易失性存储介质,其中:
所述主机数据被配置在多个RAID块中;
每个RAID块对应于跨所述多个数据存储设备分布的RAID条带;并且
每个RAID块具有块时间值,所述块时间值对应于当所述RAID块被存储到所述多个数据存储设备中的对应数据存储设备时的时间;
独立磁盘冗余阵列(RAID)控制器,所述RAID控制器被配置为:
确定所述多个数据存储设备中的至少一个数据存储设备的操作中断;
响应于所述操作中断而确定由所述至少一个数据存储设备存储的上一RAID块的上一块时间值;
基于所述上一块时间值来确定至少一个不完整RAID条带;以及
选择性地重建所述至少一个不完整RAID条带。
2.根据权利要求1所述的系统,其中所述多个数据存储设备中的每个数据存储设备被配置为将每个RAID块的所述块时间值与所述RAID块相邻地存储在所述非易失性存储介质中。
3.根据权利要求2所述的系统,其中所述多个数据存储设备中的每个数据存储设备:
被配置为块存储设备,所述块存储设备包括:
主机数据块尺寸;和
扩展块尺寸,所述扩展块尺寸限定超出每个主机数据块的所述主机数据块尺寸的附加存储位置;以及
被进一步配置为将所述块时间值存储在对应于每个RAID块的所述扩展块尺寸的所述附加存储位置中。
4.根据权利要求1所述的系统,其中所述多个数据存储设备中的每个数据存储设备被配置为将设备时间值存储在元数据存储中,所述设备时间值对应于当最近RAID条带中的最近RAID块被存储在所述数据存储设备的所述非易失性存储介质中时的时间。
5.根据权利要求1所述的系统,其中所述RAID控制器被进一步配置为:
将存储在所述多个数据存储设备中的最近RAID条带的时间计数器值存储在RAID元数据中;
从所述至少一个数据存储设备确定所述上一块时间值;以及
基于所述时间计数器值和所述上一块时间值来确定所述至少一个不完整RAID条带。
6.根据权利要求5所述的系统,其中所述RAID控制器被进一步配置为向所述多个数据存储设备发送要作为所述块时间值与每个RAID块相邻地存储在所述非易失性存储介质中的所述时间计数器值。
7.根据权利要求5所述的系统,其中所述RAID控制器被进一步配置为:
以可配置的颗粒度阈值选择性地递增所述时间计数器值;以及
在每次递增之间将多个RAID条带写入到所述多个数据存储设备。
8.根据权利要求5所述的系统,其中所述RAID控制器被进一步配置为:
基于存储在所述至少一个数据存储设备中的RAID块的所述块时间值来确定上一完整RAID条带;以及
基于存储在所述多个数据存储设备中的另一数据存储设备中的RAID块的所述块时间值来确定自从所述上一完整RAID条带以来的所述至少一个不完整RAID条带。
9.根据权利要求5所述的系统,其中所述RAID控制器被进一步配置为:
确定所述至少一个数据存储设备的操作丢失;
响应于所述操作丢失而进入针对对应于所述多个数据存储设备的RAID集合的降级状态;
检测对应于所述至少一个数据存储设备的位置的操作数据存储设备;
基于设备签名来确定所述操作数据存储设备是所述至少一个数据存储设备;以及
响应于所述操作数据存储设备是所述至少一个数据存储设备而确定所述操作中断。
10.根据权利要求9所述的系统,其中所述RAID控制器被进一步配置为:
确定中断计数器以测量从所述操作丢失起的实耗时间;
确定中断阈值;
响应于所述中断计数器超过所述中断阈值而选择性地发起所述RAID集合的完全重建;
确定所述至少一个不完整RAID条带的重建计数;
确定重建阈值;以及
响应于所述重建计数超过所述重建阈值而选择性地发起所述RAID集合的所述完全重建。
11.一种计算机实现的方法,包括:
将主机数据存储到包括非易失性存储介质的多个数据存储设备,其中:
所述主机数据被配置在多个RAID块中;
每个RAID块对应于跨所述多个数据存储设备分布的RAID条带;并且
每个RAID块具有块时间值,所述块时间值对应于当所述RAID块被存储到所述多个数据存储设备中的对应数据存储设备时的时间;确定所述多个数据存储设备中的至少一个数据存储设备的操作中断;
响应于所述操作中断而确定由所述至少一个数据存储设备存储的上一RAID块的上一块时间值;
基于所述上一块时间值来确定至少一个不完整RAID条带;以及
选择性地重建所述至少一个不完整RAID条带。
12.根据权利要求11所述的计算机实现的方法,还包括:
将每个RAID块的所述块时间值与所述RAID块相邻地存储在所述非易失性存储介质中。
13.根据权利要求12所述的计算机实现的方法,还包括:
将所述多个数据存储设备配置为块存储设备,所述块存储设备包括:
主机数据块尺寸;和
扩展块尺寸,所述扩展块尺寸限定超出每个主机数据块的所述主机数据块尺寸的附加存储位置,其中存储每个RAID块的所述块时间值包括将所述块时间值存储在对应于所述RAID块的所述扩展块尺寸的所述附加存储位置中。
14.根据权利要求11所述的计算机实现的方法,还包括:
将设备时间值存储在所述多个数据存储设备中的每个数据存储设备的元数据存储中,所述设备时间值对应于当最近RAID条带中的最近RAID块被存储在所述数据存储设备的所述非易失性存储介质中时的时间。
15.根据权利要求11所述的计算机实现的方法,还包括:
将存储在所述多个数据存储设备中的最近RAID条带的时间计数器值存储在RAID元数据中;
从所述至少一个数据存储设备确定所述上一块时间值;以及
基于所述时间计数器值和所述上一块时间值来确定所述至少一个不完整RAID条带。
16.根据权利要求15所述的计算机实现的方法,还包括:
向所述多个数据存储设备发送要作为所述块时间值与每个RAID块相邻地存储在所述非易失性存储介质中的所述时间计数器值。
17.根据权利要求15所述的计算机实现的方法,还包括:
以可配置的颗粒度阈值选择性地递增所述时间计数器值;以及
在每次递增之间将多个RAID条带写入到所述多个数据存储设备。
18.根据权利要求15所述的计算机实现的方法,还包括:
基于存储在所述至少一个数据存储设备中的RAID块的所述块时间值来确定上一完整RAID条带;以及
基于存储在所述多个数据存储设备中的另一数据存储设备中的RAID块的所述块时间值来确定自从所述上一完整RAID条带以来的所述至少一个不完整RAID条带。
19.根据权利要求15所述的计算机实现的方法,还包括:
确定所述至少一个数据存储设备的操作丢失;
响应于所述操作丢失而进入针对对应于所述多个数据存储设备的RAID集合的降级状态;
检测对应于所述至少一个数据存储设备的位置的操作数据存储设备;
基于设备签名来确定所述操作数据存储设备是所述至少一个数据存储设备;以及
响应于所述操作数据存储设备是所述至少一个数据存储设备而确定所述操作中断。
20.一种系统,包括:
多个数据存储设备,所述多个数据存储设备包括被配置为存储主机数据的非易失性存储介质,其中:
所述主机数据被配置在多个RAID块中;
每个RAID块对应于跨所述多个数据存储设备分布的RAID条带;并且
每个RAID块具有块时间值,所述块时间值对应于当所述RAID块被存储到所述多个数据存储设备中的对应数据存储设备时的时间;用于确定所述多个数据存储设备中的至少一个数据存储设备的操作中断的装置;
用于响应于所述操作中断而确定由所述至少一个数据存储设备存储的上一RAID块的上一块时间值的装置;
用于基于所述上一块时间值来确定至少一个不完整RAID条带的装置;和
用于选择性地重建所述至少一个不完整RAID条带的装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/528,768 | 2021-11-17 | ||
US17/528,768 US11853163B2 (en) | 2021-11-17 | 2021-11-17 | Selective rebuild of interrupted devices in data storage device arrays |
PCT/US2022/029344 WO2023091185A1 (en) | 2021-11-17 | 2022-05-14 | Selective rebuild of interrupted devices in data storage device arrays |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117616376A true CN117616376A (zh) | 2024-02-27 |
Family
ID=86323472
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280048888.9A Pending CN117616376A (zh) | 2021-11-17 | 2022-05-14 | 数据存储设备阵列中被中断的设备的选择性重建 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11853163B2 (zh) |
CN (1) | CN117616376A (zh) |
DE (1) | DE112022002303T5 (zh) |
WO (1) | WO2023091185A1 (zh) |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5195100A (en) * | 1990-03-02 | 1993-03-16 | Micro Technology, Inc. | Non-volatile memory storage of write operation identifier in data sotrage device |
US7020805B2 (en) * | 2002-08-15 | 2006-03-28 | Sun Microsystems, Inc. | Efficient mechanisms for detecting phantom write errors |
US7870464B2 (en) | 2004-11-02 | 2011-01-11 | International Business Machines Corporation | System and method for recovery of data for a lost sector in a storage system |
US7454668B1 (en) * | 2005-09-23 | 2008-11-18 | Emc Corporation | Techniques for data signature and protection against lost writes |
US8595595B1 (en) * | 2010-12-27 | 2013-11-26 | Netapp, Inc. | Identifying lost write errors in a raid array |
US20130198585A1 (en) * | 2012-02-01 | 2013-08-01 | Xyratex Technology Limited | Method of, and apparatus for, improved data integrity |
US10360119B2 (en) | 2015-10-06 | 2019-07-23 | Netapp, Inc. | Data recovery in a distributed storage system |
CN110413439B (zh) * | 2018-04-28 | 2023-10-20 | 伊姆西Ip控股有限责任公司 | 用于检测数据的不完整写入的方法、设备和计算机可读介质 |
US11275512B2 (en) | 2018-05-08 | 2022-03-15 | Micron Technology, Inc. | Asynchronous power loss impacted data structure |
US10761738B2 (en) | 2018-07-13 | 2020-09-01 | Seagate Technology Llc | Raid performance by offloading tasks to expanders |
US11132256B2 (en) | 2018-08-03 | 2021-09-28 | Western Digital Technologies, Inc. | RAID storage system with logical data group rebuild |
US11397644B2 (en) | 2019-04-23 | 2022-07-26 | Samsung Electronics Co., Ltd. | Method for controlling operations of RAID system comprising host device and plurality of SSDs |
CN111858189A (zh) | 2019-04-29 | 2020-10-30 | 伊姆西Ip控股有限责任公司 | 对存储盘离线的处理 |
-
2021
- 2021-11-17 US US17/528,768 patent/US11853163B2/en active Active
-
2022
- 2022-05-14 DE DE112022002303.1T patent/DE112022002303T5/de active Pending
- 2022-05-14 WO PCT/US2022/029344 patent/WO2023091185A1/en active Application Filing
- 2022-05-14 CN CN202280048888.9A patent/CN117616376A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
WO2023091185A1 (en) | 2023-05-25 |
US11853163B2 (en) | 2023-12-26 |
DE112022002303T5 (de) | 2024-03-07 |
US20230153206A1 (en) | 2023-05-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111433732B (zh) | 存储设备以及由存储设备执行的计算机实现的方法 | |
US20210173741A1 (en) | Distributed multi-level protection in a hyper-converged infrastructure | |
CN111480148B (zh) | 具有对等数据恢复的存储系统 | |
USRE48222E1 (en) | Reconstruct reads in a raid array with dynamic geometries | |
US10001947B1 (en) | Systems, methods and devices for performing efficient patrol read operations in a storage system | |
CN111465922B (zh) | 具有对等数据清理的存储系统 | |
KR101821001B1 (ko) | Raid 어레이에서 장치내 데이터 보호 | |
US8839030B2 (en) | Methods and structure for resuming background tasks in a clustered storage environment | |
US7979635B2 (en) | Apparatus and method to allocate resources in a data storage library | |
US20080256397A1 (en) | System and Method for Network Performance Monitoring and Predictive Failure Analysis | |
US20120084507A1 (en) | Multi-level protection with intra-device protection in a raid array based storage system | |
US11531498B2 (en) | Peer storage device messaging over control bus | |
US10338844B2 (en) | Storage control apparatus, control method, and non-transitory computer-readable storage medium | |
US9792056B1 (en) | Managing system drive integrity in data storage systems | |
US7653831B2 (en) | Storage system and data guarantee method | |
CN105068836A (zh) | 一种基于sas网络的远程可共享的启动系统 | |
WO2019210844A1 (zh) | 存储设备异常检测方法及装置、分布式存储系统 | |
US10860224B2 (en) | Method and system for delivering message in storage system | |
US11544205B2 (en) | Peer storage devices sharing host control data | |
US10915405B2 (en) | Methods for handling storage element failures to reduce storage device failure rates and devices thereof | |
US10956245B1 (en) | Storage system with host-directed error scanning of solid-state storage devices | |
US11853163B2 (en) | Selective rebuild of interrupted devices in data storage device arrays | |
US11983428B2 (en) | Data migration via data storage device peer channel | |
US20240143518A1 (en) | Using Control Bus Communication to Accelerate Link Negotiation | |
US20230393772A1 (en) | Data Migration via Data Storage Device Peer Channel |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |