IP Library Granted Patent US 10,223,033
Granted Patent B2
US 10,223,033 · App. 15/844,064 · Granted Mar 5, 2019

Coordinating arrival times of data slices in a dispersed storage network

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,033
App. No.
15/844,064
Granted
Mar 5, 2019
Kind
B2
Abstract

Methods for use in a dispersed storage network (DSN) to coordinate data slice arrival times. In various examples, a DSN computing device receives a store data request, the store data request including a data object. A set of storage units associated with the store data request is identified, and the data object is dispersed storage error encoded to produce a plurality of sets of encoded data slices. One or more sets of write slice requests that include one or more sets of encoded data slices are also generated for reception by storage units of the set of storage units. For each set of write slice requests, a transmission schedule is determined for each write slice request such that the set of write slice requests arrives at corresponding storage units at substantially the same time frame. Each of the write slice requests is then transmitted in accordance with the transmission schedule.

Claims (67)

1. 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 a store data request, the store data request including a data object;

identifying a set of storage units associated with the store data request, wherein at least two of the storage units are co-located storage units;

dispersed storage error encoding the data object to produce a plurality of sets of encoded data slices, wherein the data object is segmented into a plurality of data segments and wherein each data segment is dispersed storage error encoded into a respective set of encoded data slices;

generating, for reception by storage units of the set of storage units, one or more sets of write slice requests that include, respectively, one or more sets of encoded data slices;

determining, for a set of write slice requests, a transmission schedule for each write slice request such that each write slice request of the set of write slice requests arrives at a corresponding storage unit of the set of storage units at approximately the same time, wherein the transmission schedules are based on estimated transmission times for receiving write slice requests by corresponding storage units of the set of storage units;

sending each write slice request of the set of write slice requests in accordance with a respective transmission schedule, including sending write slices requests to the co-located storage units using a common time delay value;

receiving write slice responses from at least some of the storage units of the set of storage units; and

in response to receiving less than a write threshold number of favorable write slice responses within a time frame:

recalculating one or more of the transmission schedules to vary one or more time delay value associated with one or more of the write slice requests; and

resending, to the set of storage units, the one or more of the write slice requests in accordance with the recalculated one or more of the transmission schedules.

2. The method of claim 1 , wherein at least some of the storage units of the set of storage units are in differing locations, and wherein determining a transmission schedule for each write slice request comprises:

obtaining, for each storage unit of the set of storage units, a respective estimated transmission time for receiving a write slice request;

identifying a longest transmission time of the respective estimated transmission times; and

establishing, for each storage unit of the set of storage units, a time delay value as a difference between the longest transmission time and the respective estimated transmission time for a storage unit, wherein a time delay value indicates an amount of time to delay sending a corresponding write slice request after sending a write slice request to a storage unit associated with the longest transmission time.

3. The method of claim 2 , wherein obtaining a respective estimated transmission time includes at least one of a lookup operation, initiating a test, or interpreting test results.

4. The method of claim 1 further comprises:

indicating successful storage of the one or more sets of encoded data slices when receiving the write threshold number of favorable write slice responses within a second time frame.

5. The method of claim 1 , wherein resending the one or more of the write slice requests includes resending each write slice request of the set of write slice requests.

6. The method of claim 1 , wherein identifying the set of storage units includes at least one of interpreting a vault lookup based on a requester identifier, performing a random selection, performing a selection based on available storage capacity, performing a selection based on performance, or performing a selection based on transmission time delays to each storage unit of the set of storage units.

7. The method of claim 1 , wherein generating the one or more sets of write slice requests further includes:

generating a plurality of slice names corresponding to the one or more sets of encoded data slices, wherein each write slice request of the one or more sets of write slice requests further includes a slice name corresponding to a respective encoded data slice of the write slice request.

8. The method of claim 1 , wherein the store data request further includes a requester identifier and a data object name.

9. A computer readable storage medium comprises:

at least one memory section that stores operational instructions that, when executed by one or more processing modules of a dispersed storage network (DSN), causes the one or more processing modules to:

receive a store data request, the store data request including a data object;

identify a set of storage units associated with the store data request, wherein at least two of the storage units of the set of storage units are co-located storage units;

dispersed storage error encode the data object to produce a plurality of sets of encoded data slices, wherein the data object is segmented into a plurality of data segments and wherein each data segment is dispersed storage error encoded into a respective set of encoded data slices;

generate, for reception by storage units of the set of storage units, one or more sets of write slice requests that include, respectively, one or more sets of encoded data slices;

determine, for a set of write slice requests, a transmission schedule for each write slice request such that each write slice request of the set of write slice requests arrives at a corresponding storage unit of the set of storage units at approximately the same time frame, wherein the transmission schedules are based on estimated transmission times for receiving write slice requests by corresponding storage units of the set of storage units;

send each write slice request of the set of write slice requests in accordance with a respective transmission schedule, including sending write slices requests to the co-located storage units using a common time delay value;

receive write slice responses from at least some of the storage units of the set of storage units; and

in response to receiving less than a write threshold number of favorable write slice responses within a time frame:

recalculate one or more of the transmission schedules to vary one or more time delay value associated with one or more of the write slice requests; and

resend, to the set of storage units, the one or more of the write slice requests in accordance with the recalculated one or more of the transmission schedules.

10. The computer readable storage medium of claim 9 , wherein the at least one memory section stores further operational instructions that, when executed by the one or more processing modules to determine a transmission schedule for each write slice request, causes the one or more processing modules to:

obtain, for each storage unit of the set of storage units, a respective estimated transmission time for receiving a write slice request;

identify a longest transmission time of the respective estimated transmission times; and

establish, for each storage unit of the set of storage units, a time delay value as a difference between the longest transmission time and the respective estimated transmission time for a storage unit, wherein a time delay value indicates an amount of time to delay sending a corresponding write slice request after sending a write slice request to a storage unit associated with the longest transmission time.

11. The computer readable storage medium of claim 10 , wherein obtaining a respective estimated transmission time includes at least one of a lookup operation, initiating a test, or interpreting test results.

12. The computer readable storage medium of claim 9 , wherein the at least one memory section stores further operational instructions that, when executed by the one or more processing modules, causes the one or more processing modules to:

indicate successful storage of the one or more sets of encoded data slices when receiving the write threshold number of favorable write slice responses within a second time frame.

13. The computer readable storage medium of claim 9 , wherein the at least one memory section stores further operational instructions that, when executed by the one or more processing modules to resend the one or more of the write slice requests, causes the one or more processing modules to resend each write slice request of the set of write slice requests.

14. The computer readable storage medium of claim 9 , wherein identifying the set of storage units includes performing a selection based on transmission time delays to each storage unit of the set of storage units.

15. A computing device of a dispersed storage network (DSN), the computing device comprises:

a network interface;

a memory comprising instructions; and

one or more processing modules in communication with the memory, wherein the one or more processing modules execute the instructions to:

receive, via the network interface, a store data request, the store data request including a data object;

identify a set of storage units associated with the store data request, wherein at least two of the storage units of the set of storage units are co-located storage units;

dispersed storage error encode the data object to produce a plurality of sets of encoded data slices, wherein the data object is segmented into a plurality of data segments and wherein each data segment is dispersed storage error encoded into a respective set of encoded data slices;

generate, for reception by storage units of the set of storage units, one or more sets of write slice requests that include, respectively, one or more sets of encoded data slices;

determine, for a set of write slice requests, a transmission schedule for each write slice request such that each write slice request of the set of write slice requests arrives at a corresponding storage unit of the set of storage units at approximately the same time, wherein the transmission schedules are based on estimated transmission times for receiving write slice requests by corresponding storage units of the set of storage units;

send, via the network interface, each write slice request of the set of write slice requests in accordance with a respective transmission schedule, including sending write slices requests to the co-located storage units using a common time delay value;

receive, via the network interface, write slice responses from at least some of the storage units of the set of storage units; and

in response to receiving less than a write threshold number of favorable write slice responses within a time frame:

recalculate one or more of the transmission schedules to vary one or more time delay value associated with one or more of the write slice requests; and

resend, to the set of storage units via the network interface, the one or more of the write slice requests in accordance with the recalculated one or more of the transmission schedules.

16. The computing device of claim 15 , wherein the one or more processing modules further execute the instructions to:

obtain, for each storage unit of the set of storage units, a respective estimated transmission time for receiving a write slice request;

identify a longest transmission time of the respective estimated transmission times; and

when determining the transmission schedule for each write slice request, establish, for each storage unit of the set of storage units, a time delay value as a difference between the longest transmission time and the respective estimated transmission time for a storage unit, wherein a time delay value indicates an amount of time to delay sending a corresponding write slice request after sending a write slice request to a storage unit associated with the longest transmission time.

17. The computing device of claim 16 , wherein obtaining a respective estimated transmission time includes at least one of a lookup operation, initiating a test, or interpreting test results.

18. The computing device of claim 15 , wherein the one or more processing modules further execute the instructions to:

indicate successful storage of the one or more sets of encoded data slices when receiving the write threshold number of favorable write slice responses within a second time frame.

19. The computing device of claim 15 , wherein resending the one or more of the write slice requests includes resending each write slice request of the set of write slice requests.

20. The computing device of claim 15 , wherein identifying the set of storage units includes performing a selection based on transmission time delays to each storage unit of the set 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 Dec 20, 2017
From: RESCH, JASON K.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 044452/0703 →