IP Library Granted Patent US 8,281,227
Granted Patent B2
US 8,281,227 · App. 12/468,041 · Granted Oct 2, 2012

Apparatus, system, and method to increase data integrity in a redundant storage system

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,281,227
App. No.
12/468,041
Granted
Oct 2, 2012
Kind
B2
Abstract

An apparatus, system, and method are disclosed to increase data integrity in a redundant storage system. The receive module receives a read request to read data from a logical page spanning an array of N+P number of storage elements. The array of storage elements includes N number of the storage elements each storing a portion of an ECC chunk and P number of the storage elements storing parity data. The data read module reads data from at least a portion of a physical page on each of X number of storage elements of the N+P number of storage elements where X equals N. The regeneration module regenerates missing data. The ECC module determines if the read data and any regenerated missing data includes an error. The read data combined with any regenerated missing data includes the ECC chunk.

Claims (42)

1. An apparatus for data integrity in a redundant storage system, the apparatus comprising:

a receive module configured to receive a read request to read data (“requested data”) from a logical page, the logical page spanning an array of N+P number of storage elements, the array of storage elements comprising N number of the storage elements each storing a portion of an ECC chunk and P number of the storage elements storing parity data, the ECC chunk comprising stored data and Error Correcting Code (“ECC”) generated from the stored data wherein the ECC spans the stored data and the stored data comprises the requested data, the P number of storage elements storing parity data generated from the ECC chunk stored in the N number of the storage elements, each storage element comprising non-volatile solid-state storage;

a data read module configured to read data (“read data”) from at least a portion of a physical page on each of X number of storage elements of the N+P number of storage elements in response to the receive module receiving the read request, wherein X equals N, the physical pages on the X number of storage elements comprising a portion of the logical page;

a regeneration module configured to use the parity data read by the data read module and a remainder of the read data that is not parity data to regenerate missing data in response to a portion of the read data comprising parity data, wherein the missing data combined with the remainder of the read data comprises the ECC chunk; and

an ECC module configured to determine whether the read data and any regenerated missing data comprises an error, wherein the read data combined with any regenerated missing data comprises the ECC chunk.

2. The apparatus of claim 1 , further comprising:

an ECC check module configured to determine whether the errors are correctable using the ECC stored in the ECC chunk in response to the ECC module determining that the ECC chunk comprises errors; and

a substitution module configured to read data (“substitute data”) from a storage element not read by the data read module (“substitute storage element”) and use the substitute data and read data to replace data from a storage element with errors to generate an ECC chunk (“substitute ECC chunk”) comprising one of no errors and a number of errors that are correctable, each in response to the ECC check module determining that the errors are uncorrectable using the ECC.

3. The apparatus of claim 2 , further comprising a device error determination module configured to determine which storage element comprises data with the errors.

4. The apparatus of claim 2 , further comprising an ECC correction module configured to use the ECC and data from the ECC chunk to correct errors in the data.

5. The apparatus of claim 1 , further comprising a periodic read module configured to periodically read data from the one or more storage elements not read by the data read module.

6. The apparatus of claim 1 , wherein the data read module is configured to read data from the same storage elements for each read.

7. The apparatus of claim 1 , further comprising a parity rotation module configured to, for a storage subset of each storage element, alternate which storage elements of the logical page store parity data, wherein each storage subset comprises at least a portion of a storage element and a logical storage subset comprises a storage subset on each storage element of the array.

8. The apparatus of claim 7 , wherein a storage subset comprises one of a portion of a physical page, a physical page, a portion of a physical erase block, a physical erase block, a device, a chip, and a die.

9. The apparatus of claim 7 , wherein, for a logical storage subset, the rotation module is configured to alternate which storage element to store parity data after a storage space recovery operation, the storage space recovery operation comprising copying valid data out of the logical storage subset and erasing the logical storage subset to prepare the logical storage subset for storing newly written data.

10. The apparatus of claim 1 , wherein the data read module further comprises a read rotation module configured to rotate storage elements of the X number of storage elements from which the data read module reads data.

11. The apparatus of claim 1 , wherein each storage element comprises one of a device, a chip, a portion of a chip and a die.

12. The apparatus of claim 1 , wherein the portion of the ECC chunk stored on each of the N storage elements is stored on at least a portion of a physical page of each of the storage elements.

13. The apparatus of claim 1 , wherein the data read module is configured to read data from the N number of storage elements storing at least a portion of the ECC chunk and does not read data from the P number of storage elements storing parity data.

14. The apparatus of claim 1 , wherein the P number of storage elements that store parity data comprise a data mirror and comprise a copy of the data stored in the N number of data storage elements instead of parity data.

15. A system for data integrity in a redundant storage system, the system comprising:

an array of N+P number of storage elements, the array of storage elements comprising N number of the storage elements each storing a portion of an ECC chunk and P number of the storage elements storing parity data, the ECC chunk comprising stored data and error correcting code (“ECC”) generated from the stored data wherein the ECC spans the stored data, the P number of storage elements configured to store parity data generated from the ECC chunk stored in the N number of the storage elements, each storage element comprising non-volatile solid-state storage;

a storage controller configured to control the array;

a receive module configured to receive a read request to read data (“requested data”) from a logical page, the logical page spanning the array of N+P number of storage elements, the stored data comprising the requested data;

a data read module configured to read data (“read data”) from at least a portion of a physical page on each of X number of storage elements of the N+P number of storage elements in response to the receive module receiving the read request, wherein X equals N, the physical pages on the X number of storage elements comprising a portion of the logical page;

a regeneration module configured to use the parity data read by the data read module and a remainder of the read data that is not parity data to regenerate missing data in response to a portion of the read data comprising parity data, wherein the missing data combined with the remainder of the read data comprises the ECC chunk; and

an ECC module configured to determine whether the read data and any regenerated missing data comprises an error, wherein the read data combined with any regenerated missing data comprises the ECC chunk.

16. The system of claim 15 , further comprising a computer in communication with the storage controller.

17. The system of claim 16 , wherein the computer comprises one of

a computer with an enclosure housing the storage controller and array of storage elements;

a server sending storage requests to the storage controller; and

a client in communication sending storage requests to the storage controller.

18. A computer program product comprising a computer readable storage medium having computer usable program code executable to perform operations for data integrity in a redundant storage system, the operations of the computer program product comprising:

receiving a read request to read data (“requested data”) from a logical page, the logical page spanning an array of N+P number of storage elements, the array of storage elements comprising N number of the storage elements each storing a portion of an ECC chunk and P number of the storage elements storing parity data, the ECC chunk comprising stored data and Error Correcting Code (“ECC”) generated from the stored data wherein the ECC spans the stored data and the stored data comprises the requested data, the P number of storage elements storing parity data generated from the ECC chunk stored in the N number of the storage elements, each storage element comprising non-volatile solid-state storage;

in response to receiving the read request, reading data (“read data”) from at least a portion of a physical page on each of X number of storage elements of the N+P number of storage elements where X equals N, the physical pages on the X number of storage elements comprising a portion of the logical page;

in response to a portion of the read data comprising parity data, using the parity data and a remainder of the read data that is not parity data to regenerate missing data, wherein the missing data combined with the remainder of the read data comprises the ECC chunk; and

determining if the read data and any regenerated missing data comprises an error, wherein the read data combined with any regenerated missing data comprises the ECC chunk.

19. The computer program product of claim 18 , further comprising:

in response to determining that the ECC chunk comprises errors, determining if the errors are correctable using the ECC stored in the ECC chunk; and

in response to determining that the errors are uncorrectable using the ECC, reading data (“substitute data”) from a storage element not read by the data read module (“substitute storage element”) and using the substitute data and read data to replace data from a storage element with errors to generate an ECC chunk (“substitute ECC chunk”) comprising one of no errors and a number of errors that are correctable.

20. The computer program product of claim 18 , further comprising, for a storage subset of each storage element, alternating which storage elements of the logical page store parity data, wherein each storage subset comprises at least a portion of a storage element and a logical storage subset comprises a storage subset on each storage element of the array.

21. The computer program product of claim 18 , further comprising rotating storage elements of the X number of storage elements from which data is read.

Assignments (15)
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE NAME PREVIOUSLY RECORDED AT REEL: 053654 FRAME: 0254. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Nov 15, 2021
From: STARBOARD VALUE INTERMEDIATE FUND LP, AS COLLATERAL AGENT
To: UNIFICATION TECHNOLOGIES LLC
Reel/Frame 058134/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNOR NAME PREVIOUSLY RECORDED AT REEL: 052853 FRAME: 0153. ASSIGNOR(S) HEREBY CONFIRMS THE PATENT SECURITY AGREEMENT. Recorded Nov 15, 2021
From: UNIFICATION TECHNOLOGIES LLC
To: STARBOARD VALUE INTERMEDIATE FUND LP, AS COLLATERAL AGENT
Reel/Frame 058223/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS Recorded Jul 8, 2020
From: STARBOARD VALUE INTERMEDIATE FUND LP
To: ACACIA RESEARCH GROUP LLC; AMERICAN VEHICULAR SCIENCES LLC; BONUTTI SKELETAL INNOVATIONS LLC; CELLULAR COMMUNICATIONS EQUIPMENT LLC; INNOVATIVE DISPLAY TECHNOLOGIES LLC; LIFEPORT SCIENCES LLC; LIMESTONE MEMORY SYSTEMS LLC; MOBILE ENHANCEMENT SOLUTIONS LLC; MONARCH NETWORKING SOLUTIONS LLC; NEXUS DISPLAY TECHNOLOGIES LLC; PARTHENON UNIFIED MEMORY ARCHITECTURE LLC; R2 SOLUTIONS LLC; SAINT LAWRENCE COMMUNICATIONS LLC; STINGRAY IP SOLUTIONS LLC; SUPER INTERCONNECT TECHNOLOGIES LLC; TELECONFERENCE SYSTEMS LLC; UNIFICATION TECHNOLOGIES LLC
Reel/Frame 053654/0254 →
PATENT SECURITY AGREEMENT Recorded Jun 5, 2020
From: ACACIA RESEARCH GROUP LLC; AMERICAN VEHICULAR SCIENCES LLC; BONUTTI SKELETAL INNOVATIONS LLC; CELLULAR COMMUNICATIONS EQUIPMENT LLC; INNOVATIVE DISPLAY TECHNOLOGIES LLC; LIFEPORT SCIENCES LLC; LIMESTONE MEMORY SYSTEMS LLC; MERTON ACQUISITION HOLDCO LLC; MOBILE ENHANCEMENT SOLUTIONS LLC; MONARCH NETWORKING SOLUTIONS LLC; NEXUS DISPLAY TECHNOLOGIES LLC; PARTHENON UNIFIED MEMORY ARCHITECTURE LLC; R2 SOLUTIONS LLC; SAINT LAWRENCE COMMUNICATIONS LLC; STINGRAY IP SOLUTIONS LLC; SUPER INTERCONNECT TECHNOLOGIES LLC; TELECONFERENCE SYSTEMS LLC; UNIFICATION TECHNOLOGIES LLC
To: STARBOARD VALUE INTERMEDIATE FUND LP, AS COLLATERAL AGENT
Reel/Frame 052853/0153 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 5, 2020
From: FIO SEMICONDUCTOR TECHNOLOGIES, LLC
To: ACACIA RESEARCH GROUP LLC
Reel/Frame 052095/0903 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 5, 2020
From: ACACIA RESEARCH GROUP LLC
To: UNIFICATION TECHNOLOGIES LLC
Reel/Frame 052096/0225 →
CORRECTIVE ASSIGNMENT TO CORRECT THE INCORRECT DOCUMENT FILED PREVIOUSLY RECORDED ON REEL 047702 FRAME 0413. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Apr 16, 2019
From: LONGITUDE ENTERPRISE FLASH S.A.R.I.
To: FIO SEMICONDUCTOR TECHNOLOGIES, LLC
Reel/Frame 048918/0035 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 7, 2018
From: LONGITUDE ENTERPRISE FLASH S.A.R.I.
To: FIO SEMICONDUCTOR TECHNOLOGIES LIMITED
Reel/Frame 047702/0413 →
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 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 →
CHANGE OF NAME Recorded Jul 9, 2010
From: FUSION MULTISYSTEMS, INC.
To: FUSION-IO, INC.
Reel/Frame 024651/0914 →