[go: up one dir, main page]

CN105579980A - Deduplication of parity data in ssd based raid systems - Google Patents

Deduplication of parity data in ssd based raid systems Download PDF

Info

Publication number
CN105579980A
CN105579980A CN201380079885.2A CN201380079885A CN105579980A CN 105579980 A CN105579980 A CN 105579980A CN 201380079885 A CN201380079885 A CN 201380079885A CN 105579980 A CN105579980 A CN 105579980A
Authority
CN
China
Prior art keywords
data
parity data
raid
new
parity
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
Application number
CN201380079885.2A
Other languages
Chinese (zh)
Inventor
金德焕
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.)
Inha Industry Partnership Institute
Original Assignee
Inha Industry Partnership Institute
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 Inha Industry Partnership Institute filed Critical Inha Industry Partnership Institute
Publication of CN105579980A publication Critical patent/CN105579980A/en
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/108Parity data distribution in semiconductor storages, e.g. in SSD
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0689Disk arrays, e.g. RAID, JBOD

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

The present disclosure describes various techniques related to maintaining parity data in a redundant array of independent disks (RAID).

Description

基于SSD的RAID系统中的校验数据的去重Deduplication of parity data in RAID system based on SSD

背景技术Background technique

在一些计算应用中,多个存储设备(例如,机械存储设备,固态驱动(SSD)设备等)可以被配置为充当单个逻辑存储设备。这种配置可称为独立磁盘冗余阵列(RAID)。各种RAID配置可以利用称为“校验”的错误保护方案来提供一定的容错水平。一般地,使用校验的RAID配置可以生成对应于存储在RAID中的数据的校验数据并且将校验数据存储在RAID的校验部分中。校验数据可随后用于从影响RAID中存储的数据的错误(例如,数据损坏,驱动故障等)中恢复。然而,为了保持容错性,每当新数据写入RAID时,校验数据需要重新生成且重新写入RAID的校验部分中。在将校验数据存储在SSD设备上的RAID配置的情况下,将校验数据连续地重新写入RAID中会导致SSD的耗损增加和/或RAID的功耗增加。In some computing applications, multiple storage devices (eg, mechanical storage devices, solid-state drive (SSD) devices, etc.) may be configured to act as a single logical storage device. This configuration may be referred to as a Redundant Array of Independent Disks (RAID). Various RAID configurations can utilize an error protection scheme called "parity" to provide some level of fault tolerance. In general, a RAID configuration using parity may generate parity data corresponding to data stored in the RAID and store the parity data in the parity portion of the RAID. The parity data can then be used to recover from errors (eg, data corruption, drive failure, etc.) affecting the data stored in the RAID. However, in order to maintain fault tolerance, whenever new data is written into the RAID, the parity data needs to be regenerated and rewritten into the parity part of the RAID. In the case of a RAID configuration in which the parity data is stored on the SSD device, continuously rewriting the parity data into the RAID will result in increased wear of the SSD and/or increased power consumption of the RAID.

发明概述Summary of the invention

本文详述的是将校验数据保持在RAID中的各种示例性的方法,其可具体实施为任意多样的方法、装置、系统和/或计算机程序产品。Detailed herein are various exemplary methods of maintaining parity data in a RAID, which may be embodied as any of a variety of methods, apparatus, systems, and/or computer program products.

一些示例的方法可以包括:在RAID控制模块处,接收将数据单元写入所述RAID的数据存储部的请求,其中所述RAID具有存储在数据存储部中的当前数据单元并且具有存储在所述RAID的校验数据存储部中的当前校验数据;响应于写入所述数据单元的请求,至少部分地基于所述数据单元与当前数据单元之间的异或(XOR)来确定临时数据;至少部分地基于临时数据与当前校验数据之间的XOR运算来确定新校验数据;将所述新校验数据去重以判定新校验数据的任意部分是否是当前校验数据的部分的重复;以及将所述新校验数据的被判定为不是所述当前校验数据的部分的重复的部分写入所述RAID的校验数据存储部。Some example methods may include, at a RAID control module, receiving a request to write a data unit to a data store of the RAID, wherein the RAID has a current data unit stored in the data store and has a current data unit stored in the current parity data in a parity data storage portion of the RAID; determining temporary data based at least in part on an exclusive OR (XOR) between the data unit and the current data unit in response to a request to write the data unit; determining new parity data based at least in part on an XOR operation between the temporary data and the current parity data; deduplicating the new parity data to determine whether any portion of the new parity data is part of the current parity data and repeating; and writing the part of the new verification data that is determined not to be a duplicate of the part of the current verification data into the verification data storage unit of the RAID.

本公开还描述了其中存储有指令的各种示例的机器可读非暂态存储介质,响应于由一个或多个处理器执行,所述指令可操作地使RAID的独立磁盘冗余阵列(RAID)控制模块能够响应于将特定数据单元写入RAID的请求而至少部分地基于特定数据单元与第一数据单元之间的异或(XOR)运算来判定临时数据,所述RAID可以具有与第一数据单元相关联的数据存储部,并且RAID具有与第一校验数据相关联的校验数据存储部;至少部分地基于临时数据与第一校验数据之间的XOR运算来确定第二校验数据;对所述第二校验数据去重以判定第二校验数据的任意部分是否是第一校验数据的部分的重复;以及将第二校验数据的被判定为不是第一校验数据的部分的重复的部分写入RAID的校验数据存储部。The present disclosure also describes various example machine-readable non-transitory storage media having stored therein various examples of instructions operable, in response to being executed by one or more processors, to cause a RAID Redundant Array of Independent Disks (RAID ) control module is capable of determining temporary data based at least in part on an exclusive OR (XOR) operation between a particular data unit and a first data unit in response to a request to write a particular data unit to the RAID, which may have a a data store associated with the data unit, and the RAID has a check data store associated with the first check data; determining a second check based at least in part on an XOR operation between the temporary data and the first check data data; deduplicating the second verification data to determine whether any part of the second verification data is a repetition of a part of the first verification data; and determining that the second verification data is not the first verification data The overlapping portion of the data portion is written into the parity data storage unit of the RAID.

本公开另外描述了示例的系统,其可以包括:独立磁盘冗余阵列(RAID),其具有存储在数据存储部中的当前数据单元并且具有存储在RAID的校验数据存储部中的当前校验数据;以及RAID控制模块,其与RAID通信耦合。在示例中,RAID控制模块包括数据输入/输出模块,其能够可操作地实现接收将数据单元写入RAID的数据存储部的请求,所述RAID模块还可以包括校验保持模块,校验保持模块配置为:响应于写入数据单元的请求而将数据单元与当前校验数据进行比较来确定临时校验数据;将临时校验数据与当前校验数据进行比较来确定新校验数据;将新校验数据拆分成多个新的校验数据块;构建散列表,该散列表将多个第一散列值中的每一个与新的校验数据块中的不同的块相关联,以及将多个第二散列值中的每一个与当前校验数据的不同的块相关联;以及基于多个第一散列值与多个第二散列值的比较来确定新校验数据的包括数据单元的至少一部分的非重复块。This disclosure additionally describes example systems that may include a Redundant Array of Independent Disks (RAID) having a current data unit stored in a data store and having a current parity stored in a parity data store of the RAID data; and a RAID control module communicatively coupled to the RAID. In an example, the RAID control module includes a data input/output module, which is operable to receive a request to write a data unit into a data storage part of the RAID, and the RAID module may also include a check and hold module, a check and hold module It is configured to: compare the data unit with the current parity data in response to a request to write the data unit to determine the temporary parity data; compare the temporary parity data with the current parity data to determine the new parity data; The verification data is split into a plurality of new verification data blocks; a hash table is constructed, and the hash table associates each of the plurality of first hash values with different blocks in the new verification data blocks, and associating each of the plurality of second hash values with a different block of the current check data; and determining a new check data based on a comparison of the plurality of first hash values and the plurality of second hash values A non-repeating block comprising at least a portion of a data unit.

附图说明Description of drawings

在说明书的权利要求中特别指出并清楚的要求保护主题。根据下面结合附图给出的以下说明和随附权利要求书,本公开的前面的特征和其它特征将变得更加充分显而易见。应当理解,这些附图仅描绘了根据本公开的多个实施例,并且因此不视为限制其范围。通过利用附图,将通过额外的具体性和细节来描述本公开。The subject matter that is claimed is particularly pointed out and distinctly claimed in the specification and claims. The foregoing and other features of the present disclosure will become more fully apparent from the following description and appended claims, given below in conjunction with the accompanying drawings. It should be understood that the drawings depict only embodiments in accordance with the disclosure and are therefore not to be considered limiting of its scope. The present disclosure will be described with additional specificity and detail, by use of the accompanying drawings.

在附图中:In the attached picture:

图1a示出了包括RAID的示例的系统的框图;Figure 1a shows a block diagram of a system including an example of RAID;

图1b示出了示例的当前校验数据和当前校验数据的块的框图;Fig. 1 b shows a block diagram of example current parity data and blocks of current parity data;

图1c示出了示例的散列表的框图;Figure 1c shows a block diagram of an exemplary hash table;

图2a示出了包括RAID的示例系统的框图;Figure 2a shows a block diagram of an example system including RAID;

图2b示出了示例的新校验数据和新校验数据的块的框图;Figure 2b shows a block diagram of exemplary new parity data and blocks of new parity data;

图2c示出了对应于新校验数据的块的示例的散列值的框图;Figure 2c shows a block diagram corresponding to an example hash value of a block of new check data;

图2d示出了示例的校验数据去重的框图;Figure 2d shows a block diagram of an exemplary check data deduplication;

图2e示出了基于去重校验数据而更新的散列表的示例的框图;Figure 2e shows a block diagram of an example of a hash table updated based on deduplication data;

图3示出了为RAID保持校验数据的示例方法的流程图;Figure 3 shows a flow chart of an example method for maintaining parity data for RAID;

图4示出了示例的计算机程序产品;Figure 4 shows an exemplary computer program product;

图5示出了全部依照本公开的至少一些实施例布置的示例的计算设备的框图。5 illustrates a block diagram of an example computing device, all arranged in accordance with at least some embodiments of the present disclosure.

发明详述Detailed description of the invention

下面的说明书阐述了各个示例以及具体细节以提供对权利要求主题的全面理解。权利要求主题可以在没有本文公开的一些或更多具体细节的情况下来实施。此外,在一些情形下,为避免不必要地混淆权利要求,未对公知的方法、程序、系统、组件和/或电路进行详细描述。在下面的详细说明中,将参考附图,附图构成了详细说明的一部分。在附图中,除非上下文指出,否则相似的符号通常表示相似的组件。在详细说明、附图和权利要求中所描述的示例性实施例不意在限制。可以使用其它实施例,并且可以做出其它改变,而不偏离本文呈现的主题的精神或范围。如本文大致描述且如图中所图示的,本公开的方案能够以各种不同配置来布置、替代、组合和设计,所有这些都在本文中明确地构思出且构成本公开的部分。The following description sets forth various examples and specific details to provide a thorough understanding of claimed subject matter. Claimed subject matter may be practiced without some or more of the specific details disclosed herein. Furthermore, in some instances, well known methods, procedures, systems, components and/or circuits have not been described in detail so as not to unnecessarily obscure the claims. In the following detailed description, reference is made to the accompanying drawings, which form a part hereof. In the drawings, similar symbols typically identify similar components, unless context dictates otherwise. The exemplary embodiments described in the detailed description, drawings, and claims are not meant to be limiting. Other embodiments may be utilized, and other changes may be made, without departing from the spirit or scope of the subject matter presented herein. As generally described herein and illustrated in the drawings, the disclosed aspects can be arranged, substituted, combined and designed in various different configurations, all of which are expressly conceived herein and form part of this disclosure.

本公开尤其涉及与保持用于RAID的校验数据有关的方法、装置、系统和/或计算机程序产品。In particular, the present disclosure relates to methods, apparatus, systems and/or computer program products related to maintaining parity data for RAID.

一般地,RAID设备可包括构造为充当单一逻辑存储单元的多个存储设备。一般地,RAID设备可由两个以上单个存储设备构成且以各种配置来组织(例如,RAID1,RAID2,RAID3,RAID4,RAID5,RAID6,RAID10,等等)。各种RAID配置可以提供一定的容错水平。例如,上述的校验错误保护方案可以实现于一些RAID配置(例如,RAID2,RAID3,RAID4,RAID5,RAID6,RAID10,等等)中。Generally, a RAID device may include multiple storage devices configured to act as a single logical unit of storage. Generally, a RAID device may consist of two or more individual storage devices and be organized in various configurations (eg, RAID1, RAID2, RAID3, RAID4, RAID5, RAID6, RAID10, etc.). Various RAID configurations can provide some level of fault tolerance. For example, the parity error protection scheme described above can be implemented in some RAID configurations (eg, RAID2, RAID3, RAID4, RAID5, RAID6, RAID10, etc.).

一般地,校验错误保护方案可以通过根据存储在RAID中的数据确定校验数据来提供容错性。校验数据可随后用于从影响存储在RAID中的数据的错误(例如,数据损坏、驱动故障等)中恢复。作为示例,RAID设备可以包括第一、第二和第三单个的存储设备。RAID设备可配置为将数据存储在第一和第二单个的存储设备上,并且将校验数据存储在第三单个存储设备上。RAID设备可以基于存储在第一单个存储设备上的数据与存储在第二单个存储设备上的数据之间的异或(XOR)运算来生成校验数据。RAID设备可以将该确定的校验数据存储到第三单个存储设备中。RAID设备则可以利用存储在第三单个存储设备上的校验数据来“恢复”存储在第一单个存储设备或第二单个存储设备上的数据。例如,假设第一单个存储设备故障。可以基于存储在第二单个存储设备上的数据与存储在第三单个存储设备上的校验数据之间的XOR运算来恢复存储在第一单个存储设备上的数据。In general, parity error protection schemes can provide fault tolerance by determining parity data based on data stored in the RAID. The parity data can then be used to recover from errors (eg, data corruption, drive failure, etc.) affecting the data stored in the RAID. As an example, a RAID device may include first, second and third individual storage devices. The RAID device may be configured to store data on first and second individual storage devices, and to store parity data on a third individual storage device. The RAID device may generate parity data based on an exclusive OR (XOR) operation between data stored on the first single storage device and data stored on the second single storage device. The RAID device can store the determined verification data in a third single storage device. The RAID device can then use the parity data stored on the third individual storage device to "recover" the data stored on the first individual storage device or the second individual storage device. For example, assume a first single storage device fails. The data stored on the first single storage device may be restored based on an XOR operation between the data stored on the second single storage device and the check data stored on the third single storage device.

为了保持容错性,校验数据需要持续地再生成且存储在RAID设备中。更特别地,当新数据写入(或者对现有数据做出改变)RAID设备时,可能需要重新生成校验数据。例如,使用上述的RAID配置,如果存储在第一单个存储设备上的数据改变,则存储在第三单个存储设备上的校验数据可能不再能用于恢复存储在第一单个存储设备或第二单个存储设备上的数据。因此,需要确定新的校验数据(例如,基于存储在第一单个存储设备上的改变后的数据与存储在第二单个存储设备上的数据之间的XOR运算)。该新的校验数据可以写入第三单个存储设备,如上所述。In order to maintain fault tolerance, parity data needs to be continuously regenerated and stored in the RAID device. More specifically, when new data is written (or changes are made to existing data) in the RAID device, parity data may need to be regenerated. For example, using the RAID configuration described above, if the data stored on the first individual storage device changes, the parity data stored on the third individual storage device may no longer be used to recover data stored on the first individual storage device or the third individual storage device. Two data on a single storage device. Therefore, new parity data needs to be determined (eg, based on an XOR operation between the changed data stored on the first single storage device and the data stored on the second single storage device). This new parity data can be written to a third individual storage device, as described above.

对于使用固态存储设备(SSD)来存储其校验数据的RAID设备,持续地或者以其它方式将新校验数据多次写入RAID设备会导致用于存储校验数据的SSD中耗损增加。另外,用于操作RAID设备的功率量会由于需要在写入新数据(或者现有数据改变)之前需要擦除SSD上的数据以及由于大量校验数据写入SSD的频繁方式而增加。For a RAID device that uses a solid-state storage device (SSD) to store its parity data, writing new parity data to the RAID device multiple times continuously or in other ways will lead to increased wear and tear in the SSD used to store the parity data. Additionally, the amount of power used to operate a RAID device can increase due to the need to erase data on the SSD before writing new data (or existing data changes) and due to the frequent manner in which large amounts of parity data are written to the SSD.

本公开的各个实施例可以提供将校验数据保持在RAID设备中。特别地,本公开的一些实施例可利于保持校验数据,在校验数据中至少一些数据集无需每当存储在RAID设备中的数据的变化发生时重新写入RAID设备。Various embodiments of the present disclosure may provide for maintaining parity data in a RAID device. In particular, some embodiments of the present disclosure may facilitate maintaining parity data in which at least some data sets need not be rewritten to the RAID device whenever changes to data stored in the RAID device occur.

使用上述配置,提供下面的非限制示例以便进一步图示说明本公开的一些实施例。如上所述,第一和第二单个存储设备可用于存储数据,而第三单个存储设备可用于存储校验数据。作为将校验数据存储在RAID设备中的部分,校验数据可拆分成更小的片(块),并且可以生成每个块的散列。Using the configuration described above, the following non-limiting examples are provided to further illustrate some embodiments of the present disclosure. As mentioned above, the first and second individual storage devices may be used to store data, while the third single storage device may be used to store check data. As part of storing the parity data in the RAID device, the parity data can be split into smaller pieces (blocks) and a hash of each block can be generated.

在示例中,第一和第二单个存储设备中的数据可以组织成页。页可以具有特定尺寸。校验数据的块可拆分成各种尺寸,例如一个或多个块可以是第一尺寸,该第一尺寸可以基本上类似于第一和第二单个存储设备中的数据页。在示例中,一个或多个块可以具有小于或等于第一尺寸的第二尺寸,诸如例如4千字节。散列表可用于存储散列且记录对应于每个块的数据存储在第三单个存储设备上的位置(例如,存储器位置,等等)。In an example, data in the first and second individual storage devices may be organized into pages. Pages can have specific dimensions. The blocks of parity data may be split into various sizes, for example one or more blocks may be of a first size which may be substantially similar to a page of data in the first and second single storage devices. In an example, one or more blocks may have a second size that is less than or equal to the first size, such as, for example, 4 kilobytes. A hash table may be used to store the hashes and record where the data corresponding to each block is stored on the third single storage device (eg, memory location, etc.).

当新数据写入RAID设备时,新的校验数据可通过如下方式确定:基于新数据与当前数据之间的XOR运算来确定临时数据;以及基于临时数据与当前校验数据之间的XOR运算来确定新的校验数据。例如,假设新数据写入第一单个存储设备。可以基于新数据(例如,现在存储于第一单个存储设备上的数据)与当前数据(例如,存储在第二单个存储设备上的数据)之间的XOR运算来确定临时数据。然后,可以基于临时数据与当前校验数据(例如,存储在第三单个存储设备上的校验数据)之间的XOR运算来确定新校验数据。When new data is written into the RAID device, the new parity data can be determined by: determining the temporary data based on the XOR operation between the new data and the current data; and based on the XOR operation between the temporary data and the current parity data to determine the new calibration data. For example, assume that new data is written to a first single storage device. Temporary data may be determined based on an XOR operation between new data (eg, data now stored on the first single storage device) and current data (eg, data stored on the second single storage device). Then, new check data may be determined based on an XOR operation between the temporary data and the current check data (for example, check data stored on the third single storage device).

可以对新校验数据进行部分“去重”,以确定不同于当前校验数据的部分的新校验数据的部分。新校验数据的被确定为不同于当前校验数据的部分可以写入第三单个存储设备。然而,新校验数据的与当前校验数据的部分相同的部分无需重新写入第三单个存储设备。示例的去重过程可以包括将新校验数据拆分成块(例如,如上文结合当前校验数据所描述的)。可以对于新校验数据的每个块生成散列并且将散列与存储在散列表中的当前校验数据的散列进行比较。基于该比较,被发现对应于当前校验数据的块的新校验数据的任意块无需写入第三单个存储设备。基于该比较,被发现不对应于当前校验数据的任意块的新校验数据的块可以写入第三单个存储设备。也可以相应地更新散列表(例如,更新散列、更新位置,等等)。Portions of the new parity data may be "deduplicated" to determine portions of the new parity data that are different from portions of the current parity data. The portion of the new parity data determined to be different from the current parity data may be written to the third single storage device. However, the same portion of the new parity data as that of the current parity data need not be rewritten to the third single storage device. An example deduplication process may include breaking new parity data into chunks (eg, as described above in connection with current parity data). A hash may be generated for each block of new check data and compared to the hash of the current check data stored in the hash table. Based on this comparison, any block of new parity data that is found to correspond to a block of current parity data need not be written to the third single storage device. Based on this comparison, blocks of new parity data that are found not to correspond to any blocks of current parity data may be written to the third individual storage device. The hash table may also be updated accordingly (eg, update hash, update location, etc.).

因此,RAID设备中的校验数据可得以保持(例如,基于RAID设备中最新存储的数据而保持最新),其中新校验数据的部分(例如,块)可无需每当生成新校验数据时都重新写入第三单个存储设备。这会导致每当新校验数据被确定时写入RAID设备的校验数据的量减少。因此,可以实现用于存储校验数据的SSD的耗损的大幅减轻。此外,可以实现RAID设备所消耗的功率量的大幅减少。Accordingly, the parity data in the RAID device can be maintained (e.g., kept up to date based on the most recently stored data in the RAID device), wherein portions (e.g., blocks) of new parity data may not need to be checked every time new parity data is generated. Both are rewritten to the third single storage device. This results in a reduction in the amount of parity data written to the RAID device each time new parity data is determined. Therefore, a substantial reduction in the wear and tear of the SSD for storing parity data can be achieved. Furthermore, a substantial reduction in the amount of power consumed by the RAID device can be achieved.

给出上述示例仅用于示例的目的,不旨在限制。特别地,上述示例能够应用于包括多于三个单个存储设备的RAID配置。此外,上述示例能够应用于在存储设备之间镜像数据,基于条带化将数据写入存储设备,和/或两者的组合和/或其它配置的RAID配置。另外,本公开的各个示例可以指的是固态存储、固态存储设备以及SSD和/或其它类型的存储设备。本文所描述的至少一些实施例可以使用各种类型的固态技术(例如,闪存(Flash)、DRAM、相变存储器、电阻RAM、铁电RAM、纳米RAM,等等)。此外,至少一些实施例能够应用于其中一个或多个元件可以是非SSD型存储设备的多元件存储阵列。例如,通过一些实施例,RAID阵列可以由旋磁盘存储和SSD存储的组合构成。The above examples are given for illustration purposes only and are not intended to be limiting. In particular, the above example can be applied to RAID configurations comprising more than three individual storage devices. Furthermore, the above examples can be applied to RAID configurations that mirror data between storage devices, write data to storage devices based on striping, and/or a combination of both and/or other configurations. Additionally, various examples of the present disclosure may refer to solid-state storage, solid-state storage devices as well as SSDs and/or other types of storage devices. At least some embodiments described herein may use various types of solid state technologies (eg, Flash memory (Flash), DRAM, phase change memory, resistive RAM, ferroelectric RAM, nanoRAM, etc.). Additionally, at least some embodiments are applicable to multi-element storage arrays in which one or more elements may be non-SSD type storage devices. For example, with some embodiments, a RAID array may consist of a combination of spinning disk storage and SSD storage.

图1a示出了依照本公开的至少一些实施例布置的示例的系统100的框图。如图1a中能够看到的,系统100可以包括计算设备110和RAID设备120,它们经由连接130通信地耦合。在一些示例中,连接130可以是因特网连接、光学连接、LAN连接、无线连接、PCIe连接、eSATA连接、USB连接、连接、或者在计算设备110与RAID设备120之间传递数据的任何其它适合的连接。在一些示例中,RAID设备120和计算设备110可以封装在同一壳体(例如,外壳、箱体、机架,等等)中,包括集成在共同的电子设备内或者集成为共同的电子设备。在一些示例中,RAID设备120和计算设备110可以封装在分立的壳体中。Figure 1a shows a block diagram of an example system 100 arranged in accordance with at least some embodiments of the present disclosure. As can be seen in FIG. 1 a , system 100 may include computing device 110 and RAID device 120 , which are communicatively coupled via connection 130 . In some examples, connection 130 may be an Internet connection, an optical connection, a LAN connection, a wireless connection, a PCIe connection, an eSATA connection, a USB connection, connection, or any other suitable connection for transferring data between computing device 110 and RAID device 120 . In some examples, RAID device 120 and computing device 110 may be housed in the same housing (eg, housing, box, rack, etc.), including integrated within or as a common electronic device. In some examples, RAID device 120 and computing device 110 may be housed in separate enclosures.

RAID设备120可以包括RAID控制器140以及与RAID控制器140可操作地耦合的存储驱动器阵列150。一般地,存储驱动器阵列150可由被配置为充当单个逻辑存储设备的任意数量的单个存储设备构成。实际上,存储驱动器阵列150可以由至少三个单个存储驱动器构成。例如,上述的方案,存储驱动阵列包括两个数据驱动器(例如,第一单个存储设备以及第二单个存储设备)以及一个校验驱动器(例如,第三单个存储设备)。作为另一示例,存储驱动器阵列150可以由四个数据驱动器和一个校验驱动器构成。上文描述了其它多种示例的RAID配置以及将数据写入存储驱动器阵列150中的数据驱动器中的方法。可以提供任意实际数量的示例的RAID配置。因此,本公开的余下部分假设存储驱动器阵列150包括数据存储部151和校验数据存储部152。无意进一步区分在单个存储设备上数据存储部151与校验数据存储部152的位置。然而,实际上,数据存储部151可实现在多个单个存储设备(例如,如上所述的第一和第二单个存储设备)之间。类似地,校验数据存储部可以实现在一个以上的单个存储设备之间。RAID device 120 may include a RAID controller 140 and a storage drive array 150 operably coupled to RAID controller 140 . In general, storage drive array 150 may be comprised of any number of individual storage devices configured to act as a single logical storage device. In practice, storage drive array 150 may consist of at least three individual storage drives. For example, in the above solution, the storage drive array includes two data drives (for example, a first single storage device and a second single storage device) and one check drive (for example, a third single storage device). As another example, storage drive array 150 may consist of four data drives and one parity drive. Various other exemplary RAID configurations and methods of writing data to the data drives in the storage drive array 150 are described above. Any practical number of example RAID configurations may be provided. Therefore, the remainder of this disclosure assumes that storage drive array 150 includes data storage 151 and parity data storage 152 . There is no intention to further differentiate the locations of the data storage section 151 and the check data storage section 152 on a single storage device. Actually, however, the data storage section 151 may be implemented between a plurality of individual storage devices (for example, the first and second individual storage devices as described above). Similarly, parity data storage may be implemented between more than one single storage device.

一般地,RAID控制器140可被配置为提供对RAID设备120的读/写访问。如图所示,RAID控制器140可以包括数据输入/输出(I/O)模块141,其被配置为提供对存储驱动器阵列150的数据存储部151的读和/或写访问。例如,RAID控制器140可以从计算设备110接收数据,该数据将存储在RAID设备120上并且可以利用数据I/O模块141使数据存储在数据存储部151中。作为另一示例,RAID控制器140可以从计算设备110接收从RAID设备读数据的请求并且可以利用数据I/O模块141将数据提供给计算设备110。在一些示例中,数据可以是文档、图像、视频、档案文件或者一般地可以存储在存储驱动器阵列150上的任何数字文件和/或数据。例如,包括当前数据153和旧数据154的数据存储部151显示在图1a中,处于如图2a中所示和所描述接收新数据之前以及校验数据更新之前的状态。In general, RAID controller 140 may be configured to provide read/write access to RAID device 120 . As shown, RAID controller 140 may include a data input/output (I/O) module 141 configured to provide read and/or write access to data storage 151 of storage drive array 150 . For example, RAID controller 140 may receive data from computing device 110 to be stored on RAID device 120 and may utilize data I/O module 141 to cause the data to be stored in data store 151 . As another example, RAID controller 140 may receive a request from computing device 110 to read data from the RAID device and may utilize data I/O module 141 to provide the data to computing device 110 . In some examples, the data may be documents, images, videos, archive files, or generally any digital file and/or data that may be stored on storage drive array 150 . For example, a data store 151 comprising current data 153 and old data 154 is shown in Figure Ia in a state prior to receipt of new data as shown and described in Figure 2a and prior to updating of the check data.

RAID控制器140还可以包括校验数据保持(maint.)模块142。一般地,校验数据保持模块142可被配置为实现错误保护方案(例如,上述的校验方案)。更特别地,校验数据保持模块142可被配置为基于存储在数据存储部151中的数据来生成校验数据。例如,校验数据保持模块142可被配置为基于当前数据153与旧数据154之间的XOR运算来确定当前校验数据155。校验数据保持模块142还可以被配置为读校验数据(例如,当前校验数据155)和/或将校验数据(例如,当前校验数据155)写入存储驱动器阵列150的校验数据部152中。校验数据保持模块142还可被配置为在出错(例如,数据损坏、驱动器故障等等)情况下重建数据存储部151。例如,校验数据保持模块142可被配置为基于当前校验数据155与旧数据154之间的XOR运算来恢复当前数据153。类似地,校验数据保持模块142可被配置为基于当前校验数据155与当前数据153之间的XOR运算来恢复旧数据154。在示例中,数据I/O模块141和/或校验数据保持模块142可通过硬件、软件、一个或多个可执行代码区块、硬件和软件的组合等等或者它们的组合中的任一种来实现。RAID controller 140 may also include a parity data maintenance (maint.) module 142 . In general, the parity data retention module 142 may be configured to implement an error protection scheme (eg, the parity scheme described above). More specifically, the verification data holding module 142 may be configured to generate verification data based on data stored in the data storage unit 151 . For example, the check data holding module 142 may be configured to determine the current check data 155 based on an XOR operation between the current data 153 and the old data 154 . Parity data retention module 142 may also be configured to read parity data (e.g., current parity data 155) and/or write parity data (e.g., current parity data 155) to parity data of storage drive array 150 Section 152. The parity data retention module 142 may also be configured to rebuild the data store 151 in the event of an error (eg, data corruption, drive failure, etc.). For example, the parity data retention module 142 may be configured to restore the current data 153 based on an XOR operation between the current parity data 155 and the old data 154 . Similarly, the parity data retention module 142 may be configured to restore the old data 154 based on an XOR operation between the current parity data 155 and the current data 153 . In an example, the data I/O module 141 and/or the parity data holding module 142 may be implemented by hardware, software, one or more executable code blocks, a combination of hardware and software, etc., or any combination thereof. species to achieve.

作为生成当前校验数据155的部分,校验数据保持模块142可以被配置为将当前校验数据155拆分成较小的片(例如,块)。例如,图1b示出了依照本公开的至少一些实施例布置的拆分成四块156a、156b、156c和156d的当前校验数据155。校验数据保持模块142可进一步配置为生成对应于每个块156的散列(例如,等BerkeleySoftwareDistribution(BSD)checksum,Message-DigestAlgorithm2(MD2),Message-DigestAlgorithm4(MD4),Message-DigestAlgorithm5(MD5),Message-DigestAlgorithm6(MD6),等等)。例如,图1c示出了依照本公开的至少一些实施例布置的块156a、156b、156c和156d以及对应的散列值157a、157b、157c和157d。图1c进一步示出了分别对应于块156a、156b、156c和156d的指针158a、158b、158c和158d。一般地,指针158a-158d可以包括对应的块156a-156d在存储驱动器阵列150的当前校验数据存储部152内的位置(例如,地址值,等等)。例如,指针158a可以包括对应于存储在校验数据存储部152中的当前校验数据155的块156a的位置的地址值。校验数据保持模块142可被配置为将包括散列值157a-157d和指针158a-158d的数据存储在散列表143中。例如,图1a示出了散列表143。在一些示例中,类似图1a所示的,散列表143可以存储在RAID控制器140中的存储器位置上。在其它示例中,散列表143可以存储在存储驱动器阵列150中,例如,存储在数据存储部151和/或校验数据存储部152中,存储在计算设备110中,存储在分立的独立设备中,存储在不同的RAID设备和/或类似设备或其组合中。As part of generating the current parity data 155, the parity data retention module 142 may be configured to break the current parity data 155 into smaller pieces (eg, blocks). For example, FIG. 1 b shows current parity data 155 split into four blocks 156 a , 156 b , 156 c , and 156 d , arranged in accordance with at least some embodiments of the present disclosure. The check data holding module 142 can be further configured to generate a hash corresponding to each block 156 (for example, such as Berkeley Software Distribution (BSD) checksum, Message-DigestAlgorithm2 (MD2), Message-DigestAlgorithm4 (MD4), Message-DigestAlgorithm5 (MD5) , Message-DigestAlgorithm6 (MD6), etc.). For example, Figure 1c shows blocks 156a, 156b, 156c, and 156d and corresponding hash values 157a, 157b, 157c, and 157d, arranged in accordance with at least some embodiments of the present disclosure. Figure 1c further shows pointers 158a, 158b, 158c and 158d corresponding to blocks 156a, 156b, 156c and 156d, respectively. Generally, the pointers 158a-158d may include the location (eg, address value, etc.) of the corresponding block 156a-156d within the current parity data store 152 of the storage drive array 150. For example, pointer 158a may include an address value corresponding to the location of block 156a of current parity data 155 stored in parity data store 152 . Checksum data holding module 142 may be configured to store data including hash values 157a-157d and pointers 158a-158d in hash table 143. For example, FIG. 1 a shows a hash table 143 . In some examples, hash table 143 may be stored at a memory location in RAID controller 140 like that shown in FIG. 1a. In other examples, hash table 143 may be stored in storage drive array 150, for example, in data store 151 and/or parity data store 152, in computing device 110, in a separate stand-alone device , stored on different RAID devices and/or similar devices or a combination thereof.

如所述的,RAID控制器140可以从计算设备110接收新数据,该新数据将存储在RAID设备120中。因此,存储在存储驱动器阵列150的数据存储部151中的数据可能变化(例如,当从计算设备110接收到新的和/或更新后的数据时)。例如,图2a示出了依照本公开的至少一些实施例布置的图1a的系统100,其中当前数据153和新数据201存储在存储驱动器阵列150的数据存储部151中。因此,当前校验数据155可能不足以提供数据存储部151的容错。更特别地,校验数据保持模块142可能不能够基于当前校验数据155来恢复当前数据153和/或新数据201。校验数据保持模块142可配置为,响应于存储在数据存储部151中的数据的变化,更新校验数据存储部152和散列表143。As mentioned, RAID controller 140 may receive new data from computing device 110 that is to be stored in RAID device 120 . Accordingly, data stored in data storage 151 of storage drive array 150 may change (eg, as new and/or updated data is received from computing device 110 ). For example, FIG. 2a shows system 100 of FIG. 1a in which current data 153 and new data 201 are stored in data store 151 of storage drive array 150, arranged in accordance with at least some embodiments of the present disclosure. Therefore, the current parity data 155 may not be sufficient to provide fault tolerance of the data storage 151 . More specifically, parity data retention module 142 may not be able to restore current data 153 and/or new data 201 based on current parity data 155 . The verification data holding module 142 may be configured to update the verification data storage unit 152 and the hash table 143 in response to changes in the data stored in the data storage unit 151 .

一般地,校验数据保持模块142可被配置为基于当前数据153、新数据201和当前校验数据155来确定新校验数据。校验数据保持模块142还可配置为更新校验数据存储部152和散列表143以对应于如上所述的新校验数据(例如,对新校验数据去重)。例如,在一些实施例中,校验数据保持模块142可以如下确定新校验数据:可以基于当前数据153与新数据201之间的XOR运算来确定临时校验数据;可以基于当前校验数据155与所确定的临时校验数据之间的XOR运算来确定新校验数据。图2b示出了依照本公开的至少一些实施例布置的可由如上所述的校验数据保持模块142生成的新校验数据205。校验数据保持模块142还可配置为将新校验数据205拆分成块。例如,图2b还示出了拆分成块207a,207b,207c,和207d的新校验数据205。校验数据保持模块142还可配置为基于块207a-207d来确定散列。例如,图2c示出了依照本公开的至少一些实施例布置的块207a,207b,207c,和207d以及分别对应的散列值209a,209b,209c,和209d。校验数据保持模块142还可以配置为将对应于新校验数据205的散列值(例如,散列值209a-209d)与对应于当前校验数据155的散列值(例如,存储在散列表143中的散列值157a-157d)进行比较。例如,图2d示出了依照本公开的至少一些实施例布置的与散列值157a-157d进行比较的散列值209a-209d。如图所示,散列值209a可类似于散列值157d。另外,如图所示,散列值209c可类似于散列值157a。Generally, the verification data holding module 142 can be configured to determine new verification data based on the current data 153 , the new data 201 and the current verification data 155 . The verification data holding module 142 may also be configured to update the verification data storage unit 152 and the hash table 143 to correspond to the new verification data as described above (eg, to deduplicate the new verification data). For example, in some embodiments, the verification data retention module 142 can determine the new verification data as follows: the temporary verification data can be determined based on the XOR operation between the current data 153 and the new data 201; the temporary verification data can be determined based on the current verification data 155 XOR operation with the determined temporary check data to determine new check data. Figure 2b illustrates new parity data 205 that may be generated by parity data retention module 142 as described above, arranged in accordance with at least some embodiments of the present disclosure. The parity data retention module 142 may also be configured to split the new parity data 205 into blocks. For example, FIG. 2b also shows new parity data 205 split into blocks 207a, 207b, 207c, and 207d. Checksum data retention module 142 may also be configured to determine a hash based on blocks 207a-207d. For example, Figure 2c shows blocks 207a, 207b, 207c, and 207d and corresponding hash values 209a, 209b, 209c, and 209d, respectively, arranged in accordance with at least some embodiments of the present disclosure. The verification data holding module 142 may also be configured to store the hash values corresponding to the new verification data 205 (for example, hash values 209a-209d) and the hash values corresponding to the current verification data 155 (for example, in the hash The hash values 157a-157d) in the list 143 are compared. For example, Figure 2d illustrates hash values 209a-209d compared to hash values 157a-157d, arranged in accordance with at least some embodiments of the present disclosure. As shown, hash value 209a may be similar to hash value 157d. Additionally, as shown, hash value 209c may be similar to hash value 157a.

被识别为类似的散列值可表明对应的块包含相同的数据。例如,块207a和207c可以与分别对应于散列值157d和157a的块156d和156a包含相同的数据。因此,对应于新校验数据205的部分(例如,块)的当前校验数据155的部分(例如,块)无需重新写入校验数据存储部152。例如,块207a和207c无需写入校验数据存储部152,因为它们已经由分别对应于散列值157d和157a的块156d和156a表示。相反,校验数据保持模块142可配置为写入来自新校验数据205的尚未存储在校验数据存储部152中的块207a-207d中的一个或多个,例如块207b和207d,从而形成更新后的校验数据203。Hash values identified as similar may indicate that corresponding blocks contain the same data. For example, blocks 207a and 207c may contain the same data as blocks 156d and 156a corresponding to hash values 157d and 157a, respectively. Accordingly, portions (eg, blocks) of current parity data 155 corresponding to portions (eg, blocks) of new parity data 205 need not be rewritten into parity data storage 152 . For example, blocks 207a and 207c need not be written to parity data store 152 because they are already represented by blocks 156d and 156a corresponding to hash values 157d and 157a, respectively. Instead, parity data retention module 142 may be configured to write one or more of blocks 207a-207d from new parity data 205 not yet stored in parity data store 152, such as blocks 207b and 207d, thereby forming The updated verification data 203 .

除了识别作为当前校验数据155的一个或多个块156a-156d的重复的新校验数据205的块207a-207d之外,校验数据保持模块142可配置为确定新校验数据205的具有相同散列值209a-209d的块207a-207d。校验数据保持模块142可配置为写入被识别为彼此重复的两个或多个块207a-207d中的一个。例如,图2c示出了散列值209b和209d可以彼此相同。因此,块207b和207d彼此重复。因此,校验数据保持模块142可被配置为将块207b或207d写入校验数据存储部152。In addition to identifying blocks 207a-207d of new parity data 205 that are duplicates of one or more blocks 156a-156d of current parity data 155, parity data retention module 142 may be configured to determine that new parity data 205 has Blocks 207a-207d of the same hash value 209a-209d. The parity data retention module 142 may be configured to write one of two or more blocks 207a-207d that are identified as being duplicates of each other. For example, Figure 2c shows that hash values 209b and 209d may be identical to each other. Therefore, blocks 207b and 207d duplicate each other. Therefore, the parity data holding module 142 may be configured to write the block 207b or 207d into the parity data storage 152 .

校验数据保持模块142还可以配置为更新散列表143。例如,图2e示出了依照本公开的至少一些实施例布置的对应于新校验数据205的更新的散列表143。例如,图2e示出了新校验数据205的块207a-207d。此外,在散列表143中示出了散列值209a-209d。另外,散列表示出了指针158a,158d和211a。更特别地,利用图2e作为示例,来自新校验数据205的块207a和207c在更新后的校验数据203中分别由块156d和156a表示。因此,对应于块207a和207c的指针可更新以分别对应于来自块156d和156a的指针(例如,158d和158a)。由于两个块207b和207d均可由相同块(例如,207b或207d)表示在更新后的校验数据203中,所以它们的指针(例如,211a)可以相同。在一些示例中,校验数据保持模块142可以通过覆写当前校验数据155的块156a-156d中的一个或多个(例如,如果块156a-156d不是块207a-207d的重复,等等)来将新校验数据205的块207a-207d中的一个或多个写入校验数据存储部152中,而生成更新后的校验数据203。在一些示例中,校验数据保持模块142可以将块207a-207d中的一个或多个写入校验数据存储部152中的未使用空间以生成更新后校验数据203。The verification data holding module 142 can also be configured to update the hash table 143 . For example, Figure 2e illustrates an updated hash table 143 corresponding to new check data 205, arranged in accordance with at least some embodiments of the present disclosure. For example, FIG. 2e shows blocks 207a-207d of new parity data 205. FIG. Additionally, hash values 209 a - 209 d are shown in hash table 143 . Additionally, the hash table shows pointers 158a, 158d and 211a. More particularly, using FIG. 2e as an example, blocks 207a and 207c from new parity data 205 are represented in updated parity data 203 by blocks 156d and 156a, respectively. Accordingly, pointers corresponding to blocks 207a and 207c may be updated to correspond to pointers from blocks 156d and 156a, respectively (eg, 158d and 158a). Since both blocks 207b and 207d can be represented by the same block (eg, 207b or 207d) in the updated parity data 203, their pointers (eg, 211a) can be the same. In some examples, parity data retention module 142 may overwrite one or more of blocks 156a-156d of current parity data 155 (e.g., if blocks 156a-156d are not duplicates of blocks 207a-207d, etc.) One or more of the blocks 207 a - 207 d of the new verification data 205 are written into the verification data storage unit 152 to generate the updated verification data 203 . In some examples, parity data retention module 142 may write one or more of blocks 207 a - 207 d to unused space in parity data store 152 to generate updated parity data 203 .

图3示出了依照本公开的至少一些实施例布置的为RAID保持校验数据的示例方法的流程图。在说明书的一些部分中,可以参考图1a、1b、1c、2a、2b、2c、2d和/或2d中描绘的系统100的元件来描述图3以及本文其它地方所示的方法的示例性的实现方式。然而,所描述的实施例不限于该描绘。更具体地,图1a、1b、1c、2a、2b、2c、2d和/或2e中所描绘的一些元件可从此处详述的方法的一些实现中省去。此外,图1a、1b、1c、2a、2b、2c、2d和/或2e中未示出的其它元件可用于实现本文详述的示例的方法。3 illustrates a flowchart of an example method of maintaining parity data for RAID, arranged in accordance with at least some embodiments of the present disclosure. In some portions of the description, exemplary embodiments of the method shown in FIG. 3 and elsewhere herein may be described with reference to elements of system 100 depicted in FIGS. Method to realize. However, the described embodiments are not limited to this depiction. More specifically, some of the elements depicted in Figures 1a, 1b, 1c, 2a, 2b, 2c, 2d, and/or 2e may be omitted from some implementations of the methods detailed herein. Additionally, other elements not shown in Figures 1a, 1b, 1c, 2a, 2b, 2c, 2d, and/or 2e may be used to implement the methods of the examples detailed herein.

此外,图3采用了框图来说明其中详述的示例性方法。这些框图可以阐述被描述为处理步骤、功能操作、事件和/或行为等的各种功能框或动作,并且可通过硬件、软件和/或固件来执行。可以在各种实现方式中实践所详述的功能框的若干替代方案。例如,图中未示出的中间动作和/或图中未示出的附加动作可被采样和/或图中实现的一些动作可去除、修改或拆分成多个动作。在一些示例中,一个图中所示的动作可利用关于另一图所论述的技术来操作。另外,在一些示例中,这些图中所示的动作可利用并行处理技术来操作。可以在不偏离权利要求主题的范围的情况下做出上文描述的以及其它未描述的重新布置、替代、变化、修改等。Additionally, FIG. 3 employs a block diagram to illustrate the example methodology detailed therein. These block diagrams may set forth various functional blocks or actions described as processing steps, functional operations, events and/or behaviors, etc., and may be implemented by hardware, software and/or firmware. Several alternatives to the functional blocks detailed can be practiced in various implementations. For example, intermediate acts not shown in the figure and/or additional acts not shown in the figure may be sampled and/or some acts implemented in the figure may be removed, modified or split into multiple acts. In some examples, actions shown in one figure may be performed using techniques discussed with respect to another figure. Additionally, in some examples, the acts illustrated in these figures may operate using parallel processing techniques. The above-described and other non-described rearrangements, substitutions, changes, modifications, etc. may be made without departing from the scope of the claimed subject matter.

图3示出了依照本公开的各个实施例布置的为RAID设备保持校验数据的示例方法300。方法300可开始于框310“接收将数据单元写入RAID的数据存储部中的请求”,RAID控制器可以包括被配置为接收待写入RAID设备的数据的逻辑和/或特征。例如,RAID控制器140可以从计算设备110接收待写入RAID设备120的数据。一般地,在框310中,RAID控制器140可以(例如,经由连接130)从计算设备110接收数据。FIG. 3 illustrates an example method 300 of maintaining parity data for a RAID device, arranged in accordance with various embodiments of the present disclosure. Method 300 may begin at block 310 "Receive a request to write a data unit into a data store of a RAID," a RAID controller may include logic and/or features configured to receive data to be written to a RAID device. For example, RAID controller 140 may receive data from computing device 110 to be written to RAID device 120 . Generally, in block 310 RAID controller 140 may receive data from computing device 110 (eg, via connection 130 ).

处理可以从框310继续到框320“至少部分地基于数据单元与当前数据单元之间的异或(XOR)运算来确定临时数据”,RAID控制器可以包括被配置为基于数据单元与当前数据单元之间的XOR运算来确定临时数据的逻辑和/或特征。例如,RAID控制器140的校验数据保持模块142可以基于当前数据153与新数据201之间的XOR运算来确定临时数据。Processing may continue from block 310 to block 320 "determine temporary data based at least in part on an exclusive OR (XOR) operation between the data unit and the current data unit", the RAID controller may include a XOR operation between them to determine the logic and/or characteristics of the temporary data. For example, the parity data retention module 142 of the RAID controller 140 may determine the temporary data based on an XOR operation between the current data 153 and the new data 201 .

处理可以从框320继续到框330,“至少部分地基于临时数据与当前校验数据之间的XOR运算来确定新校验数据”,RAID控制器可以包括被配置为基于临时数据与当前校验数据之间的XOR运算来确定新校验数据的逻辑和/或特征。例如,RAID控制器140的校验数据保持模块142可以基于临时数据与当前校验数据155之间的XOR来确定新校验数据205。Processing may continue from block 320 to block 330, "determine new parity data based at least in part on an XOR operation between the temporary data and the current parity data", the RAID controller may include a The XOR operation between the data is used to determine the logic and/or characteristics of the new check data. For example, the parity data retention module 142 of the RAID controller 140 may determine the new parity data 205 based on an XOR between the temporary data and the current parity data 155 .

处理可以从框330继续到框340,“对新校验数据去重以判定新校验数据的任何部分是否是当前校验数据的部分的重复”,RAID控制器可以包括被配置为对新校验数据去重以判定新校验数据的部分是否是当前校验数据的部分的重复的逻辑和/或特征。例如,RAID控制器140的校验数据保持模块142可以对新校验数据205去重。一般地,在框340中,校验数据保持模块142可以将新校验数据205拆分成块207a-207d且生成每个块207a-207d的散列值209a-209d。然后,RAID控制器140的校验数据保持模块142可以将散列值209a-209d与存储在散列表143中的散列值157a-157d进行比较以判定新校验数据205的任何块207a-207d是否是块156a-156d的重复。在一些示例中,还可以处理散列值209a-209d以判定207a-207d的任何块是否是另外的207a-207d块的重复。Processing may continue from block 330 to block 340, "Deduplicate the new parity data to determine whether any portion of the new parity data is a duplicate of a portion of the current parity data", the RAID controller may include Check data deduplication to determine whether the part of the new check data is a duplicate logic and/or feature of the part of the current check data. For example, the verification data retention module 142 of the RAID controller 140 may deduplicate the new verification data 205 . Generally, in block 340, the parity data retention module 142 may split the new parity data 205 into chunks 207a-207d and generate a hash value 209a-209d for each chunk 207a-207d. The parity data retention module 142 of the RAID controller 140 may then compare the hash values 209a-209d with the hash values 157a-157d stored in the hash table 143 to determine any blocks 207a-207d of the new parity data 205 Is it a repeat of blocks 156a-156d. In some examples, the hash values 209a-209d may also be processed to determine whether any block of 207a-207d is a repeat of another block of 207a-207d.

处理可以从框340继续到框350,“将新校验数据的被判定为不是当前校验数据的部分的重复的部分写入RAID的校验存储部”,RAID控制器可以包括被配置为将新校验数据的被判定为不是当前校验数据的一个或多个部分的重复的部分写入RAID的校验数据存储部的逻辑和/或特征。例如,RAID控制器140的校验数据保持模块142可以将被判定为不是一个或多个块156a-156d的重复的一个或多个块207a-207d写入校验数据存储部152。Processing may continue from block 340 to block 350, "write the duplicate portion of the new parity data that is determined not to be part of the current parity data into the parity storage of the RAID", the RAID controller may include a The logic and/or features of writing the portion of the new parity data that is determined not to be a duplicate of one or more portions of the current parity data into the parity data storage of the RAID. For example, the parity data retention module 142 of the RAID controller 140 may write the one or more blocks 207a-207d determined not to be duplicates of the one or more blocks 156a-156d into the parity data storage unit 152.

另外,在框340和/或框350中,RAID控制器可以包括被配置为部分地基于框340的去重来更新散列表的逻辑和/或特征。例如,校验数据保持模块142可以基于对新校验数据205去重来更新散列表143。Additionally, in block 340 and/or block 350 , the RAID controller may include logic and/or features configured to update the hash table based in part on the deduplication of block 340 . For example, the parity data retention module 142 may update the hash table 143 based on deduplication of the new parity data 205 .

在一个实施例中,关于图3以及本文其它地方所描述的方法可实现为能够在任何适合的计算系统上执行的计算机程序产品,或类似物。可以彩照图4以及本文其它地方来描述示例的计算机程序产品。In one embodiment, the methods described with respect to FIG. 3 and elsewhere herein may be implemented as a computer program product executable on any suitable computing system, or the like. An exemplary computer program product may be depicted in FIG. 4 in color, as well as elsewhere herein.

图4示出了依照本公开的至少一些实施例布置的示例的计算机程序产品400。计算机程序产品400可以包括其中存储有指令的机器可读非暂态介质,响应于执行(例如,通过处理器),指令使RAID控制器模块将校验数据保持在RAID中,如本文所论述的。计算机程序产品400可以包括信号承载介质402。信号承载介质402可以包括一个以上的机器可读指令404,响应于由一个或多个处理器执行,所述机器可读指令可以可操作地使计算设备能够提供本文所描述的特征。在各个示例中,本文所论述的设备可使用一些或全部机器可读指令。FIG. 4 illustrates an example computer program product 400 arranged in accordance with at least some embodiments of the present disclosure. Computer program product 400 may include a machine-readable, non-transitory medium having instructions stored therein that, in response to execution (e.g., by a processor), cause the RAID controller module to maintain parity data in the RAID, as discussed herein . Computer program product 400 may include signal bearing medium 402 . Signal-bearing medium 402 may include one or more machine-readable instructions 404 that, in response to being executed by one or more processors, may be operable to enable a computing device to provide the features described herein. In various examples, some or all of the machine-readable instructions may be used by an apparatus as discussed herein.

在一些示例中,机器可读指令404可以包括检测将数据单元写入RAID的数据存储部的请求,RAID具有存储在数据存储部中的当前数据单元并且具有存储在RAID的校验数据存储部中的当前校验数据。在一些示例中,机器可读指令404可以包括:响应于写入数据单元的请求,至少部分地基于数据单元与当前数据单元之间的异或(XOR)运算来确定临时数据。在一些示例中,机器可读指令404可以包括至少部分地基于临时数据与当前校验数据之间的XOR运算来确定新校验数据。在一些示例中,机器可读指令404可以包括对新校验数据去重以判定新校验数据的任何部分是否是当前校验数据的部分的重复。在一些示例中,机器可读指令404可以包括将新校验数据的被判定为不是当前校验数据的部分的重复的部分写入RAID的校验数据存储部。In some examples, the machine-readable instructions 404 may include detecting a request to write a data unit to a data store of a RAID having the current data unit stored in the data store and having a parity data store stored in the RAID's parity data store. The current checksum data. In some examples, machine-readable instructions 404 may include determining temporary data based at least in part on an exclusive OR (XOR) operation between the data unit and the current data unit in response to a request to write the data unit. In some examples, machine readable instructions 404 may include determining new parity data based at least in part on an XOR operation between the temporary data and the current parity data. In some examples, the machine-readable instructions 404 may include deduplicating the new parity data to determine whether any portion of the new parity data is a duplication of part of the current parity data. In some examples, the machine-readable instructions 404 may include writing a portion of the new parity data that is determined not to be a duplicate of a portion of the current parity data into the parity data store of the RAID.

在一些实现方式中,信号承载介质402可以包含计算机可读介质406,诸如但不限于硬盘驱动器、压缩盘(CD)、数字多功能盘(DVD)、数字带、存储器等。在一些实施方式中,信号承载介质402可以包含可记录介质608,诸如但不限于存储器、读/写(R/W)CD、R/WDVD等。在一些实施方式中,信号承载介质402可以包含通信介质410,诸如但不限于数字和/或模拟通信介质(例如,光纤电缆、波导、有线通信链路、无线通信链路等)。在一些示例中,信号承载介质402可以涵盖机器可读非暂态介质。In some implementations, signal bearing media 402 may comprise computer-readable media 406 such as, but not limited to, a hard drive, compact disc (CD), digital versatile disc (DVD), digital tape, memory, and the like. In some implementations, signal bearing media 402 may include recordable media 608 such as, but not limited to, memory, read/write (R/W) CDs, R/W DVDs, and the like. In some implementations, signal bearing media 402 may include communication media 410 such as, but not limited to, digital and/or analog communication media (eg, fiber optic cables, waveguides, wired communication links, wireless communication links, etc.). In some examples, signal bearing media 402 may comprise machine-readable non-transitory media.

一般地,结合图3以及本文其它地方所描述的方法可实现在任何适合的服务器和/或计算系统和/或其它电子设备中。结合图5以及本文其它地方描述了示例的系统。在一些示例中,如本文论述的RAID设备或其它系统可被配置成为RAID保持校验数据。In general, the methods described in connection with FIG. 3 and elsewhere herein may be implemented in any suitable server and/or computing system and/or other electronic device. An example system is described in connection with FIG. 5 and elsewhere herein. In some examples, a RAID device or other system as discussed herein may be configured to maintain parity data for the RAID.

图5是示出依照本公开的至少一些实施例布置的示例的计算设备700的框图。在各个示例中,计算设备500可以被配置成为RAID保持校验数据,如本文所论述的。在基本配置501的一个示例中,计算设备500可以包括一个以上的处理器510以及系统存储器520。存储器总线530能够用于一个或多个处理器510与系统存储器520之间通信。5 is a block diagram illustrating an example computing device 700 arranged in accordance with at least some embodiments of the present disclosure. In various examples, computing device 500 may be configured to maintain parity data for RAID, as discussed herein. In one example of basic configuration 501 , computing device 500 may include more than one processor 510 and system memory 520 . A memory bus 530 can be used for communication between the one or more processors 510 and the system memory 520 .

根据所需的配置,一个或多个处理器510可以是任意类型,包括但不限于微处理器(μP)、微控制器(μC)、数字信号处理器(DSP)或其任意组合。一个或多个处理器510可以包括诸如级别1高速缓冲器511和级别2高速缓冲器512的一级或多级高速缓冲器、处理器核513等和寄存器514。处理器核513可以包括算术逻辑单元(ALU)、浮点单元(FPU)、数字信号处理核(DSPCore)或其任意组合。存储器控制器515还能够与一个或多个处理器510一起使用,或者在一些实现中,存储器控制器515可以是处理器510的内部部件。Depending on the desired configuration, one or more processors 510 may be of any type including, but not limited to, microprocessors (μP), microcontrollers (μC), digital signal processors (DSP), or any combination thereof. One or more processors 510 may include one or more levels of cache such as level 1 cache 511 and level 2 cache 512 , processor core 513 , etc., and registers 514 . The processor core 513 may include an arithmetic logic unit (ALU), a floating point unit (FPU), a digital signal processing core (DSPCore), or any combination thereof. Memory controller 515 can also be used with one or more processors 510 , or in some implementations, memory controller 515 may be an internal component of processor 510 .

根据所需的配置,系统存储器520可以是任意类型,包括但不限于易失性存储器(诸如RAM)、非易失性存储器(诸如ROM、闪速存储器等)或其任意组合。系统存储器520可以包括操作系统521、一个或多个应用522以及程序数据524。一个或多个应用522可以包括校验数据保持应用523,其可布置成执行如本文所描述的功能、动作和/或操作,包括参考如本文的图1-4所描述的功能框、动作和/或操作中的任一个。程序数据524可以包括与校验数据保持应用523一起使用的校验和/或散列数据525。在一些示例性的实施例中,一个或多个应用522可以布置成在操作系统521上操作程序数据524。该所描述的基本配置501通过内虚线框内的那些组件图示于图5中。Depending on the desired configuration, system memory 520 may be of any type including, but not limited to, volatile memory (such as RAM), non-volatile memory (such as ROM, flash memory, etc.), or any combination thereof. System memory 520 may include an operating system 521 , one or more applications 522 , and program data 524 . The one or more applications 522 may include a parity data retention application 523, which may be arranged to perform functions, actions, and/or operations as described herein, including the functional blocks, actions, and operations as described with reference to FIGS. 1-4 herein. / or any of the operations. Program data 524 may include checksum and/or hash data 525 for use with checksum data holding application 523 . In some exemplary embodiments, one or more applications 522 may be arranged to operate on program data 524 on operating system 521 . This depicted basic configuration 501 is illustrated in Figure 5 by those components within the inner dashed box.

计算设备500可具有附加的特征或功能以及附加的接口以便于基本配置501与任何所需的设备和接口之间的通信。例如,总线/接口控制器540可用于利于基本配置501与一个或多个数据存储设备550之间经由存储接口总线541的通信。一个或多个数据存储设备550可以是可移除存储设备551、非可移除存储设备552或者其组合。可移除存储设备和非可移除存储设备的示例包括诸如软盘驱动器和硬盘驱动器(HDD)的磁盘设备、诸如压缩盘(CD)驱动器或数字多功能盘(DVD)驱动器的光盘驱动器、固态驱动器(SSD)和磁带驱动器,仅列举了几个。示例的计算机存储介质可以包括以用于诸如计算机可读指令、数据结构、程序模块或其它数据的信息的存储的任何方法或技术实现的易失性和非易失性的介质以及可移除和非可移除的介质。Computing device 500 may have additional features or functionality and additional interfaces to facilitate communication between basic configuration 501 and any desired devices and interfaces. For example, bus/interface controller 540 may be used to facilitate communication between base configuration 501 and one or more data storage devices 550 via storage interface bus 541 . One or more data storage devices 550 may be removable storage devices 551, non-removable storage devices 552, or a combination thereof. Examples of removable and non-removable storage devices include magnetic disk devices such as floppy disk drives and hard disk drives (HDD), optical disk drives such as compact disk (CD) drives or digital versatile disk (DVD) drives, solid state drives (SSD) and tape drives, just to name a few. Exemplary computer storage media may include volatile and nonvolatile media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules, or other data, as well as removable and Non-removable media.

系统存储器520、可移除存储设备551和非可移除存储设备552是计算机存储介质的示例。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪速存储器或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光学存储设备、磁盒、磁带、磁盘存储设备或其它磁存储设备、或者可用于存储所需信息并且可由计算设备500访问的任何其它介质。任意这样的计算机存储介质可以是计算设备500的部件。System memory 520, removable storage 551 and non-removable storage 552 are examples of computer storage media. Computer storage media including, but not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disk (DVD) or other optical storage device, magnetic cartridge, tape, magnetic disk storage device or other magnetic storage device, or any other medium that can be used to store the desired information and that can be accessed by computing device 500 . Any such computer storage media may be part of computing device 500 .

计算设备500还可以包括接口总线542,该接口总线用于方便从各接口设备(例如,输出设备、外围设备接口和通信设备)经由总线/接口控制器540到基本配置501的通信。示例的输出设备560包括图形处理单元561和音频处理单元562,其可配置为经由一个或多个A/V端口563与诸如显示器或扬声器的各外部设备通信。示例的外围设备接口570可以包括串行接口控制器571或并行接口控制器572,其可配置为经由一个或多个I/O端口573与诸如输入设备(例如,键盘、鼠标、笔、语音输入设备、触摸输入设备等)或其它外围设备(例如,打印机、扫描仪等)的外部设备通信。示例的通信接口580包括网络控制器581,其可布置成实现经由一个或多个通信端口582通过网络通信与一个或多个计算设备583的通信。通信连接可以是通信介质的一个示例。通信介质通常可通过计算机可读指令、数据结构、程序模块或诸如载波或其它传输机制的调制数据信号中的其它数据来具体化,并且可以包括任何信息输送介质。“调制数据信号”可以是使得其特性中的一个或多个以将信号中的信息编码的方式设定或改变的信号。通过举例而不是限制的方式,通信介质可以包括诸如有线网络或直接线连接的有线介质,以及诸如声波、射频(RF)、红外(IR)和其它无线介质的无线介质。如本文所使用的术语计算机可读介质可以包括存储介质和通信介质两者。Computing device 500 may also include interface bus 542 for facilitating communication from various interface devices (eg, output devices, peripheral device interfaces, and communication devices) to base configuration 501 via bus/interface controller 540 . Exemplary output devices 560 include a graphics processing unit 561 and an audio processing unit 562 , which may be configured to communicate with various external devices such as a display or speakers via one or more A/V ports 563 . Exemplary peripherals interface 570 may include a serial interface controller 571 or a parallel interface controller 572, which may be configured to interface with input devices such as (e.g., keyboard, mouse, pen, voice input, etc.) via one or more I/O ports 573. devices, touch input devices, etc.) or other peripherals (eg, printers, scanners, etc.) An example communication interface 580 includes a network controller 581 , which may be arranged to enable communication with one or more computing devices 583 via network communication via one or more communication ports 582 . A communication connection may be one example of a communication medium. Communication media typically can embody computer readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and can include any information delivery media. A "modulated data signal" may be a signal such that one or more of its characteristics are set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media may include wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, radio frequency (RF), infrared (IR) and other wireless media. The term computer readable media as used herein may include both storage media and communication media.

计算设备500可实现为诸如蜂窝电话、移动电话、平板设备、膝上型计算机、个人数据助理(PDA)、个人媒体播放器设备、无线网页监视设备(wirelessweb-watchdevice)、个人头戴送受话器设备、专用设备或包括上述功能中的任一种的混合设备的小形状因数的便携式(或移动)电子设备的一部分。计算设备500还可实现为包括膝上型计算机和非膝上型计算机配置两者的个人计算机。另外,计算设备500可实现为无线基站或其它无线系统或设备的部分。Computing device 500 may be implemented as a cellular phone, mobile phone, tablet device, laptop computer, personal data assistant (PDA), personal media player device, wireless web-watch device (wireless web-watch device), personal headset device, etc. Part of a small form factor portable (or mobile) electronic device, a dedicated device, or a hybrid device that includes any of the above functions. Computing device 500 may also be implemented as a personal computer including both laptop and non-laptop configurations. Additionally, computing device 500 may be implemented as part of a wireless base station or other wireless system or device.

前面的详细描述的一些部分根据对存储在诸如计算机存储器的计算系统存储器内的数据位或二进制数字信号的操作的算法或符号表示来呈现。这些算法描述或表示是数据处理领域的普通技术人员所使用来向本领域其它技术人员传达他们工作实质的技术的示例。算法在此处且一般地视为得到期望结果的操作或类似处理的独立序列。在该背景下,操作或处理涉及到物理量的物理操纵。典型地,虽然不是必要的,但是这些量可以呈现为能够被存储、传输、组合、比较或进行其它操纵的电信号或磁信号的形式。已经证实,在有时便利的情况下,主要是为了共同使用的原因,将这些信号称为位、数据、值、元件、负荷、字符、项、数字、数值等。然而,应当理解,所有这些术语和类似术语应与适当的物理量相关联且仅为方便的标记。除非具体指出,否则如从下面的论述中显而易见的是,意识到在该说明书通篇论述中使用诸如“处理”、“计算”、“运算”、“判定”等术语是指计算设备的操纵或变换表示为存储器、寄存器或其它信息存储设备、传输设备或计算设备的显示设备内的物理电子量或磁量的数据的动作或过程。Some portions of the foregoing detailed description have been presented in terms of algorithms or symbolic representations of operations on data bits or binary digital signals stored within a computing system memory, such as computer memory. These algorithmic descriptions or representations are examples of techniques used by those skilled in the data processing arts to convey the substance of their work to others skilled in the art. An algorithm is here, and generally, considered to be a self-contained sequence of operations or similar processes leading to a desired result. In this context, operations or processing involve physical manipulation of physical quantities. Typically, though not necessarily, these quantities may take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, or otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, data, values, elements, loads, characters, terms, numbers, values, or the like. It should be understood, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely labels of convenience. Unless specifically stated otherwise, as will be apparent from the following discussion, it is recognized that the use of terms such as "processing," "computing," "operating," "determining," etc. throughout this specification refers to the manipulation or manipulation of a computing device. The act or process of transforming data represented as physical electronic or magnetic quantities within a memory, register, or other information storage device, transmission device, or display device of a computing device.

权利要求主题的范围不限于本文描述的特定实现方式。例如,一些实现方式可以是通过硬件,诸如用于操作于例如设备或设备组合上,而其它实现方式可以是通过软件和/或固件。同样,虽然权利要求主题在范围上不限于这方面,这些实现方式可以包括一个或多个物品,诸如信号承载介质、存储介质和/或存储媒介。诸如例如CD-ROM、计算机磁盘、闪速存储器等这种存储介质中可以存储有指令,当由诸如例如计算系统、计算平台或其它系统的计算设备执行时,所述指令可以实现根据权利要求主题的处理器的执行,诸如例如前述的实现方式之一。作为一种可能性,计算设备可以包括一个或多个处理单元或处理器、一个或多个输入/输出设备,诸如显示器,键盘和/或鼠标,以及一个或多个存储器,诸如静态随机存取存储器、动态随机存取存储器、闪速存储器和/或硬盘驱动器。The scope of the claimed subject matter is not limited to the specific implementations described herein. For example, some implementations may be by hardware, such as for operation on eg a device or combination of devices, while other implementations may be by software and/or firmware. Also, although claimed subject matter is not limited in scope in this respect, implementations may include one or more items, such as signal bearing media, storage media, and/or storage media. A storage medium such as, for example, a CD-ROM, a computer disk, flash memory, etc. may have stored thereon instructions which, when executed by a computing device such as, for example, a computing system, computing platform or other system, may implement the claimed subject matter. Execution of a processor, such as, for example, one of the aforementioned implementations. As one possibility, a computing device may include one or more processing units or processors, one or more input/output devices, such as a display, keyboard and/or mouse, and one or more memories, such as static random access memory, DRAM, flash memory, and/or hard drives.

在系统方案的硬件实现和软件实现之间保留了极小的区别;硬件或软件的使用通常是(但并不总是,因为在一些背景下硬件和软件之间的选择会变得重要)表示成本相对于效率权衡的设计选择。存在各种可以实现(例如,硬件、软件和/或固件)本文所描述的过程和/或系统和/或其它技术的媒介物,并且优选的媒介物将随着部署过程和/或系统和/或其它技术的背景而变化。例如,如果实施者判定速度和精度重要,则实施者可以选择主硬件和/或固件媒介物;如果灵活性重要,则实施者可以选择主软件实现;或者,另外可选地,实施者可以选择硬件、软件和/或固件的某种组合。Minimal distinction is reserved between hardware and software implementations of system schemes; the use of hardware or software is usually (but not always, since in some contexts the choice between hardware and software can become important) denote Design choices for cost versus efficiency trade-offs. There are various vehicles that can implement (e.g., hardware, software, and/or firmware) the processes and/or systems described herein and/or other technologies, and preferred vehicles will be deployed as the process and/or system and/or or other technical backgrounds. For example, if the implementer decides that speed and precision are important, the implementer may select a primarily hardware and/or firmware medium; if flexibility is important, the implementer may select a primarily software implementation; or, alternatively, the implementer may select Some combination of hardware, software and/or firmware.

前面的详细说明已经通过框图、流程图和/或示例阐述了设备和/或过程的各个实施例。在这些框图、流程图和/或示例包含一项或多项功能和/或操作的程度上,本领域技术人员将理解的是可以通过各种各样的硬件、软件、固件或几乎其任意组合来单独地和/或统一地实现这些框图、流程图或示例内的各项功能和/或操作。在一个实施例中,本文所描述的主题的多个部分可经由专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)或其它集成格式来实现。然而,本领域技术人员将理解的是,在本文公开的实施例的一些方案可以整体地或部分地等同地实现为集成电路、在一个或多个计算机上运行的一个或多个计算机程序(例如,实现为在一个或多个计算机系统上运行的一个或多个程序)、在一个或多个处理器上运行的一个或多个程序(例如,实现为在一个或多个微处理器上运行的一个或多个程序)、固件、或几乎任何组合,并且根据本公开的内容,设计电路和/或编写用于软件和/或固件的代码将在本领域技术人员的技能范围内。另外,本领域技术人员将理解的是,本文所描述的主题的机制能够以各种形式分布为程序产品,并且本文所描述的主题的示例性实施例适用,无论实际上用于实施分布的特定类型的信号承载介质如何。信号承载介质的示例包括但不限于以下:可记录型介质,诸如软盘、硬盘驱动器(HDD)、压缩盘(CD)、数字多功能盘(DVD)、数字带、计算机存储器等;以及传输型介质,诸如数字和/或模拟通信介质(例如,光纤电缆、波导、有线通信链路、无线通信链路等)。The foregoing detailed description has set forth various embodiments of devices and/or processes by way of block diagrams, flowcharts, and/or examples. To the extent such block diagrams, flowcharts, and/or examples include one or more functions and/or operations, those skilled in the art will appreciate that various hardware, software, firmware, or almost any combination thereof Each function and/or operation in these block diagrams, flowcharts or examples can be implemented individually and/or collectively. In one embodiment, various portions of the subject matter described herein may be implemented via Application Specific Integrated Circuits (ASICs), Field Programmable Gate Arrays (FPGAs), digital signal processors (DSPs), or other integrated formats. However, those skilled in the art will understand that some solutions of the embodiments disclosed herein may be equivalently implemented in whole or in part as integrated circuits, one or more computer programs running on one or more computers (such as , implemented as one or more programs running on one or more computer systems), one or more programs running on one or more processors (e.g., implemented as one or more programs for the software and/or firmware), firmware, or virtually any combination, and in light of the present disclosure, designing circuits and/or writing code for the software and/or firmware will be within the skill of those skilled in the art. In addition, those skilled in the art will understand that the mechanisms of the subject matter described herein can be distributed as a program product in various forms, and that the exemplary embodiments of the subject matter described herein apply regardless of the particular How about the type of signal-carrying medium. Examples of signal bearing media include, but are not limited to, the following: recordable-type media such as floppy disks, hard disk drives (HDD), compact discs (CDs), digital versatile discs (DVDs), digital tapes, computer memory, etc.; and transmission-type media , such as digital and/or analog communication media (eg, fiber optic cables, waveguides, wired communication links, wireless communication links, etc.).

本领域技术人员将理解的是,在本领域内常见的是以本文阐述的方式来描述设备和/或过程,此后利用工程实践将这些所描述的设备和/或过程集成到数据处理系统中。也即,本文所描述的设备和/或过程的至少一部分可以通过合理量的实验集成到数据处理系统中。本领域技术人员将理解的是,典型的数据处理系统通常包括如下中的一种或多种:系统单元壳体、视频显示设备、诸如易失性和非易失性存储器的存储器、诸如微处理器和数字信号处理器的处理器、诸如操作系统的计算实体、驱动器、图形用户接口、和应用程序、诸如触摸板或触摸屏的一个或多个交互设备、和/或包括反馈环和控制电动机(例如,用于感测位置和/或速度的反馈;用于移动和/或调整组件和/或量的控制电动机)的控制系统。典型的数据处理系统可利用任何适合的商业上提供的组件来实现,诸如在数据计算/通信和/或网络计算/通信系统中常见的部件。Those skilled in the art will appreciate that it is common in the art to describe devices and/or processes in the manner set forth herein and thereafter employ engineering practices to integrate such described devices and/or processes into data processing systems. That is, at least a portion of the devices and/or processes described herein can be integrated into a data processing system with a reasonable amount of experimentation. Those skilled in the art will appreciate that a typical data processing system typically includes one or more of the following: a system unit housing, a video display device, memory such as volatile and nonvolatile memory, memory such as a microprocessor processors and digital signal processors, computing entities such as operating systems, drivers, graphical user interfaces, and applications, one or more interactive devices such as touchpads or touchscreens, and/or include feedback loops and control motors ( For example, feedback for sensing position and/or velocity; control electric motors for moving and/or adjusting components and/or quantities). A typical data processing system may be implemented utilizing any suitable commercially available components, such as those commonly found in data computing/communication and/or network computing/communication systems.

本文所描述的主题有时说明了包含在不同的其它组件内的不同部件或与不同的其它部件连接的不同部件。应理解的是,这些所描绘的体系结构仅是示例性的,并且实际上可以实施实现相同功能的许多其它体系结构。在概念意义上,实现相同功能的任何部件的布置有效地“关联”,使得实现期望功能。因此,在此处组合以实现特定功能的任何两个部件可视为彼此“关联”,使得实现期望功能,无论体系结构或中间部件如何。同样,任意两个如此关联的部件还可视为彼此“可操作地连接”、或“可操作地耦合”以实现期望的功能,并且能够如此关联的任意两个部件还可视为彼此“能够可操作地耦合”以实现期望功能。能够可操作耦合的具体示例包括但不限于能够物理上连接和/或物理交互的部件和/或能够无线交互和/或无线交互的部件和/或逻辑上交互和/或能够逻辑上交互的部件。The herein described subject matter sometimes illustrates different components contained within, or connected with, different other components. It is to be understood that these depicted architectures are exemplary only, and that in fact many other architectures can be implemented which achieve the same functionality. In a conceptual sense, any arrangement of components to achieve the same functionality is effectively "associated" such that the desired functionality is achieved. Hence, any two components herein combined to achieve a particular functionality can be seen as "associated with" each other such that the desired functionality is achieved, irrespective of architectures or intermedial components. Likewise, any two components so associated may also be considered to be "operably connected" or "operably coupled" to each other to achieve a desired function, and any two components capable of being so associated may also be considered to be "capable of Operably coupled" to achieve the desired function. Specific examples of operable coupling include, but are not limited to, physically connectable and/or physically interactable components and/or wirelessly interactable and/or wirelessly interactable components and/or logically interactable and/or logically interactable components .

关于本文中基本上任何复数和/或单数术语的使用,本领域技术人员能够根据上下文和/或应用适当地从复数变换成单数和/或从单数变换成复数。为了清晰的目的,本文中明确地阐明了各单数/复数的置换。With respect to the use of substantially any plural and/or singular term herein, those skilled in the art will be able to convert from the plural to the singular and/or from the singular to the plural as appropriate depending on the context and/or application. For purposes of clarity, each singular/plural permutation is explicitly set forth herein.

本领域技术人员将理解,一般地,本文所使用的术语,尤其是随附权利要求(例如,随附权利要求的主体)中所使用的术语,通常意在为“开放式”术语(例如,术语“包括”应当解释为“包括但不限于”,术语“具有”应解释为“至少具有”,术语“包括”应解释为“包括但不限于”,等等)。本领域技术人员还理解,如果意图表达引导性权利要求记述项的具体数量,该意图将明确地记述在权利要求中,并且在不存在这种记述的情况下,不存在这样的意图。例如,为辅助理解,下面的随附权利要求可能包含了引导性短语“至少一个”和“一个或多个”的使用以引导权利要求记述项。然而,这种短语的使用不应解释为暗指不定冠词“一”或“一个”引导权利要求记述项将包含该所引导的权利要求记述项的任何特定权利要求局限于仅包含一个该记述项的实施例,即使当同一权利要求包括了引导性短语“一个或多个”或“至少一个”以及诸如“一”或“一个”的不定冠词(例如,“一”和/或“一个”应当解释为表示“至少一个”或“一个或多个”);这同样适用于对于用于引导权利要求记述项的定冠词的使用。另外,即使明确地记述了被引导的权利要求记述项的具体数量,本领域技术人员将理解到这些记述项应当解释为至少表示所记述的数量(例如,没有其它修饰语的裸记述“两个记述项”表示至少两个记述项或两个以上的记述项)。此外,在使用类似于“A、B和C等中的至少一个”的惯用法的那些实例中,通常这样的构造旨在表达本领域技术人员理解该惯用法的含义(例如,“具有A、B和C中的至少一个的系统”将包括但不限于仅具有A、仅具有B、仅具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B和C等等的系统)。在使用类似于“A、B或C等中的至少一个”的惯用法的那些实例中,通常这样的构造旨在表达本领域技术人员理解该惯用法的含义(例如,“具有A、B或C中的至少一个的系统”将包括但不限于仅具有A、仅具有B、仅具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B和C等等的系统)。本领域技术人员将进一步理解,呈现两个以上可选项的几乎任何分离词和/或短语,无论是在说明书、权利要求或附图中,都应理解为设想包括一项、任一项或两项的可能性。例如,术语“A或B”将理解为包括“A”或“B”或“A和B”的可能性。Those skilled in the art will appreciate that terms used herein in general, and especially in the appended claims (e.g., the body of the appended claims), are generally intended to be "open-ended" terms (e.g., The term "comprising" shall be interpreted as "including but not limited to", the term "having" shall be interpreted as "having at least", the term "including" shall be interpreted as "including but not limited to", etc.). It will also be understood by those within the art that if a specific number of an introductory claim recitation is intended, that intent will be explicitly recited in the claim, and in the absence of such recitation no such intent is present. For example, as an aid to understanding, the following appended claims may contain usage of the introductory phrases "at least one" and "one or more" to introduce claim recitations. However, use of this phrase should not be construed to imply that the indefinite article "a" or "an" introduces a claim recitation to limiting any particular claim containing the introduced claim recitation to containing only one of that recitation. even when the same claim includes the introductory phrase "one or more" or "at least one" and an indefinite article such as "a" or "an" (e.g., "a" and/or "a " should be construed to mean "at least one" or "one or more"); the same applies to the use of definite articles used to introduce claim recitations. In addition, even if the specific number of the introduced claim recitation items is explicitly recited, those skilled in the art will understand that these recitation items should be interpreted as at least indicating the recited number (for example, the bare recitation "two" without other modifiers A description item" means at least two description items or more than two description items). Furthermore, in those instances where a idiom similar to "at least one of A, B, and C, etc." is used, generally such constructions are intended to convey what those skilled in the art understand the idiom to mean (e.g., "has A, A system of at least one of B and C" will include, but is not limited to, having only A, only B, only C, having A and B, having A and C, having B and C, and/or having A, B, and C and other systems). In those instances where a idiom similar to "at least one of A, B, or C, etc." is used, generally such constructions are intended to convey the meaning that those skilled in the art understand the idiom (e.g., "having A, B, or A system of at least one of C" would include, but is not limited to, having only A, only B, only C, having A and B, having A and C, having B and C, and/or having A, B and C, etc. etc. system). Those skilled in the art will further appreciate that virtually any discrete word and/or phrase presenting two or more alternatives, whether in the specification, claims, or drawings, is to be understood as contemplated to include either, either, or both. item possibility. For example, the term "A or B" will be understood to include the possibilities of "A" or "B" or "A and B."

在说明书中提到“实现方式”、“一个实现方式”、“一些实现方式”或“其它实现方式”可以是指结合一个或多个实现方式描述的特定的特征、结构或特性可以包含在至少一些实现方式中,但是不一定是全部的实现方式。在前面的说明书中各处出现的“实现方式”、“一个实现方式”或“一些实现方式”不一定都指的是同一实现方式。Reference in the specification to "an implementation," "an implementation," "some implementations," or "other implementations" may mean that a particular feature, structure, or characteristic described in connection with one or more implementations may be included in at least In some implementations, but not necessarily all implementations. Appearances of "an implementation," "an implementation," or "some implementations" in various places in the preceding specification are not necessarily all referring to the same implementation.

虽然本文中利用各种方法和系统描述和显示了一些示例的技术,但是本领域技术人员应当理解,可以做出其它各种修改,可以替代等同特征,而不偏离权利要求主题。另外,可以做出许多修改来使特定情形适应权利要求的教导,而不偏离本文所描述的中心构思。因此,目的是权利要求主题不限于所公开的特定示例,而是这些权利要求主题还可以包括落在随附权利要求及其等同布置的范围内的全部实现方式。While some example techniques have been described and shown herein using various methods and systems, it will be understood by those skilled in the art that various other modifications may be made and equivalent features may be substituted without departing from claimed subject matter. Additionally, many modifications may be made to adapt a particular situation to the teachings of the claims without departing from the central concept described herein. Therefore, it is intended that claimed subject matter not be limited to the particular examples disclosed, but that claimed subject matter may also include all implementations falling within the scope of appended claims and their equivalents.

Claims (28)

1.一种将校验数据保持在独立磁盘冗余阵列(RAID)中的方法,所述方法包括:1. A method that parity data is kept in a redundant array of independent disks (RAID), said method comprising: 在RAID控制模块处,接收将数据单元写入所述RAID中的请求,其中所述RAID具有与当前数据单元相关联的数据存储部,并且所述RAID具有与当前校验数据相关联的校验数据存储部;At the RAID control module, a request to write a data unit into the RAID is received, wherein the RAID has a data store associated with the current data unit, and the RAID has a parity associated with the current parity data data storage department; 响应于将所述数据单元写入所述RAID的所述请求:In response to the request to write the data unit to the RAID: 至少部分地基于所述数据单元与所述当前数据单元之间的第一异或(XOR)运算来确定临时数据;determining interim data based at least in part on a first exclusive OR (XOR) operation between the data unit and the current data unit; 至少部分地基于所述临时数据与所述当前校验数据之间的第二XOR运算来确定新校验数据;以及determining new parity data based at least in part on a second XOR operation between the temporary data and the current parity data; and 对所述新校验数据去重以判定所述新校验数据的任意部分是否是所述当前校验数据的部分的重复。Deduplicating the new check data to determine whether any part of the new check data is a repetition of a part of the current check data. 2.如权利要求1所述的方法,进一步包括:将所述新校验数据的被判定为非重复的部分写入所述RAID的所述校验数据存储部。2. The method according to claim 1, further comprising: writing the portion of the new parity data determined to be non-repetitive into the parity data storage part of the RAID. 3.如权利要求1所述的方法,进一步包括:在对所述新校验数据进行去重之前,将所述新校验数据分块。3. The method according to claim 1, further comprising: before deduplicating the new verification data, dividing the new verification data into blocks. 4.如权利要求3所述的方法,其中所述RAID的数据存储部中的数据被组织成页,所述新校验数据具有基本类似于其中一个所述页的第一尺寸,并且其中将所述新校验数据分块包括将所述新校验数据拆分成一个或多个块,其中每块具有小于或等于所述第一尺寸的第二尺寸。4. The method of claim 3, wherein the data in the data storage portion of the RAID is organized into pages, the new parity data has a first size substantially similar to one of the pages, and wherein the The chunking of the new parity data includes splitting the new parity data into one or more blocks, wherein each block has a second size smaller than or equal to the first size. 5.如权利要求4所述的方法,其中将所述新校验数据拆分成一个或多个块包括拆分所述新校验数据而使得所述第二尺寸是4千字节。5. The method of claim 4, wherein splitting the new parity data into one or more chunks includes splitting the new parity data such that the second size is 4 kilobytes. 6.如权利要求1所述的方法,其中将所述新校验数据去重包括:6. The method of claim 1, wherein deduplicating the new verification data comprises: 确定对应于所述新校验数据的第一散列值;determining a first hash value corresponding to the new check data; 将所述第一散列值与第二散列值进行比较,其中所述第二散列值对应于所述当前校验数据;以及comparing the first hash value with a second hash value, wherein the second hash value corresponds to the current check data; and 基于所述比较来识别作为所述当前校验数据的部分的重复的所述新校验数据的部分。A portion of the new parity data that is a duplicate of a portion of the current parity data is identified based on the comparison. 7.如权利要求3所述的方法,其中将所述新校验数据去重包括:7. The method according to claim 3, wherein deduplicating the new verification data comprises: 对于所述新校验数据的每块:For each block of the new parity data: 确定对应于所述块的第一散列值;determining a first hash value corresponding to the block; 将第一散列值与存储在散列表中的第二散列值进行比较,其中存储在所述散列表中的第二散列值对应于所述当前校验数据的块;以及comparing the first hash value with a second hash value stored in a hash table, wherein the second hash value stored in the hash table corresponds to a block of the current check data; and 基于所述比较来识别所述块为所述当前校验数据中的一个或多个块的非重复。Identifying the block as a distinct of one or more blocks in the current parity data based on the comparison. 8.如权利要求7所述的方法,其中将所述新校验数据去重进一步包括,对于所述新校验数据中的每个块:将被识别为所述当前校验数据的一个或多个块的非重复的块写入所述RAID的所述校验数据存储部。8. The method of claim 7, wherein deduplicating the new parity data further comprises, for each block in the new parity data: one or more blocks that will be identified as the current parity data A non-overlapping block of a plurality of blocks is written in the parity data storage unit of the RAID. 9.如权利要求7所述的方法,其中所述散列表包括用于所述当前校验数据的每个块的指示符,其中所述指示符与所述块在所述RAID的校验数据存储部中的位置相关联,并且其中将所述新校验数据去重进一步包括:9. The method of claim 7, wherein said hash table includes an indicator for each block of said current parity data, wherein said indicator is consistent with said block's parity data in said RAID The locations in the storage section are associated, and wherein deduplication of the new verification data further includes: 基于所述比较来识别作为所述当前校验数据的一个或多个块的重复的所述新校验数据的一个或多个块;identifying one or more blocks of the new parity data that are duplicates of the one or more blocks of the current parity data based on the comparison; 对于被识别为所述当前校验数据的一个或多个块的非重复的所述新校验数据的一个或多个块,更新所述散列表中的第一散列值;以及updating the first hash value in the hash table for one or more blocks of the new parity data that are identified as non-duplicates of the one or more blocks of the current parity data; and 对于被识别为所述当前校验数据的一个或多个块的重复的所述新校验数据的一个或多个块,更新所述散列表中的指示,updating an indication in said hash table for one or more blocks of said new parity data identified as being duplicates of said one or more blocks of current parity data, 其中更新所述散列表中的指示至少部分地基于将所述新校验数据的被识别为所述当前校验数据的一个或多个块的非重复的块写入所述RAID的校验数据存储部中。wherein updating the indication in the hash table is based at least in part on writing non-duplicate blocks of the new parity data to the parity data of the RAID identified as one or more blocks of the current parity data in storage. 10.一中存储有指令的机器可读非暂态存储介质,响应于一个或多个处理器的执行,所述指令可操作地使RAID的独立磁盘冗余阵列(RAID)控制模块能够:10. A machine-readable non-transitory storage medium having stored therein instructions, in response to execution by one or more processors, operable to enable a redundant array of independent disks (RAID) control module of a RAID to: 响应于将特定数据单元写入所述RAID的请求,至少部分地基于所述特定数据单元与第一数据单元之间的第一异或(XOR)运算来确定临时数据,其中所述RAID具有与所述第一数据单元相关联的数据存储部并且所述RAID具有与第一校验数据相关联的校验数据存储部;determining temporary data based at least in part on a first exclusive OR (XOR) operation between the particular data unit and a first data unit in response to a request to write a particular data unit to the RAID, wherein the RAID has the a data store associated with the first data unit and the RAID has a parity data store associated with first parity data; 至少部分地基于所述临时数据与所述第一校验数据之间的第二XOR运算来确定第二校验数据;以及determining second check data based at least in part on a second XOR operation between the temporary data and the first check data; and 对所述第二校验数据去重以判定所述第二校验数据的任意部分是否是所述第一校验数据的部分的重复。Deduplicating the second verification data to determine whether any part of the second verification data is a repetition of a part of the first verification data. 11.如权利要求10所述的机器可读非暂态介质,其中响应于由所述一个或多个处理器执行,存储的指令进一步可操作地使得所述RAID控制模块能够写入所述第二校验数据的被确定为所述第一校验数据的部分的非重复的部分。11. The machine-readable non-transitory medium of claim 10 , wherein in response to being executed by the one or more processors, the stored instructions are further operable to enable the RAID control module to write to the first A portion of the second parity data is determined to be a non-repetitive portion of the portion of the first parity data. 12.如权利要求10所述的机器可读非暂态介质,其中响应于由所述一个或多个处理器执行,存储的指令进一步可操作地使所述RAID控制模块能够在对所述第二校验数据去重之前将所述第二校验数据分块。12. The machine-readable non-transitory medium of claim 10 , wherein in response to being executed by the one or more processors, the stored instructions are further operable to enable the RAID control module to operate on the first The second verification data is divided into blocks before deduplication of the second verification data. 13.如权利要求12所述的机器可读非暂态介质,其中所述RAID的数据存储部中的数据被组织成页,所述第二校验数据具有基本上类似于一个所述页的第一尺寸,并且可操作地使所述RAID控制模块能够将所述第二校验数据分块的存储指令包括响应于由所述一个或多个处理器执行而可操作地使所述RAID控制模块能够将所述第二校验数据拆分成一个或多个块的指令,其中每个块具有小于或等于所述第一尺寸的第二尺寸。13. The machine-readable non-transitory medium of claim 12 , wherein data in the data storage portion of the RAID is organized into pages, the second parity data having a value substantially similar to one of the pages Storage instructions of a first size and operable to enable the RAID control module to block the second parity data include responsive to execution by the one or more processors operable to enable the RAID control The module is capable of splitting the second parity data into instructions for one or more blocks, where each block has a second size less than or equal to the first size. 14.如权利要求13所述的机器可读非暂态介质,其中可操作地使所述RAID控制模块能够拆分所述第二校验数据的存储指令包括响应于由所述一个或多个处理器执行而可操作地使所述RAID控制模块能够将所述第二校验数据拆分成一个或多个块而使所述第二尺寸是4千字节的指令。14. The machine-readable non-transitory medium of claim 13 , wherein the storing instructions operable to enable the RAID control module to split the second parity data comprises responding to The processor executes instructions operable to enable the RAID control module to split the second parity data into one or more blocks such that the second size is 4 kilobytes. 15.如权利要求10所述的机器可读非暂态介质,其中可操作地使所述RAID控制模块对所述第二数据去重的存储指令包括如下指令:响应于由所述一个或多个处理器执行,所述指令可操作地使所述RAID控制模块能够:15. The machine-readable non-transitory medium of claim 10 , wherein the storage instructions operable to cause the RAID control module to deduplicate the second data include instructions responsive to executed by a processor, the instructions operable to enable the RAID control module to: 确定对应于所述第二校验数据的第一散列值;determining a first hash value corresponding to the second check data; 将所述第一散列值与第二散列值进行比较,其中所述第二散列值对应于所述第一校验数据;以及comparing the first hash value with a second hash value, wherein the second hash value corresponds to the first check data; and 基于所述比较来确识别作为所述第一校验数据的部分的重复的所述第二校验数据的部分。A portion of the second parity data that is a repetition of a portion of the first parity data is identified based on the comparison. 16.如权利要求10所述的机器可读非暂态介质,其中响应于由一个或多个处理器执行,所述存储指令进一步可操作地使所述RAID控制模块能够:16. The machine-readable non-transitory medium of claim 10 , wherein in response to being executed by one or more processors, the stored instructions are further operable to enable the RAID control module to: 将包括所述第二校验数据的部分的第二校验数据块与多个第一校验数据块进行比较,每个第一校验数据块均包括所述第一校验数据的部分;comparing a second parity data block including a portion of the second parity data with a plurality of first parity data blocks, each first parity data block including a portion of the first parity data; 基于所述比较来判定所述第二校验数据块是否是所述多个第一校验数据块中的任一个的重复,其中:determining whether the second check data block is a repetition of any one of the plurality of first check data blocks based on the comparison, wherein: 响应于所述第二校验数据块是第一校验数据块的重复:In response to the second parity data block being a repetition of the first parity data block: 识别所述RAID的校验数据存储部中的所述第一校验数据块的位置;以及identifying a location of the first parity data block in a parity data storage section of the RAID; and 将所述位置分配给所述第二校验数据块;allocating the location to the second parity data block; 响应于所述第二校验数据块不是所述多个第一校验数据块中的任一个的重复,将所述RAID的所述校验数据存储部中的新位置分配给所述第二校验数据块。allocating a new location in the parity data storage section of the RAID to the second parity data block in response to the second parity data block being not a duplicate of any of the plurality of first parity data blocks Verify data block. 17.如权利要求16所述的机器可读非暂态介质,其中响应于由一个或多个处理器执行,存储指令进一步可操作地使所述RAID控制模块能够:17. The machine-readable non-transitory medium of claim 16 , wherein in response to being executed by one or more processors, storing instructions are further operable to enable the RAID control module to: 将所述第二校验数据块与多个不同的第二校验数据块进行比较,每个所述多个不同的第二校验数据块均包括所述第二校验数据的其它部分;以及comparing the second parity data block with a plurality of different second parity data blocks, each of the plurality of different second parity data blocks including other portions of the second parity data; as well as 基于所述比较来判定所述第二校验数据块是否是所述多个不同的第二校验数据块中的任一个的重复;determining whether the second parity data block is a repetition of any one of the plurality of different second parity data blocks based on the comparison; 响应于所述第二校验数据块是所述多个不同的第二校验数据块中的一不同的第二校验数据块的重复,将所述RAID的所述校验数据存储部中的同一位置分配给所述第二校验数据块和所述一不同的第二校验数据块;以及In response to the second parity data block being a repetition of a different second parity data block among the plurality of different second parity data blocks, the parity data storage part of the RAID The same location of is allocated to the second parity data block and the one different second parity data block; and 响应于所述第二校验数据块不是所述多个不同的第二校验数据块中的任一个的重复,将所述RAID的校验数据存储部中的不同的位置分配给所述第二校验数据块和所述多个不同的第二校验数据块。allocating a different location in the parity data storage section of the RAID to the second parity data block in response to the second parity data block being not a repetition of any one of the plurality of different second parity data blocks Two parity data blocks and the plurality of different second parity data blocks. 18.如权利要求16所述的机器可读非暂态介质,其中响应于由一个或多个处理器执行,存储的指令进一步可操作地使所述RAID控制模块能够将第三校验数据写入所述RAID的包括被分配了新位置的第二校验数据块的校验数据存储部中。18. The machine-readable non-transitory medium of claim 16 , wherein in response to being executed by one or more processors, the stored instructions are further operable to enable the RAID control module to write third parity data to into the parity data storage section of the RAID including the second parity data block assigned a new location. 19.一种系统,包括:19. A system comprising: 独立磁盘冗余阵列(RAID),其中所述RAID具有与当前数据单元相关联的数据存储部,并且所述RAID具有与当前校验数据相关联的校验数据存储部;以及a redundant array of independent disks (RAID), wherein the RAID has a data store associated with the current data unit, and the RAID has a parity data store associated with the current parity data; and RAID控制模块,其与所述RAID通信耦合,所述RAID控制模块包括:RAID control module, it is coupled with described RAID communication, and described RAID control module comprises: 数据输入/输出(I/O)模块,其被配置为:a data input/output (I/O) module configured to: 接收将数据单元写入所述RAID的请求;receiving a request to write a data unit to said RAID; 校验数据保持模块,其被配置为:A verification data retention module configured to: 响应于写入所述数据单元的所述请求,将所述数据单元与所述当前校验数据进行比较以确定临时校验数据;comparing said data unit with said current parity data to determine provisional parity data in response to said request to write said data unit; 将所述临时校验数据与所述当前校验数据进行比较以确定新校验数据;comparing the temporary verification data with the current verification data to determine new verification data; 将所述新校验数据拆分成多个新校验数据块;Splitting the new check data into multiple new check data blocks; 构建散列表,该散列表将多个第一散列值中的每一个与所述新校验数据块中的不同的块相关联,以及将多个第二散列值中的每一个与所述当前校验数据的块中的不同的块相关联;以及constructing a hash table that associates each of a plurality of first hash values with a different one of the new check data blocks, and associates each of a plurality of second hash values with the associated with a different one of the blocks of the current parity data; and 基于所述多个第一散列值与所述多个第二散列值的比较来识别包括所述数据单元的至少第一部分的所述新校验数据的非重复块。A non-repeating block of the new check data comprising at least a first portion of the data unit is identified based on a comparison of the first plurality of hash values and the second plurality of hash values. 20.如权利要求19所述的系统,其中所述校验数据保持模块进一步配置为基于所述多个第一散列值与所述多个第二散列值的比较来识别包括所述数据单元的至少第二部分的所述新校验数据的重复块。20. The system of claim 19 , wherein the verification data retention module is further configured to identify the data containing the data based on a comparison of the first plurality of hash values and the second plurality of hash values A repeating block of said new parity data for at least a second portion of cells. 21.如权利要求19所述的系统,其中所述数据I/O模块进一步配置为将所述新校验数据的非重复块写入所述RAID的所述校验数据存储部。21. The system of claim 19, wherein the data I/O module is further configured to write non-duplicate blocks of the new parity data to the parity data storage of the RAID. 22.如权利要求19所述的系统,其中所述校验数据保持模块进一步配置为在所述散列表中将指向所述RAID的所述校验数据存储部中的新位置的新位置指针与所述新校验数据的非重复块的标识符相关联以更新所述散列表。22. The system of claim 19 , wherein the parity data retention module is further configured to associate a new location pointer pointing to a new location in the parity data storage section of the RAID with The identifiers of the non-duplicate blocks of the new parity data are associated to update the hash table. 23.如权利要求20所述的系统,其中所述校验数据保持模块进一步配置为在所述散列表中将指向所述RAID的所述校验数据存储部中的当前位置的当前位置指针与所述新校验数据的重复块的标识符相关联以更新所述散列表,其中所述当前位置指针与所述多个第二散列值中的一第二散列值相关联。23. The system of claim 20, wherein the parity data holding module is further configured to combine a current location pointer pointing to a current location in the parity data storage section of the RAID with a current location pointer in the hash table The identifier of the repeated block of the new check data is associated to update the hash table, wherein the current location pointer is associated with a second hash value among the plurality of second hash values. 24.如权利要求19所述的系统,其中所述校验数据保持模块进一步配置为:24. The system of claim 19, wherein the verification data retention module is further configured to: 基于所述多个第一散列值中的每一个与所述多个第一散列值中的其它的比较,识别包括所述数据单元的第一部分、所述数据单元的第二部分和所述数据单元的第三部分中的两个以上的所述新校验数据的重复块。Based on a comparison of each of the plurality of first hash values to others of the plurality of first hash values, identifying the first portion comprising the data unit, the second portion of the data unit, and the Two or more repeated blocks of the new parity data in the third part of the data unit. 25.如权利要求24所述的系统,其中所述校验数据保持模块进一步配置为:在所述散列表中将指向所述RAID的所述校验数据存储部中的相同位置的相同位置指针与所述新校验数据的重复块的每个标识符相关联以更新所述散列表。25. The system according to claim 24, wherein the verification data holding module is further configured to: in the hash table, point to the same location pointer in the same location in the verification data storage part of the RAID Each identifier of a repeated block of said new parity data is associated to update said hash table. 26.如权利要求22所述的系统,其中所述校验数据保持模块进一步配置为基于更新后的散列表来更新所述RAID的所述校验数据存储部。26. The system of claim 22, wherein the parity data retention module is further configured to update the parity data storage of the RAID based on the updated hash table. 27.如权利要求23所述的系统,其中所述校验数据保持模块进一步配置为基于更新后的散列表来更新所述RAID的所述校验数据存储部。27. The system of claim 23, wherein the parity data retention module is further configured to update the parity data store of the RAID based on the updated hash table. 28.如权利要求22所述的系统,其中所述校验数据保持模块进一步配置为基于更新后的散列表来更新所述RAID的所述校验数据存储部。28. The system of claim 22, wherein the parity data retention module is further configured to update the parity data store of the RAID based on the updated hash table.
CN201380079885.2A 2013-09-27 2013-09-27 Deduplication of parity data in ssd based raid systems Pending CN105579980A (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/KR2013/008690 WO2015046645A1 (en) 2013-09-27 2013-09-27 Deduplication of parity data in ssd based raid systems

Publications (1)

Publication Number Publication Date
CN105579980A true CN105579980A (en) 2016-05-11

Family

ID=52743764

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380079885.2A Pending CN105579980A (en) 2013-09-27 2013-09-27 Deduplication of parity data in ssd based raid systems

Country Status (4)

Country Link
US (1) US20160246537A1 (en)
KR (1) KR101748717B1 (en)
CN (1) CN105579980A (en)
WO (1) WO2015046645A1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107844273A (en) * 2017-11-01 2018-03-27 深信服科技股份有限公司 A kind of method for writing data and device, verification method and device
CN110389724A (en) * 2019-07-23 2019-10-29 深圳忆联信息系统有限公司 Parity page recognition methods and device based on solid state hard disk

Families Citing this family (155)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8589640B2 (en) 2011-10-14 2013-11-19 Pure Storage, Inc. Method for maintaining multiple fingerprint tables in a deduplicating storage system
US9520901B2 (en) * 2014-03-06 2016-12-13 Kabushiki Kaisha Toshiba Memory controller, memory system, and memory control method
US12341848B2 (en) 2014-06-04 2025-06-24 Pure Storage, Inc. Distributed protocol endpoint services for data storage systems
US9003144B1 (en) 2014-06-04 2015-04-07 Pure Storage, Inc. Mechanism for persisting messages in a storage system
US10574754B1 (en) 2014-06-04 2020-02-25 Pure Storage, Inc. Multi-chassis array with multi-level load balancing
US11652884B2 (en) 2014-06-04 2023-05-16 Pure Storage, Inc. Customized hash algorithms
US12137140B2 (en) 2014-06-04 2024-11-05 Pure Storage, Inc. Scale out storage platform having active failover
US11960371B2 (en) 2014-06-04 2024-04-16 Pure Storage, Inc. Message persistence in a zoned system
US11068363B1 (en) 2014-06-04 2021-07-20 Pure Storage, Inc. Proactively rebuilding data in a storage cluster
US9367243B1 (en) 2014-06-04 2016-06-14 Pure Storage, Inc. Scalable non-uniform storage sizes
US9836234B2 (en) 2014-06-04 2017-12-05 Pure Storage, Inc. Storage cluster
US9213485B1 (en) 2014-06-04 2015-12-15 Pure Storage, Inc. Storage system architecture
US9218244B1 (en) 2014-06-04 2015-12-22 Pure Storage, Inc. Rebuilding data across storage nodes
US9836245B2 (en) 2014-07-02 2017-12-05 Pure Storage, Inc. Non-volatile RAM and flash memory in a non-volatile solid-state storage
US8868825B1 (en) 2014-07-02 2014-10-21 Pure Storage, Inc. Nonrepeating identifiers in an address space of a non-volatile solid-state storage
US11604598B2 (en) 2014-07-02 2023-03-14 Pure Storage, Inc. Storage cluster with zoned drives
US11886308B2 (en) 2014-07-02 2024-01-30 Pure Storage, Inc. Dual class of service for unified file and object messaging
US9021297B1 (en) 2014-07-02 2015-04-28 Pure Storage, Inc. Redundant, fault-tolerant, distributed remote procedure call cache in a storage system
US12182044B2 (en) 2014-07-03 2024-12-31 Pure Storage, Inc. Data storage in a zone drive
US9747229B1 (en) 2014-07-03 2017-08-29 Pure Storage, Inc. Self-describing data format for DMA in a non-volatile solid-state storage
US9811677B2 (en) 2014-07-03 2017-11-07 Pure Storage, Inc. Secure data replication in a storage grid
US10853311B1 (en) 2014-07-03 2020-12-01 Pure Storage, Inc. Administration through files in a storage system
US9082512B1 (en) 2014-08-07 2015-07-14 Pure Storage, Inc. Die-level monitoring in a storage cluster
US9483346B2 (en) 2014-08-07 2016-11-01 Pure Storage, Inc. Data rebuild on feedback from a queue in a non-volatile solid-state storage
US9495255B2 (en) 2014-08-07 2016-11-15 Pure Storage, Inc. Error recovery in a storage cluster
US10983859B2 (en) 2014-08-07 2021-04-20 Pure Storage, Inc. Adjustable error correction based on memory health in a storage unit
US12158814B2 (en) 2014-08-07 2024-12-03 Pure Storage, Inc. Granular voltage tuning
US10079711B1 (en) 2014-08-20 2018-09-18 Pure Storage, Inc. Virtual file server with preserved MAC address
US9940234B2 (en) 2015-03-26 2018-04-10 Pure Storage, Inc. Aggressive data deduplication using lazy garbage collection
US10082985B2 (en) 2015-03-27 2018-09-25 Pure Storage, Inc. Data striping across storage nodes that are assigned to multiple logical arrays
US10178169B2 (en) 2015-04-09 2019-01-08 Pure Storage, Inc. Point to point based backend communication layer for storage processing
US9672125B2 (en) 2015-04-10 2017-06-06 Pure Storage, Inc. Ability to partition an array into two or more logical arrays with independently running software
US12379854B2 (en) 2015-04-10 2025-08-05 Pure Storage, Inc. Two or more logical arrays having zoned drives
US10140149B1 (en) 2015-05-19 2018-11-27 Pure Storage, Inc. Transactional commits with hardware assists in remote memory
US9817576B2 (en) 2015-05-27 2017-11-14 Pure Storage, Inc. Parallel update to NVRAM
US10846275B2 (en) 2015-06-26 2020-11-24 Pure Storage, Inc. Key management in a storage device
US10983732B2 (en) 2015-07-13 2021-04-20 Pure Storage, Inc. Method and system for accessing a file
US10108355B2 (en) 2015-09-01 2018-10-23 Pure Storage, Inc. Erase block state detection
US11341136B2 (en) 2015-09-04 2022-05-24 Pure Storage, Inc. Dynamically resizable structures for approximate membership queries
US11269884B2 (en) 2015-09-04 2022-03-08 Pure Storage, Inc. Dynamically resizable structures for approximate membership queries
US10853266B2 (en) 2015-09-30 2020-12-01 Pure Storage, Inc. Hardware assisted data lookup methods
US10762069B2 (en) 2015-09-30 2020-09-01 Pure Storage, Inc. Mechanism for a system where data and metadata are located closely together
US12271359B2 (en) 2015-09-30 2025-04-08 Pure Storage, Inc. Device host operations in a storage system
US9768953B2 (en) 2015-09-30 2017-09-19 Pure Storage, Inc. Resharing of a split secret
US9843453B2 (en) 2015-10-23 2017-12-12 Pure Storage, Inc. Authorizing I/O commands with I/O tokens
US10346074B2 (en) * 2015-11-22 2019-07-09 Synamedia Limited Method of compressing parity data upon writing
US10007457B2 (en) 2015-12-22 2018-06-26 Pure Storage, Inc. Distributed transactions with token-associated execution
JP6679971B2 (en) * 2016-02-16 2020-04-15 セイコーエプソン株式会社 Storage device, liquid container and host device
US10133503B1 (en) 2016-05-02 2018-11-20 Pure Storage, Inc. Selecting a deduplication process based on a difference between performance metrics
US10261690B1 (en) 2016-05-03 2019-04-16 Pure Storage, Inc. Systems and methods for operating a storage system
US12235743B2 (en) 2016-06-03 2025-02-25 Pure Storage, Inc. Efficient partitioning for storage system resiliency groups
US11861188B2 (en) 2016-07-19 2024-01-02 Pure Storage, Inc. System having modular accelerators
US9672905B1 (en) 2016-07-22 2017-06-06 Pure Storage, Inc. Optimize data protection layouts based on distributed flash wear leveling
US10768819B2 (en) 2016-07-22 2020-09-08 Pure Storage, Inc. Hardware support for non-disruptive upgrades
US11604690B2 (en) 2016-07-24 2023-03-14 Pure Storage, Inc. Online failure span determination
US11734169B2 (en) 2016-07-26 2023-08-22 Pure Storage, Inc. Optimizing spool and memory space management
US10203903B2 (en) 2016-07-26 2019-02-12 Pure Storage, Inc. Geometry based, space aware shelf/writegroup evacuation
US10366004B2 (en) 2016-07-26 2019-07-30 Pure Storage, Inc. Storage system with elective garbage collection to reduce flash contention
US11886334B2 (en) 2016-07-26 2024-01-30 Pure Storage, Inc. Optimizing spool and memory space management
US11797212B2 (en) 2016-07-26 2023-10-24 Pure Storage, Inc. Data migration for zoned drives
US11422719B2 (en) 2016-09-15 2022-08-23 Pure Storage, Inc. Distributed file deletion and truncation
US20180095788A1 (en) 2016-10-04 2018-04-05 Pure Storage, Inc. Scheduling operations for a storage device
US10613974B2 (en) 2016-10-04 2020-04-07 Pure Storage, Inc. Peer-to-peer non-volatile random-access memory
US9747039B1 (en) 2016-10-04 2017-08-29 Pure Storage, Inc. Reservations over multiple paths on NVMe over fabrics
US10481798B2 (en) 2016-10-28 2019-11-19 Pure Storage, Inc. Efficient flash management for multiple controllers
US10359942B2 (en) 2016-10-31 2019-07-23 Pure Storage, Inc. Deduplication aware scalable content placement
KR101986579B1 (en) * 2016-12-14 2019-10-01 한국과학기술원 System and method for log-based parity update of SSD array and to defect block and node failures recovery method using the same
US11550481B2 (en) 2016-12-19 2023-01-10 Pure Storage, Inc. Efficiently writing data in a zoned drive storage system
US11307998B2 (en) 2017-01-09 2022-04-19 Pure Storage, Inc. Storage efficiency of encrypted host system data
US11955187B2 (en) 2017-01-13 2024-04-09 Pure Storage, Inc. Refresh of differing capacity NAND
US9747158B1 (en) 2017-01-13 2017-08-29 Pure Storage, Inc. Intelligent refresh of 3D NAND
US10528488B1 (en) 2017-03-30 2020-01-07 Pure Storage, Inc. Efficient name coding
US11016667B1 (en) 2017-04-05 2021-05-25 Pure Storage, Inc. Efficient mapping for LUNs in storage memory with holes in address space
US10516645B1 (en) 2017-04-27 2019-12-24 Pure Storage, Inc. Address resolution broadcasting in a networked device
US10141050B1 (en) 2017-04-27 2018-11-27 Pure Storage, Inc. Page writes for triple level cell flash memory
US11467913B1 (en) 2017-06-07 2022-10-11 Pure Storage, Inc. Snapshots with crash consistency in a storage system
US11782625B2 (en) 2017-06-11 2023-10-10 Pure Storage, Inc. Heterogeneity supportive resiliency groups
US10425473B1 (en) 2017-07-03 2019-09-24 Pure Storage, Inc. Stateful connection reset in a storage cluster with a stateless load balancer
US10402266B1 (en) 2017-07-31 2019-09-03 Pure Storage, Inc. Redundant array of independent disks in a direct-mapped flash storage system
US10831935B2 (en) 2017-08-31 2020-11-10 Pure Storage, Inc. Encryption management with host-side data reduction
US10372681B2 (en) 2017-09-12 2019-08-06 International Business Machines Corporation Tape drive memory deduplication
US10289335B2 (en) * 2017-09-12 2019-05-14 International Business Machines Corporation Tape drive library integrated memory deduplication
US11068606B2 (en) * 2017-09-20 2021-07-20 Citrix Systems, Inc. Secured encrypted shared cloud storage
US10789211B1 (en) 2017-10-04 2020-09-29 Pure Storage, Inc. Feature-based deduplication
US11354058B2 (en) 2018-09-06 2022-06-07 Pure Storage, Inc. Local relocation of data stored at a storage device of a storage system
US10496330B1 (en) 2017-10-31 2019-12-03 Pure Storage, Inc. Using flash storage devices with different sized erase blocks
US12067274B2 (en) 2018-09-06 2024-08-20 Pure Storage, Inc. Writing segments and erase blocks based on ordering
US11024390B1 (en) 2017-10-31 2021-06-01 Pure Storage, Inc. Overlapping RAID groups
US10545687B1 (en) 2017-10-31 2020-01-28 Pure Storage, Inc. Data rebuild when changing erase block sizes during drive replacement
US10860475B1 (en) 2017-11-17 2020-12-08 Pure Storage, Inc. Hybrid flash translation layer
US10990566B1 (en) 2017-11-20 2021-04-27 Pure Storage, Inc. Persistent file locks in a storage system
US10599517B2 (en) 2017-11-29 2020-03-24 Taiwan Semiconductor Manufacturing Co., Ltd. Memory device
US10976948B1 (en) 2018-01-31 2021-04-13 Pure Storage, Inc. Cluster expansion mechanism
US10467527B1 (en) 2018-01-31 2019-11-05 Pure Storage, Inc. Method and apparatus for artificial intelligence acceleration
US11036596B1 (en) 2018-02-18 2021-06-15 Pure Storage, Inc. System for delaying acknowledgements on open NAND locations until durability has been confirmed
KR102490191B1 (en) * 2018-03-05 2023-01-18 삼성전자주식회사 Data storage device and method of operating the same
US10540231B2 (en) 2018-04-04 2020-01-21 International Business Machines Corporation Log-structured array (LSA) partial parity eviction and reassembly
US11847331B2 (en) 2019-12-12 2023-12-19 Pure Storage, Inc. Budgeting open blocks of a storage unit based on power loss prevention
US12393340B2 (en) 2019-01-16 2025-08-19 Pure Storage, Inc. Latency reduction of flash-based devices using programming interrupts
US11416144B2 (en) 2019-12-12 2022-08-16 Pure Storage, Inc. Dynamic use of segment or zone power loss protection in a flash device
US12079494B2 (en) 2018-04-27 2024-09-03 Pure Storage, Inc. Optimizing storage system upgrades to preserve resources
US11385792B2 (en) 2018-04-27 2022-07-12 Pure Storage, Inc. High availability controller pair transitioning
US11436023B2 (en) 2018-05-31 2022-09-06 Pure Storage, Inc. Mechanism for updating host file system and flash translation layer based on underlying NAND technology
US11500570B2 (en) 2018-09-06 2022-11-15 Pure Storage, Inc. Efficient relocation of data utilizing different programming modes
US11868309B2 (en) 2018-09-06 2024-01-09 Pure Storage, Inc. Queue management for data relocation
US10976947B2 (en) 2018-10-26 2021-04-13 Pure Storage, Inc. Dynamically selecting segment heights in a heterogeneous RAID group
US11194473B1 (en) 2019-01-23 2021-12-07 Pure Storage, Inc. Programming frequently read data to low latency portions of a solid-state storage array
US10901641B2 (en) 2019-01-29 2021-01-26 Dell Products L.P. Method and system for inline deduplication
US10979312B2 (en) 2019-01-29 2021-04-13 Dell Products L.P. System and method to assign, monitor, and validate solution infrastructure deployment prerequisites in a customer data center
US20200241781A1 (en) * 2019-01-29 2020-07-30 Dell Products L.P. Method and system for inline deduplication using erasure coding
US10764135B2 (en) 2019-01-29 2020-09-01 Dell Products L.P. Method and system for solution integration labeling
US10972343B2 (en) 2019-01-29 2021-04-06 Dell Products L.P. System and method for device configuration update
US10740023B1 (en) 2019-01-29 2020-08-11 Dell Products L.P. System and method for dynamic application access-based mapping
US10911307B2 (en) 2019-01-29 2021-02-02 Dell Products L.P. System and method for out of the box solution-level configuration and diagnostic logging and reporting
US11442642B2 (en) 2019-01-29 2022-09-13 Dell Products L.P. Method and system for inline deduplication using erasure coding to minimize read and write operations
US12373340B2 (en) 2019-04-03 2025-07-29 Pure Storage, Inc. Intelligent subsegment formation in a heterogeneous storage system
US11099986B2 (en) 2019-04-12 2021-08-24 Pure Storage, Inc. Efficient transfer of memory contents
US11487665B2 (en) 2019-06-05 2022-11-01 Pure Storage, Inc. Tiered caching of data in a storage system
US11281394B2 (en) 2019-06-24 2022-03-22 Pure Storage, Inc. Replication across partitioning schemes in a distributed storage system
US11609820B2 (en) 2019-07-31 2023-03-21 Dell Products L.P. Method and system for redundant distribution and reconstruction of storage metadata
US11372730B2 (en) 2019-07-31 2022-06-28 Dell Products L.P. Method and system for offloading a continuous health-check and reconstruction of data in a non-accelerator pool
US10963345B2 (en) 2019-07-31 2021-03-30 Dell Products L.P. Method and system for a proactive health check and reconstruction of data
US11328071B2 (en) 2019-07-31 2022-05-10 Dell Products L.P. Method and system for identifying actor of a fraudulent action during legal hold and litigation
US11775193B2 (en) 2019-08-01 2023-10-03 Dell Products L.P. System and method for indirect data classification in a storage system operations
US11893126B2 (en) 2019-10-14 2024-02-06 Pure Storage, Inc. Data deletion for a multi-tenant environment
US12475041B2 (en) 2019-10-15 2025-11-18 Pure Storage, Inc. Efficient data storage by grouping similar data within a zone
US11157179B2 (en) 2019-12-03 2021-10-26 Pure Storage, Inc. Dynamic allocation of blocks of a storage device based on power loss protection
US11704192B2 (en) 2019-12-12 2023-07-18 Pure Storage, Inc. Budgeting open blocks based on power loss protection
US11188432B2 (en) 2020-02-28 2021-11-30 Pure Storage, Inc. Data resiliency by partially deallocating data blocks of a storage device
US11416357B2 (en) 2020-03-06 2022-08-16 Dell Products L.P. Method and system for managing a spare fault domain in a multi-fault domain data cluster
US11301327B2 (en) 2020-03-06 2022-04-12 Dell Products L.P. Method and system for managing a spare persistent storage device and a spare node in a multi-node data cluster
US11175842B2 (en) 2020-03-06 2021-11-16 Dell Products L.P. Method and system for performing data deduplication in a data pipeline
US11119858B1 (en) 2020-03-06 2021-09-14 Dell Products L.P. Method and system for performing a proactive copy operation for a spare persistent storage
US11281535B2 (en) 2020-03-06 2022-03-22 Dell Products L.P. Method and system for performing a checkpoint zone operation for a spare persistent storage
US11507297B2 (en) 2020-04-15 2022-11-22 Pure Storage, Inc. Efficient management of optimal read levels for flash storage systems
US11474986B2 (en) 2020-04-24 2022-10-18 Pure Storage, Inc. Utilizing machine learning to streamline telemetry processing of storage media
US12056365B2 (en) 2020-04-24 2024-08-06 Pure Storage, Inc. Resiliency for a storage system
US11418326B2 (en) 2020-05-21 2022-08-16 Dell Products L.P. Method and system for performing secure data transactions in a data cluster
US11768763B2 (en) 2020-07-08 2023-09-26 Pure Storage, Inc. Flash secure erase
US11487455B2 (en) 2020-12-17 2022-11-01 Pure Storage, Inc. Dynamic block allocation to optimize storage system performance
US11614880B2 (en) 2020-12-31 2023-03-28 Pure Storage, Inc. Storage system with selectable write paths
US12229437B2 (en) 2020-12-31 2025-02-18 Pure Storage, Inc. Dynamic buffer for storage system
US12093545B2 (en) 2020-12-31 2024-09-17 Pure Storage, Inc. Storage system with selectable write modes
US11847324B2 (en) 2020-12-31 2023-12-19 Pure Storage, Inc. Optimizing resiliency groups for data regions of a storage system
US12067282B2 (en) 2020-12-31 2024-08-20 Pure Storage, Inc. Write path selection
US12061814B2 (en) 2021-01-25 2024-08-13 Pure Storage, Inc. Using data similarity to select segments for garbage collection
US11630593B2 (en) 2021-03-12 2023-04-18 Pure Storage, Inc. Inline flash memory qualification in a storage system
US11507597B2 (en) 2021-03-31 2022-11-22 Pure Storage, Inc. Data replication to meet a recovery point objective
US12439544B2 (en) 2022-04-20 2025-10-07 Pure Storage, Inc. Retractable pivoting trap door
US12314163B2 (en) 2022-04-21 2025-05-27 Pure Storage, Inc. Die-aware scheduler
US12353567B2 (en) * 2022-10-06 2025-07-08 International Business Machines Corporation Drive cryptographic value management
WO2024182553A1 (en) 2023-02-28 2024-09-06 Pure Storage, Inc. Data storage system with managed flash
US12204788B1 (en) 2023-07-21 2025-01-21 Pure Storage, Inc. Dynamic plane selection in data storage system
US12524309B2 (en) 2024-04-30 2026-01-13 Pure Storage, Inc. Intelligently forming data stripes including multiple shards in a single failure domain
US12487920B2 (en) 2024-04-30 2025-12-02 Pure Storage, Inc. Storage system with dynamic data management functions

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6256749B1 (en) * 1992-12-28 2001-07-03 Hitachi, Ltd. Disk array system and its control method
CN101387975A (en) * 2008-10-20 2009-03-18 中科院成都信息技术有限公司 Magnetic disc array system
CN101452409A (en) * 2007-12-04 2009-06-10 无锡江南计算技术研究所 Data verification redundant method and device
CN102981922A (en) * 2008-03-11 2013-03-20 国际商业机器公司 Selecting a deduplication protocol for a data storage library

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6151641A (en) * 1997-09-30 2000-11-21 Lsi Logic Corporation DMA controller of a RAID storage controller with integrated XOR parity computation capability adapted to compute parity in parallel with the transfer of data segments
US6523087B2 (en) * 2001-03-06 2003-02-18 Chaparral Network Storage, Inc. Utilizing parity caching and parity logging while closing the RAID5 write hole
US6792506B2 (en) * 2002-03-29 2004-09-14 Emc Corporation Memory architecture for a high throughput storage processor
US7146461B1 (en) * 2003-07-01 2006-12-05 Veritas Operating Corporation Automated recovery from data corruption of data volumes in parity RAID storage systems
US7721143B2 (en) * 2005-12-06 2010-05-18 Lsi Corporation Method for reducing rebuild time on a RAID device
US8612699B2 (en) * 2010-06-25 2013-12-17 International Business Machines Corporation Deduplication in a hybrid storage environment
US8775868B2 (en) * 2010-09-28 2014-07-08 Pure Storage, Inc. Adaptive RAID for an SSD environment
US8788788B2 (en) * 2011-08-11 2014-07-22 Pure Storage, Inc. Logical sector mapping in a flash storage array
US8793467B2 (en) * 2011-09-30 2014-07-29 Pure Storage, Inc. Variable length encoding in a storage system
US8756371B2 (en) * 2011-10-12 2014-06-17 Lsi Corporation Methods and apparatus for improved raid parity computation in a storage controller
JP5933755B2 (en) * 2012-04-27 2016-06-15 株式会社日立製作所 Storage system and storage control device
US8930663B2 (en) * 2012-09-24 2015-01-06 Infinidat Ltd. Handling enclosure unavailability in a storage system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6256749B1 (en) * 1992-12-28 2001-07-03 Hitachi, Ltd. Disk array system and its control method
CN101452409A (en) * 2007-12-04 2009-06-10 无锡江南计算技术研究所 Data verification redundant method and device
CN102981922A (en) * 2008-03-11 2013-03-20 国际商业机器公司 Selecting a deduplication protocol for a data storage library
CN101387975A (en) * 2008-10-20 2009-03-18 中科院成都信息技术有限公司 Magnetic disc array system

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107844273A (en) * 2017-11-01 2018-03-27 深信服科技股份有限公司 A kind of method for writing data and device, verification method and device
CN107844273B (en) * 2017-11-01 2021-05-04 深信服科技股份有限公司 Data writing method and device and verification method and device
CN110389724A (en) * 2019-07-23 2019-10-29 深圳忆联信息系统有限公司 Parity page recognition methods and device based on solid state hard disk

Also Published As

Publication number Publication date
US20160246537A1 (en) 2016-08-25
KR20160058953A (en) 2016-05-25
WO2015046645A1 (en) 2015-04-02
KR101748717B1 (en) 2017-06-19

Similar Documents

Publication Publication Date Title
CN105579980A (en) Deduplication of parity data in ssd based raid systems
US10545833B1 (en) Block-level deduplication
US10037158B2 (en) Vertically integrated storage
CN102308288B (en) Backup of deduplicated data
EP2976713B1 (en) Information processing system, control program, and information processing device
US10067844B2 (en) Method of channel content rebuild in ultra-high capacity SSD
US9195541B2 (en) Controlling nonvolatile memory device and nonvolatile memory system
CN106484761B (en) For improving the method and system of storage log
US20150324123A1 (en) Data storage cluster with distributed zones
US9864542B2 (en) Data deduplication using a solid state drive controller
US20100262868A1 (en) Managing Possibly Logically Bad Blocks in Storage Devices
JP6587953B2 (en) Storage controller, storage device, data processing method and program
JP6666540B2 (en) Storage control device and program
KR102873784B1 (en) Enhanced ssd reliability
WO2019226305A1 (en) Parity log with delta bitmap
CN112119380B (en) Parity logging with bypass
KR101532283B1 (en) A Unified De-duplication Method of Data and Parity Disks in SSD-based RAID Storage
US8041850B2 (en) Storage apparatus and data integrity assurance method
JP5993018B2 (en) Triple parity encoding for easy data recovery
US11748308B2 (en) Hybrid deduplication in storage systems
US20120102277A1 (en) Data storage device and write method thereof
CN103019966B (en) A data storage system including backup body memory and its management method

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
AD01 Patent right deemed abandoned
AD01 Patent right deemed abandoned

Effective date of abandoning: 20190507