IP Library Granted Patent US 10,534,668
Granted Patent B2
US 10,534,668 · App. 15/832,391 · Granted Jan 14, 2020

Accessing data in a dispersed storage network

Inventors: Ethan S. Wozniak (Park Ridge, IL); Andrew D. Baptist (Mt. Pleasant, WI); Greg R. Dhuse (Chicago, IL); Ilya Volvovski (Chicago, IL); Jason K. Resch (Chicago, IL)
Assignee: PURE STORAGE, INC.
G06F11/1076G06F3/064G06F3/067G06F3/0619
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,534,668
App. No.
15/832,391
Granted
Jan 14, 2020
Kind
B2
Abstract

A method for execution by a computing device includes generating a data segment to include a first data object for storage and a plurality of null data objects. The data segment is dispersed storage error encoded to produce a set of encoded data slices that includes a first encoded data slice that corresponds to the first data object, a plurality of null slices corresponding to the null data objects, and a remaining number of error coded slices. Storage of the set of encoded data slices in a set of storage units is facilitated. Storage of a second data object is facilitated, where one null data object is overwritten with the second data object. A partial contribution of the second data object is calculated for each of the error coded slices in accordance with a partial encoding approach. Each error coded slice is updated by utilizing the corresponding partial contribution.

Claims (53)

1. A method for execution by a computing device that includes a processor, the method comprises:

generating a data segment to include a first data object for storage and a plurality of null data objects;

dispersed storage error encoding the data segment to produce a set of encoded data slices, wherein the set of encoded data slices includes a first encoded data slice that substantially corresponds to the first data object, wherein the set of encoded data slices further includes a plurality of null slices corresponding to the plurality of null data objects, and wherein the set of encoded data slices further includes a remaining number of error coded slices;

facilitating storage of the set of encoded data slices in a set of storage units;

facilitating storage of a second data object, wherein one of the plurality of null data objects is overwritten with the second data object;

calculating a partial contribution of the second data object for each of the error coded slices in accordance with a partial encoding approach; and

facilitating updating of each of the error coded slices by utilizing the corresponding partial contribution.

2. The method of claim 1 , wherein the data segment is dispersed storage error encoded by utilizing an information dispersal algorithm in accordance with dispersal parameters that include a pillar width number and a decode threshold number, wherein a number of encoded data slices in the set of encoded data slices is equal to the pillar width number, wherein a number of the plurality of null slices is equal to the decode threshold number minus one, and wherein a number of the remaining number of error coded slices is equal to the pillar width number minus the decode threshold number.

3. The method of claim 1 , wherein dispersed storage error encoding the data segment includes matrix multiplying the data segment by an encoding matrix to produce the set of encoded data slices, and wherein the encoding matrix includes a unity matrix, with a decode threshold number dimension, in a most significant number of rows.

4. The method of claim 3 , wherein calculating the partial contribution of the second data object includes matrix multiplying a corresponding row of the encoding matrix by the second data object to produce the partial contribution.

5. The method of claim 1 , wherein storing the second data object includes:

generating an update slice request that includes the second data object; and

sending the update slice request to a corresponding storage unit, wherein the storage unit performs an exclusive OR function on the second data object and a one of the plurality of null slices corresponding to the one of the plurality of null data objects to produce a second encoded data slice for storage in the storage unit.

6. The method of claim 1 , wherein facilitating updating the error coded slice includes issuing an update slice request to a corresponding storage unit, wherein the storage unit performs an exclusive OR function on the partial contribution and the error coded slice to produce an updated error coded slice for storage in the storage unit.

7. The method of claim 1 , further comprising:

determining to recover the first data object;

accessing a corresponding storage unit in response to determining the first data object is available directly; and

recovering a decode threshold number of encoded data slices of the set of encoded data slices and dispersed storage error decoding the decode threshold number of encoded data slices to reproduce the first data object in response to determining the first data object is not available directly.

8. A processing system of a computing device comprises:

at least one processor;

a memory that stores operational instructions, that when executed by the at least one processor cause the processing system to:

generate a data segment to include a first data object for storage and a plurality of null data objects;

dispersed storage error encode the data segment to produce a set of encoded data slices, wherein the set of encoded data slices includes a first encoded data slice that substantially corresponds to the first data object, wherein the set of encoded data slices further includes a plurality of null slices corresponding to the plurality of null data objects, and wherein the set of encoded data slices further includes a remaining number of error coded slices;

facilitate storage of the set of encoded data slices in a set of storage units;

facilitate storage of a second data object, wherein one of the plurality of null data objects is overwritten with the second data object;

calculate a partial contribution of the second data object for each of the error coded slices in accordance with a partial encoding approach; and

facilitate updating of each of the error coded slices by utilizing the corresponding partial contribution.

9. The processing system of claim 8 , wherein the data segment is dispersed storage error encoded by utilizing an information dispersal algorithm in accordance with dispersal parameters that include a pillar width number and a decode threshold number, wherein a number of encoded data slices in the set of encoded data slices is equal to the pillar width number, wherein a number of the plurality of null slices is equal to the decode threshold number minus one, and wherein a number of the remaining number of error coded slices is equal to the pillar width number minus the decode threshold number.

10. The processing system of claim 8 , wherein dispersed storage error encoding the data segment includes matrix multiplying the data segment by an encoding matrix to produce the set of encoded data slices, and wherein the encoding matrix includes a unity matrix, with a decode threshold number dimension, in a most significant number of rows.

11. The processing system of claim 10 , wherein calculating the partial contribution of the second data object includes matrix multiplying a corresponding row of the encoding matrix by the second data object to produce the partial contribution.

12. The processing system of claim 8 , wherein storing the second data object includes:

generating an update slice request that includes the second data object; and

sending the update slice request to a corresponding storage unit, wherein the storage unit performs an exclusive OR function on the second data object and a one of the plurality of null slices corresponding to the one of the plurality of null data objects to produce a second encoded data slice for storage in the storage unit.

13. The processing system of claim 8 , wherein facilitating updating the error coded slice includes issuing an update slice request to a corresponding storage unit, wherein the storage unit performs an exclusive OR function on the partial contribution and the error coded slice to produce an updated error coded slice for storage in the storage unit.

14. The processing system of claim 8 , wherein the operational instructions, when executed by the at least one processor, further cause the processing system to:

determine to recover the first data object;

access a corresponding storage unit in response to determining the first data object is available directly; and

recover a decode threshold number of encoded data slices of the set of encoded data slices and dispersed storage error decoding the decode threshold number of encoded data slices to reproduce the first data object in response to determining the first data object is not available directly.

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

at least one memory section that stores operational instructions that, when executed by a processing system of a dispersed storage network (DSN) that includes a processor and a memory, causes the processing system to:

generate a data segment to include a first data object for storage and a plurality of null data objects;

dispersed storage error encode the data segment to produce a set of encoded data slices, wherein the set of encoded data slices includes a first encoded data slice that substantially corresponds to the first data object, wherein the set of encoded data slices further includes a plurality of null slices corresponding to the plurality of null data objects, and wherein the set of encoded data slices further includes a remaining number of error coded slices;

facilitate storage of the set of encoded data slices in a set of storage units;

facilitate storage of a second data object, wherein one of the plurality of null data objects is overwritten with the second data object;

calculate a partial contribution of the second data object for each of the error coded slices in accordance with a partial encoding approach; and

facilitate updating of each of the error coded slices by utilizing the corresponding partial contribution.

16. The non-transitory computer readable storage medium of claim 15 , wherein the data segment is dispersed storage error encoded by utilizing an information dispersal algorithm in accordance with dispersal parameters that include a pillar width number and a decode threshold number, wherein a number of encoded data slices in the set of encoded data slices is equal to the pillar width number, wherein a number of the plurality of null slices is equal to the decode threshold number minus one, and wherein a number of the remaining number of error coded slices is equal to the pillar width number minus the decode threshold number.

17. The non-transitory computer readable storage medium of claim 15 , wherein dispersed storage error encoding the data segment includes matrix multiplying the data segment by an encoding matrix to produce the set of encoded data slices, and wherein the encoding matrix includes a unity matrix, with a decode threshold number dimension, in a most significant number of rows.

18. The non-transitory computer readable storage medium of claim 17 , wherein calculating the partial contribution of the second data object includes matrix multiplying a corresponding row of the encoding matrix by the second data object to produce the partial contribution.

19. The non-transitory computer readable storage medium of claim 15 , wherein storing the second data object includes:

generating an update slice request that includes the second data object; and

sending the update slice request to a corresponding storage unit, wherein the storage unit performs an exclusive OR function on the second data object and a one of the plurality of null slices corresponding to the one of the plurality of null data objects to produce a second encoded data slice for storage in the storage unit.

20. The non-transitory computer readable storage medium of claim 15 , wherein facilitating updating the error coded slice includes issuing an update slice request to a corresponding storage unit, wherein the storage unit performs an exclusive OR function on the partial contribution and the error coded slice to produce an updated error coded slice for storage in the storage unit.

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 Dec 7, 2017
From: WOZNIAK, ETHAN S.; BAPTIST, ANDREW D.; DHUSE, GREG R.; VOLVOVSKI, ILYA; RESCH, JASON K.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 044327/0971 →