IP Library Granted Patent US 8,782,494
Granted Patent B2
US 8,782,494 · App. 13/612,043 · Granted Jul 15, 2014

Reproducing data utilizing a zero information gain function

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,782,494
App. No.
13/612,043
Granted
Jul 15, 2014
Kind
B2
Abstract

A method begins by a dispersed storage (DS) processing module receiving a zero information gain (ZIG) encoded data slice and a subset of encoded data slices of a set of encoded data slices. The method continues with the DS processing module generating a set of ZIG encoded data slices using a ZIG function and corresponding ones of the subset of encoded data slices, wherein the set of ZIG encoded data slices represents additional components of recovery information of a first encoded data slice. The method continues with the DS processing module recreating the first encoded data slice from the ZIG encoded data slice and the set of ZIG encoded data slices. The method continues with the DS processing module decoding the subset of encoded data slices and the first encoded data slice using a dispersed storage error coding function to reproduce data.

Claims (68)

1. A method for execution by a processing module of a computing device, the method comprises:

receiving a subset of encoded data slices of a set of encoded data slices, wherein a data segment of data was encoded using an encoding matrix of a dispersed storage error coding function to produce the set of encoded data slices, wherein the data segment can be recreated from a decode threshold number of encoded data slices of the set of encoded data slices using a decoding matrix of the dispersed storage error coding function, wherein the subset of encoded data slices includes less than the decode threshold number of encoded data slices of the subset of encoded data slices and does not include a first or a second encoded data slice of the set of encoded data slices;

receiving a partial encoded data slice corresponding to the first encoded data slice, wherein the partial encoded data slice is generated based on the second encoded data slice and a section of the encoding matrix that corresponds to the first encoded data slice;

generating additional partial encoded data slices corresponding to the first encoded data slice based on the subset of encoded data slices and the section of the encoding matrix that corresponds to the first encoded data slice;

recreating the first encoded data slice from the partial encoded data slice and the additional partial encoded data slices; and

decoding the subset of encoded data slices and the first encoded data slice using the decoding matrix to reproduce the data segment.

2. The method of claim 1 further comprises:

prior to recreating the first encoded data slice, de-obfuscating the partial encoded data slice utilizing an obfuscation function.

3. The method of claim 1 further comprises:

the subset of encoded data slices does not include the first, the second, or a third encoded data slice of the set of encoded data slices, wherein the partial encoded data slice is generated based on the second and third encoded data slices and the section of the encoding matrix that corresponds to the first encoded data slice;

receiving a second partial encoded data slice corresponding to the fourth encoded data slice, wherein the second partial encoded data slice is generated based on the second and the third encoded data slice and a section of the encoding matrix that corresponds to the fourth encoded data slice;

generating second additional partial encoded data slices corresponding to the fourth encoded data slice based on the subset of encoded data slices and the section of the encoding matrix that corresponds to the fourth encoded data slice;

recreating the fourth encoded data slice from the second partial encoded data slice and the second additional partial encoded data slices; and

decoding the subset of encoded data slices, the first encoded data slice, and the fourth encoded data slice using the decoding matrix to reproduce the data segment.

4. The method of claim 1 , wherein generating one of the additional partial encoded data slices comprises:

generating a first decoding matrix for the first encoded data slice based on the encoding matrix;

encoding a corresponding one of the subset of encoded data slices using the first decoding matrix to produce a vector; and

encoding the vector using, as the section of the encoding matrix, a row of the encoding matrix that corresponds to the first encoded data slice to produce the one of the additional partial encoded data slices.

5. The method of claim 4 , wherein the generating the decoding matrix comprises:

reducing the encoding matrix to produce a square matrix based on the first encoded data slice and the subset of encoded data slices; and

inverting the square matrix to produce the decoding matrix.

6. The method of claim 1 , wherein the decoding the subset of encoded data slices and the first encoded data slice comprises:

generating a received slice matrix from the first encoded data slice and the subset of encoded data slices;

generating a data matrix based on the received slice matrix and the decoding matrix; and

creating the data segment from the data matrix.

7. The method of claim 6 further comprises:

obtaining the encoding matrix;

reducing the encoding matrix based on rows associated with the subset of encoded data slices and the first encoded data slice to produce a square matrix; and

inverting the square matrix to produce the decoding matrix.

8. The method of claim 1 , wherein the recreating the first encoded data slice from the partial encoded data slice and the additional partial encoded data slices comprises one of:

exclusive ORing the partial encoded data slice and the additional partial encoded data slices to produce the first encoded data slice; and

rebuilding the first encoded data slice based on the partial encoded data slice and the additional partial encoded data slices in accordance with a dispersed storage error coding function.

9. A dispersed storage (DS) module comprises:

a first module, when operable within a computing device, causes the computing device to:

receive a subset of encoded data slices of a set of encoded data slices, wherein a data segment of data was encoded using an encoding matrix of a dispersed storage error coding function to produce the set of encoded data slices, wherein the data segment can be recreated from a decode threshold number of encoded data slices of the set of encoded data slices using a decoding matrix of the dispersed storage error coding function, wherein the subset of encoded data slices includes less than the decode threshold number of encoded data slices of the subset of encoded data slices and does not include a first or a second encoded data slice of the set of encoded data slices; and

receive a partial encoded data slice corresponding to the first encoded data slice, wherein the partial encoded data slice is generated based on the second encoded data slice and a section of the encoding matrix that corresponds to the first encoded data slice;

a second module, when operable within the computing device, causes the computing device to: generate additional partial encoded data slices corresponding to the first encoded data slice based on the subset of encoded data slices and the section of the encoding matrix that corresponds to the first encoded data slice;

a third module, when operable within the computing device, causes the computing device to:

recreate the first encoded data slice from the partial encoded data slice and the additional partial encoded data slices; and

a fourth module, when operable within the computing device, causes the computing device to:

decode the subset of encoded data slices and the first encoded data slice using the decoding matrix to reproduce the data.

10. The DS module of claim 9 further comprises:

prior to recreating the first encoded data slice, the third module further functions to de-obfuscate the partial encoded data slice utilizing an obfuscation function.

11. The DS module of claim 9 further comprises:

the subset of encoded data slices does not include the first, the second, or a third encoded data slice of the set of encoded data slices, wherein the partial encoded data slice is generated based on the second and third encoded data slices and the section of the encoding matrix that corresponds to the first encoded data slice;

the first module further causes the computing device to receive a second partial encoded data slice corresponding to the fourth encoded data slice, wherein the second partial encoded data slice is generated based on the second and the third encoded data slice and a section of the encoding matrix that corresponds to the fourth encoded data slice;

the second module further causes the computing device to generate second additional partial encoded data slices corresponding to the fourth encoded data slice based on the subset of encoded data slices and the section of the encoding matrix that corresponds to the fourth encoded data slice;

the third module further causes the computing device to recreate the fourth encoded data slice from the second partial encoded data slice and the second additional partial encoded data slices; and

the fourth module further causes the computing device to decode the subset of encoded data slices, the first encoded data slice, and the fourth encoded data slice using the decoding matrix to reproduce the data segment.

12. The DS module of claim 9 , wherein the second module functions to generate one of the additional partial encoded data slices by:

generating a first decoding matrix for the first encoded data slice based on the encoding matrix;

encoding a corresponding one of the subset of encoded data slices using the first decoding matrix to produce a vector; and

encoding the vector using, as the section of the encoding matrix, a row of the encoding matrix that corresponds to the first encoded data slice to produce the one of the additional partial encoded data slices.

13. The DS module of claim 12 , wherein the second module functions to generate the decoding matrix by:

reducing the encoding matrix to produce a square matrix based on the first encoded data slice and the subset of encoded data slices; and

inverting the square matrix to produce the decoding matrix.

14. The DS module of claim 9 , wherein the fourth module functions to decode the subset of encoded data slices and the first encoded data slice by:

generating a received slice matrix from the first encoded data slice and the subset of encoded data slices;

generating a data matrix based on the received slice matrix and the decoding matrix; and

creating the data segment from the data matrix.

15. The DS module of claim 14 further comprises:

the fourth module further functions to:

obtain the encoding matrix;

reduce the encoding matrix based on rows associated with the subset of encoded data slices and the first encoded data slice to produce a square matrix; and

invert the square matrix to produce the decoding matrix.

16. The DS module of claim 9 , wherein the third module functions to recreate the first encoded data slice from the partial encoded data slice and the additional partial encoded data slices by one of:

exclusive ORing the partial encoded data slice and the additional partial encoded data slices to produce the first encoded data slice; and

rebuilding the first encoded data slice based on the partial encoded data slice and the additional partial encoded data slices in accordance with a dispersed storage error coding function.

Assignments (6)
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT RIGHTS Recorded Jun 11, 2025
From: BARCLAYS BANK PLC, AS ADMINISTRATIVE AGENT
To: PURE STORAGE, INC.
Reel/Frame 071558/0523 →
SECURITY INTEREST Recorded Aug 26, 2020
From: PURE STORAGE, INC.
To: BARCLAYS BANK PLC AS ADMINISTRATIVE AGENT
Reel/Frame 053867/0581 →
CORRECTIVE ASSIGNMENT TO CORRECT THE 9992063 AND 10334045 LISTED IN ERROR PREVIOUSLY RECORDED ON REEL 049556 FRAME 0012. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNOR HEREBY CONFIRMS THE ASSIGNMENT. Recorded Jan 14, 2020
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: PURE STORAGE, INC.
Reel/Frame 052205/0705 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 21, 2019
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: PURE STORAGE, INC.
Reel/Frame 049556/0012 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 13, 2016
From: CLEVERSAFE, INC.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 038687/0596 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 12, 2012
From: GRUBE, GARY W.; MARKISON, TIMOTHY W.
To: CLEVERSAFE, INC.
Reel/Frame 028949/0175 →