IP Library Granted Patent US 9,727,266
Granted Patent B2
US 9,727,266 · App. 15/056,517 · Granted Aug 8, 2017

Selecting storage units 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 9,727,266
App. No.
15/056,517
Granted
Aug 8, 2017
Kind
B2
Abstract

A method begins by a processing module of a dispersed storage network (DSN) receiving, from a requesting device, a request to retrieve a unique copy of a data file, where the data file is divided into a plurality of data segments, where a data segment is dispersed storage error encoded to produce a set of encoded data slices, and where the plurality of sets of encoded data slices is stored in a set of storage units of the DSN. The method continues with the processing module determining a retrieval combination code from the request and interpreting the retrieval combination code to identify a sub-set of storage units. The method continues with the processing module sending read requests to the sub-set of storage units and when the decode threshold number of encoded data slices is received, decoding the decode threshold number of encoded data slices to recover the data segment.

Claims (81)

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, from a requesting device, a request to retrieve a unique copy of a data file from a centralized storage system, wherein the centralized storage system stores the data file as a plurality of sets of encoded data slices, wherein the data file is divided into a plurality of data segments, wherein a data segment of the plurality of data segments is dispersed storage error encoded to produce a set of encoded data slices of the plurality of sets of encoded data slices, wherein a decode threshold number of encoded data slices of the set of encoded data slices is needed to recover the data segment, and wherein the plurality of sets of encoded data slices is stored in a set of storage units of the DSN;

determining a retrieval combination code from the request for the requesting device;

interpreting the retrieval combination code to identify a sub-set of storage units of the set of storage units, wherein a number of storage units in the sub-set of storage units equals the decode threshold number;

sending read requests to the sub-set of storage units regarding the decode threshold number of encoded data slices; and

when the decode threshold number of encoded data slices is received, decoding the decode threshold number of encoded data slices to recover the data segment.

2. The method of claim 1 further comprises:

providing the recovered data segment to the requesting device.

3. The method of claim 1 , wherein the interpreting the retrieval combination code comprises:

converting the retrieval combination code into a binary number, wherein the binary number includes a number of bit positions and wherein the decode threshold number of the number of bit positions includes a one and a remaining number of the number of bit positions includes a zero; and

interpreting the binary number to identify the sub-set of storage units.

4. The method of claim 3 further comprises:

the number of bit positions equals a number of storage units in the set of storage units; and

the interpreting the binary number further includes identifying the sub-set of storage units based on bit positions of the number of bit positions including a one.

5. The method of claim 1 , wherein the determining the retrieval combination code comprises:

determining a group of combination request values from the request and based on identity of the requesting device;

selecting one of the combination request values from the group of combination request values; and

utilizing the selected combination request value as the retrieval combination code.

6. The method of claim 1 further comprises:

when the decode threshold number of encoded data slices is not received:

identifying storage units of the sub-set of storage units for which an encoded data slice of the decode threshold number of encoded data slices was successfully received;

generating a partial retrieval combination code based on the identity of the storage units of the sub-set of storage units for which the encoded data slice was successfully received;

determining an alternate retrieval combination code that approximates the partial retrieval combination code and conforms to the retrieval combination code of the requesting device;

interpreting the alternate retrieval combination code to identify another storage unit of the set of storage units to retrieve another encoded data slice of the set of encoded data slices; and

sending a retrieval request to the other storage unit regarding the other encoded data slice.

7. 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:

receive, from a requesting device, a request to retrieve a unique copy of a data file from a centralized storage system, wherein the centralized storage system stores the data file as a plurality of sets of encoded data slices, wherein the data file is divided into a plurality of data segments, wherein a data segment of the plurality of data segments is dispersed storage error encoded to produce a set of encoded data slices of the plurality of sets of encoded data slices, wherein a decode threshold number of encoded data slices of the set of encoded data slices is needed to recover the data segment, and wherein the plurality of sets of encoded data slices is stored in a set of storage units of the DSN;

determine a retrieval combination code from the request for the requesting device;

interpret the retrieval combination code to identify a sub-set of storage units of the set of storage units, wherein a number of storage units in the sub-set of storage units equals the decode threshold number;

send read requests to the sub-set of storage units regarding the decode threshold number of encoded data slices; and

when the decode threshold number of encoded data slices is received, decode the decode threshold number of encoded data slices to recover the data segment.

8. The non-transitory computer readable storage medium of claim 7 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:

provide the recovered data segment to the requesting device.

9. The non-transitory computer readable storage medium of claim 7 , wherein the one or more processing modules functions to execute the operational instructions stored by the at least one memory section to cause the one or more computing devices of the DSN to interpret the retrieval combination code by:

converting the retrieval combination code into a binary number, wherein the binary number includes a number of bit positions and wherein the decode threshold number of the number of bit positions includes a one and a remaining number of the number of bit positions includes a zero; and

interpreting the binary number to identify the sub-set of storage units.

10. The non-transitory computer readable storage medium of claim 9 , wherein the one or more processing modules functions to execute the operational instructions stored by the at least one memory section to cause the one or more computing devices of the DSN to interpret the binary number by:

the number of bit positions equals a number of storage units in the set of storage units; and

identifying the sub-set of storage units based on bit positions of the number of bit positions including a one.

11. The non-transitory computer readable storage medium of claim 7 , wherein the one or more processing modules functions to execute the operational instructions stored by the at least one memory section to cause the one or more computing devices of the DSN to determine the retrieval combination code by:

determining a group of combination request values from the request and based on identity of the requesting device;

selecting one of the combination request values from the group of combination request values; and

utilizing the selected combination request value as the retrieval combination code.

12. The non-transitory computer readable storage medium of claim 7 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:

when the decode threshold number of encoded data slices is not received:

identify storage units of the sub-set of storage units for which an encoded data slice of the decode threshold number of encoded data slices was successfully received;

generate a partial retrieval combination code based on the identity of the storage units of the sub-set of storage units for which the encoded data slice was successfully received;

determine an alternate retrieval combination code that approximates the partial retrieval combination code and conforms to the retrieval combination code of the requesting device;

interpret the alternate retrieval combination code to identify another storage unit of the set of storage units to retrieve another encoded data slice of the set of encoded data slices; and

send a retrieval request to the other storage unit regarding the other encoded data slice.

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

an interface;

a local memory; and

a processing module operably coupled to the interface and the local memory, wherein the processing module functions to:

receive, from a requesting device, a request to retrieve a unique copy of a data file from a centralized storage system, wherein the centralized storage system stores the data file as a plurality of sets of encoded data slices, wherein the data file is divided into a plurality of data segments, wherein a data segment of the plurality of data segments is dispersed storage error encoded to produce a set of encoded data slices of the plurality of sets of encoded data slices, wherein a decode threshold number of encoded data slices of the set of encoded data slices is needed to recover the data segment, and wherein the plurality of sets of encoded data slices is stored in a set of storage units of the DSN;

determine a retrieval combination code from the request for the requesting device;

interpret the retrieval combination code to identify a sub-set of storage units of the set of storage units, wherein a number of storage units in the sub-set of storage units equals the decode threshold number;

send read requests to the sub-set of storage units regarding the decode threshold number of encoded data slices; and

when the decode threshold number of encoded data slices is received, decode the decode threshold number of encoded data slices to recover the data segment.

14. The computing device of claim 13 , wherein the processing module further functions to:

provide the recovered data segment to the requesting device.

15. The computing device of claim 13 , wherein the processing module functions to interpret the retrieval combination code by:

converting the retrieval combination code into a binary number, wherein the binary number includes a number of bit positions and wherein the decode threshold number of the number of bit positions includes a one and a remaining number of the number of bit positions includes a zero; and

interpreting the binary number to identify the sub-set of storage units.

16. The computing device of claim 15 , wherein the processing module functions to interpret the binary number by:

the number of bit positions equals a number of storage units in the set of storage units; and

identifying the sub-set of storage units based on bit positions of the number of bit positions including a one.

17. The computing device of claim 13 , wherein the processing module functions to determine the retrieval combination code by:

determining a group of combination request values from the request and based on identity of the requesting device;

selecting one of the combination request values from the group of combination request values; and

utilizing the selected combination request value as the retrieval combination code.

18. The computing device of claim 13 , wherein the processing module further functions to:

when the decode threshold number of encoded data slices is not received:

identify storage units of the sub-set of storage units for which an encoded data slice of the decode threshold number of encoded data slices was successfully received;

generate a partial retrieval combination code based on the identity of the storage units of the sub-set of storage units for which the encoded data slice was successfully received;

determine an alternate retrieval combination code that approximates the partial retrieval combination code and conforms to the retrieval combination code of the requesting device;

interpret the alternate retrieval combination code to identify another storage unit of the set of storage units to retrieve another encoded data slice of the set of encoded data slices; and

send a retrieval request to the other storage unit regarding the other encoded data slice.

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 Mar 2, 2016
From: RESCH, JASON K.; MOTWANI, MANISH; GLADWIN, S. CHRISTOPHER
To: CLEVERSAFE, INC.
Reel/Frame 037868/0753 →