IP Library Granted Patent US 10,621,044
Granted Patent B2
US 10,621,044 · App. 16/045,813 · Granted Apr 14, 2020

Mapping slice groupings in a dispersed storage network

Inventor: Greg R. Dhuse (Chicago, IL)
Assignee: PURE STORAGE, INC.
G06F11/1076G06F3/064G06F3/067G06F3/0619H04L9/085H04L9/0861H04L9/0866H04L9/0894H04L67/1097H04L9/0822H04L63/0428H04L63/0435H04L63/06H04L63/123H04L2209/30H04L2209/34H04L2463/061H04W12/04
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,621,044
App. No.
16/045,813
Granted
Apr 14, 2020
Kind
B2
Abstract

A distributed storage network includes a method of receiving data and a corresponding task, selecting one or more storage units for the task based on a capability level associated with each of the storage units, identifying a plurality of data groups of the data, determining a chunk size based on the plurality of data groups, determining processing parameters of the data based on the chunk size, generating a set of chunksets from the plurality of data groups in accordance with the chunk size and processing parameters and encoding the set of chunksets in accordance with the processing parameters to produce slice groupings. The method further includes determining task partitioning based on the storage units and the processing parameters, partitioning the task based on the task partitioning to produce partial tasks and sending the slice groupings and corresponding partial tasks to the storage units.

Claims (52)

1. A method for dispersed storage error encoding data by a computing device, the method comprises:

receiving data and a corresponding task;

selecting one or more storage units for the task based on a capability level associated with each of the storage units;

identifying a plurality of data groups of the data;

determining a chunk size based on the plurality of data groups, wherein the determining a chunk size includes determining the chunk size to be greater than or equal to a largest data group size of the plurality of data groups;

determining processing parameters of the data based on the chunk size, wherein the processing parameters include a decode threshold number of chunks based on the chunk size;

generating a set of chunksets from the plurality of data groups in accordance with the chunk size and processing parameters, wherein each chunkset of the set of chunksets includes identical chunk sizes; and

encoding the set of chunksets in accordance with the processing parameters to produce slice groupings.

2. The method of claim 1 further comprises:

determining task partitioning based on the storage units and the processing parameters;

partitioning the task based on the task partitioning to produce partial tasks; and

sending the slice groupings and corresponding partial tasks to the storage units.

3. The method of claim 1 , wherein the selecting includes determining a number of storage units and selecting the number of storage units based on one or more of: an estimated distributed computing loading level, a storage unit capability indicator, a storage unit performance indicator, a storage unit availability level indicator, a task schedule, or a storage unit threshold computing capability indicator.

4. The method of claim 1 , wherein the selecting includes selecting specific storage units when storage units availability level indicators for the specific storage units compares favorably to an estimated distributed computing loading level.

5. The method of claim 1 , wherein the identifying includes at least one of: receiving identification information, analyzing the data, or estimating the data groups based on previous data groups.

6. The method of claim 1 , wherein the determining a chunk size is based on at least one of: a chunk size selection scheme, a predetermination, or receiving the chunk size.

7. The method of claim 6 , wherein the determining a chunk size further includes determining the chunk size to be greater than or equal to a largest data group size such that a largest data group associated with the largest data group size fits within any chunk when the chunk size selection scheme indicates to fit any data group into any chunk.

8. The method of claim 1 , wherein the processing parameters include at least one of a decode threshold number or a pillar width number.

9. The method of claim 1 , wherein the generating a set of chunksets includes packing one or more data groups of the plurality of data groups into each chunk of each chunkset such that a size of the plurality of data groups is less than or equal to the chunk size.

10. The method of claim 9 , wherein an unused capacity within each chunk is padded with pad bytes, and wherein each pad byte includes at least one of: a predetermined value, a random value, a value associated with a chunk number, a value associated with a chunkset, a value associated with at least one data group packed into the chunk, or at least one partial task associated with the chunk.

11. The method of claim 1 , wherein the encoding includes encoding each chunkset of the set of chunksets with a dispersed storage error coded function to produce a decode threshold number of error coded slices and a pillar width number minus the decode threshold number of error coded slices and forming a pillar width number of the slice groupings.

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

a network interface;

a local memory; and

a processing module operably coupled to the local memory and the network interface, the processing module configured to:

receive data and a corresponding task;

select one or more storage units for the task based on a capability level associated with each of the storage units;

identify a plurality of data groups of the data;

determine a chunk size based on the plurality of data groups, wherein the determine a chunk size includes determining the chunk size to be greater than or equal to a largest data group size of the plurality of data groups;

determine processing parameters of the data based on the chunk size, wherein the processing parameters include a decode threshold number of chunks based on the chunk size;

generate a set of chunksets from the plurality of data groups in accordance with the chunk size and processing parameters, wherein each chunkset of the set of chunksets includes identical chunk sizes; and

encode the set of chunksets in accordance with the processing parameters to produce slice groupings.

13. The computing device of claim 12 further configured to:

determine task partitioning based on the storage units and the processing parameters;

partition the task based on the task partitioning to produce partial tasks; and

send the slice groupings and corresponding partial tasks to the storage units.

14. The computing device of claim 12 , wherein the select one or more storage units for the task includes determining a number of storage units and selecting the number of storage units based on one or more of: an estimated distributed computing loading level, a storage unit capability indicator, a storage unit performance indicator, a storage unit availability level indicator, a task schedule, or a storage unit threshold computing capability indicator.

15. The computing device of claim 14 , wherein the determine a chunk size further includes determining the chunk size to be greater than or equal to a largest data group size such that a largest data group associated with the largest data group size fits within any chunk when a chunk size selection scheme indicates to fit any data group into any chunk.

16. The computing device of claim 12 , wherein the generate a set of chunksets includes packing one or more data groups of a plurality of data groups into each chunk of each chunkset such that a size of the plurality of data groups is less than or equal to the chunk size.

17. The computing device of claim 12 , wherein the encode a set of chunksets includes encoding each chunkset of the set of chunksets with a dispersed storage error coded function to produce a decode threshold number of error coded slices and a pillar width number minus the decode threshold number of error coded slices and forming a pillar width number of slice groupings.

18. A distributed storage network (DSN) comprises:

a first computing device with first processing circuitry configured to execute operational instructions to:

receive data and a corresponding task;

select one or more storage units for the task based on a capability level associated with each of the storage units;

identify a plurality of data groups of the data;

determine a chunk size based on the plurality of data groups, wherein the determine a chunk size includes determining the chunk size to be greater than or equal to a largest data group size of the plurality of data groups;

determining processing parameters of the data based on the chunk size, wherein the processing parameters include a decode threshold number of chunks based on the chunk size;

generate a set of chunksets from the plurality of data groups in accordance with the chunk size and processing parameters; and

encode the set of chunksets in accordance with the processing parameters to produce slice groupings;

determine task partitioning based on the storage units and the processing parameters;

partition the task based on the task partitioning to produce partial tasks; and

send the slice groupings and corresponding partial tasks to the storage units.

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 DELETE 15/174/279 AND 15/174/596 PROPERTY NUMBERS PREVIOUSLY RECORDED AT REEL: 49555 FRAME: 530. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Jan 7, 2020
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: PURE STORAGE, INC.
Reel/Frame 051495/0831 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 21, 2019
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: PURE STORAGE, INC.
Reel/Frame 049555/0530 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 26, 2018
From: DHUSE, GREG R.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 046464/0672 →