IP Library Granted Patent US 10,481,833
Granted Patent B2
US 10,481,833 · App. 15/850,127 · Granted Nov 19, 2019

Transferring data encoding functions in a distributed storage network

Inventors: Wesley B. Leggette (Chicago, IL); Ravi V. Khadiwala (Bartlett, IL); Bruno Hennig Cabral (Chicago, IL); Jason K. Resch (Chicago, IL)
Assignee: PURE STORAGE, INC.
G06F3/0659G06F3/064G06F3/065G06F3/067G06F3/0619G06F11/1076
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,481,833
App. No.
15/850,127
Granted
Nov 19, 2019
Kind
B2
Abstract

A method for transferring data encoding begins by receiving a data access request to access a data object that is based on a set of encoded data slices (EDSs) that is distributedly stored among a plurality of storage units (SUs) associated with a plurality of storage sites, and continues with a computing device selecting respective numbers of SUs at each of the plurality of storage sites to support the data access request. The method continues with the computing device selecting another computing device that is associated with a storage site of the plurality of storage sites to process the data access request, based on the respective numbers of SUs at each of the plurality of storage sites. The method continues with the computing device transmitting the data access request to the another computing device to for processing.

Claims (47)

1. A computing device comprising:

an interface configured to interface and communicate with a distributed storage network (DSN);

memory that stores operational instructions; and

processing circuitry operably coupled to the interface and to the memory, wherein the processing circuitry is configured to execute the operational instructions to:

receive a data access request to access a data object that is based on a set of encoded data slices (EDSs) that is distributedly stored among a plurality of storage units (SUs) associated with a plurality of storage sites, wherein a data object is segmented into a plurality of data segments, and wherein the data segment of the plurality of data segments is dispersed error encoded in accordance with dispersed error encoding parameters to produce a set of encoded data slices (EDSs);

select respective numbers of SUs at each of the plurality of storage sites to support the data access request;

based on the respective numbers of SUs at each of the plurality of storage sites, select a first computing device that is associated with a first storage site of the plurality of storage sites to process the data access request; and

transmit the data access request to the first computing device to be processed by the first computing device.

2. The computing device of claim 1 , wherein the data access request includes a consistency level indicator and further wherein the consistency level indicator includes information sufficient to determine a probability that a read data request can provide a most recent version of the data object.

3. The computing device of claim 1 , wherein the plurality of storage sites includes a storage site with a number of SUs that is larger than the number of SUs for the other storage sites of the plurality of storage sites and further wherein the storage site is the first storage site.

4. The computing device of claim 1 , wherein the respective numbers of SUs at each of the plurality of storage sites selected to support the data access request are selected based on at least one of a number of storage units available at each storage site, a performance level for one or more storage units at each storage site, a predetermination, and interpreting a DSN registry.

5. The computing device of claim 1 , wherein the data access request is a store data request.

6. The computing device of claim 1 , wherein the processing circuitry is further configured to execute the operational instructions to:

issue one or more write slice requests to the SUs at each of the plurality of storage sites; and

receive one or more write slice responses from at least some of the SUs at each of the plurality of storage sites.

7. The computing device of claim 6 , wherein the processing circuitry is further configured to execute the operational instructions to:

determine whether a favorable number of write slice responses have been received from SUs at each of the plurality of storage sites, and

when a favorable number of write slice responses have been received from the plurality of SUs, issue a store data request to at least some of the SUs at each of the plurality of storage sites from which a favorable write slice response has been received.

8. The computing device of claim 7 , wherein a favorable write slice response is a write slice response received within a predetermined time-frame.

9. A method for execution by one or more processing modules of one or more computing devices of a dispersed storage network (DSN), the method comprises:

receiving, by the one or more processing modules, a data access request to access a data object that is based on a set of encoded data slices (EDSs) that is distributedly stored among a plurality of storage units (SUs) associated with a plurality of storage sites, wherein a data object is segmented into a plurality of data segments, and wherein the data segment of the plurality of data segments is dispersed error encoded in accordance with dispersed error encoding parameters to produce a set of encoded data slices (EDSs);

selecting, by the one or more processing modules, respective numbers of SUs at each of the plurality of storage sites to support the data access request;

based on the respective numbers of SUs at each of the plurality of storage sites, selecting, by the one or more processing modules, a first computing device that is associated with a first storage site of the plurality of storage sites to process the data access request; and

transmitting, by the one or more processing modules, the data access request to the first computing device to be processed by the first computing device.

10. The method of claim 9 , wherein the data access request includes a consistency level indicator and further wherein the consistency level indicator includes information sufficient to determine a probability that a read data request can provide a most recent version of the data object.

11. The method of claim 9 , wherein the plurality of storage sites includes a storage site of the plurality of storage sites with a number of SUs that is larger than the number of SUs for the other storage sites of the plurality of storage sites and further wherein the storage site is the first storage site.

12. The method of claim 9 , wherein the respective numbers of SUs at each of the plurality of storage sites selected to support the data access request are selected based on at least one of a number of storage units available at each storage site, a performance level for one or more storage units at each storage site, a predetermination, and interpreting a DSN registry.

13. The method of claim 9 , further comprising:

issuing one or more write slice requests to the SUs at each of the plurality of storage sites; and

receiving one or more write slice responses from at least some of the SUs at each of the plurality of storage sites.

14. The method of claim 9 , wherein the data access request is a store data request.

15. A first computing device comprising:

an interface configured to interface and communicate with a dispersed or distributed storage network (DSN);

memory that stores operational instructions; and

processing circuitry operably coupled to the interface and to the memory, wherein the processing circuitry is configured to execute the operational instructions to:

receive a store data request, wherein the store data request includes a data object and a consistency level indicator;

select one or more storage units (SUs) from each of a plurality of storage sites to support the store data request;

select a second computing device associated with a storage site of the plurality of storage sites to process the store data request;

transmit the store data request to the storage site of the plurality to storage sites;

dispersed error encode, by the second computing device, the data object in accordance with dispersed error encoding parameters to produce a plurality of sets of encoded data slices (EDSs); and

transmit, by the second computing device, one or more sets of EDSs of the plurality of sets of EDSs to a one or more storage sites of the plurality of storage sites.

16. The first computing device of claim 15 , wherein the consistency level indicator includes information sufficient to determine a probability that a read data request can provide a most recent version of the data object.

17. The first computing device of claim 16 , wherein the plurality of storage sites includes a storage site of the plurality of storage sites with a number of SUs that is larger than the number of SUs for the other storage sites of the plurality of storage sites and further wherein the storage site is associated with the second computing device.

18. The first computing device of claim 16 , wherein the one or more storage units (SUs) from each of a plurality of storage sites selected to support the store data request are selected based on at least one of a number of storage units available at each storage site, a performance level for one or more storage units at each storage site, a predetermination, and interpreting a DSN registry.

19. The first computing device of claim 16 , wherein the processing circuitry is further configured to execute the operational instructions to:

issue one or more write slice requests to the SUs at each of the plurality of storage sites; and

receive one or more write slice responses from at least some of the SUs at each of the plurality of storage sites.

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 21, 2017
From: LEGGETTE, WESLEY B.; KHADIWALA, RAVI V.; CABRAL, BRUNO HENNIG; RESCH, JASON K.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 044461/0638 →