US20050273651A1 - Method of implementing XOR based raid algorithms - Google Patents

Method of implementing XOR based raid algorithms Download PDF

Info

Publication number
US20050273651A1
US20050273651A1 US11/010,435 US1043504A US2005273651A1 US 20050273651 A1 US20050273651 A1 US 20050273651A1 US 1043504 A US1043504 A US 1043504A US 2005273651 A1 US2005273651 A1 US 2005273651A1
Authority
US
United States
Prior art keywords
parity
raid
storage system
storage
nexus
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.)
Abandoned
Application number
US11/010,435
Inventor
Sanjay Subbarao
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Aristos Logic Corp
Original Assignee
Aristos Logic Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Aristos Logic Corp filed Critical Aristos Logic Corp
Priority to US11/010,435 priority Critical patent/US20050273651A1/en
Assigned to ARISTOS LOGIC CORPORATION reassignment ARISTOS LOGIC CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: SUBBARAO, SANJAY
Publication of US20050273651A1 publication Critical patent/US20050273651A1/en
Priority to US12/332,185 priority patent/US7827469B2/en
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2211/00Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
    • G06F2211/10Indexing scheme relating to G06F11/10
    • G06F2211/1002Indexing scheme relating to G06F11/1076
    • G06F2211/1057Parity-multiple bits-RAID6, i.e. RAID 6 implementations

Definitions

  • the present invention relates to a method and apparatus for calculating exclusive OR (XOR) operations that can be used in any disk array architecture and which is independent of hardware architecture or RAID algorithms.
  • XOR exclusive OR
  • RAID system is a disk system that includes a collection of multiple disk drives that are organized into a disk array and managed by a common array controller.
  • the array controller presents the array to the user as one or more virtual disks.
  • Disk arrays are the framework to which RAID functionality is added in functional levels in order to produce cost-effective, highly available, high-performance disk systems.
  • RAID levels In RAID systems, the data is distributed over multiple disk drives to allow parallel operation, and thereby enhance disk access performance, and to provide fault tolerance against drive failures.
  • RAID levels 1 through 5 provide a single drive fault tolerance. That is, these RAID levels allow reconstruction of the original data, if any one of the disk drives fails. It is quite possible, however, that more than one SATA drive may fail in a RAID system. For example, dual drive failures are becoming more common, as RAID systems incorporate an increasing number of less expensive disk drives.
  • the RAID 6 architecture is similar to RAID 5 , but RAID 6 can overcome the failure of any two disk drives by using an additional parity block for each row (for a storage loss of 2/N).
  • the first parity block (P) is calculated by performing an XOR operation on a set of positionally assigned data sectors (e.g., rows of data sectors).
  • the second parity block (Q) is generated by using the XOR function on a set of positionally assigned data sectors (e.g., columns of data sectors).
  • the conventional dual-fault tolerant RAID systems reconstruct the data of the failed drives by using the parity sets.
  • the RAID systems are well known in the art and are amply described, for example, in The RAIDbook, 6 th Edition: A Storage System Technology Handbook, edited by Paul Massiglia (1997), which is incorporated herein by reference.
  • RAID 6 is processor-intensive and requires excessive processor cycles to calculate the many parity and data addresses required to perform RAID 6 .
  • RAID controllers are becoming more complex in order to compensate for the additional processor requirements.
  • RAID 6 hardware architectures and algorithms become more complex, they also become increasingly vendor-specific and limit a customer's flexibility to mix and match RAID 6 systems, based on cost, performance, or other business related factors. What is needed is a flexible method of processing RAID 6 algorithms on any type of RAID 6 hardware architecture.
  • RAID 6 system is described in U.S. Pat. No. 6,513,098, entitled “Method and Apparatus for Scalable Error Correction Code Generation Performance.”
  • the '098 patent describes a scalable memory controller for use in connection with error correction code.
  • the channels of the controller are interconnected to a plurality of parity engines and associated cache memories through use of a switched fabric architecture.
  • a processor is provided for allocating operations that require access to the parity engines or cache memories.
  • error correction syndrome values can be calculated in parallel.
  • the performance of the controller can be selectively scaled by providing a greater or lesser number of parity engines and associated cache memories.
  • a switched fabric internal architecture data transfers between the internal components of the controller can be conducted simultaneously.
  • the '098 patent provides a RAID controller that is scalable, based on performance and cost requirements. Although this provides flexibility to the customer, such that the RAID controller is somewhat customizable, it does not provide instant or continuous flexibility, because additional hardware must be physically installed or uninstalled to change the RAID controller configuration. Hence, a method of performing parity calculations that is independent of RAID 6 hardware architecture and algorithms is still needed.
  • the present invention is directed to an interpretative script language which may be used to define a plurality of scripts for use with any exclusive OR (XOR) based RAID algorithm.
  • the interpretative script language provides an abstraction layer between RAID hardware and RAID algorithms. This abstraction provides greater system flexibility, as a hardware designer can make hardware changes without being concerned about the details of RAID algorithms, while a RAID algorithm designer can make algorithm changes without being concerned about the details of the RAID hardware architecture.
  • the semantics of the interpretative script language may be incorporated into the software stack of a RAID controller, which would permit the RAID controller to generate a plurality of scripts using the interpretative script language.
  • the scripts are preferably generated offline, for example, during system power-up, in order to minimize system overhead while the RAID controller is executing a RAID algorithm.
  • FIG. 1 is a dual parity generation and data recovery system in a networked storage system
  • FIG. 2 is a flow diagram of a method of deriving surviving relationships.
  • the interpretative script language of the present invention is provides an abstraction layer between the hardware and the RAID algorithms of a RAID system. Accordingly, the interpretative script language of the present invention is independent of the implementation details of a RAID system's hardware and algorithm. In the description below, the interpretative script language of the present invention is explained in the context of a RAID system implementing the “surviving relationships algorithm” fully described in U.S. Application Ser. No. 60/553,98 (Attorney Docket A7995.0030/P030) filed Mar. 18, 2004, which is hereby incorporated by reference in its entirety. However, it should be recognized that the principles of the present invention may be practiced with any RAID system utilizing exclusive OR (XOR) operations.
  • XOR exclusive OR
  • FIG. 1 a system 100 that includes at least one host 110 , a storage controller 160 , and a plurality of storage elements 140 a through 140 h, where ‘h’ is not representative of any other value ‘h’ described herein, 140 p, which is representative of P parity data storage, and 140 q, which is representative of Q parity data storage.
  • Storage controller 160 further includes a system computer 150 , a software stack 155 , and a storage transaction controller 120 .
  • Storage transaction controller 120 further includes a system computer interface 121 , a mapping engine 124 , an enhanced parity generation and data regeneration system 126 , and a buffer memory 129 .
  • Enhanced parity generation and data regeneration system 126 further includes a table 128 and a nexus table 130 .
  • Software stack 155 is responsible for initialization and configuration of storage transaction controller 120 .
  • Host 110 is representative of any kind of mechanism that requests data reads and writes to and from storage elements 140 , which may be any type of networked storage system, for example, a fibre channel or SCSI. Individual storage elements 140 may be, for example, SATA or fibre channel drives.
  • Mapping engine 124 is a transaction processor entity that translates all host 110 requests for specific volumes into the actual logical block addresses (LBAs) in storage elements 140 for storage transaction controller 120 .
  • Storage transaction controller 120 is preferably an integrated I/O controller that is fully explained in U.S. patent application Ser. No. 09/716,195 and preferably which further includes a scalable transaction processing pipeline (not shown) that is explained in U.S. patent application Ser. No. 10/429,048, both of which are hereby incorporated by reference.
  • System computer 150 is representative of any processor, which has an operating system and hosts software stack 155 .
  • the operating system is the Linux operating system, however, the present invention may be practiced with other operating systems as well.
  • the scripts generated by the SRA are incorporated into software stack 455 .
  • the software stack 155 initializes table 128 with the SRA script information through system computer interface 121 at boot-up or power-on/reset.
  • Table 128 is any kind of memory element.
  • Nexus table 130 is a look-up table.
  • Nexus table 130 holds two types of nexus lists.
  • a nexus is a list of buffer memory 129 block addresses.
  • a longform nexus has sixty-four such block addresses and a shortform nexus has four such block addresses.
  • Each block address represents thirty-two sectors.
  • a nexus is a scatter-gather list that represents a consolidated buffer memory 129 resource of either 2,048 sectors (longform nexus) or 128 sectors (shortform nexus).
  • FIG. 2 is a flow diagram of a method 200 of deriving surviving relationships.
  • Method 200 includes the following steps:
  • Step 210 Deriving a Candidate Q Relationship Set Based on P Relationship Set Inputs
  • method 200 derives a candidate Q relationship set from a P relationship seed.
  • the symbols in the Q relationships are randomly selected from the Q parity storage element symbols, the P parity storage element symbols, and one symbol each from all but one data storage element. No two Q relationships miss the same data storage element, and no two Q relationships have a common symbol between them. This process repeats until there are as many Q relationships as the number of symbols per column. Method 200 proceeds to step 220 .
  • Step 220 Have All Two Storage Element Failure Combinations Been Evaluated?
  • method 200 determines whether all two storage element failure combinations have been evaluated for this candidate Q relationship set (i.e., can all unresolved symbols be resolved for all failure combinations?). If yes, method 200 proceeds to step 270 , and this Q candidate relationship set is designated as the Q relationship set; if no, initially unresolved symbols for the next two storage element failure combination are identified (32 unresolved symbols are created in any two storage element failure combinations in an 8+2 RAID architecture example) and method 200 proceeds to step 230 .
  • Step 230 Identifying Intact, Surviving, and Non-Surviving Relationships
  • method 200 identifies intact relationships, surviving relationships, and non-surviving relationships. These relationships include both P and Q relationship sets. Method 200 proceeds to step 240 .
  • Step 240 Are There Any Surviving Relationships?
  • method 200 determines whether there are any surviving relationships. If yes, method 200 proceeds to step 250 ; if no, method 200 proceeds to step 260 .
  • Step 250 Resolving Unresolved Symbols
  • method 200 expresses the unknown term as an XOR equation of resolved symbols.
  • disk 1 symbol 2 i.e., D [ 1 , 2 ]
  • D[ 1 , 2 ] is an unknown term
  • it can be resolved by use of the following XOR equation, where ‘ ⁇ circumflex over ( ) ⁇ ’ is equivalent to XOR:
  • D[ 1 , 2 ] Q[ 0 ] ⁇ circumflex over ( ) ⁇ D[ 2 , 6 ] ⁇ circumflex over ( ) ⁇ D[ 3 , 2 ] ⁇ circumflex over ( ) ⁇ D[ 4 , 0 ] ⁇ circumflex over ( ) ⁇ D[ 5 , 3 ] ⁇ circumflex over ( ) ⁇ D[ 6 , 7 ] ⁇ circumflex over ( ) ⁇ D[ 7 , 11 ] ⁇ circumflex over ( ) ⁇ P[ 13 ] Therefore, D[ 1 , 2 ] is resolved and becomes a known term.
  • this particular step illustrates a single resolution; however, multiple resolutions are possible, if there are more surviving relationships.
  • the set of unresolved symbols is updated to remove the newly resolved symbol (D [ 1 , 2 ] for this example).
  • Method 200 returns to step 230 .
  • Step 260 Are All Relationships Intact?
  • method 200 determines whether all the relationships are intact. If yes, method 200 determines that this candidate Q relationship set is the correct set with which to generate parity and/or data for this particular two storage element failure combination and method 200 returns to step 220 ; if no, method 200 returns to step 210 .
  • Step 270 Writing Out Scripts
  • method 200 generates a plurality of scripts that correspond to each failure case. For each failure case (single and dual) evaluated for a successful Q candidate, the XOR equations needed to resolve all missing symbols are written out to a disk file as a script using the semantics described later. Method 200 ends.
  • the disk file is then incorporated onto software stack 155 during compilation of stack 155 source code.
  • the instructions of the script specify the list of locations of the resolved symbols in buffer memory 129 which are to be XOR-ed to recover a missing symbol and the location in buffer memory 129 where the recovered missing symbol (result of XOR) is to be saved.
  • Each script also has an end of script command, so that script execution terminates at the end of the correct script and before the beginning of the next contiguous script. The semantics of this script language are described later, in connection with Table 2.
  • mapping engine 124 determines the corresponding storage elements 140 LBAs ( 140 p, 140 q and 140 a - 140 h ) for the corresponding volume and host 110 LBAs. For cases in which no storage elements 140 have failed and a write operation is requested, mapping engine 124 specifies the offset (start of the relevant script) in table 128 for the script that corresponds to a dual failure by storage elements 140 p and 140 q via a data packet that is known as a RAID 6 buffer command.
  • Table 1 is the format for a RAID 6 buffer command that mapping engine 124 sends to enhanced parity generation and data regeneration system 126 .
  • the entry location in table 128 for the start of the script to be executed is specified in the XorSeqNum field.
  • the nexus pointers indicate the start of each respective nexus in nexus table 130 .
  • the main nexus pointer holds the buffer memory 129 block addresses for data
  • the P-nexus pointer holds the buffer memory 129 block addresses for P parity
  • the Q-nexus pointer holds the buffer memory 129 block addresses for Q parity
  • the scratch nexus pointer holds buffer memory 129 block addresses for intermediate data and parity calculations.
  • Enhanced parity and data regeneration system 126 proceeds to process each command located in table 128 until the end-of-script is reached. At that point, all of the missing symbols caused by a dual drive failure or an update to parity have been regenerated or reconstructed in buffer memory 129 .
  • Table 2 specifies the XOR sequence entry format in table 128 .
  • TABLE 2 XOR sequence entry data format # FieldName Size(Bytes) Description 1 Flags 1 SubfieldName Bit Positions 1.0 Reserved 7 Reserved.
  • NOP 6 A 1 indicates No-operation and the remaining flag bits and fields should be treated as “don't care”.
  • SetSectorCount 5 A 1 indicates that the forth- coming SectorCount_Offset field specifies the XOR- command size in sectors for forthcoming XOR-operations.
  • BeginOfChain 4 A 1 indicates that this is the beginning of XOR chain. When this bit is set, the destination nexus pointer is reset to null.
  • EndOfScript 3 A 1 indicates that this is the last operation in the list of XOR operations associated with a buffer command.
  • Destination 2 A 0 indicates that this entry specifies a source.
  • a 1 indicates that this entry specifies a destination, the destination nexus is set to point to what is specified by NexusSelect.
  • NexusSelect 1:0 00 selects Main_Nexus 01 selects P_Nexus 10 selects Q_Nexus 11 selects Scratch_Nexus 2 SectorCount_Offset 2 When SetSectorCount is set to zero, this field specifies the sector offset in the selected nexus from where a RAID symbol begins.
  • BlockOffset 1 This field specifies the offset into the list of blocks in the selected nexus where the symbol begins. This field is valid only when SetSectorCount is set to zero.
  • Each entry in table 128 is treated as an “instruction” by enhanced parity and data regeneration system 126 .
  • a script is a set of chains, where a chain is a series of instructions for the same destination block addresses; therefore, each chain has a fixed SectorCount value and Destination symbol address.
  • enhanced parity generation and data regeneration system 126 reads the first instruction located in table 128 and executes the instruction. Parity generation and data regeneration system 126 proceeds to the next consecutive instruction entry in table 128 and executes that instruction. The process continues until an end of script instruction is reached.
  • a change in symbol size (SetSectorCount bit is set and SectorCount_Offset is equal to new symbol size) or destination represents the start of a new chain.
  • the script in table 128 may look like the following example, shown in Table 3 below.
  • the chain instructs enhanced parity and data regeneration system 126 to XOR S 1 ⁇ circumflex over ( ) ⁇ S 2 ⁇ circumflex over ( ) ⁇ S 3 ⁇ circumflex over ( ) ⁇ S 4 and put the result into D 1 .
  • the addresses of S 1 through S 4 reside in the Main_nexus (the actual nexus number is specified by the RAID 6 buffer command) in nexus table 130 and the D 1 address resides in the P_nexus the actual nexus number is specified by the RAID 6 buffer command) in nexus table 130 .
  • BlockOffset operand allows enhanced parity and data regeneration system 126 to operate at a higher performance by removing the otherwise required block offset calculation; however, this is not required for the invention to be operable.
  • the previous example assumes a four-input hardware XOR architecture and four symbols.
  • the script method of generating parity and/or data provides an abstraction layer, such that the hardware architecture is independent of the algorithm.
  • the result of S 1 ⁇ circumflex over ( ) ⁇ S 2 is stored in D 1
  • the result of D 1 ⁇ circumflex over ( ) ⁇ S 3 is stored into D 1
  • the result of S 4 and D 1 is stored in D 1 as the final result.
  • enhanced parity and data regeneration system 126 may perform S 1 ⁇ circumflex over ( ) ⁇ S 2 ⁇ circumflex over ( ) ⁇ S 3 ⁇ circumflex over ( ) ⁇ S 4 and store the result into D 1 then perform the operation: D 1 ⁇ circumflex over ( ) ⁇ S 5 ⁇ circumflex over ( ) ⁇ S 6 ⁇ circumflex over ( ) ⁇ S 7 and store that result into D 1 and, finally, perform the operation D 1 ⁇ circumflex over ( ) ⁇ S 8 to obtain the final result.
  • Other hardware architectures and algorithms may be performed by using this system, as may be appreciated by those skilled in the art.
  • the invention described herein provides a method for scripting RAID algorithms and brings in a layer of abstraction between hardware architectures and RAID algorithms.

Abstract

An interpretive script language that provides an abstraction layer between redundant array of independent disks (RAID) algorithms and RAID hardware architecture. The interpretive script language provides greater flexibility and performance over conventional RAID processors. The interpretive script language may be used with any RAID hardware architecture, is not dependent on a specific RAID algorithm, and enables efficient communication to a RAID processor from any entity that desires RAID services. The entity requesting RAID services sends a command to a RAID processor, which includes pointers to a script entry point for scripts stored in a table memory in the RAID processor, and pointers to the data and parity (for example, in a buffer memory) on which to perform exclusive OR (XOR) operations.

Description

  • This application claims the benefit of U.S. provisional patent application Ser. No. 60/571,884, filed May 18, 2004, the disclosure of which is herein incorporated by reference.
  • FIELD OF INVENTION
  • The present invention relates to a method and apparatus for calculating exclusive OR (XOR) operations that can be used in any disk array architecture and which is independent of hardware architecture or RAID algorithms.
  • BACKGROUND OF THE INVENTION
  • With the accelerating growth of Internet and intranet communication, high-bandwidth applications (such as streaming video), and large information databases, the need for networked storage systems has increased dramatically. System performance, data protection, and cost have been some of the main concerns in designing networked storage systems. In the past, many systems have used fibre channel drives because of their speed and reliability. However, fibre channel drives are very costly. Integrated drive electronics (IDE) drives are much cheaper in terms of dollars-per-gigabyte of storage; however, their reliability is inferior to that of fibre channel drives. Furthermore, IDE drives require cumbersome 40-pin cable connections and are not easily replaceable when a drive fails. Serial advanced technology attachment (SATA) drives that use the same receptor as their fibre channel counterparts are now available. These drives, therefore, have the speed required for acceptable system performance and are hot-swappable, meaning that failed drives are easily replaced with new ones. Furthermore, they provide more storage than do fibre channel drives and at a much lower cost. However, SATA drives do not offer the same reliability as do fibre channel drives. Thus, there is an industry push to develop high-capacity storage devices that are low cost and extremely reliable.
  • To improve data reliability, many computer systems implement a RAID system, which is a disk system that includes a collection of multiple disk drives that are organized into a disk array and managed by a common array controller. The array controller presents the array to the user as one or more virtual disks. Disk arrays are the framework to which RAID functionality is added in functional levels in order to produce cost-effective, highly available, high-performance disk systems.
  • In RAID systems, the data is distributed over multiple disk drives to allow parallel operation, and thereby enhance disk access performance, and to provide fault tolerance against drive failures. Currently, a variety of RAID levels from RAID level 0 through RAID level 6 have been specified in the industry. RAID levels 1 through 5 provide a single drive fault tolerance. That is, these RAID levels allow reconstruction of the original data, if any one of the disk drives fails. It is quite possible, however, that more than one SATA drive may fail in a RAID system. For example, dual drive failures are becoming more common, as RAID systems incorporate an increasing number of less expensive disk drives.
  • To provide, in part, a dual-fault tolerance to such failures, the industry has specified a RAID level 6. The RAID 6 architecture is similar to RAID 5, but RAID 6 can overcome the failure of any two disk drives by using an additional parity block for each row (for a storage loss of 2/N). The first parity block (P) is calculated by performing an XOR operation on a set of positionally assigned data sectors (e.g., rows of data sectors). Likewise, the second parity block (Q) is generated by using the XOR function on a set of positionally assigned data sectors (e.g., columns of data sectors). When a pair of disk drives fails, the conventional dual-fault tolerant RAID systems reconstruct the data of the failed drives by using the parity sets. The RAID systems are well known in the art and are amply described, for example, in The RAIDbook, 6th Edition: A Storage System Technology Handbook, edited by Paul Massiglia (1997), which is incorporated herein by reference.
  • One disadvantage of RAID 6 is that it is processor-intensive and requires excessive processor cycles to calculate the many parity and data addresses required to perform RAID 6. As a result, RAID controllers are becoming more complex in order to compensate for the additional processor requirements. As RAID 6 hardware architectures and algorithms become more complex, they also become increasingly vendor-specific and limit a customer's flexibility to mix and match RAID 6 systems, based on cost, performance, or other business related factors. What is needed is a flexible method of processing RAID 6 algorithms on any type of RAID 6 hardware architecture.
  • An example RAID 6 system is described in U.S. Pat. No. 6,513,098, entitled “Method and Apparatus for Scalable Error Correction Code Generation Performance.” The '098 patent describes a scalable memory controller for use in connection with error correction code. According to the invention, the channels of the controller are interconnected to a plurality of parity engines and associated cache memories through use of a switched fabric architecture. A processor is provided for allocating operations that require access to the parity engines or cache memories. By providing multiple parity engines and cache memories, error correction syndrome values can be calculated in parallel. The performance of the controller can be selectively scaled by providing a greater or lesser number of parity engines and associated cache memories. Furthermore, by use of a switched fabric internal architecture, data transfers between the internal components of the controller can be conducted simultaneously.
  • The '098 patent provides a RAID controller that is scalable, based on performance and cost requirements. Although this provides flexibility to the customer, such that the RAID controller is somewhat customizable, it does not provide instant or continuous flexibility, because additional hardware must be physically installed or uninstalled to change the RAID controller configuration. Hence, a method of performing parity calculations that is independent of RAID 6 hardware architecture and algorithms is still needed.
  • It is therefore an object of the invention to provide an improved method of calculating XOR operations for any type of RAID 6 algorithm.
  • It is another object of this invention to provide an improved method of calculating XOR operations for any type of RAID 6 algorithm that is independent of the hardware architecture.
  • SUMMARY OF THE INVENTION
  • The present invention is directed to an interpretative script language which may be used to define a plurality of scripts for use with any exclusive OR (XOR) based RAID algorithm. The interpretative script language provides an abstraction layer between RAID hardware and RAID algorithms. This abstraction provides greater system flexibility, as a hardware designer can make hardware changes without being concerned about the details of RAID algorithms, while a RAID algorithm designer can make algorithm changes without being concerned about the details of the RAID hardware architecture. The semantics of the interpretative script language may be incorporated into the software stack of a RAID controller, which would permit the RAID controller to generate a plurality of scripts using the interpretative script language. The scripts are preferably generated offline, for example, during system power-up, in order to minimize system overhead while the RAID controller is executing a RAID algorithm.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • The foregoing and other advantages and features of the invention will become more apparent from the detailed description of exemplary embodiments of the invention given below with reference to the accompanying drawings, in which:
  • FIG. 1 is a dual parity generation and data recovery system in a networked storage system; and
  • FIG. 2 is a flow diagram of a method of deriving surviving relationships.
  • DETAILED DESCRIPTION OF THE INVENTION
  • The interpretative script language of the present invention is provides an abstraction layer between the hardware and the RAID algorithms of a RAID system. Accordingly, the interpretative script language of the present invention is independent of the implementation details of a RAID system's hardware and algorithm. In the description below, the interpretative script language of the present invention is explained in the context of a RAID system implementing the “surviving relationships algorithm” fully described in U.S. Application Ser. No. 60/553,98 (Attorney Docket A7995.0030/P030) filed Mar. 18, 2004, which is hereby incorporated by reference in its entirety. However, it should be recognized that the principles of the present invention may be practiced with any RAID system utilizing exclusive OR (XOR) operations.
  • Now referring to the drawings, where like reference numerals designate like elements, there is shown in FIG. 1 a system 100 that includes at least one host 110, a storage controller 160, and a plurality of storage elements 140 a through 140 h, where ‘h’ is not representative of any other value ‘h’ described herein, 140 p, which is representative of P parity data storage, and 140 q, which is representative of Q parity data storage. Storage controller 160 further includes a system computer 150, a software stack 155, and a storage transaction controller 120. Storage transaction controller 120 further includes a system computer interface 121, a mapping engine 124, an enhanced parity generation and data regeneration system 126, and a buffer memory 129. Enhanced parity generation and data regeneration system 126 further includes a table 128 and a nexus table 130. Software stack 155 is responsible for initialization and configuration of storage transaction controller 120.
  • Host 110 is representative of any kind of mechanism that requests data reads and writes to and from storage elements 140, which may be any type of networked storage system, for example, a fibre channel or SCSI. Individual storage elements 140 may be, for example, SATA or fibre channel drives. Mapping engine 124 is a transaction processor entity that translates all host 110 requests for specific volumes into the actual logical block addresses (LBAs) in storage elements 140 for storage transaction controller 120. Storage transaction controller 120 is preferably an integrated I/O controller that is fully explained in U.S. patent application Ser. No. 09/716,195 and preferably which further includes a scalable transaction processing pipeline (not shown) that is explained in U.S. patent application Ser. No. 10/429,048, both of which are hereby incorporated by reference. However, it should be recognized that the present invention may also be practiced using other storage transaction controller architectures. System computer 150 is representative of any processor, which has an operating system and hosts software stack 155. In one exemplary embodiment, the operating system is the Linux operating system, however, the present invention may be practiced with other operating systems as well. The scripts generated by the SRA are incorporated into software stack 455. Preferably, the software stack 155 initializes table 128 with the SRA script information through system computer interface 121 at boot-up or power-on/reset.
  • Table 128 is any kind of memory element. Nexus table 130 is a look-up table. Nexus table 130 holds two types of nexus lists. A nexus is a list of buffer memory 129 block addresses. A longform nexus has sixty-four such block addresses and a shortform nexus has four such block addresses. Each block address represents thirty-two sectors. Thus, a nexus is a scatter-gather list that represents a consolidated buffer memory 129 resource of either 2,048 sectors (longform nexus) or 128 sectors (shortform nexus).
  • FIG. 2 is a flow diagram of a method 200 of deriving surviving relationships. Method 200 includes the following steps:
  • Step 210: Deriving a Candidate Q Relationship Set Based on P Relationship Set Inputs
  • In this step, method 200 derives a candidate Q relationship set from a P relationship seed. The symbols in the Q relationships are randomly selected from the Q parity storage element symbols, the P parity storage element symbols, and one symbol each from all but one data storage element. No two Q relationships miss the same data storage element, and no two Q relationships have a common symbol between them. This process repeats until there are as many Q relationships as the number of symbols per column. Method 200 proceeds to step 220.
  • Step 220: Have All Two Storage Element Failure Combinations Been Evaluated?
  • In this decision step, method 200 determines whether all two storage element failure combinations have been evaluated for this candidate Q relationship set (i.e., can all unresolved symbols be resolved for all failure combinations?). If yes, method 200 proceeds to step 270, and this Q candidate relationship set is designated as the Q relationship set; if no, initially unresolved symbols for the next two storage element failure combination are identified (32 unresolved symbols are created in any two storage element failure combinations in an 8+2 RAID architecture example) and method 200 proceeds to step 230.
  • Step 230: Identifying Intact, Surviving, and Non-Surviving Relationships
  • In this step, for the given set of unresolved symbols, method 200 identifies intact relationships, surviving relationships, and non-surviving relationships. These relationships include both P and Q relationship sets. Method 200 proceeds to step 240.
  • Step 240: Are There Any Surviving Relationships?
  • In this decision step, method 200 determines whether there are any surviving relationships. If yes, method 200 proceeds to step 250; if no, method 200 proceeds to step 260.
  • Step 250: Resolving Unresolved Symbols
  • In this step, method 200 expresses the unknown term as an XOR equation of resolved symbols. For example, if disk 1 symbol 2 (i.e., D [1,2 ]) is an unknown term, it can be resolved by use of the following XOR equation, where ‘{circumflex over ( )}’ is equivalent to XOR:
    D[1,2]=Q[0] {circumflex over ( )} D[2,6] {circumflex over ( )} D[3,2] {circumflex over ( )} D[4,0] {circumflex over ( )} D[5,3] {circumflex over ( )} D[6,7] {circumflex over ( )} D[7,11] {circumflex over ( )} P[13]
    Therefore, D[1,2] is resolved and becomes a known term. It should be clear to one skilled in the art that this particular step illustrates a single resolution; however, multiple resolutions are possible, if there are more surviving relationships. The set of unresolved symbols is updated to remove the newly resolved symbol (D [1,2 ] for this example). Method 200 returns to step 230.
  • Step 260: Are All Relationships Intact?
  • In this decision step, method 200 determines whether all the relationships are intact. If yes, method 200 determines that this candidate Q relationship set is the correct set with which to generate parity and/or data for this particular two storage element failure combination and method 200 returns to step 220; if no, method 200 returns to step 210.
  • Step 270: Writing Out Scripts
  • In this step, method 200 generates a plurality of scripts that correspond to each failure case. For each failure case (single and dual) evaluated for a successful Q candidate, the XOR equations needed to resolve all missing symbols are written out to a disk file as a script using the semantics described later. Method 200 ends.
  • The disk file is then incorporated onto software stack 155 during compilation of stack 155 source code.
  • The instructions of the script specify the list of locations of the resolved symbols in buffer memory 129 which are to be XOR-ed to recover a missing symbol and the location in buffer memory 129 where the recovered missing symbol (result of XOR) is to be saved. Each script also has an end of script command, so that script execution terminates at the end of the correct script and before the beginning of the next contiguous script. The semantics of this script language are described later, in connection with Table 2.
  • In the event of single or dual storage elements 140 failure(s), storage controller 120 determines which storage element failure case is applicable. Mapping engine 124 determines the corresponding storage elements 140 LBAs (140 p, 140 q and 140 a-140 h) for the corresponding volume and host 110 LBAs. For cases in which no storage elements 140 have failed and a write operation is requested, mapping engine 124 specifies the offset (start of the relevant script) in table 128 for the script that corresponds to a dual failure by storage elements 140 p and 140 q via a data packet that is known as a RAID 6 buffer command.
  • Table 1 is the format for a RAID 6 buffer command that mapping engine 124 sends to enhanced parity generation and data regeneration system 126.
    TABLE 1
    Format of a RAID 6 buffer command
    Size
    # Field Name (Bytes) Description
    1 Opcode 2 Will be set to R6_XOR_BUF_CMD or
    R6_SCRUB_BUF_CMD to indicate RAID 6
    buffer command nexus
    2 Main_NexusPtr 2 A pointer to the longform nexus, which
    contains or will contain a full RAID 6 stripe
    3 P_NexusPtr 2 A pointer to the shortform nexus that
    contains the P parity
    4 Q_NexusPtr 2 A pointer to the shortform nexus that
    contains the Q parity
    5 Scratch_NexusPtr 2 A pointer to the nexus (either long or
    short form), which is used to hold
    intermediate XOR results
    6 XorSeqNum 2 The Entry number in Table 128, from which
    the enhanced parity and data regeneration
    system
    126 starts executing the XOR
    sequence needed for this RAID 6 Buffer
    command.
  • The buffer command (opcode=R6_XOR_BUF_CMD) instructs enhanced parity and data regeneration system 126 to execute a specified script (specified by XorSeqNum) located in table 128. The entry location in table 128 for the start of the script to be executed is specified in the XorSeqNum field. The nexus pointers indicate the start of each respective nexus in nexus table 130. The main nexus pointer holds the buffer memory 129 block addresses for data, the P-nexus pointer holds the buffer memory 129 block addresses for P parity, the Q-nexus pointer holds the buffer memory 129 block addresses for Q parity, and the scratch nexus pointer holds buffer memory 129 block addresses for intermediate data and parity calculations. Enhanced parity and data regeneration system 126 proceeds to process each command located in table 128 until the end-of-script is reached. At that point, all of the missing symbols caused by a dual drive failure or an update to parity have been regenerated or reconstructed in buffer memory 129.
  • Table 2 specifies the XOR sequence entry format in table 128.
    TABLE 2
    XOR sequence entry data format
    # FieldName Size(Bytes) Description
    1 Flags 1
    SubfieldName Bit
    Positions
    1.0 Reserved 7 Reserved.
    1.1 NOP 6 A 1 indicates No-operation
    and the remaining flag bits
    and fields should be treated
    as “don't care”.
    1.2 SetSectorCount 5 A 1 indicates that the forth-
    coming SectorCount_Offset
    field specifies the XOR-
    command size in sectors for
    forthcoming XOR-operations.
    1.3 BeginOfChain 4 A 1 indicates that this is
    the beginning of XOR chain.
    When this bit is set, the
    destination nexus pointer
    is reset to null.
    1.4 EndOfScript 3 A 1 indicates that this is
    the last operation in the
    list of XOR operations
    associated with a buffer
    command.
    1.5 Destination 2 A 0 indicates that this
    entry specifies a source.
    A 1 indicates that this
    entry specifies a destination,
    the destination nexus is set
    to point to what is specified
    by NexusSelect.
    1.6 NexusSelect 1:0 00 selects Main_Nexus
    01 selects P_Nexus
    10 selects Q_Nexus
    11 selects Scratch_Nexus
    2 SectorCount_Offset 2 When SetSectorCount is set
    to zero, this field specifies
    the sector offset in the
    selected nexus from where a
    RAID symbol begins. If
    SetSectorCount is set to one,
    this field specifies XOR
    command size in sectors for
    forthcoming XOR-operations.
    3 BlockOffset 1 This field specifies the
    offset into the list of blocks
    in the selected nexus where
    the symbol begins. This field is
    valid only when SetSectorCount
    is set to zero.
  • Each entry in table 128 is treated as an “instruction” by enhanced parity and data regeneration system 126. A script is a set of chains, where a chain is a series of instructions for the same destination block addresses; therefore, each chain has a fixed SectorCount value and Destination symbol address.
  • In operation, enhanced parity generation and data regeneration system 126 reads the first instruction located in table 128 and executes the instruction. Parity generation and data regeneration system 126 proceeds to the next consecutive instruction entry in table 128 and executes that instruction. The process continues until an end of script instruction is reached. A change in symbol size (SetSectorCount bit is set and SectorCount_Offset is equal to new symbol size) or destination represents the start of a new chain. For example, the script in table 128 may look like the following example, shown in Table 3 below.
    TABLE 3
    An example RAID interpretive script where each
    group of three fields is an instruction
    Code (binary) Description
    Instruction 0010 0000 SetSectorCount = 1
    0000 0000 1000 0000 SectorCount_Offset = 128
    0001 0101 Begin of chain = true; Set
    Destination D1, DestNexus =
    P nexus
    Instruction 0000 0000 Set Source Symbol S1,
    SourceNexus = Main nexus
    0000 0000 0000 0000 SectorCount_Offset = 0
    0000 0000 BlockOffset = 0
    Instruction 0000 0000 Set Source Symbol S2;
    SourceNexus = Main_nexus
    0000 0001 0000 0000 SectorCount_Offset = 256
    0000 1000 BlockOffset = 8
    Instruction 0000 0000 Set Source Symbol S3;
    SourceNexus = Main_nexus
    0000 0000 1000 0000 SectorCount_Offset = 128
    0000 1100 BlockOffset = 4
    Instruction 0000 1000 Set Source Symbol S4;
    SourceNexus = Main_nexus;
    end of script = true
    0000 0001 1000 0000 SectorCount_Offset = 384
    0000 1100 BlockOffset = 12
    Instruction 0001 0110 //Next chain
    Begin of chain = true; Set
    Destination D2, DestNexus =
    Q_nexus
    0000 0000 0000 0000 SectorCount_Offset = 0
    0000 0000 BlockOffset = 0
  • In this example (which shows only the last chain,of the script), the chain instructs enhanced parity and data regeneration system 126 to XOR S1 {circumflex over ( )} S2 {circumflex over ( )} S3 {circumflex over ( )} S4 and put the result into D1. Note that the addresses of S1 through S4 reside in the Main_nexus (the actual nexus number is specified by the RAID 6 buffer command) in nexus table 130 and the D1 address resides in the P_nexus the actual nexus number is specified by the RAID 6 buffer command) in nexus table 130.
  • The BlockOffset operand allows enhanced parity and data regeneration system 126 to operate at a higher performance by removing the otherwise required block offset calculation; however, this is not required for the invention to be operable.
  • The previous example assumes a four-input hardware XOR architecture and four symbols. However, the script method of generating parity and/or data provides an abstraction layer, such that the hardware architecture is independent of the algorithm. For example, for a two-input hardware architecture, enhanced parity and data regeneration system 126, using the previous example, the result of S1 {circumflex over ( )} S2 is stored in D1, then the result of D1 {circumflex over ( )} S3 is stored into D1 and, finally, the result of S4 and D1 is stored in D1 as the final result. In a four-input hardware architecture and an eight symbol example, enhanced parity and data regeneration system 126 may perform S1 {circumflex over ( )} S2 {circumflex over ( )} S3 {circumflex over ( )} S4 and store the result into D1 then perform the operation: D1 {circumflex over ( )} S5 {circumflex over ( )} S6 {circumflex over ( )} S7 and store that result into D1 and, finally, perform the operation D1 {circumflex over ( )} S8 to obtain the final result. Other hardware architectures and algorithms may be performed by using this system, as may be appreciated by those skilled in the art.
  • Regardless of the hardware architecture for the RAID system or the RAID algorithms themselves, the invention described herein provides a method for scripting RAID algorithms and brings in a layer of abstraction between hardware architectures and RAID algorithms.
  • While the invention has been described in detail in connection with the exemplary embodiment, it should be understood that the invention is not limited to the above disclosed embodiment. Rather, the invention can be modified to incorporate any number of variations, alternations, substitutions, or equivalent arrangements not heretofore described, but which are commensurate with the spirit and scope of the invention. Accordingly, the invention is not limited by the foregoing description or drawings, but is only limited by the scope of the appended claims.

Claims (18)

1. A storage system, comprising:
a plurality of storage elements for storing information comprising data and a parity;
a storage controller for controlling transfer of said information between said plurality of storage elements and at least one host, said storage controller comprising:
a parity unit comprising a script table for storing as a plurality of scripts, each of said scripts defining a set of relationships between said parity and said data;
a computer system coupled to said parity system for creating said plurality of scripts;
wherein each script comprises a set of instructions and respectively corresponds to a failure mode of a set of at least one failed storage elements, such that said parity unit is capable of regenerating information previously stored on the set of at least one failed storage element by executing said set of instructions.
2. The storage system of claim 1, wherein each relationship comprises a plurality of exclusive-OR (XOR) operations between said data and said parity.
3. The storage system of claim 1, wherein said storage controller further comprises:
a mapping engine coupled to said parity unit for mapping an address asserted by said at least one host into an address space of said plurality of storage elements; and
a buffer, for storing information in transit between said at least one host and said plurality of storage elements.
4. The storage system of claim 3, wherein said mapping engine identifies one of said plurality of scripts stored in said script table when said storage controller receives a write command and write data from said at least one host.
5. The storage system of claim 4, wherein said parity unit executes instructions in said one of said plurality of scripts to generate parity associated with said write data.
6. The storage system of claim 4, wherein said mapping engine identifies said one of said plurality of scripts by issuing a buffer instruction to said parity unit.
7. The storage system of claim 6, wherein said parity system further comprises a nexus table for storing a plurality of nexuses, each nexus comprising a plurality of sector addresses in said plurality of storage elements.
8. The storage system of claim 7, wherein said buffer instruction comprises:
an operational code identifying said buffer instruction;
a pointer to a first nexus corresponding to a complete stripe of said plurality of storage elements;
a set of pointers to a set of second nexuses corresponding to parity information;
a pointer to a nexus for holding intermediate calculation results; and
an identifier corresponding to one of said plurality of scripts stored in said script table.
9. The storage system of claim 8, wherein said parity unit maintains a P-parity and a Q-parity, and said set of pointers to said set of second nexuses include a nexus associated with said P-parity and a nexus associated with said Q-parity.
10. The storage system of claim 7, wherein said nexus table include a plurality of short form nexuses for storing a relatively small number of sector addresses and a plurality of long form nexuses for storing a relatively large number of sector addresses.
11. The storage system of claim 10, wherein each long form nexus stores 2048 sector addresses.
12. The storage system of claim 10, wherein each short form nexus stores 128 sector addresses.
13. The storage system of claim 8, wherein each instruction in each script comprises:
a first field for selecting one of said nexuses in said buffer instruction;
a second field for storing either:
a sector address offset associated with a RAID symbol in said selected one of said nexuses in said buffer instruction, or
a number of sectors to be part of an exclusive-OR operation; and
a third field for storing a block address offset associated with a RAID symbol in said selected one of said nexuses in said buffer instruction.
14. The storage system of claim 13, wherein said first field comprise:
a first subfield for indicating whether to treat said instruction as a no operation (NOP) instruction;
a second subfield for indicating whether said second field stores said sector address offset or said number of sectors;
a third subfield for indicating whether said instruction corresponds to a beginning of a chain of exclusive-OR operations;
a fourth subfield for indicating whether said instruction corresponds to a last instruction in said script;
a fifth subfield for indicating whether said instruction is associated with a source or a destination; and
a sixth subfield for selecting one of the plurality of nexuses in a buffer instruction.
15. A method for operating a storage system, comprising:
at a power-on or restart of said storage system:
creating a plurality of scripts, each one of said plurality of scripts comprising a set of instructions respectively corresponding to a failure mode of a set of at least one failed storage element in said storage system.
16. The method of claim 15, wherein said initialization comprises:
identifying a set comprising plurality of unresolved RAID symbols;
repeatedly:
defining a relationship to resolve one of said unresolved RAID symbols; and
removing said one of said unresolved RAID symbols from said set until said set of unresolved RAID symbol is an empty set; and
writing out a plurality of scripts corresponding to each defined relationship.
17. The method of claim 15, further comprising:
receiving, from a host, a read command including a read address;
responsive to said read command, reading information from a plurality of storage elements associated with said read address;
if a set of at least one storage element associated with said read address cannot be read,
identifying a script associated said set;
executing instructions in said script to regenerate information previously stored on said set of at least one storage elements; and
sending to said host, data associated with said read address.
18. The method of claim 15, further comprising:
receiving, from a host, a write command including write data;
responsive to said write command, identifying a script associated with said write data;
executing instructions in said script to generate parity associated with said write data;
writing, to a plurality of storage elements of said storage system, said write data and parity associated with said write data.
US11/010,435 2004-05-18 2004-12-14 Method of implementing XOR based raid algorithms Abandoned US20050273651A1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US11/010,435 US20050273651A1 (en) 2004-05-18 2004-12-14 Method of implementing XOR based raid algorithms
US12/332,185 US7827469B2 (en) 2004-05-18 2008-12-10 Method of implementing XOR based RAID algorithms

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US57188404P 2004-05-18 2004-05-18
US11/010,435 US20050273651A1 (en) 2004-05-18 2004-12-14 Method of implementing XOR based raid algorithms

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US12/332,185 Division US7827469B2 (en) 2004-05-18 2008-12-10 Method of implementing XOR based RAID algorithms

Publications (1)

Publication Number Publication Date
US20050273651A1 true US20050273651A1 (en) 2005-12-08

Family

ID=35450340

Family Applications (2)

Application Number Title Priority Date Filing Date
US11/010,435 Abandoned US20050273651A1 (en) 2004-05-18 2004-12-14 Method of implementing XOR based raid algorithms
US12/332,185 Expired - Fee Related US7827469B2 (en) 2004-05-18 2008-12-10 Method of implementing XOR based RAID algorithms

Family Applications After (1)

Application Number Title Priority Date Filing Date
US12/332,185 Expired - Fee Related US7827469B2 (en) 2004-05-18 2008-12-10 Method of implementing XOR based RAID algorithms

Country Status (1)

Country Link
US (2) US20050273651A1 (en)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060106808A1 (en) * 2004-11-17 2006-05-18 Kalos Matthew J Maintaining and using nexus information on a host, port and device connection
US20060129760A1 (en) * 2004-11-04 2006-06-15 Sanjay Subbarao Method and system for recovering from multiple drive failures
US9760312B2 (en) * 2010-08-06 2017-09-12 Dhk Storage, Llc RAID devices, systems, and methods
US20200012805A1 (en) * 2018-07-03 2020-01-09 Tyson York Winarski Distributed network for storing a redundant array of independent blockchain blocks
US10877843B2 (en) * 2017-01-19 2020-12-29 International Business Machines Corporation RAID systems and methods for improved data recovery performance

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050273651A1 (en) * 2004-05-18 2005-12-08 Aristos Logic Corporation Method of implementing XOR based raid algorithms
KR102248207B1 (en) 2014-10-30 2021-05-06 삼성전자주식회사 Storage device and operating method thereof
US11194663B2 (en) * 2019-09-20 2021-12-07 DigitalOcean, LLC Protocol for improving rebuild times of redundant array of independent disks

Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5134619A (en) * 1990-04-06 1992-07-28 Sf2 Corporation Failure-tolerant mass storage system
US5499253A (en) * 1994-01-05 1996-03-12 Digital Equipment Corporation System and method for calculating RAID 6 check codes
US6101615A (en) * 1998-04-08 2000-08-08 International Business Machines Corporation Method and apparatus for improving sequential writes to RAID-6 devices
US6112255A (en) * 1997-11-13 2000-08-29 International Business Machines Corporation Method and means for managing disk drive level logic and buffer modified access paths for enhanced raid array data rebuild and write update operations
US6185652B1 (en) * 1998-11-03 2001-02-06 International Business Machin Es Corporation Interrupt mechanism on NorthBay
US6327672B1 (en) * 1998-12-31 2001-12-04 Lsi Logic Corporation Multiple drive failure tolerant raid system
US6453428B1 (en) * 1998-07-17 2002-09-17 Adaptec, Inc. Dual-drive fault tolerant method and system for assigning data chunks to column parity sets
US6513098B2 (en) * 2001-05-25 2003-01-28 Adaptec, Inc. Method and apparatus for scalable error correction code generation performance
US6760862B1 (en) * 2001-05-22 2004-07-06 Emc Corporation Methods and apparatus for performing a maintenance procedure on a data storage system
US6912676B1 (en) * 1999-09-02 2005-06-28 International Business Machines Automated risk assessment tool for AIX-based computer systems
US7080199B2 (en) * 2003-07-15 2006-07-18 Lsi Logic Corporation Method to maintain data integrity during flash file transfer to raid controller flash using a terminal emulation program
US7167915B2 (en) * 2002-10-18 2007-01-23 International Business Machines Corporation Monitoring storage resources used by computer applications distributed across a network
US7212369B1 (en) * 2003-08-15 2007-05-01 Maxtor Corporation Method and apparatus for performing a spiral self-servo write operation in a disk drive using an auto detection scheme
US7246259B2 (en) * 2004-03-18 2007-07-17 Aristos Logic Coporation Method of calculating parity for surviving dual drive failures in a disk array

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5574851A (en) * 1993-04-19 1996-11-12 At&T Global Information Solutions Company Method for performing on-line reconfiguration of a disk array concurrent with execution of disk I/O operations
US5784393A (en) * 1995-03-01 1998-07-21 Unisys Corporation Method and apparatus for providing fault detection to a bus within a computer system
US5790775A (en) * 1995-10-23 1998-08-04 Digital Equipment Corporation Host transparent storage controller failover/failback of SCSI targets and associated units
US6085333A (en) * 1997-12-19 2000-07-04 Lsi Logic Corporation Method and apparatus for synchronization of code in redundant controllers in a swappable environment
US6311320B1 (en) * 1998-12-07 2001-10-30 Lsi Logic Corporation Alterable scripting tool and method
US6622302B1 (en) * 2000-06-30 2003-09-16 Lsi Logic Corporation Methods and apparatus for dynamic version transition of management applications and attached subsystems
US6687872B2 (en) * 2001-03-14 2004-02-03 Hewlett-Packard Development Company, L.P. Methods and systems of using result buffers in parity operations
US7062702B2 (en) * 2001-03-14 2006-06-13 Hewlett-Packard Development Company, L.P. Efficient parity operations
US6567891B2 (en) * 2001-03-14 2003-05-20 Hewlett-Packard Development Company, L.P. Methods and arrangements for improved stripe-based processing
US6766480B2 (en) * 2001-03-14 2004-07-20 Hewlett-Packard Development Company, L.P. Using task description blocks to maintain information regarding operations
US6792505B2 (en) * 2001-04-16 2004-09-14 International Business Machines Corporation System apparatus and method for storage device controller-based message passing having effective data channel bandwidth and controller cache memory increase
US7376756B2 (en) * 2003-11-03 2008-05-20 Lsi Corporation HDD firmware download
US20050273651A1 (en) * 2004-05-18 2005-12-08 Aristos Logic Corporation Method of implementing XOR based raid algorithms
US7412563B2 (en) * 2004-08-04 2008-08-12 Aristos Logic Corporation Method and system for calculating single and dual parity for networked storaged elements
US7555701B2 (en) * 2004-11-04 2009-06-30 Adaptec, Inc. Method and system for recovering from multiple drive failures

Patent Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5134619A (en) * 1990-04-06 1992-07-28 Sf2 Corporation Failure-tolerant mass storage system
US5499253A (en) * 1994-01-05 1996-03-12 Digital Equipment Corporation System and method for calculating RAID 6 check codes
US6112255A (en) * 1997-11-13 2000-08-29 International Business Machines Corporation Method and means for managing disk drive level logic and buffer modified access paths for enhanced raid array data rebuild and write update operations
US6101615A (en) * 1998-04-08 2000-08-08 International Business Machines Corporation Method and apparatus for improving sequential writes to RAID-6 devices
US6453428B1 (en) * 1998-07-17 2002-09-17 Adaptec, Inc. Dual-drive fault tolerant method and system for assigning data chunks to column parity sets
US6185652B1 (en) * 1998-11-03 2001-02-06 International Business Machin Es Corporation Interrupt mechanism on NorthBay
US6327672B1 (en) * 1998-12-31 2001-12-04 Lsi Logic Corporation Multiple drive failure tolerant raid system
US6912676B1 (en) * 1999-09-02 2005-06-28 International Business Machines Automated risk assessment tool for AIX-based computer systems
US6760862B1 (en) * 2001-05-22 2004-07-06 Emc Corporation Methods and apparatus for performing a maintenance procedure on a data storage system
US6513098B2 (en) * 2001-05-25 2003-01-28 Adaptec, Inc. Method and apparatus for scalable error correction code generation performance
US7167915B2 (en) * 2002-10-18 2007-01-23 International Business Machines Corporation Monitoring storage resources used by computer applications distributed across a network
US7080199B2 (en) * 2003-07-15 2006-07-18 Lsi Logic Corporation Method to maintain data integrity during flash file transfer to raid controller flash using a terminal emulation program
US7212369B1 (en) * 2003-08-15 2007-05-01 Maxtor Corporation Method and apparatus for performing a spiral self-servo write operation in a disk drive using an auto detection scheme
US7246259B2 (en) * 2004-03-18 2007-07-17 Aristos Logic Coporation Method of calculating parity for surviving dual drive failures in a disk array

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060129760A1 (en) * 2004-11-04 2006-06-15 Sanjay Subbarao Method and system for recovering from multiple drive failures
US7555701B2 (en) 2004-11-04 2009-06-30 Adaptec, Inc. Method and system for recovering from multiple drive failures
US20060106808A1 (en) * 2004-11-17 2006-05-18 Kalos Matthew J Maintaining and using nexus information on a host, port and device connection
US7694038B2 (en) * 2004-11-17 2010-04-06 International Business Machines Corporation Maintaining and using nexus information on a host, port and device connection
US9760312B2 (en) * 2010-08-06 2017-09-12 Dhk Storage, Llc RAID devices, systems, and methods
US10877843B2 (en) * 2017-01-19 2020-12-29 International Business Machines Corporation RAID systems and methods for improved data recovery performance
US20200012805A1 (en) * 2018-07-03 2020-01-09 Tyson York Winarski Distributed network for storing a redundant array of independent blockchain blocks
US10540514B1 (en) * 2018-07-03 2020-01-21 Tyson York Winarski Distributed network for storing a redundant array of independent blockchain blocks
US11017112B2 (en) * 2018-07-03 2021-05-25 Tyson York Winarski Distributed network for storing a redundant array of independent blockchain blocks

Also Published As

Publication number Publication date
US7827469B2 (en) 2010-11-02
US20090094479A1 (en) 2009-04-09

Similar Documents

Publication Publication Date Title
US7827469B2 (en) Method of implementing XOR based RAID algorithms
US10922172B2 (en) On the fly raid parity calculation
US7529970B2 (en) System and method for improving the performance of operations requiring parity reads in a storage array system
US7315976B2 (en) Method for using CRC as metadata to protect against drive anomaly errors in a storage array
US5720027A (en) Redundant disc computer having targeted data broadcast
US5375128A (en) Fast updating of DASD arrays using selective shadow writing of parity and data blocks, tracks, or cylinders
JP2981245B2 (en) Array type disk drive system and method
US8839028B1 (en) Managing data availability in storage systems
JP3129732B2 (en) Storage array with copy-back cache
US8583984B2 (en) Method and apparatus for increasing data reliability for raid operations
CA2213003C (en) Parity calculation for raid write cache
JP5124792B2 (en) File server for RAID (Redundant Array of Independent Disks) system
TWI501080B (en) System and method for loose coupling between raid volumes and drive groups
JPH06202817A (en) Disk array device and data updating method for the same
WO2005109167A2 (en) Method and system for storing data in an array of storage devices with additional and autonomous protection
JP2000207136A (en) Multi-drive fault-tolerance raid algorithm
US7743308B2 (en) Method and system for wire-speed parity generation and data rebuild in RAID systems
US5896493A (en) Raid algorithm using a multimedia functional unit
US7039758B2 (en) Disk array system based on disks with a fixed-length unit of access
US7412563B2 (en) Method and system for calculating single and dual parity for networked storaged elements
US7240237B2 (en) Method and system for high bandwidth fault tolerance in a storage subsystem
US5574736A (en) Data storage device and method of operation
JP5360666B2 (en) Method and system for performing I / O operations of multiple disk arrays
US7246259B2 (en) Method of calculating parity for surviving dual drive failures in a disk array
US5659677A (en) Data storage apparatus for disk array

Legal Events

Date Code Title Description
AS Assignment

Owner name: ARISTOS LOGIC CORPORATION, CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:SUBBARAO, SANJAY;REEL/FRAME:016090/0593

Effective date: 20041208

STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION