CN111133420A - 来自外部阵列副本的raid阵列重建辅助 - Google Patents

来自外部阵列副本的raid阵列重建辅助 Download PDF

Info

Publication number
CN111133420A
CN111133420A CN201880061548.3A CN201880061548A CN111133420A CN 111133420 A CN111133420 A CN 111133420A CN 201880061548 A CN201880061548 A CN 201880061548A CN 111133420 A CN111133420 A CN 111133420A
Authority
CN
China
Prior art keywords
raid
data
array
raid array
drives
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.)
Granted
Application number
CN201880061548.3A
Other languages
English (en)
Other versions
CN111133420B (zh
Inventor
A·罗伯茨
S·蒙南
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Western Digital Technologies Inc
Original Assignee
Western Digital Technologies Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Western Digital Technologies Inc filed Critical Western Digital Technologies Inc
Publication of CN111133420A publication Critical patent/CN111133420A/zh
Application granted granted Critical
Publication of CN111133420B publication Critical patent/CN111133420B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • G06F11/1092Rebuilding, e.g. when physically replacing a failing disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • G06F11/2071Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring using a plurality of controllers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2056Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant by mirroring
    • G06F11/2082Data synchronisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/805Real-time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/82Solving problems relating to consistency

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

当重建其中驱动器已发生故障的RAID(独立磁盘冗余阵列)阵列时,如果另一个RAID阵列包含重建RAID阵列内容的镜像副本,则该镜像RAID阵列可用于更快地重建具有发生故障的驱动器的RAID阵列。可将对重建RAID阵列的数据请求重定向到镜像RAID阵列;可从镜像RAID阵列传输数据;或者这些的组合可用于更快地完成重建。当将数据从镜像阵列传输到重建阵列时,可将传输作为独立于任一阵列的RAID模块的直接存储器访问(DMA)过程来执行。

Description

来自外部阵列副本的RAID阵列重建辅助
背景技术
半导体存储器广泛用于各种电子设备,诸如蜂窝电话、数码相机、个人数字助理、医疗电子器件、移动计算设备、服务器、固态驱动器、非移动计算设备和其他设备。半导体存储器可以包括非易失性存储器或易失性存储器。即使当非易失性存储器未连接到电源(例如,电池)时,非易失性存储器也允许存储和保留信息。
随着存储器结构的密度增加,保持存储数据的完整性变得更具挑战性。保持数据完整性的一种方法是通过使用错误校正码(ECC)。然而,错误校正码可仅能处理有限量的错误,并且可通过提高ECC技术的有效性来进一步改善数据保留。保持数据完整性的其他方法是通过使用RAID(独立磁盘冗余阵列)技术,其中数据以冗余方式跨多个设备存储,从而允许在设备中的一个设备发生故障时重组数据。然而,重组丢失数据可能非常耗时。
附图说明
类似编号的元件是指不同的图中的共同部件。
图1是RAID阵列的一个实施方案的框图。
图2是诸如可用于图1的RAID阵列的驱动器的固态驱动器(SSD)存储系统的框图。
图3是诸如可用于图1的RAID阵列的驱动器的示例性硬盘驱动器(HDD)存储系统的框图。
图4是其中RAID阵列和主机设备通过计算架构连接的系统的示意图。
图5是描述用于RAID阵列的阵列上重建的一个实施方案的流程图。
图6是图4的架构的简化型式,其示出了通过计算架构连接的两个RAID阵列,但具有关于RAID阵列的更多细节。
图7是描述用于对RAID阵列进行重建操作的过程的一个实施方案的流程图,诸如参照图6所示。
图8和图9是图7的步骤的细节。
图10示出了其中偶数条带从镜像RAID阵列传输并且在重建RAID阵列上生成奇数条带的重建。
图11示出了从重建RAID阵列到镜像RAID阵列的数据请求的重定向。
图12是描述用于在对RAID阵列进行重建操作期间使用镜像RAID阵列来履行数据请求的过程的一个实施方案的流程图。
具体实施方式
RAID(独立磁盘冗余阵列)阵列提供了一种用于保护数据和校正设备故障而不会丢失用户数据的有效方法。在RAID阵列中,数据以冗余方式跨多种不同的驱动器(诸如固态驱动器(或SSD)和硬盘驱动器(或HDD))分布,以改善存储数据的可靠性。使用包括擦除代码的多个RAID变型或“级别”(RAID级别1、2、3、4、5、6、10、50、60等等)。这些各种RAID级别通过以下项来存储数据:具有存储在RAID阵列的不同的驱动器上的数据的多个副本;跨RAID阵列的多个驱动器使数据集条带化;生成数据的奇偶校验以及跨RAID阵列的驱动器中的一个或多个驱动器存储奇偶校验;或这些的各种组合。这些冗余允许在RAID阵列的驱动器中的一个驱动器发生故障时保护数据,因为丢失数据可以从阵列中的其他驱动器重建或能够从奇偶校验重组。
随着非易失性数据存储系统向前移动到更密集的平台,RAID阵列的故障域已增长到有问题的程度。例如,如果阵列处于负载下,则具有1.2个四字节(TB)容量的五个硬盘驱动器的RAID阵列可以使RAID阵列花费大约七天重建,从而必须在重建过程期间将用户数据供应给主机。如果从设备去除工作负载,则同一阵列可在小于2小时内重建。这指示在重建活动和用户活动(读取和写入主机数据)之间来回抖动会延长重建完成的时间,并且可通过在重建期间去除一些或所有用户工作负载而受到积极影响,但代价是在重建期间使存储在系统上的数据不可用。基于固态驱动器(SSD)的RAID阵列可比基于硬盘驱动器的RAID阵列快速地重建,但随着非易失性数据存储系统朝向32TB和更大的SSD移动,阵列重建时间会变得很长,即使对于SSD也是如此,并且此类系统可以通过减少HDD阵列和SSD阵列的重建时间的技术而受益。可通过加速阵列的RAID模块来缩短重建过程,但考虑到RAID阵列正增长到的尺寸,此方法只能推到目前为止,并且不是可行的方法。
以下呈现了一些技术,这些技术利用镜像RAID阵列来限制或去除重建活动与用户工作负载之间的冲突,以便通过利用有关其他阵列副本的存在的全局智能并利用它们来加速重建,来允许更快的重建时间。RAID阵列的用户将通常将RAID应用于外壳中的一个RAID系统,但也会在另一个机架中以及在某些情况下在另一个地理位置具有数据或外壳的附加副本,以保护数据免受自然灾害、局部断电或提供基于最佳位置的性能等原因。这些镜像副本可用于加速处于临界或非最佳状态的RAID阵列上的重建过程。
例如,如果第一RAID阵列的驱动器中的一个驱动器发生故障,而不是重建RAID阵列内的丢失数据,则阵列可以从第二镜像RAID阵列请求副本。然后,所需数据的副本可在直接存储器访问(DMA)过程中从第二阵列传输到第一阵列。例如,第二镜像阵列的可用性可作为第一阵列的元数据的一部分来保持。在传输中,尽管数据可穿过第一RAID阵列和第二RAID阵列的控制部分,但该数据不穿过任一阵列的RAID模块,而是RAID编码的数据穿过独立于RAID模块的控制器。可传输数据的速率可取决于包括两个RAID阵列之间的网络连接以及两个RAID阵列的缓冲能力的因素。取决于这些因素以及需要重建的阵列上的负载,可更快地使遭受故障的RAID阵列自身执行重建,完全通过传输数据的镜像副本或这些的某种组合来执行重建。例如,如果RAID阵列通过高性能计算架构进行连接并且具有良好的缓冲能力,则可完全通过数据传输(诸如远程DMA(RDMA)过程)来实现重建。相反地,如果可用传输率为低的,并且需要重建的第一RAID阵列未处于负载下,则使用其控制器的RAID模块在第一RAID阵列内执行重建可能更有效。在许多情况下,这两者的组合可以是优选的,其中比率可取决于条件而变化。
还可通过将对数据的请求转移到镜像RAID阵列来加速重建过程,从而减少重建阵列上的负载。由于用于从阵列读取数据或向阵列写入数据的用户请求可能影响重建过程,因此可使用数据的第二镜像副本的可用性来重定向一些或所有数据访问请求。例如,如果用户在重建过程期间请求存储在第一RAID阵列上的数据,则第一阵列可相反具有从数据的第二RAID阵列中的镜像副本供应的请求数据,并将此副本提供给主机,而不是从它自己的驱动器中的一个驱动器访问数据(或者,如果数据来自发生故障的驱动器,则由RAID模块重新创建数据)。基于条件、访问类型或两者,用户请求可由正在经历重建的RAID阵列、镜像RAID阵列或这些的某种组合来直接处理。例如,可从两个RAID阵列供应交替条带(例如,来自第一RAID阵列的偶数数据条带、来自第二RAID阵列的奇数条带);或者,又如,通过来自第二镜像RAID阵列的传输来适应读取请求,而写入请求由第一RAID阵列处理。
图1是RAID阵列的一个实施方案的框图,其中可实施本文提出的技术。RAID阵列101的典型实施方案包括公共外壳中的控制部分110和多个驱动器D1-DN 121-129。根据实施方案,驱动器D1-DN 121-129可包括硬盘驱动器(HDD)、固态驱动器(SSD)、其他非易失性存储驱动器或这些驱动器的一些组合。控制部分110可由一个或多个集成电路组成,该一个或多个集成电路监督驱动器D1-DN 121-129上的数据的存储和管理。外壳中的控制部分110的元件包括网络接口111和驱动器接口117,RAID阵列通过该网络接口连接到网络,控制部分110通过该驱动器接口与驱动器D1-DN 121-129进行通信。RAID阵列101的控制部分110还包括RAID模块113,该RAID模块从主机获取通过网络接收的数据,并且对接收的数据进行RAID编码,然后该接收的数据以分布方式跨驱动器D1-DN 121-129存储。当读出请求数据时,RAID编码的数据然后被RAID模块113解码,其中然后通过网络供应出请求数据。
以冗余方式存储跨驱动器D1-DN 121-129分布的RAID编码的数据。这在131-139处示意性地表示,其中在进行编码之后,接收的主机数据集跨多个驱动器扩展。根据实施方案,多个RAID版本或“级别”可用于对数据集进行RAID编码。例如,在一些RAID级别中,可通过使同一数据集跨不同的驱动器存储超过一次来供应冗余,使得例如驱动器D2 122的部分132中的内容为驱动器D1 121的内容131的副本。
在其他RAID级别中,数据集可跨若干个驱动器条带化。在条带化布置中,不是将数据集存储在单个驱动器上,而是将数据分割成“条带”,然后将这些条带跨驱动器D1-DN121-129扩展。在该布置中,131-139中的每一者为“次要”条带(单个驱动器上的条带的尺寸),其中驱动器D1-DN 121-129的完全收集的131-139的组合条带形成“主要”条带(次要条带的尺寸乘以驱动器的数量)。
在其他RAID级别中,RAID模块生成存储在驱动器D1-DN 121-129上的允许RAID模块113再现丢失数据的奇偶校验。奇偶校验是从数据集创建的冗余数据位,诸如通过对数据集的值进行逐位XOR。奇偶校验允许根据集合的正确或剩余数据值重构数据错误或丢失数据,其中生成的奇偶校验位的数量越大,可重构的丢失数据的量就越大。常见RAID级别或实施方案通常组合这些技术,诸如跨阵列的多个驱动器使数据集条带化以及将条带化的数据的奇偶校验存储在一个或多个阵列中。例如,在使用奇偶校验的条带化布置中,每个次要条带的奇偶校验可作为次要条带的一部分来存储;或者所有奇偶校验可存储在驱动器中的单个驱动器中。
就RAID命名而言,不同的级别通常以数字提及,其中一些变型有时被称为擦除代码,其中本文所述的技术可与这些变型中的任一种变型一起应用。为了提供一些示例,RAID0跨多个驱动器使数据条带化,RAID 1是通常用于描述数据镜像的术语,RAID 5覆盖基于奇偶校验的单个故障,并且这些组合是变型诸如RAID 50和RAID 10。RAID 10在两个位置基本上是条带化数据(RAID 0),因此是RAID 0和RAID 1的组合。RAID 50是RAID 0的组合,其中每个RAID 0条带被分解为一个RAID 5条带,使得它是条带化加奇偶校验的组合,以组合条带化和奇偶校验两者的效益。
RAID 6是可处理两个驱动器故障的擦除代码类型变型。擦除代码通常用于其中存在丢失多个数据的实际风险的大规模数据传输。因此,擦除代码是围绕具有超过两个驱动器或目标故障的概念构建的。例如,擦除代码系统可被设计为具有20个驱动器或数据目标,并使20个目标中的4个目标为冗余的,或者使20个数据目标中的8个数据目标为冗余的。因此,擦除编码的阵列在此处被认为是RAID变型中的一种RAID变型。擦除代码类型的RAID实施方案允许如需要或希望一样多的冗余数据。
除了从主机接收到的用户数据之外,驱动器D1-DN 121-129还可存储元数据141-149。驱动器中的每一者的元数据可包括与驱动器自身相关的元数据以及RAID阵列的系统级元数据。如下文进一步所述,在一些实施方案中,元数据可包括关于RAID阵列101上的数据的可存储在其他RAID阵列上的副本的信息,其中关于副本的该信息可用于对于RAID阵列101的重建过程中。
控制部分110还将包括被统称为处理块119的各种处理电路,以监督对RAID阵列101的操作。控制部分110的实施方案通常还包括ROM和RAM存储器。在图1中,仅显式地示出缓冲存储器115,其中该缓冲存储器可例如由DRAM存储器形成。缓冲存储器115用于在RAID阵列之间的直接存储器访问类型转换中缓冲RAID编码的数据,以帮助重建操作。控制部分110可由一个或多个集成电路上的多个模块形成。例如,每个模块可包括专用集成电路(ASIC),现场可编程门阵列(FPGA),电路,数字逻辑电路,模拟电路,离散电路、门或任何其他类型的硬件的组合,或者其组合。另选地或除此之外,每个模块可包括存储在处理器可读设备(例如,存储器)中的软件,以对控制部分110的处理块119和其他元件进行编程,从而执行本文所述的功能。
图2是诸如可用于使用SSD的RAID阵列实施方案的驱动器D1-DN 121-129中的每一者的示例性固态驱动器(SSD)存储器系统200的框图。SSD 200包括控制器201和若干个非易失性存储器设备202,诸如NAND闪存存储器芯片。在一定程度上,SSD 200的结构对RAID阵列101的结构进行镜像,其中SSD 200具有控制器201,该控制器管理存储在多个非易失性存储器202上的数据,由于RAID阵列101具有监督驱动器D1-DN 121-129的控制部分110。
进一步考虑图2的结构,图2是诸如可用作SSD并描绘控制器201的一个实施方案的一些细节的示例性存储器系统200的框图。如本文所用,闪存存储器控制器是管理存储在闪存存储器上的数据并且与RAID阵列控制部分110或在其他情况下主机诸如计算机或电子设备进行通信的设备。除了这里描述的特定功能外,闪存存储器控制器可以具有各种功能。例如,闪存存储器控制器可以格式化闪存存储器以确保存储器正常运行、映射出坏的闪存存储器单元,并分配备用存储器单元以替换日后的故障单元。备用单元中的部分备用单元可以用来容纳固件以操作闪存存储器控制器并实现其他特征。在操作中,当RAID阵列控制部分110需要从SSD读取数据或向SSD写入数据时,该RAID阵列控制部分将与闪存存储器控制器进行通信。如果RAID阵列控制部分提供数据要读取/写入的逻辑地址,则闪存存储器控制器可以将从主机RAID阵列控制部分接收的逻辑地址转换为存储器设备202中的物理地址。另选地,RAID阵列控制部分可以提供物理地址。在一些实施方案中,RAID阵列控制部分110将从具有逻辑地址的主机接收用户数据,RAID模块将对数据进行编码并分配对应中间地址,这由驱动器上的控制器201分配物理地址。驱动存储器控制器201可还执行各种存储器管理功能,诸如但不限于损耗均衡(分配写入以避免损耗否则将被重复写入的特定存储器块)和垃圾收集(在块已满之后,仅将有效的数据页面移动到新块,因此可以擦除并且重用完整块)。
驱动控制器201与非易失性存储器管芯202之间的接口可以是任何合适的闪存接口,诸如切换模式200、400或800。在此处讨论的实施方案中,存储器系统200呈固态驱动器(SSD)驱动器的形式,但类似的结构也可用于非SSD存储器系统应用,诸如基于卡的系统或嵌入式存储器系统。
在一些实施方案中,SSD驱动器200包括控制器201与非易失性存储器管芯202之间的单个沟道,本文描述的主题不限于具有单个存储器沟道。例如,在一些存储器系统架构中,控制器和存储器管芯之间存在2、4、8个或更多个沟道,取决于控制器的能力。在本文描述的任何实施方案中,即使在附图中示出单个沟道,控制器和存储器管芯之间也可以存在超过一个单个沟道。
如图2所描绘,控制器201包括与RAID阵列控制部分交接的前端模块208、与一个或多个非易失性存储器管芯202交接的后端模块210、以及执行现在将详细地描述的功能的各种其他模块。
非易失性存储器管芯202可例如为使用包括竖直NAND字符串或其他(2D和3D)存储器结构的三维存储器结构中的电荷捕获材料的NAND闪存存储器。例如,也可以使用浮栅存储器(例如,NAND型和NOR型闪存存储器)、ReRAM存储器、磁阻存储器(例如,MRAM)和相变存储器(PCM)(例如,基于硫属元素化物玻璃的存储器单元)。
ReRAM存储器的一个示例包括可逆电阻切换元件,其布置在由X线和Y线(例如,字线和位线)访问的交叉点阵列中。在另一个实施方案中,存储器单元可包括导电桥存储器元件。导电桥存储器元件也可称为可编程金属化单元。基于固体电解质内的离子的物理重新定位,导电桥存储器元件可用作状态改变元件。在一些情况下,导电桥存储器元件可包括两个固体金属电极,一个是相对惰性的(例如,钨),而另一个是电化学活性的(例如,银或铜),在两个电极之间具有固体电解质的薄膜。随着温度升高,离子的迁移率也增加,这导致导电桥存储器单元的编程阈值降低。因此,导电桥存储器元件可在整个温度范围内具有宽范围的编程阈值。
磁阻存储器(MRAM)通过磁存储元件存储数据。元件由两个铁磁板形成,每个铁磁板可保持磁化,由薄的绝缘层隔开。两个板中的一个是设置为特定极性的永磁体;可以改变另一个板的磁化以匹配外磁场的磁化来存储内存。该配置称为自旋阀,并且是MRAM位的最简单结构。存储器设备由此类存储器单元的网格构建。在用于编程的一个实施方案中,每个存储器单元位于一对写入线之间,该对写入线被布置成彼此成直角,与单元平行,一个在单元上方并且一个在单元下方。当电流通过它们时,产生感应磁场。
相变存储器(PCM)利用硫属元素化物玻璃的性能,其基于材料处于较高电阻非晶形状态还是处于较低电阻结晶状态而具有不同传导水平。PCM存储器实施方案可包括三维竖直交叉点架构,其中PCM存储器单元在二进制或多状态实施方案中进行操作。
图2中描绘的控制器201的部件可以采用例如设计用于与其他部件一起使用的封装功能硬件单元(例如,电路)、可由通常执行相关功能的特定功能的(微)处理器或处理电路执行的程序代码(例如,软件或固件)的一部分、或与较大系统交接的独立硬件或软件部件的形式。例如,每个模块可包括专用集成电路(ASIC),现场可编程门阵列(FPGA),电路,数字逻辑电路,模拟电路,离散电路、门或任何其他类型的硬件的组合,或者其组合。另选地或除此之外,每个模块可包括存储在处理器可读设备(例如,存储器)中的软件,以对处理器进行编程,以使控制器201执行本文所述的功能。图2中描绘的架构是可以(或可以不)使用图1A中描绘的控制器201的部件(即,RAM、ROM、处理器、接口)的一个示例性具体实施。
再次参考驱动控制器201的模块,缓冲区管理器/总线控制器214管理随机存取存储器(RAM)216中的缓冲器,并且控制驱动控制器201的内部总线仲裁。只读存储器(ROM)218存储系统引导代码。虽然图2中被示为与驱动控制器201分离地定位,但是在其他实施方案中,RAM 216和ROM 218中的一个或两者可以位于控制器内。在又其他实施方案中,RAM和ROM的部分可以位于驱动控制器201内和控制器之外。此外,在一些具体实施中,驱动控制器201、RAM 216和ROM 218可位于分离的半导体管芯上。
前端模块208包括提供与RAID阵列控制部分或下一级存储控制器的电接口的RAID阵列控制部分接口220和物理层接口(PHY)222。可以取决于正使用的存储器的类型来选择RAID阵列控制部分接口220的类型。接口220的示例包括但不限于SATA、SATA Express、SAS、光纤信道、USB、PCIe以及NVMe。RAID阵列控制部分接口220通常有利于数据、控制信号和定时信号的传输。
后端模块210包括错误校正控制器(ECC)引擎224,该ECC引擎对从RAID阵列控制部分接收的数据字节进行编码,并且对从非易失性存储器读取的数据字节进行解码和错误校正。ECC引擎224具有一个或多个解码器。在一个实施方案中,ECC引擎224包括低密度奇偶校验(LDPC)解码器。在一个实施方案中,ECC引擎的解码器可包括硬解码器和软解码器。可将一个或多个解码器的输出提供给RAID阵列控制部分。控制器可被配置为从非易失性存储器202接收硬位值和软位值。硬位值衍生自硬位读取引用级别的读取存储器单元。软位值衍生自软位读取引用级别的读取存储器单元。在一个实施方案中,硬位值被输入到硬解码器。在一个实施方案中,硬位值和软位值被输入到软解码器。
后端模块210包括错误校正码(ECC)引擎224,该ECC引擎对从RAID阵列控制部分接收的数据字节进行编码,并且对从非易失性存储器读取的数据字节进行解码和错误校正。命令定序器226生成命令序列,诸如编程命令序列和擦除命令序列,以传输到非易失性存储器管芯202。
在一些实施方案中,除了或替代RAID阵列控制部分110上的RAID模块113,驱动控制器201还可包括RAID模块228。将RAID模块包含在驱动器上可以允许将一些或所有RAID编码和解码卸载到驱动器上。与RAID阵列控制部分110上的RAID模块一样,在其中驱动控制器201还包括RAID模块的实施方案中,驱动器的RAID模块228管理RAID奇偶校验的生成和发生故障的数据的恢复。RAID奇偶校验可用作写入到非易失性存储器系统200中的数据的附加级的完整性保护。在一些情况下,RAID模块228可以是ECC引擎224的一部分。需注意,RAID奇偶校验可以作为额外的一个或多个管芯添加,如公共名称所暗示的那样,但也可以在存在的管芯内添加,例如,作为额外的平面、或额外的块、或块内的额外WL。存储器接口230将命令序列提供非易失性存储器管芯202并从非易失性存储器管芯202接收状态信息。在一个实施方案中,存储器接口230可以是双倍数据速率(DDR)接口,诸如切换模式200、400或800接口。闪存控制层232控制后端模块210的整体操作。
图2所示的系统200的附加部件可包括媒体管理层238和编程管理器236,该媒体管理层执行非易失性存储器管芯202的存储器单元的磨损均衡,该编程管理器可用于(结合存储器芯片上的电路)管理存储器单元的编程。系统200还包括其他分立部件240,诸如外部电接口、外部RAM、电阻器、电容器或可与控制器201交接的其他部件。在另选的实施方案中,物理层接口222、RAID模块228、媒体管理层238、编程管理器236和缓冲区管理/总线控制器214中的一者或多者是控制器201中不必要的任选部件。
控制器201可与一个或多个存储器管芯202交接以实现固态驱动器(SSD),该SSD可仿真、替换或用作RAID阵列101内部的硬盘驱动器(HDD)。SSD驱动器200的一些实施方案将包括连接到一个控制器201的一个存储器管芯202。然而,其他实施方案可以包括与一个或多个控制器201通信的多个存储器管芯202。在一个示例中,多个存储器管芯可以被分组为一组存储器封装件。每个存储器封装件包括与控制器201通信的一个或多个存储器管芯。在一个实施方案中,存储器封装件包括其上安装有一个或多个存储器管芯的印刷电路板(或类似结构)。在一些实施方案中,存储器封装件可以包括模制材料以包封存储器封装件的存储器管芯。在一些实施方案中,控制器201在物理上与任何存储器封装件分离。
图3是诸如可用于使用硬盘驱动器的RAID阵列实施方案的驱动器D1-DN 121-129中的每一者的示例性硬盘驱动器(HDD)300的框图。就硬盘驱动器而言,存储介质是磁性存储数据的一个或多个磁盘302,而不是图2的固态非易失性存储器设备202。除了一个或多个磁盘之外,硬盘驱动器300还将再次包括管理磁盘302上的数据的存储的控制器301。硬盘驱动器系统的控制器将执行许多相同的功能并且包括对应于SSD控制器201的那些元件的元件,但由于存储介质的不同的物理性质,将存在差异。
对于固态非易失性存储器设备202,数据的读取、写入和擦除通常由存储器设备自身上的电路执行。就硬盘驱动器而言,使用读取/写入头311执行读取操作、写入操作和擦除操作,该读取/写入头读取或改变指定地址处的磁化状态。为了改变磁盘的位置,为了读取或写入到选定磁盘地址,主轴马达313连接到磁盘。例如,驱动器的一个或多个磁盘安装在主轴马达313旋转的主轴上,而读取/写入头安装在由致动器(未示出)移动的致动器臂315结构上,从而允许读取/写入头的位置径向移动。控制器301被配置为控制主轴马达313和致动器,以将读取/写入头放置在磁盘302上的选定物理位置处。
RAID阵列可通过网络单独地连接到其他RAID阵列、主机和其他设备。在一些实施方案中,这可以是互连节点的计算“架构”。计算架构是节点(诸如存储系统、主机或其他处理设备,以及通过高带宽互连而联接在一起的其他外围设备或其他联网元件(类似于由这些节点形成的架构或组织))的合并高性能计算系统。
图4是其中计算架构450将RAID阵列1-N 421-429(诸如上文参照图1-图3所述的那些RAID阵列)和多个主机设备1-M 411-419连接在一起的系统的示意图。RAID阵列421-429和主机设备可彼此靠近,诸如在同一建筑物中、或甚至在同一机架上、或相距某个距离的不同的位置。例如,不同的RAID阵列可位于另一个地理位置以保护数据免受自然灾害、局部断电或提供基于最佳位置的性能等原因。
重新参考图1,如果需要重建RAID阵列101的驱动器中的一个驱动器(即驱动器D1121),则RAID阵列控制器部分110可从驱动器D2-DN 122-129中的其他驱动器读出对应RAID编码的冗余数据,并重建故障驱动器的内容。根据RAID实施方案(或级别),该冗余数据可包括奇偶校验、数据的副本或这些的某种组合,如上所述。例如,如上文参照图1所述,条带131-139可对应于用户数据集及其跨驱动器条带化的对应奇偶校验。例如,当来自条带131的数据丢失(例如,由于驱动器D1 121的故障)时,该数据可由RAID模块113根据其他条带重组。RAID模块113接收跨驱动器D2-DN 122-129存储的RAID编码的数据,对数据进行解码,重组丢失数据,然后对重组的数据进行重新编码并将其重写到一个或多个良好的驱动器。在一些实施方案中,RAID阵列可保持一个或多个备用驱动器以替换发生故障的驱动器。
图5是描述用于在RAID阵列内执行的重建操作的过程的一个实施方案的流程图,诸如参照图1所示的RAID阵列。在步骤501处,RAID阵列101确定其驱动器中的一个驱动器(在该示例中为驱动器D1 121)已发生故障或可能失效。这通过在步骤503处从良好的驱动器D2-DN 122-129读出驱动器D1 121的冗余数据来触发重建操作,其中在步骤505处将冗余数据通过驱动器接口117传输到RAID模块113。
在步骤507处,RAID模块对冗余数据进行解码,并且在步骤509处,根据解码的冗余数据重构来自发生故障的驱动器的数据。如上参照图1所讨论的,可基于实施方案使用多个RAID版本或级别。这可以包括数据的副本、数据的奇偶校验或这些的组合。例如,驱动器D1121的数据可在驱动器D2-DN 122-129的数据中镜像复制;或者驱动器DN 139的数据可为对应于其他驱动器上的数据的奇偶校验,其中驱动器D1 121上的数据可根据DN 129上的奇偶校验数据和其他驱动器上的数据重组。
一旦在509处重构来自发生故障的驱动器的数据,RAID模块113就在步骤511处对来自发生故障的驱动器的重构数据进行编码。在步骤513处,编码的重构数据通过驱动器接口传输回良好的驱动器,然后在步骤515处将该编码的重构数据写入到良好的驱动器中。
如上所述,这种重建过程可能非常耗时,尤其是在RAID阵列要为用户维护服务的情况下。当RAID阵列通过网络(诸如图4中的计算架构)连接到另一个RAID阵列,而另一个RAID阵列具有发生故障的驱动器上数据的镜像副本时,这可用于加速重建过程。
图6是图4的架构的简化型式,其示出了通过计算架构连接的仅两个RAID阵列,但具有关于RAID阵列的更多细节,这些RAID阵列以类似于图1的方式表示。如图1所示,RAID阵列601包括驱动器D1-DN 621-629,存储元数据的每个驱动器具有相应部分641-649。控制部分610的显式地表示的元件包括驱动器接口617、网络接口611、处理模块619、RAID模块613和缓冲器615。类似地,RAID阵列651包括驱动器D'1-D'N'671-679和控制部分660,存储元数据的每个驱动器具有相应部分691-699,该控制部分包括驱动器接口667、网络接口661、处理模块669、RAID模块663和缓冲器665。RAID阵列601和RAID阵列651通过计算架构650或其他网络连接,该计算架构或其他网络被表示为两个RAID阵列通过开关650a和650b的连接。
在图6的示例中,RAID阵列601的驱动器D1 621已发生故障,并且需要重建其内容。RAID阵列651将RAID阵列601中的数据的镜像副本或跨驱动器D'1-D'N'671-679分布的镜像副本保持在驱动器D'1 671。如果存在理由期望驱动器可能发生故障,则RAID阵列601上的元数据可保持可告知RAID阵列的控制器部分610和/或各个驱动器关于可帮助重建或甚至提供抢先副本的一个或多个其他驱动器的存在和位置的信息。当要重建驱动器D1 621时,驱动器或阵列通过元数据意识到D'1 671中的副本。类似地,驱动器D'1 671或RAID阵列651可意识到存储在驱动器D1 621中的数据的D'1 671内的副本。一旦完成镜像,就可将该信息存储在这两个驱动器的元数据中,从而允许将任一副本根据另一个副本重建。
当驱动器D1 621需要重建时,RAID阵列601和镜像RAID阵列651可进行通信以减轻由RAID模块613进行的一些或所有重建。在一些实施方案中,这可在驱动器D1 621和D'1671的级别完成。通过对等通信,驱动器D1 621可以从D'1 671请求D1 621中的数据内容的副本,以通过发送在驱动器D'1 671驱动器上的数据中的一些或所有数据来帮助重建。在一些实施方案中,驱动器可在其自身之间处理的一些或所有重建,而RAID模块613处理基本数据条带化,并且驱动器使用对等通信来处理奇偶校验和数据交换。在此类实施方案中,选择涉及阵列的远程副本以帮助重建以及完成实际重建的决定可由驱动器自身以及RAID模块613来处理。
在一些实施方案中,RAID阵列601发送对D1 621上的数据的一些或所有副本的直接存储器访问(DMA)传输的请求。在DMA传输中,在从发送RAID阵列651上的驱动器传输并传输到接收RAID阵列601的驱动器中期间,数据仅穿过相应控制部分610和660,而不涉及RAID模块613、663或处理模块619、669及其操作系统。然后,可将来自D'1 671中的副本的传输数据重写到驱动器D2-DN 622-629中的非故障的驱动器中。例如,驱动器DN 629可以是用于替换发生故障的驱动器D1 621的备用驱动器。来自D'1 671中的副本的数据未被RAID模块663解码,或被RAID模块613重新编码,但可通过独立于两个RAID阵列601和651的RAID模块613和663使用缓冲器665和615来传输为“远程”直接存储器访问(RDMA)操作,其中DMA过程在直接存储器访问位于通过计算架构650或网络的两个RAID阵列之间是远程的。另选实施方案可使用简单的非RDMA传输。尽管RDMA允许在浪费有限的CPU资源的情况下移动数据,但运行不采用RDMA架构的系统的实施方案也可使用此处描述的技术。
图6示意性地示出了传输过程。响应于可由驱动器自身或控制部分610确定的驱动器D1 621发生故障,检查驱动器D1 621上的元数据641或其他驱动器上的元数据642-649以查看驱动器D1 621是否在另一个阵列上进行镜像。在该示例中,元数据指示驱动器D1 621的数据在RAID阵列651的驱动器D'1 671上进行镜像。对来自RAID阵列601的数据的请求通过计算架构650或其他网络经由开关元件650a、650b被发送出来到RAID阵列651。然后,这开始从驱动器D'1 671通过驱动器接口667到缓冲器665的DMA传输,以及从缓冲器663通过网络接口661并到达计算架构或其他网络上的DMA传输。该过程不涉及RAID模块663,并且如放置在网络上的数据仍然是如存储在驱动器D'1 671上的RAID编码的数据。在其他实施方案中,发生故障的驱动器D1 621上的内容的镜像副本可跨RAID阵列651的驱动器中的若干个驱动器分布,在这种情况下将从这些驱动器传输对应镜像数据。
RAID阵列601(作为RAID阵列)还可以使用RAID模块613和来自其他驱动器D2-DN622-629的RAID编码的数据来在其自身内重建驱动器D1 621。除了RAID阵列601完全通过从另一个RAID阵列传输镜像副本而重建存储在发生故障的驱动器上的数据或者完全独自地重建发生故障的驱动器的内容之外,重建还可以交错这两个过程,其中交错的量可以是可变的。例如,如果RAID阵列通过高性能计算架构进行连接并且具有足够的缓冲容量,则重建的全部或大部分可为基于镜像副本的DMA传输的。相反,如果网络速度或缓冲器尺寸是限制的,则重建的较大比例可由正在经历重建的RAID阵列上的RAID模块完成。RAID阵列上的工作负载也可影响该比率:例如,如果重建RAID阵列同时接收大量的读取请求或写入请求,则这些请求将会将负载置于RAID模块上,RAID阵列可通过将较大比例的重建转移到RDMA过程来减轻该负载,从而保持读取/写入性能。相反地,如果镜像RAID阵列处于高负载下,则更多重建可转移回重建阵列。
RAID阵列601还可使用镜像RAID阵列651的知识来减少来自主机交互的负载,从而允许其自身执行更多重建。例如,当RAID阵列601从主机接收对数据的请求时,该RAID阵列可将该请求提交给镜像RAID阵列651以履行请求并供应数据。这将释放重建阵列601,以通过从良好的驱动器D2-DN 622-629读出RAID编码的冗余数据并使用RAID模块613来重组发生故障的驱动器的内容,从而执行较大比例的重建。
在上述实施方案中,外壳中的用于RAID阵列601的控制部分610具有对具有镜像副本数据的其他RAID阵列(诸如651)的存在的访问权限。关于一个或多个镜像阵列的存在和位置的信息可作为控制部分610所保持的管理数据的一部分存储在RAID阵列601中,诸如存储在控制部分保存此类数据的非易失性存储器中、和/或在阵列的驱动器D1-DN 621-629的元数据641-649中。在驱动器发生故障的情况下,阵列进入临界模式,并且通过镜像副本的传输开始重建。在其中驱动器D1-DN 621-629具有RAID模块(诸如图2的RAID模块228)的其他实施方案中,RAID阵列控制部分610可将RAID编码卸载到驱动器D1-DN 621-629以用来自中央控制部分610的RAID模块613的少量帮助或没有来自其的帮助来处理在其自身之间一些或甚至大部分奇偶校验生成。对于实施方案中的任一个实施方案,对现有镜像阵列及其当前状态的知识可存储在阵列自身的元数据中。在驱动器发生故障的情况下,阵列进入临界模式,并且开始重建。
对于实施方案中的任一个实施方案,在驱动器发生故障的情况下,意识到数据的另一个镜像的存在的RAID阵列可选择执行以下三项操作中的一项操作:(1)在RAID阵列自身内以正常方式执行重建;(2)通过远程直接存储器访问(RDMA)操作从镜像阵列进行重建;或(3)交错这两个重建过程。这可由图7的流程图示出。在重建过程期间,如果镜像副本可用,则重建RAID阵列还可使镜像RAID阵列处理一些或所有数据请求,从而释放重建RAID阵列以更快地重建,如图12的流程图所示。
图7是描述用于对RAID阵列进行重建操作的过程的一个实施方案的流程图,诸如参照图6所示。在步骤701处,控制部分610确定驱动器(例如,驱动器D1 621)已发生故障或失效并且应当执行重建过程。在其中驱动器D1-DN 621-629具有RAID能力的其他实施方案中,这可以在驱动器到驱动器级别完成。在步骤703处,RAID阵列确定发生故障的驱动器的镜像副本在另一个RAID阵列上是否可用。该信息可作为元数据641-649的一部分存储在驱动器D1-DN 621-629上、在由控制部分610保持的其他存储器中或这些的某种组合中。关于镜像副本的信息可包括镜像RAID阵列的位置,并且还可包括与对等传输过程相关的信息,诸如缓冲容量和可用传输率。如果没有镜像副本可用,则在步骤705处对RAID阵列601自身照常执行重建,如上文参照图5更详细地示出。这通过例如读出所需数据和奇偶校验、执行任何所需解码和重新编码以及将数据重写回到一个或多个良好的驱动器D2-DN 622-629中来完成。由于没有镜像副本可用,因此重建RAID阵列也必须处理任何数据请求。一旦重建完成,重建过程就在步骤707处结束。
如果发生故障的驱动器或故障驱动器的镜像副本可用,则多个选项可用于重建,而步骤711确定要使用的这些选项中的哪个选项。这些选择包括向RAID阵列601执行重建(步骤713)、完全通过远程直接存储器访问(RDMA)或从镜像RAID阵列651的其他副本传输(步骤715)或这些的组合(步骤717)来执行重建。根据实施方案,该选择可为基于计算架构或RAID阵列之间的其他网络连接的可用传输速度的;传输RAID阵列和接收RAID阵列两者的缓冲能力;以及RAID阵列处于读取请求和写入请求方面的负载。例如,如果RAID阵列601和651通过高带宽计算架构连接并且具有大容量缓冲器615和665,这将有利于通过传输执行更多重建(或全部)。步骤711处的选择还可为基于镜像RAID阵列651履行来自重建驱动器的数据请求的程度的,如参照图12所述。
在步骤713处,由RAID阵列601自身执行重建,如上文参照图5更详细地示出。如参照图12进一步所述,在重建过程期间,重建RAID阵列可具有由镜像阵列651处理的一些或所有数据请求。这可允许RAID阵列601通过允许控制部分610上的RAID模块613和驱动器自身上的任何RAID模块(诸如图2的SSD上的RAID模块228)集中于重建过程来更快地重建其自身。
步骤715对应于其中通过在远程直接存储器访问(RDMA)中传输镜像副本或从镜像RAID阵列651的其他传输来重建发生故障的驱动器的情况。参照图8更详细地描述了步骤715。
图8是描述用于步骤715的过程的一个实施方案的流程图,该步骤为在远程直接存储器访问(RDMA)中重建镜像副本或从镜像RAID阵列651的其他传输。在步骤801处,重建阵列向镜像阵列发送对要在RDMA或其他传输过程中传输的所需数据的请求。镜像阵列可以通过RAID阵列上的元数据来识别。在步骤803处,将镜像的RAID编码的数据从驱动器D'1-D'N'671-679中的一者或多者读出到缓冲器665中。根据实施方案,镜像数据可存储在单个驱动器诸如D'1 671中,或跨若干个驱动器分布。然后,在步骤805处,数据的编码的镜像副本从缓冲器665跨过计算架构650传输到重建RAID阵列601上的缓冲器615中。仍以RAID编码形式,然后可在步骤807处将数据从缓冲器615写入到重建RAID阵列601的驱动器中,例如写入到备用驱动器诸如DN 629中。在该过程期间,由于RAID模块613未用于重建,因此其可处理对RAID阵列601的一些或所有数据请求,但在一些实施方案中,一些请求也可由镜像RAID阵列651来履行。
如果在711处选择了步骤717,则RAID阵列601可请求重建RAID阵列601重建发生故障的驱动器自身上的内容以及从处于最佳状态的RAID阵列651请求镜像副本之间的某种可变水平的交错。参照图9更详细地描述了步骤717。
图9是描述用于步骤717的过程的一个实施方案的流程图,该步骤为通过在RAID阵列601自身上重建以及在远程直接存储器访问(RDMA)中传输镜像副本或从镜像RAID阵列651的其他传输的组合来重建发生故障的驱动器的内容。在步骤901处,确定要从两个过程重建的来自发生故障的阵列的数据内容的比例。可对RAID阵列601执行的内部RAID阵列重建中的交错数据与从RAID阵列651上的辅助副本检索数据的比率可基于任意数量的预先确定的规则(诸如当前存储工作负载或网络工作负载)自动控制或由用户手动设置。例如,这些之间的相对比率可为基于两个RAID阵列之间的输入/输出工作负载的百分比的,或者两个RAID阵列可通过始于RAID阵列的相对端处或通过方便的工作的任何其他分配来分割工作。这减少了重建RAID阵列601上的流量,并且可进行管理以允许重建RAID阵列601更快地完成,其中基于阵列处所经历的当前用户流量,该阵列正供应所调节的内容的比率。
例如,在其中重建被均匀分割在两种技术之间的一个实施方案中,RAID阵列601可使重建驱动器上的每个偶数次要条带(单独驱动器上的条带的一部分)由RAID模块613在局部构建,同时请求由最佳RAID阵列651供应奇数次要条带。这在图10中示意性地示出。
图10重复图6的元件,但现在示出在重建阵列601上重建的那些和从镜像阵列651传输的那些之间交替条带的重建。在图10的示例中,驱动器D1 621已发生故障并且要被重建并存储在备用驱动器DN 629上。在驱动器D1 621上条纹化的数据在偶数(图10中的点刻图案)条带和奇数(图10中的阴影图案)条带之间交替。奇数条带将通过从RAID阵列601的其他驱动器读出驱动器D1 621的RAID编码的冗余数据使用RAID模块613来在RAID阵列601上重构。然后,RAID模块根据编码的冗余数据重组驱动器D1 621的奇数条带。从镜像阵列651请求偶数条带。例如,在其中驱动器D'1 671为D1 621的镜像副本的实施方案中,将D'1 671的偶数条带读出到缓冲器665中,然后通过计算架构650传输到缓冲器615。然后,可将缓冲器615中的偶数条带和来自RAID模块613的奇数条带交错并将其写入到备用驱动器DN 629中以完成重建。根据实施方案,交错可利用其RAID模块663资源和整个RAID阵列651的驱动能力来使最佳RAID阵列651提供重建的条带,或者其也可如将新数据从单个驱动器诸如辅助RAID阵列651中的D'1 671直接复制到重建RAID阵列601一样简单。
返回图9,在步骤901处确定要从镜像RAID阵列651请求的重建数据的比例之后,传输过程在步骤911处开始,并且阵列上重建在步骤921处开始。在步骤911处,重建RAID阵列601向镜像阵列651发送对编码的镜像副本的请求。在图10所示的示例中,这将是对偶数数据条带的请求。在步骤915处,镜像RAID阵列651将请求的RAID编码的数据从其驱动器(图10的示例中的驱动器D'1 671)读出到缓冲器665中。然后在步骤915处,将请求的RAID编码的数据通过计算架构650传输到缓冲器615。
步骤911-915的传输可以重叠的方式完成,其中阵列上重建始于步骤921处。在步骤921处,从RAID阵列601的其他驱动器读出发生故障的驱动器D1 621的冗余数据,并且在步骤923处将其传输到RAID模块613。类似于图5的步骤505-513,在步骤923处将冗余数据传输到RAID模块,并且在步骤925处对该冗余数据进行解码。然后在步骤927处生成要在RAID阵列601上重构的数据,然后在929处对该数据进行RAID编码。然后在步骤929处从RAID模块传输RAID编码的重构数据。步骤921-931不同于图5的步骤503-513的情况是在图9中正生成重建所需的数据的仅一部分,因为所需数据的其余部分正在步骤911-915中从镜像阵列651传输。
在步骤941处,从镜像阵列651传输的数据和由RAID模块613在阵列上生成的数据交错在步骤941处。对于图10的示例,这些分别为偶数条带和奇数条带。然后在步骤943处将交错的传输数据和重构数据写入到RAID阵列501的良好的驱动器中以完成重建。
重建过程可在步骤719处被监视以确定重建是否完成。在重建继续的同时,流程可循环回到步骤711以更新执行重建的方式,或者在步骤713、715和717之间切换,或者在717的情况下,使RAID阵列601独自地重建的程度与它依赖于从镜像RAID阵列651以最佳状态传输数据的程度的比率变化。一旦重建了RAID阵列601,步骤721就会执行任何更新以协调RAID阵列601和651之间的镜像。例如,如参照图12进一步所述,如果在重建过程期间从RAID阵列601传输数据请求以履行RAID阵列651,则RAID阵列651和重建的RAID阵列601之间的镜像可能不是当前的。在步骤721处协调镜像,在这之后重建过程在步骤707处结束。
如上所述,在RAID阵列601的重建期间,在另一个RAID阵列651中存在RAID编码的数据的镜像副本的存在还可通过允许镜像RAID阵列651履行用于重建RAID阵列601的数据请求来帮助重建过程。根据实施方案,数据请求的该传输可与来自镜像RAID阵列的RAID编码的数据的传输一起使用或独立地使用,以用于重建。这在图11中示意性地示出。
图11重复图6的元件,但现在示出了RAID阵列601自身执行重建操作并重定向对数据的请求时的情况。在RAID阵列601上,正在进行发生故障的驱动器D1 621的重建操作,诸如参照图5所述的重建操作。将数据从良好的驱动器D2-DN 622-629读出到RAID模块613,在该RAID模块中,发生故障的驱动器的内容被重构并写回到一个或多个良好的驱动器D2-DN622-629中。在该重建过程期间,从主机通过计算架构650接收对数据的请求。由于履行数据请求将需要使用RAID模块613,因此这将干扰重建操作。
将部分或所有请求重定向到镜像RAID阵列651,而不是履行数据请求。镜像阵列651可通过从驱动器D'1-D'N'671-679读出请求数据的副本并且在RAID模块663中进行解码来履行该请求。然后可将请求数据的未编码副本传输出来到计算架构650以履行主机请求。
图12是描述用于在对RAID阵列进行重建操作期间使用镜像RAID阵列来履行数据请求的过程的一个实施方案的流程图,诸如图11所示。可将图12的过程与图7的步骤711-719组合以更快地完成重建。图12的流程在步骤1201处开始,其中RAID阵列601通过计算架构550或通过网络接口611的其他网络接收数据请求。在步骤1203处,确定RAID阵列是否正在经历重建,并且如果不是,则RAID阵列601自身履行该请求。在步骤1205处,RAID阵列601从驱动器D1-DN 621-629读取请求数据。步骤1207执行任何所需RAID解码。然后在步骤1209处将请求数据通过计算架构650或其他网络供应到请求主机。
如果RAID阵列正在重建,则在步骤1211处,RAID阵列确定发生故障的驱动器的镜像副本是否在另一个RAID阵列上可用:如果不是,则流程到达步骤1205以用于进行标准重建;如果是,则可重定向部分或所有数据请求。在重建过程中结合图7和图12的流程的实施方案中,步骤1211可与步骤703相同。然后,重建RAID可通知其他RAID阵列副本它处于重建状态。
在步骤1213处,重建RAID阵列601可请求另一个RAID阵列651处理其在重建期间接收的一些或所有数据请求。这允许重建RAID阵列601更快地重建。在图7的步骤721处重建的结束处,可在重建RAID阵列601中对要写入的任何用户数据进行水印和更新;或者,在其他实施方案中,重建RAID阵列601可请求第二RAID阵列651处理所有读取请求,但写入请求被发送到这两个RAID阵列。该第二选项不会去除重建期间的所有干扰,但会减少该干扰。可以将算法置于适当的位置,以基于某个给定时间段期间读取数与写入数的级别来作出这些决策。为了履行重定向数据请求,镜像RAID阵列651在步骤1215处读出请求数据的镜像副本,并且在步骤1217处执行任何所需RAID解码。
然后在步骤1219处通过网络从镜像RAID阵列651供应请求数据。根据实施方案,数据可被RAID解码并从镜像RAID阵列651供应;或者数据可从镜像RAID阵列651供应回到重建RAID阵列601,然后到请求主机上。
在一些实施方案中,非易失性存储器系统包括第一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阵列的数据内容的重建。
在示例性具体实施中,数据存储驱动器可包括参照图2所示的固态驱动器(SSD)、参照图3所示的硬盘驱动器(HDD)或其他类型的数据存储驱动器。用于对用户数据进行编码并以冗余方式存储跨数据存储驱动器分布的所编码的用户数据的装置的实施方案可包括RAID阵列的控制部分上的RAID模块(诸如图1的RAID模块113)、驱动器自身上的RAID模块(诸如图2的RAID模块228)、或这些和RAID阵列上的其他元件的组合。存储所编码的数据的装置还可包括非易失性存储器电路上的电路,诸如图2的非易失性存储器202上的电路、或图3的读取/写入头311。
根据实施方案,用于重建的装置可通过从故障驱动器的数据内容的另一个RAID阵列传输镜像副本来加速重建过程;将数据请求重定向到具有故障驱动器的数据内容的镜像副本的另一个RAID阵列;或这些的组合。用于重建的装置可包括RAID阵列的控制部分上的RAID模块(诸如图1的RAID模块113)、驱动器自身上的RAID模块(诸如图2的RAID模块228)、或这些和RAID阵列上的其他元件的组合。用于重建的装置还可包括图1的缓冲存储器115、以及RAID阵列控制部分110上和RAID阵列的驱动器上的其他存储器和控制元件。
出于本文件的目的,说明书中提到“实施方案”、“一个实施方案”、“一些实施方案”或“另一个实施方案”可用于描述不同的实施方案或相同的实施方案。
出于本文件的目的,连接可为直接连接或间接连接(例如,经由一个或多个其他部件)。在一些情况下,当元件被提及连接或耦接到另一个元件时,该元件可直接连接到另一个元件,或者经由居间元件间接连接到另一个元件。当元件被提及直接连接到另一个元件时,则在该元件与另一个元件之间没有居间元件。如果两个设备是直接连接或间接连接的,则两个设备是“通信”的,使得它们能够在它们之间进行电子信号通信。
出于本文档的目的,术语“基于”可理解为“至少部分地基于”。
出于本文档的目的,在没有附加上下文的情况下,诸如“第一”对象、“第二”对象和“第三”对象的数字术语的使用可能不意味着对象的排序,而是可用于识别目的以识别不同的对象。
出于本文档的目的,术语对象的“集”可指零个或多个对象的“集”。
出于说明和描述的目的,已提供了上述详细描述。其并非旨在详尽的或旨在限制本发明所公开的精确形式。根据以上教导内容,很多修改和变型都是可能的。选择所述实施方案以便最好地解释所建议的技术的原理及其实际应用,从而使本领域的其他技术人员能够在各种实施方案中和适合于设想的具体使用的各种修改中最好地利用它。本发明的范围旨在由所附权利要求书限定。

Claims (20)

1.一种非易失性数据存储系统,包括:
第一独立磁盘冗余阵列(RAID)阵列,所述第一RAID阵列包括:
多个非易失性数据存储驱动器;以及
一个或多个控制电路,所述一个或多个控制电路包括:
网络接口;
RAID模块,所述RAID模块被配置为对通过所述网络接口接收的数据进行编码并且以冗余方式存储跨所述存储器驱动器分布的所编码的数据;以及
缓冲器,
其中,响应于所述驱动器中的第一驱动器的故障,所述一个或多个控制电路被配置为对存储在所述第一驱动器上的数据执行重建操作,所述重建操作包括:
从第二RAID阵列请求存储在第一驱动器上的数据的编码的副本的至少一部分,
将所述数据的来自所述第二RAID阵列的所述编码的副本的所述部分接收在通过所述网络接口的传输中的所述缓冲器中,以及
独立于所述RAID模块将所述数据的所述编码的副本的所述部分从所述缓冲器写入到所述驱动器中的一个或多个驱动器中。
2.根据权利要求1所述的系统,其中所述一个或多个控制电路被进一步配置为将指定所述第二RAID阵列的信息存储为存储在所述驱动器上的元数据。
3.根据权利要求1所述的系统,其中所述一个或多个控制电路被进一步配置为使用所述RAID模块根据存储在所述第一RAID阵列的所述其他驱动器上的数据来重建存储在所述第一驱动器上的所述数据的至少一部分。
4.根据权利要求3所述的系统,其中所述一个或多个控制电路被进一步配置为执行重建操作,所述重建操作作为来自所述第二RAID阵列的所述传输和使用所述RAID模块根据存储在所述第一RAID阵列的所述其他驱动器上的数据的重建的组合,其中所述重建操作的作为来自所述第二RAID阵列的所述传输而执行的比例为基于所述缓冲器的容量的。
5.根据权利要求3所述的系统,其中所述RAID模块被进一步配置为通过使跨所述驱动器中的多个驱动器的所述数据条带化来以冗余方式存储跨所述驱动器分布的所编码的数据,并且
所述一个或多个控制电路被进一步配置为执行重建操作,所述重建操作作为来自所述第二RAID阵列的所述传输和使用所述RAID模块根据存储在所述第一RAID阵列的所述其他驱动器上的数据的重建的组合。
6.根据权利要求5所述的系统,其中所述一个或多个控制电路被进一步配置为根据从所述第二RAID阵列传输的条带和在所述第一RAID阵列上重组的条带之间交替的条带来执行所述重建操作。
7.根据权利要求3所述的系统,其中所述第一RAID阵列被配置为执行所述重建操作,所述重建操作作为来自所述第二RAID阵列的所述传输和使用所述RAID模块根据存储在所述第一RAID阵列的所述其他驱动器上的数据的重建的组合。
8.根据权利要求7所述的系统,其中所述重建操作的作为来自所述第二RAID阵列的直接存储器传输而执行的比例为基于通过所述第一RAID阵列和所述第二RAID阵列之间的所述网络的数据的传输率的。
9.根据权利要求1所述的系统,其中响应于在所述重建操作期间来自主机的数据请求,所述一个或多个控制电路被进一步配置为请求所述第二RAID阵列通过供应所述请求数据的至少一部分来履行所述数据请求。
10.根据权利要求9所述的系统,其中响应于来自主机的用于在所述重建操作期间写入数据集的请求,所述一个或多个控制电路被进一步配置为将所述数据集写入到所述驱动器中。
11.根据权利要求1所述的系统,其中所述RAID模块被进一步配置为通过生成对应于所述数据的奇偶校验来对数据进行编码。
12.一种系统,包括:
计算架构;以及
多个独立磁盘冗余阵列(RAID)阵列,所述多个RAID阵列通过所述计算架构连接,每个RAID阵列包括:
多个非易失性数据存储驱动器;以及
一个或多个控制电路,所述一个或多个控制电路包括RAID模块,所述RAID模块被配置为对数据进行编码并且存储跨所述驱动器分布的所编码的数据,
其中,响应于所述RAID阵列中的一个RAID阵列确定其驱动器中的第一驱动器发生故障,所述系统被配置为对具有故障驱动器的所述RAID阵列执行重建,所述重建包括确定所述RAID阵列中的另一个RAID阵列是否为镜像RAID阵列,所述镜像RAID阵列存储在所述重建RAID阵列上存储的数据的镜像副本,并且
响应于在所述重建期间从主机到所述重建RAID阵列的通过所述计算架构接收的所述重建阵列的数据请求,所述重建RAID阵列的所述一个或多个控制电路被配置为请求所述镜像RAID阵列通过将所述请求数据的至少一部分通过所述计算架构供应给所述主机来履行所述数据请求。
13.根据权利要求12所述的系统,其中所述重建还包括将存储在所述重建阵列的所述第一驱动器上的数据的编码的副本的至少一部分通过所述计算架构从所述镜像RAID阵列的驱动器传输到独立于所述系统的所述RAID模块的直接存储器访问(DMA)传输中。
14.根据权利要求13所述的系统,其中所述重建RAID阵列的所述一个或多个控制电路被进一步配置为使用其所述RAID模块根据存储在所述重建RAID阵列的所述其他驱动器上的数据来重建存储在其所述第一驱动器上的所述数据的至少一部分,并且所述重建作为来自所述镜像RAID阵列的所述DMA传输和使用所述重建阵列的所述RAID模块根据存储在所述重建RAID阵列的所述其他驱动器上的数据的重建的组合来执行,并且
其中所述重建RAID阵列的所述一个或多个控制电路还包括缓冲存储器,所述缓冲存储器被配置为缓冲从所述镜像RAID阵列的所述驱动器存储的数据的部分编码的副本,所述重建的作为所述DMA传输执行的所述比例为基于所述缓冲存储器的容量的。
15.根据权利要求13所述的系统,其中所述重建RAID阵列的所述一个或多个控制电路被进一步配置为使用其所述RAID模块根据存储在所述重建RAID阵列的所述其他驱动器上的数据来重建存储在其所述第一驱动器上的所述数据的至少一部分,并且所述重建作为来自所述镜像RAID阵列的所述DMA传输和使用所述重建阵列的所述RAID模块根据存储在所述重建RAID阵列的所述其他驱动器上的数据的重建的组合来执行,并且
其中所述重建RAID阵列的所述一个或多个控制电路还包括缓冲存储器,所述缓冲存储器被配置为缓冲从所述RAID阵列的另一个RAID阵列的所述驱动器存储的数据的所述部分编码的副本,所述另一个RAID阵列被确定为具有镜像副本,
其中所述重建操作的作为所述DMA传输执行的所述比例为基于通过所述RAID阵列之间的所述计算架构的数据的传输率的。
16.根据权利要求13所述的系统,其中对于所述RAID阵列中的每个RAID阵列,所述RAID模块被配置为通过使跨所述驱动器中的多个驱动器的所述数据条带化来以冗余方式存储跨其所述驱动器分布的所编码的数据,
所述重建RAID阵列的所述一个或多个控制电路被进一步配置为使用其所述RAID模块根据存储在所述重建RAID阵列的所述其他驱动器上的数据来重建存储在其所述第一驱动器上的所述数据的至少一部分,并且所述重建作为来自所述RAID阵列中的确定为具有镜像副本的另一个RAID阵列的所述DMA传输和使用所述重建阵列的所述RAID模块根据存储在所述重建RAID阵列的所述其他驱动器上的数据的重建的组合来执行,并且
所述重建RAID阵列的所述一个或多个控制电路被进一步配置为根据由所述DMA传输的条带和在所述重建RAID阵列上重组的条带之间交替的条带来执行所述重建操作。
17.根据权利要求12所述的系统,其中响应于来自主机的用于在所述重建期间将数据集写入到所述重建RAID阵列的请求,所述重建RAID阵列的所述一个或多个控制电路被配置为将所述数据集写入到其所述驱动器中。
18.根据权利要求12所述的系统,其中所述RAID模块中的每个RAID模块被配置为通过生成对应于所述数据的奇偶校验来对数据进行编码。
19.根据权利要求12所述的系统,其中所述重建RAID阵列的所述一个或多个控制电路被进一步配置为将指定所述RAID阵列中的存储在所述重建RAID阵列上的数据的镜像副本的另一个RAID阵列的信息存储为存储在所述重建RAID阵列的所述驱动器上的元数据。
20.一种独立磁盘冗余阵列(RAID)阵列,包括:
多个数据存储驱动器;
用于对用户数据进行编码并以冗余方式存储跨所述数据存储驱动器分布的所编码的用户数据的装置;以及
用于响应于数据存储驱动器中的一个数据存储驱动器发生故障而重建所述RAID阵列的数据内容的装置,所述用于重建的装置被配置为访问另一个RAID阵列,所述另一个RAID阵列保持在所述故障数据存储驱动器中存储的所编码的用户数据的镜像副本以加速所述RAID阵列的所述数据内容的所述重建。
CN201880061548.3A 2017-12-15 2018-09-25 来自外部阵列副本的raid阵列重建辅助 Active CN111133420B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/843,486 US10649867B2 (en) 2017-12-15 2017-12-15 RAID array rebuild assist from external array copy
US15/843,486 2017-12-15
PCT/US2018/052506 WO2019118043A1 (en) 2017-12-15 2018-09-25 Raid array rebuild assist from external array copy

Publications (2)

Publication Number Publication Date
CN111133420A true CN111133420A (zh) 2020-05-08
CN111133420B CN111133420B (zh) 2023-09-19

Family

ID=66815172

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880061548.3A Active CN111133420B (zh) 2017-12-15 2018-09-25 来自外部阵列副本的raid阵列重建辅助

Country Status (4)

Country Link
US (1) US10649867B2 (zh)
CN (1) CN111133420B (zh)
DE (1) DE112018004275T5 (zh)
WO (1) WO2019118043A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113297001A (zh) * 2021-05-20 2021-08-24 山东云海国创云计算装备产业创新中心有限公司 一种raid编解码方法及编解码电路
CN114510379A (zh) * 2022-04-21 2022-05-17 山东百盟信息技术有限公司 一种分布式阵列视频数据存储装置

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102631351B1 (ko) 2016-10-07 2024-01-31 삼성전자주식회사 피어-투 피어 통신을 수행할 수 있는 저장 장치와 이를 포함하는 데이터 저장 시스템
CN109213619B (zh) * 2017-06-30 2022-02-22 伊姆西Ip控股有限责任公司 用于管理存储系统的方法、设备和计算机程序产品
US10783036B2 (en) * 2018-10-19 2020-09-22 Seagate Technology Llc Storage system stripe grouping using multiple logical units
TWI704567B (zh) * 2019-04-18 2020-09-11 大陸商上海川源信息科技有限公司 磁碟陣列系統的資料還原方法
US11741056B2 (en) 2019-11-01 2023-08-29 EMC IP Holding Company LLC Methods and systems for allocating free space in a sparse file system
US20210294496A1 (en) * 2020-03-18 2021-09-23 Dell Products L.P. Data mirroring system
US11474900B2 (en) 2020-08-04 2022-10-18 International Business Machines Corporation Dynamic rebuild capability in redundant array of independent disks (RAID) arrays using compressing drives
CN116249969A (zh) * 2020-10-01 2023-06-09 华为技术有限公司 具有内置冗余的数据存储系统以及恢复和存储数据的方法
US11604610B2 (en) 2021-04-29 2023-03-14 EMC IP Holding Company LLC Methods and systems for storing data in a distributed system using offload components
US11892983B2 (en) 2021-04-29 2024-02-06 EMC IP Holding Company LLC Methods and systems for seamless tiering in a distributed storage system
US11740822B2 (en) 2021-04-29 2023-08-29 EMC IP Holding Company LLC Methods and systems for error detection and correction in a distributed storage system
US11567704B2 (en) 2021-04-29 2023-01-31 EMC IP Holding Company LLC Method and systems for storing data in a storage pool using memory semantics with applications interacting with emulated block devices
US11579976B2 (en) * 2021-04-29 2023-02-14 EMC IP Holding Company LLC Methods and systems parallel raid rebuild in a distributed storage system
US11669259B2 (en) 2021-04-29 2023-06-06 EMC IP Holding Company LLC Methods and systems for methods and systems for in-line deduplication in a distributed storage system
US12093435B2 (en) 2021-04-29 2024-09-17 Dell Products, L.P. Methods and systems for securing data in a distributed storage system
WO2023028820A1 (en) * 2021-08-31 2023-03-09 Yangtze Memory Technologies Co., Ltd. System and apparatus for redundant array of independent disks striping against programming failures
US12007942B2 (en) 2021-10-27 2024-06-11 EMC IP Holding Company LLC Methods and systems for seamlessly provisioning client application nodes in a distributed system
US11677633B2 (en) 2021-10-27 2023-06-13 EMC IP Holding Company LLC Methods and systems for distributing topology information to client nodes
US11762682B2 (en) 2021-10-27 2023-09-19 EMC IP Holding Company LLC Methods and systems for storing data in a distributed system using offload components with advanced data services
US11922071B2 (en) 2021-10-27 2024-03-05 EMC IP Holding Company LLC Methods and systems for storing data in a distributed system using offload components and a GPU module

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1965298A (zh) * 2003-12-29 2007-05-16 英特尔公司 用于管理奇偶raid数据重建的方法、系统和程序
CN101006431A (zh) * 2004-08-04 2007-07-25 达西系统股份有限公司 执行容错磁盘阵列的预先重建
US20120260035A1 (en) * 2011-04-08 2012-10-11 Goldick Jonathan S Zero rebuild extensions for raid
CN103002320A (zh) * 2011-09-08 2013-03-27 株式会社东芝 视频服务器及重构处理控制方法
US20140304469A1 (en) * 2013-04-05 2014-10-09 Hewlett-Packard Development Company, L. P. Data storage
CN107122269A (zh) * 2016-02-25 2017-09-01 伊姆西公司 用于保证映射独立磁盘冗余阵列的可靠性的方法和装置

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7941602B2 (en) * 2005-02-10 2011-05-10 Xiotech Corporation Method, apparatus and program storage device for providing geographically isolated failover using instant RAID swapping in mirrored virtual disks
US7844776B2 (en) * 2007-02-21 2010-11-30 Inventec Corporation RAID capacity expansion handling method and system with concurrent data access capability
US7783917B2 (en) * 2007-02-26 2010-08-24 International Business Machines Corporation Selection of data arrays
US9213612B2 (en) * 2008-09-29 2015-12-15 Cisco Technology, Inc. Method and system for a storage area network
US7904749B2 (en) 2008-10-24 2011-03-08 Hitachi, Ltd. Fast data recovery from HDD failure
US8065558B2 (en) 2009-03-24 2011-11-22 Lsi Corporation Data volume rebuilder and methods for arranging data volumes for improved RAID reconstruction performance
US8615681B2 (en) 2010-12-14 2013-12-24 Western Digital Technologies, Inc. System and method for maintaining a data redundancy scheme in a solid state memory in the event of a power loss
US8601311B2 (en) * 2010-12-14 2013-12-03 Western Digital Technologies, Inc. System and method for using over-provisioned data capacity to maintain a data redundancy scheme in a solid state memory
CN103970481B (zh) * 2013-01-29 2017-03-01 国际商业机器公司 重建存储器阵列的方法和装置
US9122405B1 (en) 2013-03-15 2015-09-01 Western Digital Technologies, Inc. Fast initialization of storage device
US9875037B2 (en) * 2015-06-18 2018-01-23 International Business Machines Corporation Implementing multiple raid level configurations in a data storage device
US10198313B2 (en) * 2016-03-11 2019-02-05 Western Digital Technologies, Inc. Redundancy of error correction encoded data in a storage system

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1965298A (zh) * 2003-12-29 2007-05-16 英特尔公司 用于管理奇偶raid数据重建的方法、系统和程序
CN101006431A (zh) * 2004-08-04 2007-07-25 达西系统股份有限公司 执行容错磁盘阵列的预先重建
US20120260035A1 (en) * 2011-04-08 2012-10-11 Goldick Jonathan S Zero rebuild extensions for raid
CN103002320A (zh) * 2011-09-08 2013-03-27 株式会社东芝 视频服务器及重构处理控制方法
US20140304469A1 (en) * 2013-04-05 2014-10-09 Hewlett-Packard Development Company, L. P. Data storage
CN107122269A (zh) * 2016-02-25 2017-09-01 伊姆西公司 用于保证映射独立磁盘冗余阵列的可靠性的方法和装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113297001A (zh) * 2021-05-20 2021-08-24 山东云海国创云计算装备产业创新中心有限公司 一种raid编解码方法及编解码电路
CN113297001B (zh) * 2021-05-20 2023-02-24 山东云海国创云计算装备产业创新中心有限公司 一种raid编解码方法及编解码电路
CN114510379A (zh) * 2022-04-21 2022-05-17 山东百盟信息技术有限公司 一种分布式阵列视频数据存储装置

Also Published As

Publication number Publication date
US10649867B2 (en) 2020-05-12
WO2019118043A1 (en) 2019-06-20
US20190188099A1 (en) 2019-06-20
CN111133420B (zh) 2023-09-19
DE112018004275T5 (de) 2020-05-14

Similar Documents

Publication Publication Date Title
CN111133420B (zh) 来自外部阵列副本的raid阵列重建辅助
CN111078131B (zh) 使用交叉写入分开晶片平面
JP6053078B2 (ja) 物理ページ、論理ページ、およびコードワードの対応
KR101502519B1 (ko) 메모리 관리 시스템 및 방법
US9158681B1 (en) Process and apparatus to reduce declared capacity of a storage device by conditionally trimming
WO2013160972A1 (en) Storage system and storage apparatus
CN111831469A (zh) 错误恢复方法、非暂时性计算机存储媒体及存储器子系统
US9665311B2 (en) Process and apparatus to reduce declared capacity of a storage device by making specific logical addresses unavailable
US9524105B2 (en) Process and apparatus to reduce declared capacity of a storage device by altering an encoding format
KR20160075229A (ko) 가비지 컬렉션 동작 방법 및 이를 적용하는 레이드 스토리지 시스템
US11269725B2 (en) Storage system and method for direct quad-level cell (QLC) programming
CN113838510A (zh) 快速的经由控制器复制
US9582203B2 (en) Process and apparatus to reduce declared capacity of a storage device by reducing a range of logical addresses
CN115202923A (zh) 非易失性存储器中的奇偶校验保护
US9524112B2 (en) Process and apparatus to reduce declared capacity of a storage device by trimming
CN113553631A (zh) 用于在存储器系统中保护数据的设备和方法
CN114730247A (zh) 具有数据的最小写入大小的存储设备
US9652153B2 (en) Process and apparatus to reduce declared capacity of a storage device by reducing a count of logical addresses
WO2021126292A1 (en) Host and method for interleaving data in a storage system for enhanced quality of service
US9563362B2 (en) Host system and process to reduce declared capacity of a storage device by trimming
US20230282294A1 (en) Storage System and Method for Improving Read Latency During Mixed Read/Write Operations
US9582202B2 (en) Process and apparatus to reduce declared capacity of a storage device by moving data
US9552166B2 (en) Process and apparatus to reduce declared capacity of a storage device by deleting data
US20230418518A1 (en) Peer RAID Control Among Peer Data Storage Devices
CN115437558A (zh) 存储器系统中的对角页映射

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
GR01 Patent grant
GR01 Patent grant