Redundant Memory Array Parity Layout for Faster RAID Rebuilds

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

As RAID 6 systems grow in size, the probability of multiple memory unit failures increases, leading to longer rebuild times and the need for additional expensive parity memory units, which is inefficient and vulnerable to data loss.

Innovation Solution

The system partitions memory units into proper subsets, with each subset protected by a first-level parity block and the entire array protected by a second-level parity block, allowing for efficient recovery from two data or parity block failures without full reconstruction, reducing rebuild time and resource usage.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Quantity of substance

If the array size increases to improve storage capacity, then the storage capacity is improved, but the probability of multiple memory unit failure increases and rebuild time increases

Engineering Contradiction:
Improvestorage capacityVSAvoidprobability of multiple memory unit failure
Core Design Contradiction:
Quantity of substanceVSReliability

Solution Approach 1:

The patent divides the memory array into multiple stripes, where each stripe is a manageable subset of the total array. This segmentation allows the system to handle failures at the stripe level rather than array-wide, reducing the impact of failures and rebuild complexity even as total array size grows.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces a hierarchical parity structure with first-level parity blocks for individual data blocks and second-level parity blocks for entire stripes. This adds a dimensional layer of redundancy organization that enables efficient recovery without requiring full array reconstruction, addressing reliability concerns in large arrays.

Inventive Principle:
Principle #17Another dimension (Dimensionality change)

2Reliability

If traditional RAID 6 is used to protect against multiple memory unit failure, then reliability is improved, but additional expensive parity memory units are required

Engineering Contradiction:
Improveprotection against multiple memory unit failureVSAvoidadditional parity memory units
Core Design Contradiction:
ReliabilityVSQuantity of substance

Solution Approach 1:

The second-level parity blocks serve multiple stripes simultaneously, providing universal protection across the array. This multi-functional approach allows a single parity block to protect multiple data blocks across different stripes, reducing the total number of parity units needed compared to traditional RAID 6.

Inventive Principle:
Principle #6Universality (Multi-functionality)

Solution Approach 2:

By organizing parity at two levels (block-level first-level parity and stripe-level second-level parity), the system creates a hierarchical redundancy structure that provides multiple failure protection with fewer total parity units than conventional approaches.

Inventive Principle:
Principle #17Another dimension (Dimensionality change)

3Quantity of substance

If the array size increases, then storage capacity is improved, but the time required to rebuild failed memory units increases

Engineering Contradiction:
Improvestorage capacityVSAvoidrebuild time
Core Design Contradiction:
Quantity of substanceVSLoss of time

Solution Approach 1:

By organizing data into stripes with localized first-level parity blocks, the system enables rebuild operations to be confined to individual stripes rather than requiring access to the entire array. This segmentation dramatically reduces rebuild time even as total storage capacity increases.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The system pre-calculates and stores first-level parity blocks for each data block within stripes, and second-level parity blocks for entire stripes. This preliminary preparation of redundancy information enables rapid recovery operations without requiring complex real-time calculations across the entire array.

Inventive Principle:
Principle #10Preliminary action

4Loss of time

If split arrays are used to manage array size, then rebuild time is reduced, but each split array requires its own additional parity memory units which is expensive

Engineering Contradiction:
Improverebuild timeVSAvoidadditional parity memory units
Core Design Contradiction:
Loss of timeVSQuantity of substance

Solution Approach 1:

The patent merges multiple stripes into a single logical array while sharing second-level parity blocks across stripes. This consolidation allows the system to achieve the rebuild efficiency of smaller arrays without duplicating parity resources for each split, reducing the total number of parity units required.

Inventive Principle:
Principle #5Merging (Combining)

Solution Approach 2:

Second-level parity blocks serve multiple stripes simultaneously, providing universal protection that eliminates the need for separate parity units for each stripe or split array, thereby reducing overall parity requirements while maintaining fast rebuild capability.

Inventive Principle:
Principle #6Universality (Multi-functionality)

Data Source

PatentUS8156405B1Efficient redundant memory unit array
Publication Date: 2012.04.10 EMC IP HLDG CO LLC
  • US8156405B1 patent drawing
  • US8156405B1 patent drawing
  • US8156405B1 patent drawing

AI summary

A method of storing data is disclosed. A set of data blocks, including a plurality of proper subsets of data blocks, is stored. A plurality of first-level parity blocks is generated, wherein each first-level parity block is generated from a corresponding proper subset of data blocks within the plurality of proper subsets of data blocks without reference to other data blocks not in the corresponding proper subset. A second-level parity block is generated, wherein the second level parity block is generated from a plurality of data blocks included in at least two of the plurality of proper subsets of data blocks, and wherein recovery of a lost block in a given proper subset of data blocks is possible without reference to any data blocks not in the given proper subset.