CN105579980A - Deduplication of parity data in ssd based raid systems - Google Patents
Deduplication of parity data in ssd based raid systems Download PDFInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/108—Parity data distribution in semiconductor storages, e.g. in SSD
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
- G06F3/0641—De-duplication techniques
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
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
Description
背景技术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)
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)
| 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)
| 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)
| 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)
| 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 |
-
2013
- 2013-09-27 CN CN201380079885.2A patent/CN105579980A/en active Pending
- 2013-09-27 WO PCT/KR2013/008690 patent/WO2015046645A1/en not_active Ceased
- 2013-09-27 KR KR1020167011033A patent/KR101748717B1/en active Active
- 2013-09-27 US US15/023,068 patent/US20160246537A1/en not_active Abandoned
Patent Citations (4)
| 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)
| 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 |