IP Library Granted Patent US 9,891,829
Granted Patent B2
US 9,891,829 · App. 15/450,470 · Granted Feb 13, 2018

Storage of data with verification in a dispersed storage network

Inventor: Jason K. Resch (Chicago, IL)
Assignee: INTERNATIONAL BUSINESS MACHINES CORPORATION
G06F3/0604G06F3/067G06F3/0619G06F3/0644G06F3/0659G06F3/0661G06F11/1076H03M7/6011H04L63/101H04L63/102H03M13/1515H03M13/616H04L63/12
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,891,829
App. No.
15/450,470
Granted
Feb 13, 2018
Kind
B2
Abstract

A method begins by a computing device sending a set of redundant dispersed storage error encoding write requests regarding a data object to a set of dispersed storage (DS) processing modules. The method continues with the set of DS processing modules dispersed storage error encoding the data object to produce a group of pluralities of sets of encoded data slices. The method continues with a set of storage units temporarily storing the group of pluralities of sets of encoded data slices. The method continues with the set of storage units permanently storing encoded data slices of the group of pluralities of sets of encoded data slices based on successful execution of a storage verification process to produce a plurality of sets of encoded data slices.

Claims (82)

1. A method comprises:

sending, by a computing device of a dispersed storage network (DSN), a write request to a plurality of dispersed storage (DS) processing units of the DSN, wherein the write request includes a data segment of a data object for storage in DSN memory, wherein the write request further includes a seed for determining dispersed storage error encoding parameters;

executing, by each DS processing unit of the plurality of DS processing units, a non-deterministic function based on the seed to determine the dispersed storage error encoding parameters;

generating, by each DS processing unit of the plurality of DS processing units, a set of encoded data slices in accordance with the determined dispersed storage error encoding parameters to produce a plurality of sets of encoded data slices;

sending, by the plurality of DS processing units, a plurality of sets of write commands regarding the plurality of sets of encoded data slices to a set of storage units of the DSN;

obtaining, by the plurality of DS processing units, a plurality of sets of write responses from the set of storage units regarding the plurality of sets of write commands;

selecting, by the computing device or one of the plurality of DS processing units, a favorable write response for each encoded data slice of the set of encoded data slices from the plurality of sets of write responses to produce a selected set of favorable write responses; and

issuing, by at least some of the DS processing units, write commit commands to the set of storage units in response to the selected set of favorable write responses.

2. The method of claim 1 , wherein executing the non-deterministic function further comprises one or more of:

executing a compression function based on the seed;

executing an encryption function based on the seed;

executing an all or nothing transformation based on the seed; and

executing a dispersed storage error encoding function based on the seed.

3. The method of claim 1 further comprises:

generating, by a first DS processing unit of the plurality of DS processing units, a first set of encoded data slices in accordance with the determined dispersed storage error encoding parameters;

generating, by a second DS processing unit of the plurality of DS processing units, a second set of encoded data slices in accordance with the determined dispersed storage error encoding parameters; and

generating, by a third DS processing unit of the plurality of DS processing units, a third set of encoded data slices in accordance with the determined dispersed storage error encoding parameters.

4. The method of claim 3 , wherein the sending the plurality of sets of write commands further comprises:

sending, by the first DS processing unit a first set of write commands regarding the first set of encoded data slices to the set of storage units; and

sending, by the second DS processing unit a second set of write commands regarding the second set of encoded data slices to the set of storage units; and

sending, by the third DS processing unit, a third set of write commands regarding the third set of encoded data slices to the set of storage units.

5. The method of claim 1 , wherein the obtaining the plurality of sets of write responses comprises:

obtaining, by the first DS processing unit, a first set of write responses regarding storage of the first set of encoded data slices from the set of storage units;

obtaining, by the second DS processing unit, a second set of write responses regarding storage of the second set of encoded data slices from the set of storage units; and

obtaining, by the third DS processing unit, a third set of write responses regarding storage of the third set of encoded data slices from the set of storage units.

6. The method of claim 5 , wherein the obtaining, by the first DS processing unit, the first set of write responses comprises at least one of:

receiving, from a first storage unit of the set of storage units, a favorable write response regarding storing a first encoded data slice of the set of encoded data slices;

receiving, from a second storage unit of the set of storage units, an unfavorable write response regarding storing a second encoded data slice of the set of encoded data slices; and

indicating, by the first DS processing unit, the unfavorable write response for a third encoded data slice of the set of encoded data slices when a third storage unit of the set of storage units failed to provide a write response in a given time frame.

7. The method of claim 5 wherein the selecting the favorable write response for each encoded data slice comprises:

for the first set of encoded data slices:

determining which DS processing units of the plurality of DS processing units received the favorable write response for the first set of encoded data slices; and

selecting at least one DS processing unit of the DS processing units receiving the favorable response for the selected favorable response for the first set of encoded data slices;

for the second set of encoded data slices:

determining which DS processing units of the plurality of DS processing units received the favorable write response for the second set of encoded data slices; and

selecting at least one DS processing unit of the DS processing units receiving the favorable response for the selected favorable response for the second set of encoded data slices; and

for the third set of encoded data slices:

determining which DS processing units of the plurality of DS processing units received the favorable write response for the third set of encoded data slices; and

selecting at least one DS processing unit of the DS processing units receiving the favorable response for the selected favorable response for the third set of encoded data slices.

8. A non-transitory computer readable storage medium comprises:

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

send a write request to a plurality of dispersed storage (DS) processing units of the DSN, wherein the write request includes a data segment of a data object for storage in DSN memory, wherein the write request further includes a seed for determining dispersed storage error encoding parameters;

a second memory section that stores operational instructions that, when executed by each DS processing unit of the plurality of DS processing units, causes each the DS processing unit to:

execute a non-deterministic function based on the seed to determine the dispersed storage error encoding parameters;

generate a set of encoded data slices in accordance with the determined dispersed storage error encoding parameters to produce a plurality of sets of encoded data slices;

send a set of write commands of a plurality of sets of write commands regarding a set of encoded data slices of the plurality of sets of encoded data slices to a set of storage units of the DSN;

obtain a set of write responses of a plurality of sets of write responses from the set of storage units regarding the set of write commands of the plurality of sets of write commands;

a third memory section that stores operational instructions that, when executed by a DS processing unit or the computing device, causes the DS processing unit or the computing device to:

select a favorable write response for each encoded data slice of the set of encoded data slices from the plurality of sets of write responses to produce a selected set of favorable write responses; and

a fourth memory section that stores operational instructions that, when executed by at least some of the DS processing units, causes the at least some of the DS processing units to:

issue write commit commands to the set of storage units in response to the selected set of favorable write responses.

9. The non-transitory computer readable storage medium of claim 8 , wherein the second memory section that stores operational instructions that, when executed by each DS processing unit of the plurality of DS processing units, causes each the DS processing unit to execute the non-deterministic function further by one or more of:

executing a compression function based on the seed;

executing an encryption function based on the seed;

executing an all or nothing transformation based on the seed; and

executing a dispersed storage error encoding function based on the seed.

10. The non-transitory computer readable storage medium of claim 8 wherein the second memory section that stores operational instructions that, when executed by each DS processing unit of the plurality of DS processing units, causes each the DS processing unit to generate the plurality of sets of encoded data slices by:

generating, by a first DS processing unit of the plurality of DS processing units, a first set of encoded data slices in accordance with the determined dispersed storage error encoding parameters;

generating, by a second DS processing unit of the plurality of DS processing units, a second set of encoded data slices in accordance with the determined dispersed storage error encoding parameters; and

generating, by a third DS processing unit of the plurality of DS processing units, a third set of encoded data slices in accordance with the determined dispersed storage error encoding parameters.

11. The non-transitory computer readable storage medium of claim 10 wherein the second memory section that stores operational instructions that, when executed by each DS processing unit of the plurality of DS processing units, causes each the DS processing unit to send the plurality of sets of write commands further by:

sending, by the first DS processing unit, a first set of write commands regarding the first set of encoded data slices to the set of storage units;

sending, by the second DS processing unit, a second set of write commands regarding the second set of encoded data slices to the set of storage units; and

sending, by the third DS processing unit, a third set of write commands regarding the third set of encoded data slices to the set of storage units.

12. The non-transitory computer readable storage medium of claim 11 , wherein the second memory section that stores operational instructions that, when executed by each DS processing unit of the plurality of DS processing units, causes each the DS processing unit to obtain the plurality of sets of write responses by:

obtaining, by the first DS processing unit, a first set of write responses regarding storage of the first set of encoded data slices from the set of storage units;

obtaining, by the second DS processing unit, a second set of write responses regarding storage of the second set of encoded data slices from the set of storage units; and

obtaining, by the third DS processing unit, a third set of write responses regarding storage of the third set of encoded data slices from the set of storage units.

13. The non-transitory computer readable storage medium of claim 12 , wherein the second memory section that stores operational instructions that, when executed by the first DS processing unit, causes the first DS processing unit to obtain the first set of write responses by at least one of:

receiving, from a first storage unit of the set of storage units, a favorable write response regarding storing a first encoded data slice of the set of encoded data slices;

receiving, from a second storage unit of the set of storage units, an unfavorable write response regarding storing a second encoded data slice of the set of encoded data slices; and

indicating, by the first DS processing unit, the unfavorable write response for a third encoded data slice of the set of encoded data slices when a third storage unit of the set of storage units failed to provide a write response in a given time frame.

14. The non-transitory computer readable storage medium of claim 11 wherein the third memory section further stores operational instructions that, when executed by a DS processing unit or the computing device, causes the DS processing unit or the computing device to select the favorable write response for each encoded data slice by:

for the first set of encoded data slices:

determining which DS processing units of the plurality of DS processing units received the favorable write response for the first set of encoded data slices; and

selecting at least one DS processing unit of the DS processing units receiving the favorable response for the selected favorable response for the first set of encoded data slices;

for the second set of encoded data slices:

determining which DS processing units of the plurality of DS processing units received the favorable write response for the second set of encoded data slices; and

selecting at least one DS processing unit of the DS processing units receiving the favorable response for the selected favorable response for the second set of encoded data slices; and

for the third set of encoded data slices:

determining which DS processing units of the plurality of DS processing units received the favorable write response for the third set of encoded data slices; and

selecting at least one DS processing unit of the DS processing units receiving the favorable response for the selected favorable response for the third set of encoded data slices.

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 Mar 7, 2017
From: CLEVERSAFE, INC.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 041904/0086 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 6, 2017
From: RESCH, JASON K.
To: CLEVERSAFE, INC.
Reel/Frame 041475/0025 →
Continuity (3)
Continuation 14589639 · Jan 5, 2015
Provisional Application 61944722 · Feb 26, 2014
Related Publication 20170177229A1 · Jun 22, 2017