IP Library Granted Patent US 10,223,201
Granted Patent B2
US 10,223,201 · App. 15/194,946 · Granted Mar 5, 2019

Method of storing encoded data slices using a distributed agreement protocol

Inventors: Manish Motwani (Chicago, IL); Jason K. Resch (Chicago, IL); Ilya Volvovski (Chicago, IL)
Assignee: INTERNATIONAL BUSINESS MACHINES CORPORATION
G06F11/1076G06F3/064G06F3/065G06F3/067G06F3/0619G06F11/1662G06F17/3053G06F17/30312G06F17/30545G06F17/30575G06F17/30578H03M13/33H03M13/3761H04L65/4076H04L67/06H04L67/1095H04L67/1097H04L67/16G06F2201/805H03M13/1515
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,223,201
App. No.
15/194,946
Granted
Mar 5, 2019
Kind
B2
Abstract

A method includes encoding a data object in accordance with dispersed storage error encoding parameters to produce sets of encoded data slices having sets of slice names. The dispersed storage error encoding parameters includes a pillar width number of encoded data slices. The data object is associated with a unique source name and each slice name includes a reference to the unique source name. The method further includes executing a distributed agreement protocol using the unique source name and coefficients regarding a plurality of storage units of the dispersed storage network (DSN) to produce a ranking of the plurality of storage units. The method further includes identifying the pillar width number of storage units of the plurality of storage units based on the ranking of the storage units. The method further includes sending the plurality of sets of encoded data slices to the pillar width number of storage units for storage therein.

Claims (53)

1. A method for execution by a computing device of a dispersed storage network (DSN), the method comprises:

encoding a data object in accordance with dispersed storage error encoding parameters to produce a plurality of sets of encoded data slices having a plurality of sets of slice names, wherein the dispersed storage error encoding parameters includes a pillar width number of encoded data slices in a set of encoded data slices of the plurality of sets of encoded data slices, wherein the data object is associated with a unique source name, and wherein each slice name of the plurality of sets of slice names includes a reference to the unique source name;

executing a distributed agreement protocol using the unique source name and coefficients regarding a plurality of storage units of the DSN to produce a ranking of the plurality of storage units;

identifying the pillar width number of storage units of the plurality of storage units based on the ranking of the storage units, and when the plurality of storage units is less than two times the pillar width number, executing the distributed agreement protocol using the unique source name and the coefficients regarding the plurality of storage units of the DSN to produce the ranking of the plurality of storage units; and when the plurality of storage units is at least two times the pillar width number of storage units, executing the distributed agreement protocol using a slice identifier and the coefficients regarding the plurality of storage units of the DSN to produce identified set of storage units of the plurality of storage units; and

sending the plurality of sets of encoded data slices to the pillar width number of storage units for storage therein.

2. The method of claim 1 further comprises:

executing the distributed agreement protocol to produce a plurality of scoring values for the plurality of storage units, wherein each scoring value of the plurality of scoring values is a unique value, wherein the ranking of the plurality of storage units is based on an ordering of the plurality of scoring values; and

selecting the pillar width number of storage units as the storage units associated with the first pillar width number of scoring values in the ranking of the plurality of storage units.

3. The method of claim 1 , wherein the sending the plurality of sets of encoded data slices to the pillar width number of storage units for storage comprises:

sending a first group of encoded data slices to a first storage unit of the pillar width number of storage units, wherein the first group of encoded data slices includes a first encoded data slice of each set of at least some of the plurality of sets of encoded data slices; and

sending a second group of encoded data slices to a second storage unit of the pillar width number of storage units, wherein the second group of encoded data slices includes a second encoded data slice of each set of at least some of the plurality of sets of encoded data slices.

4. The method of claim 1 further comprises:

encoding a second data object in accordance with second dispersed storage error encoding parameters to produce a second plurality of sets of encoded data slices having a second plurality of sets of slice names, wherein the second dispersed storage error encoding parameters includes a second pillar width number of encoded data slices in a set of encoded data slices of the second plurality of sets of encoded data slices, wherein the second data object is associated with a second unique source name, and wherein each slice name of the second plurality of sets of slice names includes a reference to the second unique source name;

executing the distributed agreement protocol using the second unique source name and the coefficients regarding the plurality of storage units of the DSN to produce a second ranking of the plurality of storage units;

identifying the second pillar width number of storage units of the plurality of storage units based on the second ranking of the storage units; and

sending the second plurality of sets of encoded data slices to the second pillar width number of storage units for storage therein.

5. The method of claim 1 further comprises:

when a storage unit is added to the plurality of storage units to produce an updated plurality of storage units, updating the coefficients of the distributed agreement protocol in accordance with the updated plurality of storage units;

executing, by each storage unit of the updated plurality of storage units, the distributed agreement protocol based on the unique source name and the updated coefficients to produce an updated ranking of the updated plurality of storage units; and

transferring, by at least one storage unit of the pillar width number of storage units, at least one encoded data slice to the added storage unit based on the updated ranking of the updated plurality of storage units.

6. The method of claim 1 further comprises:

selecting the dispersed storage error encoding parameters such that the pillar width number equals a number of storage units in the plurality of storage units.

7. A computer readable memory comprises:

a first memory element that stores operational instructions that, when executed by a computing device, causes the computing device to:

encode a data object in accordance with dispersed storage error encoding parameters to produce a plurality of sets of encoded data slices having a plurality of sets of slice names, wherein the dispersed storage error encoding parameters includes a pillar width number of encoded data slices in a set of encoded data slices of the plurality of sets of encoded data slices, wherein the data object is associated with a unique source name, and wherein each slice name of the plurality of sets of slice names includes a reference to the unique source name;

a second memory element that stores operational instructions that, when executed by the computing device, causes the computing device to:

execute a distributed agreement protocol using the unique source name and coefficients regarding a plurality of storage units of a dispersed storage network (DSN) to produce a ranking of the plurality of storage units; and

identify the pillar width number of storage units of the plurality of storage units based on the ranking of the storage units, and

when the plurality of storage units is less than two times the pillar width number, executing the distributed agreement protocol using the unique source name and the coefficients regarding the plurality of storage units of the DSN to produce the ranking of the plurality of storage units; and when the plurality of storage units is at least two times the pillar width number of storage units, executing the distributed agreement protocol using a slice identifier and the coefficients regarding the plurality of storage units of the DSN to produce identified set of storage units of the plurality of storage units; and

a third memory element that stores operational instructions that, when executed by the computing device, causes the computing device to:

send the plurality of sets of encoded data slices to the pillar width number of storage units for storage therein.

8. The computer readable memory of claim 7 , wherein the second memory element further stores operational instructions that, when executed by the computing device, causes the computing device to:

executing the distributed agreement protocol to produce a plurality of scoring values for the plurality of storage units, wherein each scoring value of the plurality of scoring values is a unique value, wherein the ranking of the plurality of storage units is based on an ordering of the plurality of scoring values; and

selecting the pillar width number of storage units as the storage units associated with the first pillar width number of scoring values in the ranking of the plurality of storage units.

9. The computer readable memory of claim 7 , wherein the third memory element further stores operational instructions that, when executed by the computing device, causes the computing device to send the plurality of sets of encoded data slices to the pillar width number of storage units for storage by:

sending a first group of encoded data slices to a first storage unit of the pillar width number of storage units, wherein the first group of encoded data slices includes a first encoded data slice of each set of at least some of the plurality of sets of encoded data slices; and

sending a second group of encoded data slices to a second storage unit of the pillar width number of storage units, wherein the second group of encoded data slices includes a second encoded data slice of each set of at least some of the plurality of sets of encoded data slices.

10. The computer readable memory of claim 7 further comprises:

the first memory element further stores operational instructions that, when executed by the computing device, causes the computing device to:

encode a second data object in accordance with second dispersed storage error encoding parameters to produce a second plurality of sets of encoded data slices having a second plurality of sets of slice names, wherein the second dispersed storage error encoding parameters includes a second pillar width number of encoded data slices in a set of encoded data slices of the second plurality of sets of encoded data slices, wherein the second data object is associated with a second unique source name, and wherein each slice name of the second plurality of sets of slice names includes a reference to the second unique source name;

the second memory element further stores operational instructions that, when executed by the computing device, causes the computing device to:

execute the distributed agreement protocol using the second unique source name and the coefficients regarding the plurality of storage units of the DSN to produce a second ranking of the plurality of storage units; and

identify the second pillar width number of storage units of the plurality of storage units based on the second ranking of the storage units; and

the third memory element further stores operational instructions that, when executed by the computing device, causes the computing device to:

send the second plurality of sets of encoded data slices to the second pillar width number of storage units for storage therein.

11. The computer readable memory of claim 7 further comprises:

a fourth memory element that stores operational instructions that, when executed by the computing device, causes the computing device to:

when a storage unit is added to the plurality of storage units to produce an updated plurality of storage units, update the coefficients of the distributed agreement protocol in accordance with the updated plurality of storage units;

a fifth memory element that stores operational instructions that, when executed by a storage unit of the plurality of storage units, causes the storage unit to:

execute the distributed agreement protocol based on the unique source name and the updated coefficients to produce an updated ranking of the updated plurality of storage units; and

transfer at least one encoded data slice to the added storage unit based on the updated ranking of the updated plurality of storage units.

12. The computer readable memory of claim 7 , wherein the first memory element further stores operational instructions that, when executed by the computing device, causes the computing device to:

selecting the dispersed storage error encoding parameters such that the pillar width number equals a number of storage units in the plurality of 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 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 Jun 28, 2016
From: MOTWANI, MANISH; RESCH, JASON K.; VOLVOVSKI, ILYA
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 039028/0668 →
Continuity (2)
Provisional Application 62186590 · Jun 30, 2015
Related Publication 20170006104A1 · Jan 5, 2017