CN108604166A - 冷存储系统的数据保护 - Google Patents
冷存储系统的数据保护 Download PDFInfo
- Publication number
- CN108604166A CN108604166A CN201780008068.6A CN201780008068A CN108604166A CN 108604166 A CN108604166 A CN 108604166A CN 201780008068 A CN201780008068 A CN 201780008068A CN 108604166 A CN108604166 A CN 108604166A
- Authority
- CN
- China
- Prior art keywords
- data
- block
- protection
- equipment
- slitting
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0653—Monitoring storage devices or systems
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/3761—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 using code combining, i.e. using combining of codeword portions which may have been transmitted separately, e.g. Digital Fountain codes, Raptor codes or Luby Transform [LT] codes
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2211/00—Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
- G06F2211/10—Indexing scheme relating to G06F11/10
- G06F2211/1002—Indexing scheme relating to G06F11/1076
- G06F2211/1004—Adaptive RAID, i.e. RAID system adapts to changing circumstances, e.g. RAID1 becomes RAID5 as disks fill up
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/1515—Reed-Solomon codes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Human Computer Interaction (AREA)
- Probability & Statistics with Applications (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Algebra (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
提供了一种数据存储装置,包括:多个数据设备,用于存储数据块;一个或多个保护设备,用于存储保护块,其中,所述数据设备和所述保护设备通过多个分条相关联,每个分条包括每个数据设备或保护设备上的内存块,保护设备的每个保护块包括用于重建相同分条上的内存块的值;控制器,用于:选择数据设备;将数据块依次存储在所选数据设备的内存块中;将保护块存储在每个更新分条上的保护设备中;从所选数据设备中读取数据块;重建受损的存储设备。因此,冷存储系统运行时的功耗较低、组件磨损较小、容量扩展灵活。
Description
相关申请案交叉申请
本申请要求于2016年1月27日递交的发明名称为“冷存储系统的数据保护”的第15/007,953号美国专利申请的在先优先权,该在先申请的全部内容以引用的方式并入本文。
背景技术
冷存储是用于存储很少访问或修改的大量数据的存储示例。例如,可以使用冷存储数据存储传感器输出、照相机镜头、物联网(Internet of Things,简称IoT)相关数据、存档电子消息或其他存档数据。冷存储的运行是基于需要存储大量的数据并且其中大部分数据都很少或根本不会被访问或修改这一假设的。冷存储系统旨在通过节约空间提供大量的存储。冷存储系统的数据存取时间应该尽可能低(例如,少于一分钟),并同时保持高数据密度和最小化功耗。多次存取也可能对搜索大数据量有所帮助。还应保护冷存储系统免受硬件故障的影响,并在硬件组件发生故障时提供有效的硬件更换和数据恢复机制。
发明内容
在一个实施例中,本发明提供了一种数据存储装置,包括一组冗余存储阵列。冗余存储阵列包括硬盘或固态驱动器(solid-state drive,简称SSD)等多个分条存储设备,其中,冗余存储阵列的所有存储设备都通过多个分条相关联,每个分条包括阵列中所有设备上每个存储设备的内存块。冗余存储阵列的所有存储设备在功能上分为两组:数据设备(图1中的k个存储设备)和保护设备(图1中的R个存储设备)。数据设备的内存块用于存储待检索的数据块。保护设备的内存块用于存储保护块,以便在公共分条内对多达R个受损块进行重建,其中,保护设备的每个内存块包括基于某个数据保护算法的值,例如独立磁盘冗余阵列(Redundant Array of Independent Disks,简称RAID)5、RAID 6、里德-所罗门码等。控制器耦合到冷存储系统中的一组冗余存储阵列,其中,控制器用于对期望的冗余存储阵列进行定位,选择阵列中的数据设备,将一组数据块依次存储在所选数据设备中,为每个更新分条更新保护设备中的一组保护块。在将存储数据块写入所选数据设备时,更新分条中的至少一个内存块会发生改变。
在另一个实施例中,本发明提供了一种数据存储方法,包括:基于来自控制器的指令将数据块存储在所选数据设备的多个连续内存块中;基于每个更新分条生成每个保护设备的保护数据块;将每个生成的数据块存储在其对应的保护设备中。
在另一个实施例中,本发明提供了一种非瞬时性计算机可读介质,包括计算机程序产品。所述计算机程序产品由耦合到一组冗余存储阵列的控制器所使用,所述计算机程序产品包括存储在所述非瞬时性计算机可读介质上的计算机可执行指令,使得当所述指令由处理器执行时,控制器用于:将数据块写入所述阵列中单个所选数据设备的多个连续内存块中;基于每个更新分条生成每个保护设备的保护数据块;将每个生成的保护数据块存储在其对应的保护设备中。
通过以下结合附图和权利要求的详细描述将会更清楚地理解这些和其他特征。
附图说明
为了更透彻地理解本发明,现参阅结合附图和具体实施方式而描述的以下简要说明,其中的相同参考标号表示相同部分。
图1是基于冗余存储阵列的冷数据存储网络的一实施例的示意图;
图2是用于实现冷数据存储功能的网元(network element,简称NE)的一实施例的示意图;
图3是冷数据存储网络中数据写入方法的一实施例的流程图;
图4是在应用了基于奇偶校验和的数据保护技术时,冷数据存储网络中数据写入的优化方法的一实施例的流程图;
图5是冷数据存储网络中数据读取方法的一实施例的流程图;
图6是冷数据存储网络中数据恢复方法的一实施例的流程图。
具体实施方式
首先应理解,尽管下文提供一个或多个实施例的说明性实施方案,但所公开的系统和/或方法可使用任何数量的技术来实施,无论该技术是当前已知还是现有的。本发明决不应限于下文所说明的说明性实现方式、附图和技术,包括本文所说明并描述的示例性设计和实现方式,而是可在所附权利要求书的范围以及其等效物的完整范围内修改。
独立磁盘冗余阵列(Redundant Array of Independent Disks,简称RAID)是一种将多个物理磁盘驱动器组件组合成单个本地单元的数据存储虚拟化技术,用于达到冗余、性能改善或两者兼备的目的。当独立磁盘冗余阵列应用于冷存储系统时,系统功耗、设备磨损以及有限的多数据访问能力都受到一些限制。
本发明提供了一种冷存储系统上的数据存储装置/方法/系统,用于以较低的功耗、较小的组件磨损以及改进的并行数据接入能力实现数据冗余。
可以采用RAID系统对数据进行存储,使其可以快速读取和免受故障。RAID系统将数据拆分成块,并将数据块写入多个存储设备(例如,硬盘驱动器(hard disk drive,简称HDD)、固态驱动器(solid-state drive,简称SDD)或其他存储介质)的内存块中。一些RAID系统通过镜像保护数据。在镜像系统中,每个数据块的精确副本都存储在多个存储设备上,这样一来,如果其中一个镜像磁盘发生故障,数据的副本始终可用。镜像可能不是一个节省空间的方案,因此可能不适用于冷存储系统。一些RAID系统通过分条保护数据。在分条方案中,将连续的数据块分配给跨越同一RAID阵列内所有可用存储设备的分条。通过同时对每个设备进行读取/写入,分条允许并行访问相关数据。保护块可以用于避免分条数据块发生故障。基于同一分条内的其他数据块对保护块进行计算。如果一个数据块受损,例如由于硬件故障而受损,则可以根据保护算法从分条内的其余块对受损的数据块进行重建。然后可以将重建的数据块写入一个新的设备。每个分条上的多个保护块可以防止系统中的多个设备发生故障。可以将保护块平均分配到所有的存储设备中。采用分条的RAID系统可实现高速读取及写入(例如,快速更新)、节省空间的存储以及数据恢复。但是,采用分条的RAID系统可能对冷存储系统而言不够高效。对于冷存储系统,相比较快速的访问,降低功耗和组件磨损可能更重要。例如,分条的任何数据访问(例如,读取或写入)都可能需要激活所有的存储设备,这增加了设备磨损(例如,退化),增加了功耗。
这里公开了一种用于冷数据存储系统的方案,其采用基于分条阵列的数据保护方案,同时降低了功耗和设备磨损。冷数据存储方案采用多个数据设备和一个或多个保护设备。以器件为单位将数据存储块写入连续的内存块,使得在读取和写入操作中仅激活一个存储设备,从而降低阵列中其余器件的功耗和磨损。将所有的保护块都写入保护设备。需要至少一个保护设备,而额外的保护设备可以防止多个设备同时发生故障。例如,根据所应用的数据保护技术,两个保护设备可以防止阵列中任意两个存储设备同时发生故障,三个保护设备可以防止阵列中任意三个设备同时发生故障等。将保护块写入保护设备作为将每个数据块写入数据设备这一过程的一部分。因此,将保护块限制在保护设备中(而不是分布在冗余存储阵列的所有存储设备中),从而可以通过将更多格式化的数据设备添加到阵列中,轻易地对冗余存储阵列进行扩容。如果采用基于奇偶校验和的保护技术,则在将更多格式化的存储设备引入冗余存储阵列时不需要更新保护块。类似地,只需要在不触及原始数据设备上的数据块的前提下对所有保护设备上的保护块进行更新,就可以将更多先前存储了数据的数据设备添加到冗余存储阵列中。通过采用基于冗余存储阵列的冷存储方案的实施例,在读取访问中仅激活一个存储设备,并允许其他设备保持未激活状态。一般而言,冗余存储阵列的所有存储设备都需要激活,以便在将数据块写入所选数据设备的过程中生成保护块。当使用基于奇偶校验和的保护技术(例如,RAID 5)生成保护块时,只有所选数据设备和保护设备需要在数据写入过程中激活,而其他的数据设备保持未激活状态。因此,冷存储方案可以防止存储设备发生故障,降低功耗和组件磨损,灵活简单地对冷存储系统进行扩展,在冷存储系统环境下为数据访问请求保留合理的访问时间(例如,单个访问读取/写入)。
图1是基于冗余存储阵列的冷数据存储网络100的示意图。网络100可以包括分条存储设备的阵列,用于保护数据,同时降低设备的功耗及磨损,例如在用于冷存储系统时。网络100包括控制器101、数据设备110的阵列以及一个或多个保护设备160。数据设备110和保护设备160在逻辑上通过条带190相关联。
控制器101可以是任一设备,用于接收待存储的数据,将接收到的数据划分为数据块,将数据块写入所选数据设备110的内存块中。例如,控制器101可以是数据中心网络或其他网络中的多个虚拟机(virtual machine,简称VM)、数据中心或其他网络中硬件节点(例如,服务器)上的多个通用处理器或专用集成电路(application-specific integratedcircuit,简称ASIC)、具有多个存储磁盘的个人电脑中的多个通用处理器或ASIC等。为了便于说明清楚,将内存块描述成数据设备上的连续内存块A1-A4、B1-B4以及C1-C4。数据块是数据流中具有预定尺寸的连续位的分组。所述控制器101还用于生成保护块以防止数据块发生故障,并将保护块写入保护设备160中。为了便于说明清楚,将保护块描述成内存块P1-P4以及Q1-Q4。保护块为可用于对同一公共分条190中的一个或多个内存块进行重建的任意数据。例如,可以基于奇偶校验和生成保护块,可称为奇偶校验块。奇偶校验块是分条190中的一组奇偶位,其指示同一分条190中的对应数据位的总和是奇数还是偶数。在发生设备故障时,可以通过确定应与保留的数据块进行相加以达到奇偶校验块中包括的结果位的数据块,对受损的数据块进行重建。可以基于异或(exclusive or,简称XOR)函数或同或(exclusive nor,简称XNOR)函数生成奇偶校验块。或者,保护块可以包括诸如里德-所罗门码等基于多项式的纠错码。
当通过里德-所罗门码生成保护块时,可以通过采用全部的数据设备110以及k+r个保护设备160防止分条190中任意数量的数据设备(k)同时发生任意数量的设备故障(r),其中,k>0且r>0。网络100包括k个数据设备110和r个保护设备160组成的阵列,其中,k是所期望的任意正整数,r是要防止的设备故障的任意正整数。例如,采用一个保护设备160,以便在任一单个存储设备110/160发生故障之后进行数据重建,采用两个保护设备160,以便在任意两个存储设备110/160同时发生故障之后进行数据重建等。数据设备110和保护设备160可以是用于将数据存储在冷存储系统中的任意存储设备。存储设备110和160可以是硬盘驱动器(hard disk drive,简称HDD)、固态驱动器(solid state drive,简称SSD)、闪存、光盘(compact disc,简称CD)、影碟(digital video disc,简称DVD)、蓝光光盘或任意其他类型的适合长期存储的存储器。存储设备110和160是基于地址的存储器位置,其可以写入、读取、搜索、引用、更新以及用于存储器存储。建议为保护设备使用可重写介质。如果将诸如DVD、蓝光光盘等不可重写介质用于保护设备,则在将数据写入所有的数据设备之前,不应生成保护块。数据设备110和保护设备160可以是一组物理磁盘或多个虚拟化的云驱动器。分条190是存储设备110和160中每个存储设备上的内存块的分组。
基于冗余存储阵列的冷数据存储网络100可以认为是RAID阵列(例如,存储设备110和160可以称为RAID磁盘)。在对下一个分条进行操作之前,RAID网络可能会在遍历所有设备时将连续的数据块和相关的保护块分配至单个分条。与RAID网络不同,控制器101将数据块依次写入单个所选数据设备110,直到在对下一个数据设备110进行之前,当前数据设备110已全满。例如,将数据块依次存储在第一数据设备110的内存块A1-A4中,直到第一数据设备全满。然后,将数据块依次存储在第二数据设备110的内存块B1-B4中,然后存储在第三数据设备110的内存块C1-C4中等等。根据该实施例,在将多个内存块写入数据设备110之后,对保护设备160中的保护块进行更新。每个保护设备160上的保护块都是根据每个分条190内的数据块生成的,但是每个分条190中的数据块并不是连续的,也可以不是相同数据流、读/写访问的一部分等。例如,将内存块A1、B1和C1作为同一分条190的一部分进行存储,但它们不是连续的,也可能不相关。通过将数据块存储在单个数据设备110连续的内存块中并将所有的保护块限制在保护设备160中,每个读取命令仅访问一个数据设备110。因此,其余的存储设备110/160可保持休眠状态,从而可以降低休眠的存储设备的功耗及组件磨损。此外,在实施例中,当使用基于奇偶校验和的技术生成保护块时,每个写入命令仅访问一个数据设备110和一个保护设备160。另外,虽然存储设备110和160所经受的磨损可能不一样,但是相比较一些RAID网络中,存储设备110和160所经受的总磨损较小。这是因为与几乎不断访问所有磁盘的热存储系统不同,冷存储系统使存储设备长时间处于休眠状态。在冷存储系统中,很少对存储在数据设备中的数据块进行修改或删除。因此,对每个数据设备110或保护设备160的数据写入是有限的。相应地,可以采用网络100实现RAID分条保护方案。这样一来,网络100的基于冗余存储阵列的冷存储方案可防止存储设备同时发生故障,降低功耗和组件磨损,灵活地对存储保护进行扩展,保留合理的访问时间。
图2是作为网络中的节点(例如,网络100中的控制器101)的NE 200的一实施例的示意图。在一些实施例中,NE 200可以包括并控制一组冗余存储阵列,每个冗余存储阵列包括诸如数据设备110和保护设备160等多个存储设备。NE 200可以在单个节点中实现,或者NE 200的功能可以在网络中的多个节点中实现。本领域的技术人员可以认识到,术语NE包括各种设备,而NE 200仅仅是其中一个示例。为了便于清楚讨论,包括了NE 200,但这决不意味着将本发明的应用限制在特定的NE实施例或NE类的实施例。本发明中描述的至少一些特征/方法可以在诸如NE 200等网络装置或组件中实现。例如,本发明中的特征/方法可以通过安装运行在硬件上的硬件、固件和/或软件实现。NE 200可以是通过网络处理、读取、更新、存储和/或转发数据帧/流的任意设备,例如,服务器、客户端、网络控制器等。如图2所示,NE 200可以包括收发器(Tx/Rx)210,收发器可以是发射器、接收器或其组合。Tx/Rx 210可以耦合到多个端口220和250(例如,上行接口和/或下行接口)上,以将帧发送至其他节点和/或从其他节点接收帧。处理器230可以耦合到Tx/Rx 210上,从而对帧进行处理和/或确定将帧发送至哪个节点。处理器230可以包括一个或多个多核处理器和/或可以用作数据存储器、缓冲器等的存储器设备232。这样一来,NE 200可以将数据存储在内部存储器设备232中或者将该数据转发到外部磁盘,这取决于实施例。可以将处理器230实现为通用处理器或者一个或多个ASIC和/或数字信号处理器(digital signal processor,简称DSP)的一部分。处理器230可以包括阵列控制模块234,其可以执行方法300、400、500和/或600,这取决于实施例。在可选的实施例中,可以将阵列控制模块234实现为存储在存储器232中的指令。该指令可以由处理器230执行,例如作为存储在非瞬时性介质中的计算机程序产品。在另一可选的实施例中,阵列控制模块234可以在分离的NE上实现。端口220和250可以包括电和/或光发射和/或接收器件。例如,阵列控制模块234可以经由通过Tx/Rx 210和/或端口220和250的传输对存储磁盘110和/或保护磁盘160等多个外部磁盘(例如,云驱动器)进行控制。
应该理解,通过将可执行指令编程和/或加载到NE 200上,处理器230、阵列控制模块234、端口220和250、Tx/Rx 210和/或存储器232中的至少一个发生改变,从而将NE 200部分地转换成多核转发架构等特定的机器或装置,其具有本发明所提供的新颖性。电气工程和软件工程领域的基本原理是,对于可以通过将可执行软件加载到计算机中实现的功能,可以通过众所周知的设计规则转换为硬件实现。是利用软件还是硬件实现一个概念通常取决于设计的稳定性以及待生成的单元数量,而不是从软件领域转换到硬件领域时涉及的任一问题。一般来说,仍然需要频繁更改的设计可能更适合利用软件实现,因为重新更改硬件比重新更改软件更昂贵。一般来说,大量生产的稳定设计可能更适合利用硬件实现,例如ASIC,因为对于大生产运行来说,硬件实现可能比软件实现更便宜。通常可以以软件形式对设计进行开发和测试,随后通过众所周知的设计规则转换为专用集成电路中的等同硬件,该专用集成电路将软件指令进行硬件化。同样,新的ASIC控制的机器是特定的机器或装置。同样,已经利用可执行指令进行编程和/或已经加载了可执行指令的计算机可以视为特定的机器或装置。
图3是网络100等冷数据存储网络中数据写入方法300的一实施例的流程图。方法300可以由控制器101、数据设备110、保护设备160和/或NE 200实现。当控制器接收到待写入冷存储网络的数据流时,开始方法300。在步骤301中,准备将来自数据流的数据作为一组数据块写入。例如,将数据划分为预定义长度的块用于后续进行可搜索的参考等。还选择数据设备110(例如,当前磁盘)为数据块提供存储位置。在步骤303、305、307、309和311中,迭代地将数据块写入所选数据设备110连续的内存块中,直到将步骤301中准备的数据块全部被存储为止。在步骤303中,将数据块写入当前数据设备110连续的内存块中。在写入了当前数据块之后,方法300进行到步骤305:在步骤303中写入当前数据块之后,判断数据设备是否已满;如果数据设备110已满,则方法300进行到步骤307并对下一个数据设备110进行操作,然后执行步骤309;如果数据设备未满,则方法300直接进行到步骤309。在步骤309中,该方法判断步骤303中写入的当前数据块是否是最后一个待写入的数据块。如果还有更多的数据块待写入,则该方法进行到步骤311并对下一个待写入的连续内存块进行操作,然后返回到步骤303继续将数据块写入当前数据设备110连续的内存块中。因此,通过步骤303、305、307、309和311,将连续的数据块写入公共数据设备110的多个连续内存块中,使得写入内存块的数据块独立于同一冗余存储阵列中所有存储设备上的分条。对于一组数据块而言,在当前数据设备110全满之前,不将数据块写入备用的数据设备110。换句话说,内存块是以设备为单位写入设备,而不是以分条为单位写入分条。
如果当前数据块是步骤309中最后一个待写入的块,则方法300进行到步骤313。通过步骤313、315、317和319生成保护块并将生成的块写入步骤303、305、307、309和311中更新的所有分条上的保护设备中。在步骤313中,从当前更新分条上的所有数据设备中读取所有内存块。在步骤315中,为当前分条生成一个或多个保护块(例如,为每个保护设备生成一个保护块)。将这些保护块写入相应的保护设备160中。在步骤317中,方法300判断当前分条是否是最后一个更新的分条。如果当前分条是最后一个更新的分条,则方法300进行到步骤321,然后结束。如果当前分条不是最后一个更新的分条,则方法300进行到步骤319并继续对下一个更新的分条进行操作,然后返回步骤313。方法300仅需要在步骤303、305、307、309和311的数据存储阶段激活一个当前所选的数据设备110。一旦当前数据设备110全满,就可以将当前数据设备110去激活并激活下一个数据设备110。此外,在下文所述的相应的读取方法中,只有当前所选的数据设备110需要处于激活状态。然而,在步骤313、315、317和319的保护块生成阶段,所有的存储设备(例如,数据设备110和保护设备160)都激活了。方法300是通用数据保护方案,其可以采用诸如奇偶校验和或里德-所罗门码等几乎所有的数据保护技术。
图4是在应用了基于奇偶校验和的数据保护技术时,网络100等冷数据存储网络中数据写入的优化方法400的一实施例的流程图。建议方法400采用基于奇偶校验和的数据保护技术、RAID 5等数据保护技术。方法400可以由控制器101、数据设备110、一个保护设备160和/或NE 200实现。当控制器接收到待写入冷存储器的数据流时,开始方法400。方法400基本上与方法300类似,但是基本上并行地写入数据块和保护块以防止需要进行存储时重新读取所有分条上的数据块以生成保护块。步骤401基本上与步骤301类似。在步骤403中,方法400判断为写入当前数据块而分配的内存块是否空白。如果该内存块不是空白的,则方法400进行到步骤405以从内存块读取原始数据块,然后执行步骤407。如果该内存块是空白的,则方法400直接进行到步骤407。在步骤407中,为保护设备160上相应的分条生成保护块。通过将步骤405中读取的数据块的当前值与当前内存块中的原始值之间的位差应用到保护块的原始值,对保护块进行更新。具体而言,保护块的现有值受到数据块的当前值与数据设备110上数据块的原始值之间的位差的影响。例如,数据块中位的变化需要在相应的保护块中对相应的位进行更改。这样一来,在数据写入过程中,其他的数据设备可以保持未激活状态。在步骤409中,将步骤401准备的数据块写入所选数据设备上当前内存块的值,并将步骤407中生成的相应保护块写入保护设备的相同分条上的保护块中。在步骤411中,该方法判断当前数据设备是否已满。如果数据设备未满,则方法400进行到步骤415。否则,方法400进行至步骤413中的下一个数据设备,然后继续执行步骤415。在步骤415中,方法400判断步骤409中写入的数据块是否是最后一个待写入的数据块。如果不再有更多的数据块待写入,则方法400进行到步骤419,然后结束。否则,方法400进行到步骤417并对下一个待写入的数据块进行操作,然后返回步骤403。与方法300类似,将连续的数据块依次写入当前所选的数据设备,使得数据块是以设备为单位写入设备,而不是以分条为单位写入分条。方法400仅需要在数据块写入过程中激活当前所选的数据设备和保护设备,而不激活未选择的数据设备。此外,在下文所述的相应的读取方法中,只有当前所选的数据设备需要激活,而不激活所有其他的存储设备。在方法400中,保护设备可以采用基于奇偶校验和的数据保护技术,但是不适用于里德-所罗门码。
图5是网络100等冷存储网络中数据读取方法500的一实施例的流程图。方法500可以由控制器101、数据设备110、保护设备160和/或NE 200实现。在控制器确定从冗余存储阵列中的数据设备读取数据块时,开始方法500。在步骤501中,对要在数据设备上读取的第一数据块进行定位,例如,基于索引搜索或节点表。在步骤503中,从所定位的数据设备中读取当前数据块,然后执行步骤505。如果在步骤505中已经到达数据设备的末端,则方法500进行到步骤507并对下一个数据设备进行操作,然后继续执行步骤509。如果在步骤505中还没有到达数据设备的末端,则该方法直接进行到步骤509。在步骤509中,方法500判断是否已经读取了最后一个期望的数据块。如果当前数据块是最后一个待读取的数据块,则方法500进行到步骤513,然后结束。如果当前数据块不是最后一个待读取的数据块,则方法500进行到步骤511,选择下一个数据块并返回步骤503。在方法500中,可以通过在不激活所有其他的存储设备的前提下激活单个数据设备的方式读取根据方法300或400所写入的基于冗余存储阵列的系统。这可以极大地降低功耗及组件磨损。
图6是网络100等冷存储网络中数据恢复方法600的一实施例的流程图。方法600可以由控制器101、数据设备110、保护设备160和/或NE 200实现。在冗余存储阵列中的一个或多个存储设备发生故障时,开始方法600。例如,可以通过运行空闲的存储设备对一个或多个发生故障的存储设备进行替换(例如,由技术人员)。在步骤601中,从冗余存储阵列中的第一个分条开始对替代设备进行故障恢复。在步骤603中,从未受损的存储设备读取当前分条上的所有数据块和保护块。在步骤604中,基于步骤603中读取的数据值重新生成受损设备上的丢失块。然后,将每个重新生成的块写入每个替代存储设备上相同分条上的相应内存块中,然后执行步骤605。如果当前分条是冗余存储阵列中的最后一个分条,则方法600进行到步骤609,然后结束。如果当前分条不是冗余存储阵列中的最后一个分条,则方法600进行到步骤607,对下一个分条进行操作并返回步骤603。如方法600所示,可以在存储设备发生故障的情况下,对网络100等冗余存储阵列中受损的存储设备进行恢复而不造成数据丢失。可恢复存储设备的最大数量取决于冷存储系统采用的数据保护技术。
虽然本发明中已提供若干实施例,但应理解,在不脱离本发明的精神或范围的情况下,本发明所公开的系统和方法可以以许多其它特定形式来体现。本发明的实例应被视为说明性而非限制性的,且本发明并不限于本文中所给出的细节。例如,各种元件或组件可以在另一系统中组合或整合,或者某些特征可以省略或不实施。
此外,在不脱离本发明的范围的情况下,各种实施例中描述和说明为离散或单独的技术、系统和方法可以与其它系统、模块、技术或方法进行组合或合并。展示或论述为彼此耦合或直接耦合或通信的其它项也可以采用电方式、机械方式或其它方式经由某一接口、设备或中间组件间接地耦合或通信。其它变更、替换、更替示例对本领域技术人员而言是显而易见的,均不脱离本文公开的精神和范围。
Claims (20)
1.一种数据存储装置,其特征在于,包括:
分条冗余存储阵列,其中,包括:
多个数据设备,用于将数据块存储在所述数据设备的多个内存块中;
一个或多个保护设备,用于将保护块存储在保护设备的多个内存块中,其中,所述数据设备和所述保护设备通过多个分条相关联,每个分条包括每个数据设备上的单个内存块以及每个保护设备上的单个内存块,相应保护设备中的每个保护块包括用于重建相同分条上受损块的值;
控制器,耦合到所述分条冗余存储阵列,其中,所述控制器用于:
选择用于数据读取或写入访问的数据设备;
通过多个分条将一组数据块依次存储在所选数据设备的内存块中;
基于所述数据块的值为每个更新的分条生成一组保护块;
将所述生成的保护块存储在所述保护设备中所述分条的相应内存块中;
从所选数据设备中依次读取数据块;
为一个或多个受损数据设备重建数据块,并将所述数据块存储在替代存储设备中。
2.根据权利要求1所述的数据存储装置,其特征在于,所述将一组数据块依次存储在所选数据设备的内存块中包括:激活所选数据设备而不激活任何其他存储设备。
3.根据权利要求1所述的数据存储装置,其特征在于,所述控制器还用于从所选数据设备中依次读取数据块而不激活任何其他存储设备作为单次数据读取访问的一部分。
4.根据权利要求1所述的数据存储装置,其特征在于,所述将一组数据块依次存储在所选数据设备的内存块中包括:将多个数据块写入单个数据设备中;将多个保护块存储在每个更新分条上的所述保护设备中。
5.根据权利要求4所述的数据存储装置,其特征在于,所述当所有存储设备处于激活状态时,将一组保护块存储在所述保护设备中包括:
从存储的数据块对应的每个分条上的所述数据设备中读取数据块;
基于所获得的数据块的值生成保护块;
根据所述分条将所述保护块存储在所述保护设备的所述内存块中。
6.根据权利要求1所述的数据存储装置,其特征在于,所述将一组保护块存储在所述保护设备中包括:在对每个数据块进行存储之后,将保护块存储在所述保护设备中,其中,如果配置了基于奇偶校验和的数据保护技术,则冗余存储阵列只需要一个保护设备,只有所选数据设备和所述保护设备需要激活,而所有其他的数据设备保持未激活状态。
7.根据权利要求6所述的数据存储装置,其特征在于,所述存储所述保护块还包括:
通过将当前待存储的数据块与所述数据设备中原始数据块之间的位差应用于所述保护设备的原始保护块中,为每个更新分条生成新的奇偶校验保护块;将所述新的保护块存储在所述保护设备的所述内存块中。
8.根据权利要求1所述的数据存储装置,其特征在于,所述分条冗余存储阵列用于防止单个存储设备发生故障,所述一个或多个保护设备包括至少一个保护设备。
9.根据权利要求1所述的数据存储装置,其特征在于,所述分条冗余存储阵列用于防止两个存储设备同时发生故障,所述一个或多个保护设备包括至少两个保护设备。
10.根据权利要求1所述的数据存储装置,其特征在于,所生成的保护块包括里德-所罗门码或其他的数据保护技术。
11.一种数据存储方法,其特征在于,包括:
基于来自控制器的指令将数据块依次写入所选数据设备的多个内存块中,其中,所选数据设备是包括多个数据设备和一个或多个保护设备的分条冗余存储阵列的一部分,所述数据设备和所述保护设备通过多个分条相关联,每个分条包括每个存储设备的单个内存块;
生成一组保护块,其中,每个保护块值是基于每个更新分条中所有数据块的值生成的;
将保护块存储在每个分条上的每个保护设备的内存块中,其中,在写入数据块时对每个分条进行更新,每个保护块包括用于重建相同分条上受损内存块的值,再依次从所选数据设备中读取数据块;
为一个或多个受损数据设备重建数据块,并将所述数据块存储在替代存储设备中。
12.根据权利要求11所述的方法,其特征在于,所述将所述数据块依次写入所选数据设备的内存块中包括:激活所选数据设备而不激活所述多个数据设备中的任何其他数据设备。
13.根据权利要求11所述的方法,其特征在于,还包括:从所选数据设备中依次读取所述数据块而不激活任何其他存储设备作为单次数据读取访问的一部分。
14.根据权利要求11所述的方法,其特征在于,所述将所述数据块依次写入所选数据设备中包括:在将所述保护块存储在所述保护设备中之前,将所述数据块写入所述数据设备的多个内存块中。
15.根据权利要求11所述的方法,其特征在于,所述将所述保护块存储在每个更新分条上的所述保护设备中包括:在将数据块存储在所选数据设备中之后,存储保护块。
16.根据权利要求11所述的方法,其特征在于,所述将所述保护块存储在所述保护设备中包括:将r个保护块存储在r个保护设备中,其中,r是大于0的任意整数,是为每个冗余存储阵列配置的保护设备的数量。
17.一种非瞬时性计算机可读介质,其特征在于,包括计算机程序产品,其中,所述计算机程序产品由耦合到数据存储设备阵列和一个或多个保护设备的控制器所使用,所述计算机程序产品包括存储在所述非瞬时性计算机可读介质上的计算机可执行指令,使得当所述指令由处理器执行时,控制器用于:
将数据块依次写入所述阵列中所选数据设备的多个内存块中,其中,所述数据设备和所述保护设备通过多个分条相关联,每个分条包括每个数据设备以及每个保护设备的单个内存块;生成一组保护块,其中,每个保护块值是基于相应分条中的数据块的值生成的;
将保护块存储在每个分条上的每个保护设备的内存块中,其中,在写入数据块时对每个分条进行更新,每个保护块包括用于重建相同分条上受损内存块的值。
18.根据权利要求17所述的计算机程序产品,其特征在于,所述将所述数据块写入单个所选数据设备的连续内存块中包括:激活所选数据设备而不激活所述阵列中的任何其他数据设备。
19.根据权利要求17所述的计算机程序产品,其特征在于,所述指令还使得所述控制器用于从单个所选数据设备中读取数据块而不激活所述阵列中的任何其他存储设备作为单次数据访问的一部分。
20.根据权利要求17所述的计算机程序产品,其特征在于,所述为每个更新分条存储所述保护块包括:在将每个数据块写入相同分条之后,将保护块存储在每个保护设备中。
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US15/007,953 US9952927B2 (en) | 2016-01-27 | 2016-01-27 | Data protection for cold storage system |
| US15/007,953 | 2016-01-27 | ||
| PCT/CN2017/070864 WO2017128951A1 (en) | 2016-01-27 | 2017-01-11 | Data protection for cold storage system |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CN108604166A true CN108604166A (zh) | 2018-09-28 |
| CN108604166B CN108604166B (zh) | 2019-11-12 |
Family
ID=59360468
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN201780008068.6A Active CN108604166B (zh) | 2016-01-27 | 2017-01-11 | 冷存储系统的数据保护 |
Country Status (4)
| Country | Link |
|---|---|
| US (1) | US9952927B2 (zh) |
| EP (1) | EP3391189B1 (zh) |
| CN (1) | CN108604166B (zh) |
| WO (1) | WO2017128951A1 (zh) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN114416677A (zh) * | 2021-12-30 | 2022-04-29 | 中国电信股份有限公司 | 一种冷存储数据的更新方法、装置、设备及存储介质 |
Families Citing this family (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US9811264B1 (en) * | 2016-04-28 | 2017-11-07 | Pure Storage, Inc. | Deploying client-specific applications in a storage system utilizing redundant system resources |
| US11243698B2 (en) * | 2020-05-14 | 2022-02-08 | Seagate Technology Llc | Initializing stripes in storage array |
| US12158825B2 (en) * | 2022-05-31 | 2024-12-03 | Dell Products L.P. | Balanced data mirroring distribution for parallel access |
| TWI845062B (zh) * | 2022-12-13 | 2024-06-11 | 慧榮科技股份有限公司 | 對快閃記憶體模組進行測試的方法、與相關的快閃記憶體控制器及記憶裝置 |
Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20050097270A1 (en) * | 2003-11-03 | 2005-05-05 | Kleiman Steven R. | Dynamic parity distribution technique |
| CN101976174A (zh) * | 2010-08-19 | 2011-02-16 | 北京同有飞骥科技有限公司 | 一种垂直排布分布校验的节能型磁盘阵列的构建方法 |
| CN102081559A (zh) * | 2011-01-11 | 2011-06-01 | 成都市华为赛门铁克科技有限公司 | 一种独立磁盘冗余阵列的数据恢复方法和装置 |
| US20150026488A1 (en) * | 2013-07-17 | 2015-01-22 | Lsi Corporation | Selectively powering a storage device over a data network |
Family Cites Families (12)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5499253A (en) | 1994-01-05 | 1996-03-12 | Digital Equipment Corporation | System and method for calculating RAID 6 check codes |
| US5913927A (en) | 1995-12-15 | 1999-06-22 | Mylex Corporation | Method and apparatus for management of faulty data in a raid system |
| US5805788A (en) | 1996-05-20 | 1998-09-08 | Cray Research, Inc. | Raid-5 parity generation and data reconstruction |
| US7007193B1 (en) * | 2000-01-07 | 2006-02-28 | Storage Technology Corporation | Method and system for reconstructing data serially arranged on a magnetic tape track |
| US20070294565A1 (en) * | 2006-04-28 | 2007-12-20 | Network Appliance, Inc. | Simplified parity disk generation in a redundant array of inexpensive disks |
| US7752489B2 (en) * | 2007-05-10 | 2010-07-06 | International Business Machines Corporation | Data integrity validation in storage systems |
| US8234445B2 (en) | 2008-06-09 | 2012-07-31 | Infortrend Technology, Inc. | RAID data protection architecture using data protection information |
| WO2012105260A1 (ja) * | 2011-02-04 | 2012-08-09 | パナソニック株式会社 | 記憶装置 |
| US8341342B1 (en) | 2012-03-23 | 2012-12-25 | DSSD, Inc. | Storage system with incremental multi-dimensional RAID |
| JP5891890B2 (ja) * | 2012-03-26 | 2016-03-23 | 富士通株式会社 | ストレージシステム、ストレージ装置およびデータ復元方法 |
| JP5586712B2 (ja) | 2013-01-16 | 2014-09-10 | 株式会社東芝 | ディスクアレイ制御装置およびディスクアレイ装置 |
| US8843700B1 (en) | 2013-11-29 | 2014-09-23 | NXGN Data, Inc. | Power efficient method for cold storage data retention management |
-
2016
- 2016-01-27 US US15/007,953 patent/US9952927B2/en active Active
-
2017
- 2017-01-11 WO PCT/CN2017/070864 patent/WO2017128951A1/en not_active Ceased
- 2017-01-11 CN CN201780008068.6A patent/CN108604166B/zh active Active
- 2017-01-11 EP EP17743566.6A patent/EP3391189B1/en active Active
Patent Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20050097270A1 (en) * | 2003-11-03 | 2005-05-05 | Kleiman Steven R. | Dynamic parity distribution technique |
| CN101976174A (zh) * | 2010-08-19 | 2011-02-16 | 北京同有飞骥科技有限公司 | 一种垂直排布分布校验的节能型磁盘阵列的构建方法 |
| CN102081559A (zh) * | 2011-01-11 | 2011-06-01 | 成都市华为赛门铁克科技有限公司 | 一种独立磁盘冗余阵列的数据恢复方法和装置 |
| US20150026488A1 (en) * | 2013-07-17 | 2015-01-22 | Lsi Corporation | Selectively powering a storage device over a data network |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN114416677A (zh) * | 2021-12-30 | 2022-04-29 | 中国电信股份有限公司 | 一种冷存储数据的更新方法、装置、设备及存储介质 |
Also Published As
| Publication number | Publication date |
|---|---|
| EP3391189B1 (en) | 2021-12-29 |
| WO2017128951A1 (en) | 2017-08-03 |
| CN108604166B (zh) | 2019-11-12 |
| EP3391189A4 (en) | 2019-02-27 |
| EP3391189A1 (en) | 2018-10-24 |
| US9952927B2 (en) | 2018-04-24 |
| US20170212805A1 (en) | 2017-07-27 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN109426583B (zh) | 运行中的独立磁盘冗余阵列奇偶校验计算 | |
| US10613934B2 (en) | Managing RAID parity stripe contention | |
| US9063910B1 (en) | Data recovery after triple disk failure | |
| KR102102728B1 (ko) | 스케일러블 스토리지 보호 | |
| US11809274B2 (en) | Recovery from partial device error in data storage system | |
| CN108604166B (zh) | 冷存储系统的数据保护 | |
| US20180253363A1 (en) | Efficient use of spare device(s) associated with a group of devices | |
| KR20100135765A (ko) | 데이터 스토리지 라이브러리를 위한 디듀플리케이션 프로토콜 선택 | |
| US9740440B2 (en) | Separating a hybrid asymmetric mix of a RAID 1 mirror and a parity-based RAID array | |
| US9563524B2 (en) | Multi level data recovery in storage disk arrays | |
| US20230068214A1 (en) | Storage system | |
| JP2016530637A (ja) | Raidパリティストライプ再構成 | |
| US11157361B2 (en) | Efficient utilization of storage space in arrays of storage drives | |
| TW202011202A (zh) | 持久性儲存元件管理 | |
| CN109791472B (zh) | 冷存储系统的数据保护 | |
| US11748196B2 (en) | Adaptive parity rotation for redundant arrays of independent disks | |
| US9223652B2 (en) | Triple parity encoding to facilitate data recovery | |
| US11544005B2 (en) | Storage system and processing method | |
| JP6556980B2 (ja) | ストレージ制御装置、ストレージ制御方法及びストレージ制御プログラム | |
| JP3699473B2 (ja) | ディスクアレイ装置 | |
| JP2025002079A (ja) | ストレージシステム及びストレージシステムの管理方法 | |
| CN116249969A (zh) | 具有内置冗余的数据存储系统以及恢复和存储数据的方法 | |
| HK1188857A (zh) | 具有動態幾何的raid陣列中的重構讀取 | |
| HK1188855A (zh) | Ssd環境中的適配raid |
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 |