IP Library Granted Patent US 10,095,582
Granted Patent B2
US 10,095,582 · App. 15/846,880 · Granted Oct 9, 2018

Partial rebuilding techniques in a dispersed storage unit

Inventors: Greg R. Dhuse (Chicago, IL); Trevor J. Vossberg (Chicago, IL); Jason K. Resch (Chicago, IL)
Assignee: INTERNATIONAL BUSINESS MACHINES CORPORATION
G06F11/1092G06F3/064G06F3/067G06F3/0619G06F9/30029G06F11/1402G06F17/16H03M13/118H03M13/154H04L67/1097H03M13/1515
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 10,095,582
App. No.
15/846,880
Granted
Oct 9, 2018
Kind
B2
Abstract

Methods for use in a dispersed storage network (DSN) to rebuild data. In various examples, at least one data segment of a data object is dispersed storage error encoded to produce a set of encoded data slices that includes an information dispersal algorithm (IDA) width number of encoded data slices, wherein the IDA width number is at least twice the number of storage units of a set of storage units utilized to store the data object. At least two encoded data slices are stored in each of the storage units. In response to detecting a storage error indicating an error slice, a partial threshold number of partial encoded data slices (generated by performing a partial encoding function on stored encoded data slices) are generated. The partial threshold number of partial encoded data slice responses are combined to produce a rebuilt encoded data slice corresponding to the error slice.

Claims (67)

1. A method for execution by one or more processing modules of one or more computing devices of a dispersed storage network (DSN), the method comprises:

receiving a data object for storage in a set of storage units of the DSN;

dispersed storage error encoding at least one data segment of the data object to produce a set of encoded data slices that includes an information dispersal algorithm (IDA) width number of encoded data slices, wherein the IDA width number is at least twice the number of storage units in the set of storage units;

facilitating storage of the set of encoded data slices in the set of storage units, where at least two encoded data slices of the set of encoded data slices are stored in each of the storage units of the set of storage units;

detecting a storage error indicating that an encoded data slice of the set of encoded data slices is an error slice;

requesting, in response to the storage error, a partial threshold number of partial encoded data slices for select encoded data slices of the set of encoded data slices;

performing, by storage units of the set of storage units receiving a request for a partial encoded data slice, a partial encoding function on locally stored encoded data slices of the select encoded data slices to produce a group of partial encoded data slices;

combining, by each of the storage units receiving the request for a partial encoded data slice, a respective group of partial encoded data slices to produce respective partial encoded data slice responses;

receiving a partial threshold number of partial encoded data slice responses;

combining the partial threshold number of partial encoded data slice responses to produce a rebuilt encoded data slice corresponding to the error slice; and

facilitating storage of the rebuilt encoded data slice in the set of storage units.

2. The method of claim 1 , wherein a partial encoded data slice for a select encoded data slice is generated by:

determining an encoding matrix utilized to generate the encoded data slice to be rebuilt;

reducing the encoding matrix to produce a square matrix, the square matrix including rows associated with at least a decode threshold number of select encoded data slices;

inverting the square matrix to produce an inverted matrix;

matrix multiplying the inverted matrix by an encoded data slice to produce a vector; and

matrix multiplying the vector by a row of the encoding matrix corresponding to the encoded data slice to be rebuilt to produce the partial encoded data slice for the select encoded data slice.

3. The method of claim 1 , wherein combining a respective group of partial encoded data slices to produce a respective partial encoded data slice response includes performing an exclusive OR operation on the respective group of partial encoded data slices.

4. The method of claim 1 , wherein detecting a storage error includes one or more of interpreting an error message, scanning encoded data slices, or detecting a missing or corrupted encoded data slice.

5. The method of claim 1 , wherein requesting a partial threshold number of partial encoded data slices includes issuing, for receipt by storage units of the set of storage units, partial slice requests indicating the identity of the error slice and select slices for a rebuilding process.

6. The method of claim 5 , wherein the partial slice requests further include a rebuilding matrix.

7. The method of claim 1 , wherein facilitating storage of the rebuilt encoded data slice includes issuing a write slice request to a storage unit associated with the error slice, where the write slice request includes the rebuilt encoded data slice.

8. The method of claim 1 , wherein facilitating storage of the set of encoded data slices in the set of storage units includes issuing write slice requests to the storage units of the set of storage units.

9. The method of claim 1 , wherein combining the partial threshold number of partial encoded data slice responses to produce a rebuilt encoded data slice corresponding to the error slice includes performing an exclusive OR operation on the partial threshold number of partial encoded data slice responses.

10. A computer readable storage medium comprises:

at least one memory section that stores operational instructions that, when executed by one or more processing modules of a dispersed storage network (DSN) that include a processor and a memory, causes the one or more processing modules to:

receive a data object for storage in a set of storage units of the DSN;

dispersed storage error encode at least one data segment of the data object to produce a set of encoded data slices that includes an information dispersal algorithm (IDA) width number of encoded data slices, wherein the IDA width number is at least twice the number of storage units in the set of storage units;

facilitate storage of the set of encoded data slices in the set of storage units, where at least two encoded data slices of the set of encoded data slices are stored in each of the storage units of the set of storage units;

detect a storage error indicating that an encoded data slice of the set of encoded data slices is an error slice;

request, in response to the storage error, a partial threshold number of partial encoded data slices for select encoded data slices of the set of encoded data slices;

perform a partial encoding function on locally stored encoded data slices of the select encoded data slices to produce a group of partial encoded data slices;

combine a respective group of partial encoded data slices to produce respective partial encoded data slice responses;

receive a partial threshold number of partial encoded data slice responses;

combine the partial threshold number of partial encoded data slice responses to produce a rebuilt encoded data slice corresponding to the error slice; and

facilitate storage of the rebuilt encoded data slice in the set of storage units.

11. The computer readable storage medium of claim 10 , wherein the at least one memory section stores further operational instructions that, when executed by the one or more processing modules to generate a partial encoded data slice for a select encoded data slice, causes the one or more processing modules to:

determine an encoding matrix utilized to generate the encoded data slice to be rebuilt;

reduce the encoding matrix to produce a square matrix, the square matrix including rows associated with at least a decode threshold number of select encoded data slices;

invert the square matrix to produce an inverted matrix;

matrix multiply the inverted matrix by an encoded data slice to produce a vector; and

matrix multiply the vector by a row of the encoding matrix corresponding to the encoded data slice to be rebuilt to produce the partial encoded data slice for the select encoded data slice.

12. The computer readable storage medium of claim 10 , wherein combining a respective group of partial encoded data slices to produce a respective partial encoded data slice response includes performing an exclusive OR operation on the respective group of partial encoded data slices.

13. The computer readable storage medium of claim 10 , wherein detecting a storage error includes one or more of interpreting an error message, scanning encoded data slices, or detecting a missing or corrupted encoded data slice.

14. The computer readable storage medium of claim 10 , wherein requesting a partial threshold number of partial encoded data slices includes issuing, for receipt by storage units of the set of storage units, partial slice requests indicating the identity of the error slice and select encoded slices for a rebuilding process.

15. The computer readable storage medium of claim 14 , wherein the partial slice requests further include a rebuilding matrix.

16. The computer readable storage medium of claim 10 , wherein combining the partial threshold number of partial encoded data slice responses to produce a rebuilt encoded data slice corresponding to the error slice includes performing an exclusive OR operation on the partial threshold number of partial encoded data slice responses.

17. A computing device of a dispersed storage network (DSN), the computing device comprises:

a network interface;

a memory comprising instructions; and

one or more processing modules in communication with the memory, wherein the one or more processing modules execute the instructions to:

receive a data object for storage in a set of storage units of the DSN;

dispersed storage error encode at least one data segment of the data object to produce a set of encoded data slices that includes an information dispersal algorithm (IDA) width number of encoded data slices, wherein the IDA width number is at least twice the number of storage units in the set of storage units;

facilitate storage of the set of encoded data slices in the set of storage units, where at least two encoded data slices of the set of encoded data slices are stored in each of the storage units of the set of storage units;

detect a storage error indicating that an encoded data slice of the set of encoded data slices is an error slice;

request, in response to the storage error, a partial threshold number of partial encoded data slices for select encoded data slices of the set of encoded data slices, wherein a partial encoded data slice is generated by combining a plurality of slices generated by a partial encoding function;

receive, via the network interface, a partial threshold number of partial encoded data slice responses;

combine the partial threshold number of partial encoded data slice responses to produce a rebuilt encoded data slice corresponding to the error slice; and

facilitate, via the network interface, storage of the rebuilt encoded data slice in the set of storage units.

18. The computing device of claim 17 , wherein the partial encoding function includes:

determining an encoding matrix utilized to generate the encoded data slice to be rebuilt;

reducing the encoding matrix to produce a square matrix, the square matrix including rows associated with at least a decode threshold number of select slices;

inverting the square matrix to produce an inverted matrix;

matrix multiplying the inverted matrix by a select encoded data slice to produce a vector; and

matrix multiplying the vector by a row of the encoding matrix corresponding to the encoded data slice to be rebuilt to produce the partial encoded data slice for the select encoded data slice.

19. The computing device of claim 17 , wherein combining a plurality of slices includes performing an exclusive OR operation on the plurality of slices.

20. The computing device of claim 17 , wherein combining the partial threshold number of partial encoded data slice responses to produce a rebuilt encoded data slice corresponding to the error slice includes performing an exclusive OR operation on the partial threshold number of partial encoded data slice responses.

Assignments (5)
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 Dec 20, 2017
From: DHUSE, GREG R.; VOSSBERG, TREVOR J.; RESCH, JASON K.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 044445/0758 →
Continuity (3)
Continuation In Part 14847855 · Sep 8, 2015
Provisional Application 62072123 · Oct 29, 2014
Related Publication 20180107554A1 · Apr 19, 2018