IP Library Granted Patent US 8,412,979
Granted Patent B2
US 8,412,979 · App. 13/182,315 · Granted Apr 2, 2013

Apparatus, system, and method for data storage using progressive raid

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,412,979
App. No.
13/182,315
Granted
Apr 2, 2013
Kind
B2
Abstract

An apparatus, system, and method are disclosed for data storage with progressive redundant array of independent drives (“RAID”). A storage request receiver module, a striping module, a parity-mirror module, and a parity progression module are included. The storage request receiver module receives a request to store data of a file or of an object. The striping module calculates a stripe pattern for the data. The stripe pattern includes one or more stripes, and each stripe includes a set of N data segments. The striping module writes the N data segments to N storage devices. Each data segment is written to a separate storage device within a set of storage devices assigned to the stripe. The parity-mirror module writes a set of N data segments to one or more parity-mirror storage devices within the set of storage devices. The parity progression module calculates a parity data segment on each parity-mirror device in response to a storage consolidation operation, and stores the parity data segments. The storage consolidation operation is conducted to recover storage space and/or data on a parity-mirror storage device.

Claims (38)

1. A method for reliable, high performance storage of data, the method comprising:

calculating a stripe pattern for data to be stored and writing N data segments to N storage devices within a set of storage devices, wherein each of the N data segments is written to a separate storage device;

writing the N data segments of the stripe to a parity-mirror storage device within the set of storage devices, the parity-mirror storage device being in addition to the N storage devices; and

recovering a data segment stored on an unavailable storage device of the N storage devices in response to a request to read the data segment, the data segment recovered from a corresponding data segment stored on the parity-mirror storage device prior to a parity progression module generating one or more parity data segments for the stripe and storing the one or more parity data segments on the parity-mirror storage device.

2. The method of claim 1 , further comprising calculating the one or more parity data segments for the stripe and storing the one or more parity data segments on the parity-mirror storage device in response to a storage consolidation operation.

3. The method of claim 2 , wherein the storage consolidation operation comprises one of a garbage collection operation, a defragmentation operation, an error recovery operation, and a data recovery operation.

4. The method of claim 1 , further comprising calculating the one or more parity data segments for the stripe and storing the one or more parity data segments on the parity-mirror storage device in response to a storage space requirement on the parity-mirror storage device.

5. The method of claim 1 , further comprising delaying generating the one or more parity data segments until available storage space drops below a minimum threshold.

6. The method of claim 1 , further comprising calculating the one or more parity data segments for the stripe from the N data segments stored on the parity-mirror storage device.

7. The method of claim 1 , further comprising:

receiving an updated data segment, the updated data segment corresponding to an existing data segment of the N data segments;

replacing the existing data segment stored on a storage device of the N storage devices with the updated data segment;

replacing the corresponding existing data segment stored on the parity-mirror storage device with the updated data segment prior to the parity progression module generating one or more parity data segments for the stripe and storing the one or more parity data segments on the parity-mirror storage device.

8. The method of claim 1 , further comprising storing the recovered data segment onto a replacement storage device in a rebuild operation to restore data segments onto the replacement storage device to match data segments stored previously on the unavailable storage device, the recovered data segment recovered for the rebuild operation from a matching data segment stored on the parity-mirror storage device.

9. The method of claim 1 , further comprising creating one or more storage device sets in addition to the storage device set, wherein each of the one or more additional storage device sets write the N data segments to N storage devices of each of the one or more additional storage sets and store a set of the N data segments on a parity-mirror storage device.

10. A method for reliable, high performance storage of data, the method comprising:

calculating a stripe pattern for data to be stored and writing N data segments to N storage devices within a set of storage devices, wherein each of the N data segments is written to a separate storage device;

writing the N data segments of the stripe to a parity-mirror storage device within the set of storage devices, the parity-mirror storage device being in addition to the N storage devices; and

recovering a data segment for an unavailable storage device of the N storage devices using one or more parity data segments stored on the parity-mirror storage device by a parity progression module.

11. The method of claim 10 , further comprising calculating the one or more parity data segments for the stripe and storing the one or more parity data segments on the parity-mirror storage device in response to a storage consolidation operation.

12. The method of claim 10 , further comprising calculating the one or more parity data segments for the stripe and storing the one or more parity data segments on the parity-mirror storage device in response to a storage space requirement on the parity-mirror storage device.

13. The method of claim 10 , further comprising calculating the one or more parity data segments for the stripe from the N data segments of the stripe stored on the parity-mirror storage device.

14. The method of claim 10 , further comprising delaying generating the one or more parity data segments until available storage space drops below a minimum threshold.

15. The method of claim 10 , further comprising:

receiving an updated data segment corresponding to an existing data segment of the N data segments;

copying the updated data segment to a storage device storing a corresponding existing data segment and copying the updated data segment to the parity-mirror storage device; and

calculating one or more updated parity data segments for the parity-mirror storage device and storing the one or more updated parity data segments on the parity-mirror storage device.

16. The method of claim 10 , further comprising storing a recovered data segment onto a replacement storage device in a rebuild operation to restore data segments onto the replacement storage device, the recovered data segment recovered for the rebuild operation from available data segments of the N data segments.

17. The method of claim 10 , further comprising rebuilding a recovered parity data segment matching an unavailable parity data segment stored on an unavailable parity-mirror storage device, the recovered parity data segment rebuilt using one of a second set of storage devices storing a mirror copy of the stripe and available data segments stored on one or more of the set of storage devices and the second set of storage devices.

18. The method of claim 10 , further comprising creating one or more storage device sets in addition to the storage device set, wherein each of the one or more additional storage sets, store a set of the N data segments on the parity-mirror storage device, calculate the one or more parity data segments and store the one or more parity data segments on the parity-mirror storage device, calculate one or more parity data segments and store the one or more parity data segments one the parity-mirror storage device.

19. A system comprising:

a set of storage devices comprising N storage devices and a parity-mirror storage device in addition to the N storage devices;

a processor;

a memory comprising modules for execution by the processor, the memory comprising:

a striping module configured to calculate a stripe pattern for data to be stored and writing N data segments to the N storage devices within the set of storage devices, wherein each of the N data segments is written to a separate storage device;

a parity-mirror module configured to write the N data segments of the stripe to the parity-mirror storage device within the set of storage devices; and

a pre-consolidation restoration module configured to recover a data segment stored on an unavailable storage device of the N storage devices in response to a request to read the data segment, the data segment recovered from a corresponding data segment stored on the parity-mirror storage device prior to a parity progression module generating one or more parity data segments for the stripe and storing the one or more parity data segments on the parity-mirror storage device.

20. The system of claim 19 , further comprising a server housing the set of storage devices, the processor, and the memory.

Assignments (9)
CHANGE OF NAME Recorded May 25, 2016
From: SANDISK TECHNOLOGIES INC
To: SANDISK TECHNOLOGIES LLC
Reel/Frame 038807/0850 →
RELEASE OF SECURITY INTEREST Recorded May 4, 2016
From: FUSION-IO, INC.
To: SANDISK CORPORATION
Reel/Frame 038748/0880 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 13, 2016
From: INTELLIGENT INTELLECTUAL PROPERTY HOLDINGS 2 LLC
To: PS12 LUXCO S.A.R.L.
Reel/Frame 038362/0575 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 13, 2016
From: PS12 LUXCO S.A.R.L.
To: LONGITUDE ENTERPRISE FLASH S.A.R.L.
Reel/Frame 038362/0604 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 31, 2016
From: LONGITUDE ENTERPRISE FLASH SARL
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 038324/0628 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 26, 2014
From: FUSION-IO, INC.
To: INTELLIGENT INTELLECTUAL PROPERTY HOLDINGS 2 LLC
Reel/Frame 033419/0748 →
SECURITY INTEREST Recorded Jul 24, 2014
From: INTELLIGENT INTELLECTUAL PROPERTY HOLDINGS 2 LLC
To: FUSION-IO, INC.
Reel/Frame 033410/0158 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 23, 2014
From: FUSION-IO, INC.
To: INTELLECTUAL PROPERTY HOLDINGS 2 LLC
Reel/Frame 033389/0511 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 15, 2011
From: FLYNN, DAVID; ATKISSON, DAVID; THATCHER, JONATHAN; ZAPPE, MICHAEL
To: FUSION-IO, INC.
Reel/Frame 026596/0900 →