IP Library Granted Patent US 9,645,967
Granted Patent B2
US 9,645,967 · App. 14/083,724 · Granted May 9, 2017

Concurrent set storage in distributed 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,645,967
App. No.
14/083,724
Granted
May 9, 2017
Kind
B2
Abstract

For each original data segment, a distributed storage processing unit generates encoded slices designed to prevent the original data segment from being reconstructed using fewer than a threshold number of encoded slices. Multiple encoded slices are generated for each of two different data segments, and the slices associated with the first and second data segment are stored substantially concurrently in different storage sets employing different distributed storage units. Encoded slices for even and odd data segments can be stored in different storage sets, or longer sequences of data segments can be stored in alternating storage sets. Storage sets can also be determined by the vault generation of a particular data segment.

Claims (96)

1. A distributed storage processing unit comprises:

a gateway module operable to:

receive a data object;

generate a source name for the data object;

an access module operable to create a series of data segments from the data object, wherein each data segment of the series of data segments is associated with the source name;

a grid module operable to:

generate a first plurality of error encoded data slices based on a first data segment of the series of data segments;

determine a slice name for each of the error encoded data slices of the first plurality of error encoded data slices, wherein the slice name is based at least in part on the source name;

generate a second plurality of error encoded data slices based on a second data segment of the series of data segments;

determine a slice name for each of the error encoded data slices of the second plurality of error encoded data slices, wherein the slice name is based at least in part on the source name;

a storage module operable to:

identify a set of storage units for storing the first plurality of error encoded data slices, wherein identify a set of storage units is based on a slice name for each of the first plurality of error encoded data slices;

identify a set of storage units for storing the second plurality of error encoded data slices, wherein the identify a set of storage units is based on a slice name for each of the second plurality of error encoded data slices; and

an interface operable to output the first and second pluralities of error encoded data slices in parallel for storage in a first and second set of distributed storage units.

2. The distributed storage processing unit of claim 1 further comprises:

the grid module operable to:

generate a third plurality of error encoded data slices based on a third data segment of the series of data segments;

generate a fourth plurality of error encoded data slices based on a fourth data segment of the series of data segments;

the storage module operable to:

identify a set of storage units for storing the first plurality of error encoded data slices, wherein the identify a set of storage units is based on a slice name for each of the first plurality of error encoded data slices;

identify a set of storage units for storing the second plurality of error encoded data slices, wherein identify a set of storage units is based on a slice name for each of the second plurality of error encoded data slices; and

the interface operable to output the third and fourth pluralities of error encoded data slices in parallel for storage in a first and second set of distributed storage units.

3. The distributed storage processing unit claim 1 , wherein the first data segment of the series of data segments and the second data segment of the series of data segments are sub-segments of a same data segment, the distributed storage processing unit further comprises:

the grid module to determine a first slice name for the first data segment of the series of data segments and a second slice name for the second data segment of the series of data segments, wherein first and second slice names include a common file identifier and different vault generations.

4. The distributed storage processing unit of claim 3 further comprises:

the access module to determine the different vault generations, based on, at least in part, a file name of a file that includes a plurality of data segments, wherein the plurality of data segments includes the first and second data segments of the series of data segments.

5. The distributed storage processing unit of claim 1 further comprises:

the storage module is further operable to determine which of a plurality of predetermined parallel storage schemes to implement based on a system parameter.

6. The distributed storage processing unit of claim 5 , wherein the system parameter comprises one or more of:

a data type, a priority level, a security level, a preferred performance level, a system loading indicator, and a system configuration indication.

7. A distributed storage processing unit comprises:

one or more processing modules operable to:

determine a parallel storage implementation;

identify a number of sets of storage units in accordance with the parallel storage implementation, wherein each storage unit of the number of sets of storage units includes a processing module and memory;

generate a source name for a data object;

divide the data object into a plurality of data segments;

establish a first grouping of data segments of the plurality of data segments based on the parallel storage implementation;

encode the first grouping of data segments to produce a first grouping of error encoded data slices;

generate slice names for each error encoded data slice of the first grouping of error encoded data slices to produce a first grouping of a plurality of slice names, wherein the slice name for each error encoded data slice is based at least in part on the source name;

assign individual groups of the first grouping of error encoded data slices to individual sets of the number of sets of storage units for storage therein; and

an interface operable to output the first grouping of error encoded data slices in parallel to the number of sets of storage units.

8. The distributed storage processing unit of claim 7 , wherein the processing module is further operable to:

identify two sets of storage units in accordance with the parallel storage implementation;

establish the first grouping of data segments to include an even numbered data segment and an odd numbered data segment; and

assign error encoded data slices of the odd number data segment to a first set of the two sets of storage units and error encoded data slices of the even number data segment to a second set of the two sets of storage units.

9. The distributed storage processing unit of claim 7 , wherein the processing module is further operable to:

identify three sets of storage units in accordance with the parallel storage implementation;

establish the first grouping of data segments to include three data segments;

assign error encoded data slices of a first of the three data segments to a first set of the three sets of storage units;

assign error encoded data slices of a second of the three data segments to a second set of the three sets of storage units; and

assign error encoded data slices of a third of the three data segments to a third set of the three sets of storage units.

10. The distributed storage processing unit of claim 7 , wherein the processing module is further operable to:

identify two sets of storage units in accordance with the parallel storage implementation;

establish the first grouping of data segments to include a first sub-segment of a data segment and a second sub-segment of the data segment; and

assign error encoded data slices of the first sub-segment to a first set of the two sets of storage units and error encoded data slices of the second sub-segment to a second set of the two sets of storage units.

11. The distributed storage processing unit of claim 7 ,

wherein each of the slice names of the first grouping of a plurality of slices names includes a common file identifier and, from group to group, have a different vault generation values, and, within a group, have a common vault generation value.

12. The distributed storage processing unit of claim 7 further comprises:

the processing module operable to:

establish a second grouping of data segments of the plurality of data segments based on the parallel storage implementation;

encode the second grouping of data segments to produce a second grouping of plurality of error encoded data slices;

assign individual groups of the second grouping of plurality of error encoded data slices to individual sets of the number of sets of storage units for storage therein; and

an interface operable to output the second grouping of plurality of error encoded data slices in parallel to the number of sets of storage units.

13. A computer readable storage device comprises:

a first storage section for storing operational instructions that, when executed by a processing module of a computing device, causes the processing module to:

determine a parallel storage implementation;

identify a number of sets of storage units in accordance with the parallel storage implementation, wherein each storage unit of the number of sets of storage units includes a processing module and memory;

generate a source name for a data object;

divide a data object into a plurality of data segments;

establish a first grouping of data segments of the plurality of data segments based on the parallel storage implementation;

error encode the first grouping of data segments to produce a first grouping of error encoded data slices;

generate slice names for each error encoded data slice of the first grouping of error encoded data slices to produce a first grouping of a plurality of slice names, wherein the slice name for each error encoded data slice is based at least in part on the source name;

assign individual groups of the first grouping of error encoded data slices to individual sets of the number of sets of storage units for storage therein; and

a second storage section for storing operational instructions that, when executed by a processing module of a computing device, causes the processing module to output, via an interface of the computing device, the first grouping of error encoded data slices in parallel to the number of sets of storage units.

14. The computer readable storage device of claim 13 , wherein the first storage section stores further operational instructions that, when executed by the processing module, causes the processing module to:

identify two sets of storage units in accordance with the parallel storage implementation;

establish the first grouping of data segments to include an even numbered data segment and an odd numbered data segment; and

assign error encoded data slices of the odd number data segment to a first set of the two sets of storage units and error encoded data slices of the even number data segment to a second set of the two sets of storage units.

15. The computer readable storage device of claim 13 , wherein the first storage section stores further operational instructions that, when executed by the processing module, causes the processing module to:

identify three sets of storage units in accordance with the parallel storage implementation;

establish the first grouping of data segments to include three data segments;

assign error encoded data slices of a first of the three data segments to a first set of the three sets of storage units;

assign error encoded data slices of a second of the three data segments to a second set of the three sets of storage units; and

assign error encoded data slices of a third of the three data segments to a third set of the three sets of storage units.

16. The computer readable storage device of claim 13 , wherein the first storage section stores further operational instructions that, when executed by the processing module, causes the processing module to:

identify two sets of storage units in accordance with the parallel storage implementation;

establish the first grouping of data segments to include a first sub-segment of a data segment and a second sub-segment of the data segment; and

assign error encoded data slices of the first sub-segment to a first set of the two sets of storage units and error encoded data slices of the second sub-segment to a second set of the two sets of storage units.

17. The computer readable storage device of claim 13 ,

wherein each of the slice names of the first grouping of a plurality of slices names includes a common file identifier and, from group to group, have a different vault generation values, and, within a group, have a common vault generation value.

18. The computer readable storage device of claim 13 further comprises:

the first storage section stores further operational instructions that, when executed by the processing module, causes the processing module to:

establish a second grouping of data segments of the plurality of data segments based on the parallel storage implementation;

error encode the second grouping of data segments to produce a second grouping of plurality of error encoded data slices;

assign individual groups of the second grouping of plurality of error encoded data slices to individual sets of the number of sets of storage units for storage therein; and

the second storage section stores further operational instructions that, when executed by the processing module, causes the processing module to output, via the interface, the second grouping of plurality of encoded data slices in parallel to the number of sets of storage units.

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 Jan 16, 2017
From: QUIGLEY, JOHN; LAL, AKSHAY; KAZI, ASIMUDDIN
To: CLEVERSAFE, INC.
Reel/Frame 040977/0597 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 6, 2016
From: CLEVERSAFE, INC.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 038629/0015 →