IP Library Granted Patent US 10,936,448
Granted Patent B2
US 10,936,448 · App. 16/159,469 · Granted Mar 2, 2021

Using dispersed computation to change dispersal characteristics

Inventors: Wesley B. Leggette (Chicago, IL); Andrew D. Baptist (Mt. Pleasant, WI); Greg R. Dhuse (Chicago, IL); Jason K. Resch (Chicago, IL); Gary W. Grube (Barrington Hills, IL); S. Christopher Gladwin (Chicago, IL)
Assignee: PURE STORAGE, INC.
G06F11/1666G06F11/1076G06F16/16G06F16/23G06F16/235H03M13/3761G06F3/067G06F3/0614G06Q30/04H03M13/1515H04L67/1097
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,936,448
App. No.
16/159,469
Granted
Mar 2, 2021
Kind
B2
Abstract

A method includes determining an encoding modification for a set of encoded data slices where a data segment of data is dispersed storage error encoded into the set of encoded data slices based on dispersed storage error encoding parameters. The method further includes determining a plurality of tasks for executing the encoding modification, where the encoding modification includes altering one or more parameters of the dispersed storage error encoding parameters. The method further includes assigning a first task of the plurality of tasks to a first storage unit and assigning remaining tasks of the plurality of tasks to a set of storage units. The method further includes executing, by the first storage unit and at least some storage units of the set of storage units, the first task and the remaining tasks of the plurality of tasks, respectively, to produce a modified set of encoded data slices.

Claims (90)

1. A method comprises:

determining, by a computing device, an encoding modification for a set of encoded data slices, wherein a data segment of data is dispersed storage error encoded into the set of encoded data slices based on dispersed storage error encoding parameters;

determining, by the computing device, a plurality of tasks for executing the encoding modification, wherein the encoding modification includes altering one or more parameters of the dispersed storage error encoding parameters;

assigning, by the computing device, a first task of the plurality of tasks to a first storage unit;

assigning, by the computing device, remaining tasks of the plurality of tasks to a set of storage units; and

executing, by the first storage unit and one or more storage units of the set of storage units, the first task and the remaining tasks of the plurality of tasks, respectively, to produce a modified set of encoded data slices.

2. The method of claim 1 , wherein the encoding modification comprises one or more of:

deleting one or more encoded data slices;

adding one or more encoded data slices;

re-encoding the data segment using a new decode threshold;

changing coefficients of an encoding matrix; and

changing an encoding function.

3. The method of claim 1 , wherein determination factors for the determining the encoding modification comprises:

comparing a measured reliability to a reliability threshold;

modifying a storage location;

responding to new hardware; and

changing a storage tier.

4. The method of claim 1 , wherein when the encoding modification is to add an encoded data slice:

determining, by the computing device, the first task is obtaining a data matrix;

determining, by the computing device:

a first remaining task of the plurality of tasks is creating a new row of an encoding matrix;

a second remaining task of the plurality of tasks is performing a matrix multiplication of the new row by the data matrix to produce the encoded data slice; and

a third remaining task of the plurality of tasks is storing the encoded data slice; and

a fourth remaining task of the plurality of tasks is updating slice names for the set of encoded data slices.

5. The method of claim 1 , wherein when the encoding modification is to delete an encoded data slice:

determining, by the computing device, the first task is identifying the encoded data slice;

determining, by the computing device:

a first remaining task of the plurality of tasks is sending a delete command to a storage unit of the set of storage units that is storing the identified encoded data slice; and

a second remaining task of the plurality of tasks is updating slice names for set of encoded data slices.

6. The method of claim 1 , wherein when the encoding modification is to change an encoding matrix:

determining, by the computing device, the first task is obtaining a data matrix;

determining, by the computing device:

a first remaining task of the plurality of tasks is creating a new encoding matrix;

a second remaining task of the plurality of tasks is performing a matrix multiplication of the new encoding matrix by the data matrix to produce a coded matrix;

a third remaining task of the plurality of tasks is transforming the coded matrix to produce the modified set of encoded data slices; and

a fourth remaining task of the plurality of tasks is storing the modified set of encoded data slices; and

a fifth remaining task of the plurality of tasks is updating slice names for the modified set of encoded data slices.

7. The method of claim 6 further comprises:

determining, by the computing device, to divide the first remaining task of the plurality of tasks into a plurality of partial remaining tasks, wherein the plurality of partial remaining tasks includes a first partial remaining task of obtaining a first row of the new encoding matrix; and

determining, by the computing device, to divide the second remaining task of the plurality of tasks into a plurality of partial second remaining tasks, wherein the second remaining task includes a plurality of partial second remaining tasks, wherein the plurality of partial second remaining tasks include a first partial second remaining task of multiplying the first row of the new encoding matrix with the data matrix to produce a first new encoded data slice of the modified set of encoded data slices.

8. The method of claim 7 , wherein the plurality of partial first remaining tasks includes a second partial first remaining task of obtaining a second row of the new encoding matrix; and

the plurality of partial second remaining tasks includes a second partial second remaining task of multiplying the second row of the new encoding matrix with the data matrix to produce a second new encoded data slice of the modified set of encoded data slices.

9. A computer readable storage device comprises:

a first memory section for storing operational instructions that when executed by a computing device of a dispersed storage network (DSN), cause the computing device to:

determine an encoding modification for a set of encoded data slices, wherein a data segment of data is dispersed storage error encoded into the set of encoded data slices based on dispersed storage error encoding parameters;

a second memory section for storing operational instructions, that when executed by the computing device, cause the computing device to:

determine a plurality of tasks for executing the encoding modification, wherein the encoding modification includes altering one or more parameters of the dispersed storage error encoding parameters;

a third memory section for storing operational instructions, that when executed by the computing device, cause the computing device to:

assign a first task of the plurality of tasks to a first storage unit;

assign remaining tasks of the plurality of tasks to a set of storage units; and

a fourth memory section for storing operational instructions, that when executed by the first storage unit and the set of storage units, cause the first storage unit and the set of storage units to:

execute, by the first storage unit and one or more storage units of the set of storage units, the first task and the remaining tasks of the plurality of tasks, respectively, to produce a modified set of encoded data slices.

10. The computer readable storage device of claim 9 , wherein the encoding modification comprises one or more of:

deleting one or more encoded data slices;

adding one or more encoded data slices;

re-encoding the data segment using a new decode threshold;

changing coefficients of an encoding matrix; and

changing an encoding function.

11. The computer readable storage device of claim 9 , wherein determination factors for the determining the encoding modification comprises:

comparing a measured reliability to a reliability threshold;

modifying a storage location;

responding to new hardware; and

changing a storage tier.

12. The computer readable storage device of claim 9 , wherein the second memory section stores further operational instructions that, when the encoding modification is to add an encoded data slice, cause the computing device to:

determine the first task is obtaining a data matrix;

determine:

a first remaining task of the plurality of tasks is creating a new row of an encoding matrix;

a second remaining task of the plurality of tasks is performing a matrix multiplication of the new row by the data matrix to produce the encoded data slice; and

a third remaining task of the plurality of tasks is storing the encoded data slice; and

a fourth remaining task of the plurality of tasks is updating slice names for the set of encoded data slices.

13. The computer readable storage device of claim 9 , wherein the second memory section stores further operational instructions that, when the encoding modification is to delete an encoded data slice, cause the computing device to:

determine a first task is identifying the encoded data slice;

determine:

a first remaining task of the plurality of tasks is sending a delete command to a storage unit of the set of storage units that is storing the identified encoded data slice; and

a second remaining task of the plurality of tasks is updating slice names for set of encoded data slices.

14. The computer readable storage device of claim 9 , wherein the second memory section stores further operational instructions that, when the encoding modification is to change an encoding matrix, cause the computing device to:

determine the first task is obtaining a data matrix;

determine:

a first remaining task of the plurality of tasks is creating a new encoding matrix;

a second remaining task of the plurality of tasks is performing a matrix multiplication of the new encoding matrix by the data matrix to produce a coded matrix;

a third remaining task of the plurality of tasks is transforming the coded matrix to produce the modified set of encoded data slices; and

a fourth remaining task of the plurality of tasks is storing the modified set of encoded data slices; and

a fifth remaining task of the plurality of tasks is updating slice names for the modified set of encoded data slices.

15. The computer readable storage device of claim 14 further comprises:

a fifth memory section for storing operational instructions, that when executed by the computing device, cause the computing device to:

determine to divide the first remaining task of the plurality of tasks into a plurality of partial remaining tasks, wherein the plurality of partial remaining tasks includes a first partial remaining task of obtaining a first row of the new encoding matrix; and

determine to divide the second remaining task of the plurality of tasks into a plurality of partial second remaining tasks, wherein the plurality of partial second remaining tasks include a first partial second remaining task of multiplying the first row of the new encoding matrix with the data matrix to produce a first new encoded data slice of the modified set of encoded data slices.

16. The computer readable storage device of claim 15 , wherein the fifth memory section stores further operational instructions that when executed by the computing device, cause the computing device to:

determine the plurality of partial first intermediate tasks includes a second partial first intermediate task of obtaining a second row of the new encoding matrix; and

determine the plurality of partial second intermediate tasks includes a second partial second intermediate task of multiplying the second row of the new encoding matrix with the data matrix to produce a second new encoded data slice of the modified set of encoded data slices.

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 Oct 12, 2018
From: LEGGETTE, WESLEY B.; BAPTIST, ANDREW D.; DHUSE, GREG R.; RESCH, JASON K.; GRUBE, GARY W.; GLADWIN, S. CHRISTOPHER
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 047153/0369 →