IP Library Granted Patent US 11,640,248
Granted Patent B2
US 11,640,248 · App. 17/817,443 · Granted May 2, 2023

Variable write threshold storage replication sites in a distributed storage network

Inventors: Greg R. Dhuse (Chicago, IL); Jason K. Resch (Warwick, RI); Ethan S. Wozniak (Park Ridge, IL)
Assignee: Pure Storage, Inc.
G06F3/0619G06F3/061G06F3/064G06F3/067G06F3/0611G06F3/0622G06F3/0635G06F3/0637G06F3/0644G06F3/0659G06F3/0665G06F3/0689G06F11/1076G06F11/1092G06F11/3034G06F11/3409G06F12/1408H03M13/3761H04L67/1097G06F2212/1052H03M13/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 11,640,248
App. No.
17/817,443
Granted
May 2, 2023
Kind
B2
Abstract

A computing device including a processing module configured to receive a read request for a read threshold number of encoded data slices of the set of encoded data slices, determine whether a read threshold number of encoded data slices of the set of encoded data slices is available in a set of storage units associated with a first storage site and when a read threshold number of encoded data slices of the set of encoded data slices is not available in the set of storage units associated with a first storage site, transmit a read request for a read threshold number of encoded data slices to the set of storage units associated with a second storage site.

Claims (43)

1. A computing device comprising:

an interface configured to interface and communicate with a storage network;

memory that stores operational instructions; and

a processing module operably coupled to the interface and to the memory, wherein the processing module, when operable within the computing device based on the operational instructions, is configured to:

transmit a write request for a first write threshold number of encoded data slices of a set of encoded data slices to a set of storage units associated with a first storage site, wherein a data object is segmented into a plurality of data segments, wherein a data segment of the plurality of data segments is dispersed error encoded in accordance with dispersed error encoding parameters to produce the set of encoded data slices, wherein a decode threshold number of encoded data slices are needed to recover the data segment, wherein a read threshold number of encoded data slices provides for reconstruction of the data segment;

transmit a write request for a second write threshold number of encoded data slices to a set of storage units associated with a second storage site;

receive a read request for a read threshold number of encoded data slices of the set of encoded data slices;

determine whether a read threshold number of encoded data slices of the set of encoded data slices is available in the set of storage units associated with the first storage site; and

in response to a determination that a read threshold number of encoded data slices of the set of encoded data slices is not available in the set of storage units associated with a first storage site, transmit a read request for a read threshold number of encoded data slices to the set of storage units associated with a second storage site.

2. The computing device of claim 1 , wherein the write request for the second write threshold number of encoded data slices includes at least some encoded data slices that are not common to the write request for the first write threshold number of encoded data slices.

3. The computing device of claim 1 , wherein the processing module is further configured to:

transmit a write request for a third write threshold number of encoded data slices to a set of storage units of a plurality of storage units associated with a third storage site;

determine whether a read threshold number of encoded data slices of the set of encoded data slices is available in the set of storage units associated with the second storage site; and

in response to a determination that a read threshold number of encoded data slices of the set of encoded data slices is not available in either of the set of storage units of a plurality of storage units associated with the first storage site, or the set of storage units of a plurality of storage units associated with the second storage site, transmit a read request for a read threshold number of encoded data slices to the set of storage units associated with a third storage site.

4. The computing device of claim 3 , wherein the write request for the third write threshold number of encoded data slices includes at least some encoded data slices that are not common to either of the write request for the first write threshold number of encoded data slices or the write request for the first write threshold number of encoded data slices.

5. The computing device of claim 1 , wherein the first storage site and the second storage site are located in different geographic locations.

6. The computing device of claim 1 , wherein the first storage site and the second storage site are associated with different storage pools.

7. The computing device of claim 1 , wherein each of the first storage site and the second storage site is associated with a different location weight, wherein the location weight is based on a resource prioritization.

8. The computing device of claim 7 , wherein the resource prioritization is based on a relative performance level for the first set of storage units and the second set of storage units, respectively.

9. The computing device of claim 8 , wherein the performance level for the first set of storage units is higher than the performance level for the second set of storage units.

10. The computing device of claim 1 , wherein the dispersed error encoding parameters used to produce for the first write threshold number of encoded data slices is different than the dispersed error encoding parameters used to produce the second write threshold number of encoded data slices.

11. A method for execution by a storage unit of a storage network, the storage unit including a processor, the method comprises:

receiving a data object for storage;

generating a first set of encoded slices by executing a first encoding function on a data segment of the data object, wherein a data object is segmented into a plurality of data segments, wherein a data segment of the plurality of data segments is dispersed error encoded in accordance with dispersed error encoding parameters to produce the set of encoded data slices, wherein a decode threshold number of encoded data slices are needed to recover the data segment, wherein a read threshold number of encoded data slices provides for reconstruction of the data segment;

transmitting a write request for a write threshold number of encoded data slices of the first set of encoded data slices to a set of storage units associated with a first storage site;

generating a second set of encoded slices by executing a second encoding function on the data segment;

transmitting a write request for a write threshold number of encoded data slices of the second set of encoded data slices to a set of storage units associated with a second storage site;

receiving a read request for a read threshold number of encoded data slices of the data segment;

determining whether a read threshold number of encoded data slices of the first set of encoded data slices is available in the set of storage units associated with the first storage site; and

in response to a determination that a read threshold number of encoded data slices of the first set of encoded data slices is not available in the set of storage units associated with the first storage site, transmitting a read request for a read threshold number of encoded data slices of the second set of encoded data slices to a set of storage units associated with the second storage site.

12. The method of claim 11 further comprises:

generating a third set of encoded slices by executing a third encoding function on the data segment;

transmitting a write request for a write threshold number of encoded data slices to a set of storage units associated with a third storage site;

determine whether a read threshold number of encoded data slices of the set of encoded data slices is available in the set of storage units associated with the second storage site; and

in response to a determination that a read threshold number of encoded data slices of the set of encoded data slices is not available in either of the set of storage units of a plurality of storage units associated with the first storage site, or the set of storage units of a plurality of storage units associated with the second storage site, transmit a read request for a read threshold number of encoded data slices to a set of storage units associated with a third storage site.

13. The method of claim 11 , wherein the first storage site and the second storage site are located in different geographic locations.

14. The method of claim 11 , wherein the first storage site and the second storage site are associated with different storage pools.

15. The method of claim 11 , wherein each of the first storage site and the second storage site is associated with a different location weight, wherein the location weight is based on a resource prioritization.

16. The method of claim 15 , wherein the resource prioritization is based on a relative performance level for the first set of storage units and the second set of storage units, respectively.

17. The method of claim 16 , wherein the performance level for the first set of storage units is higher than the performance level for the second set of storage units.

18. The method of claim 17 , wherein the performance level is based on a current storage utilization for each of the first set of storage units and the second set of storage units.

19. The method of claim 18 , wherein the performance level is based on a processing power usage for each of the first set of storage units and the second set of storage units.

20. The method of claim 19 , wherein the performance level is based on a measured access latency for each of the first set of storage units and the second set of storage units.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 5, 2022
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: PURE STORAGE, INC.
Reel/Frame 061085/0418 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 4, 2022
From: DHUSE, GREG R.; RESCH, JASON K.; WOZNIAK, ETHAN S.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 060721/0153 →