IP Library Granted Patent US 10,152,601
Granted Patent B2
US 10,152,601 · App. 14/675,360 · Granted Dec 11, 2018

Reliably recovering stored data in a dispersed storage network

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,152,601
App. No.
14/675,360
Granted
Dec 11, 2018
Kind
B2
Abstract

A method begins by storage units of a dispersed storage network (DSN) receiving a retrieval request for a data object, where each storage unit stores a unique group of encoded data slices of the data object and a local set of encoded recovery data slices. The method continues with some storage units sending the unique group of encoded data slices to a requesting computing device and with one storage unit sending an encoded recovery data slice to the requesting computing device. The method continues with the requesting computing device identifying an errant unique group encoded data slice, correcting the errant encoded data slice based on received data slices to produce an updated unique group of encoded data slices, and dispersed storage error decoding the updated unique group of encoded data slices and the unique groups of encoded data slices from other storage units to recover the data object.

Claims (76)

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:

sending, to a set of storage units of a dispersed storage network (DSN), a retrieval request for a data object, wherein the data object includes a plurality of data segments, wherein the plurality of data segments is dispersed storage error encoded to create a plurality of sets of encoded data slices, wherein each storage unit of the set of storage units stores a unique group of encoded data slices of the plurality of sets of encoded data slices, and wherein one or more storage units of the set of storage units dispersed storage error encodes at least one encoded data slice of the unique group of encoded data slices to produce a local set of encoded recovery data slices;

receiving, from each storage unit of a decode threshold number of storage units of the set of storage units, the unique group of encoded data slices;

receiving, from one or more of the decode threshold number of storage units, at least one encoded recovery data slice of the local set of encoded recovery data slices;

identifying an errant encoded data slice of the unique group of encoded data slices received from the one of the decode threshold number of storage units;

correcting the errant encoded data slice based on encoded data slices of the unique group of encoded data slices that are not errant encoded data slices from the one of the decode threshold number of storage units and the at least one encoded recovery data slices received from the one of the decode threshold number of storage units to produce an updated unique group of encoded data slices; and

dispersed storage error decoding the updated unique group of encoded data slices to recover the data object.

2. The method of claim 1 , wherein

each storage unit of the decode threshold number of storage units determines whether the respective unique group of encoded data slices includes an encoded data slice requiring rebuilding and further wherein

the one of the decode threshold number of storage units identifies the encoded data slice requiring rebuilding in the unique group of encoded data slices of the one of the decode threshold number of storage units.

3. The method of claim 1 further comprises:

receiving, from one of the decode threshold number of storage units, a unique encoded recovery data slice of the local set of encoded recovery data slices for each of multiple encoded data slices that require rebuilding, wherein

the one of the decode threshold number of storage units provides information sufficient to identify multiple encoded data slices in the unique group of encoded data slices of the one of the decode threshold number of storage units that require rebuilding.

4. The method of claim 1 further comprises:

receiving, from a second one of the decode threshold number of storage units, at least one encoded recovery data slice of the local set of encoded recovery data slices of the second one of the decode threshold number of storage units, wherein

each storage unit of the decode threshold number of storage units determines whether the respective unique group of encoded data slices includes an encoded data slice requiring rebuilding and wherein

a second one of the decode threshold number of storage units provides information sufficient to identify the encoded data slice requiring rebuilding in the unique group of encoded data slices of the second one of the decode threshold number of storage units.

5. The method of claim 1 further comprises:

receiving, from each storage unit of the decode threshold number of storage units, at least one encoded recovery data slice of a respective local set of encoded recovery data.

6. The method of claim 1 , wherein the identifying the errant encoded data slice comprises at least one of:

receiving an indication from the one of the decode threshold number of storage units;

performing an integrity check on the errant encoded data slice; and

identifying the errant encoded data slice from a rebuild list.

7. The method of claim 1 further comprises: creating a rebuilt encoded data slice from the at least one encoded recovery data slice and remaining encoded data slices of the unique group of encoded data slices; and

replacing the errant encoded data slice with the rebuilt encoded data slice to produce the updated unique group of encoded data slices.

8. The method of claim 1 further comprises:

selecting the decode threshold number of storage units based on one or more of:

identifying the decode threshold number of storage units based on reliability of the storage units in the decode threshold number of storage units;

identifying the decode threshold number of storage units based on decoding efficiency of the unique groups of encoded data slices stored by the storage units in the decode threshold number of storage units; and

identifying the decode threshold number of storage units based on availability of the storage units in the decode threshold number of storage units.

9. The method of claim 1 further comprises:

determining that a data segment of the plurality of data segments is unrecoverable due to a corresponding set of encoded data slices including less than a decode threshold number of uncorrupted encoded data slices;

sending a request for the local set of encoded recovery data slices from each of the storage units of the decode threshold number of storage units; and

utilizing the local set of encoded recovery data slices from each of the storage units of the decode threshold number of storage units and the unique group of encoded data slices from the decode threshold number of storage units to recover the data segment.

10. A non-transitory computer readable storage medium comprises:

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

send, to a set of storage units of the DSN, a retrieval request for a data object, wherein the data object includes a plurality of data segments, wherein the plurality of data segments is dispersed storage error encoded to create a plurality of sets of encoded data slices, wherein each storage unit of the set of storage units stores a unique group of encoded data slices of the plurality of sets of encoded data slices, and wherein one or more storage units of the set of storage units dispersed storage error encodes at least one encoded data slice of the unique group of encoded data slices to produce a local set of encoded recovery data slices;

send, by each storage unit of a decode threshold number of storage units of the set of storage units, the unique group of encoded data slices to a requesting computing device;

receive, from one of the decode threshold number of storage units, at least one encoded recovery data slice of the local set of encoded recovery data slices;

identify an errant encoded data slice of the unique group of encoded data slices from the one of the decode threshold number of storage units;

correct the errant encoded data slice based on encoded data slices of the unique group of encoded data slices that are not errant encoded data slices from the one of the decode threshold number of storage units and at least one encoded recovery data slice received from the one of the decode threshold number of storage units to produce an updated unique group of encoded data slices; and

dispersed storage error decoding the updated unique group of encoded data slices to recover the data object.

11. The non-transitory computer readable storage medium of claim 10 further comprises:

the at least one memory section stores further operational instructions that, when executed by the one or more processing modules, causes the one or more computing devices of the DSN to:

receive from the one of the decode threshold number of storage units, the encoded data slice requiring rebuilding in the unique group of encoded data slices of the one of the decode threshold number of storage units, wherein each storage unit of the decode threshold number of storage units determines whether the respective unique group of encoded data slices includes an encoded data slice requiring rebuilding.

12. The non-transitory computer readable storage medium of claim 10 further comprises:

the at least one memory section stores further operational instructions that, when executed by the one or more processing modules, causes the one or more computing devices of the DSN to:

receive, from one of the decode threshold number of storage units, a unique encoded recovery data slice of the local set of encoded recovery data slices for each of multiple encoded data slices that require rebuilding, wherein

the one of the decode threshold number of storage units provides information sufficient to identify multiple encoded data slices in the unique group of encoded data slices of the one of the decode threshold number of storage units that require rebuilding.

13. The non-transitory computer readable storage medium of claim 10 further comprises:

the at least one memory section stores further operational instructions that, when executed by the one or more processing modules, causes the one or more computing devices of the DSN to:

receive, from a second one of the decode threshold number of storage units, at least one encoded recovery data slice of the local set of encoded recovery data slices of the second one of the decode threshold number of storage units to the requesting computing device, wherein

each storage unit of the decode threshold number of storage units determines whether the respective unique group of encoded data slices includes an encoded data slice requiring rebuilding and wherein

a second one of the decode threshold number of storage units provides information sufficient to identify the encoded data slice requiring rebuilding in the unique group of encoded data slices of the second one of the decode threshold number of storage units.

14. The non-transitory computer readable storage medium of claim 10 further comprises:

the at least one memory section stores further operational instructions that, when executed by the one or more processing modules, causes the one or more computing devices of the DSN to:

receive, from each storage unit of the decode threshold number of storage units, at least one encoded recovery data slice of a respective local set of encoded recovery data.

15. The non-transitory computer readable storage medium of claim 10 , wherein the one or more processing modules functions to execute operational instructions stored by at least one memory section to cause the one or more computing devices of the DSN to identify the errant encoded data slice by at least one of:

receiving an indication from the one of the decode threshold number of storage units;

performing an integrity check on the errant encoded data slice; and

identifying the errant encoded data slice from a rebuild list.

16. The non-transitory computer readable storage medium of claim 10 further comprises:

the at least one memory section stores further operational instructions that, when executed by the one or more processing modules, causes the one or more computing devices of the DSN to:

create a rebuilt encoded data slice from the at least one encoded recovery data slice and remaining encoded data slices of the unique group of encoded data slices; and

replace the errant encoded data slice with the rebuilt encoded data slice to produce the updated unique group of encoded data slices.

17. The non-transitory computer readable storage medium of claim 10 further comprises:

the at least one memory section stores further operational instructions that, when executed by the one or more processing modules, causes the one or more computing devices of the DSN to:

select the decode threshold number of storage units based on one or more of:

identifying the decode threshold number of storage units based on reliability of the storage units in the decode threshold number of storage units;

identifying the decode threshold number of storage units based on decoding efficiency of the unique groups of encoded data slices stored by the storage units in the decode threshold number of storage units; and

identifying the decode threshold number of storage units based on availability of the storage units in the decode threshold number of storage units.

18. The non-transitory computer readable storage medium of claim 10 further comprises:

the at least one memory section stores further operational instructions that, when executed by the one or more processing modules, causes the one or more computing devices of the DSN to:

determine that a data segment of the plurality of data segments is unrecoverable due to a corresponding set of encoded data slices including less than a decode threshold number of uncorrupted encoded data slices;

send a request for the local set of encoded recovery data slices from each of the storage units of the decode threshold number of storage units; and

utilize the local set of encoded recovery data slices from each of the storage units of the decode threshold number of storage units and the unique group of encoded data slices from the decode threshold number of storage units to recover the data segment.

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 6, 2016
From: CLEVERSAFE, INC.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 038629/0015 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 30, 2015
From: VOLVOVSKI, ILYA; CABRAL, BRUNO HENNIG; MOTWANI, MANISH; COCAGNE, THOMAS DARREL; MARKISON, TIMOTHY W.; GRUBE, GARY W.; LEGGETTE, WESLEY; RESCH, JASON K.; STORM, MICHAEL COLIN; DHUSE, GREG; VEDPATHAK, YOGESH RAMESH; KHADIWALA, RAVI
To: CLEVERSAFE, INC.
Reel/Frame 036690/0800 →