IP Library Granted Patent US 11,870,916
Granted Patent B2
US 11,870,916 · App. 18/104,382 · Granted Jan 9, 2024

Data availability in vast network in event of memory device failure

Inventors: Jason K. Resch (Warwick, RI); Greg R. Dhuse (Chicago, IL)
Assignee: Pure Storage, Inc.
H04L9/3263H04L9/0825H04L9/3247H04L67/1097
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,870,916
App. No.
18/104,382
Granted
Jan 9, 2024
Kind
B2
Abstract

A method for use in a distributed storage network including a distributed storage network (DSN) memory, which in turn includes multiple storage units, includes determining storage parameters associated with error-encoded data slices generated from data to be stored in the DSN memory. The storage parameters include information indicating a read-threshold number of error-encoded data slices required to recover the data. The method further includes distributedly storing the error-encoded data slices among the plurality of storage units so that the number of the error-encoded data slices stored in any particular storage unit is chosen so that in the event of a failure of any individual storage unit, at least a read-threshold number of error-encoded data slices are still accessible from the remaining storage units.

Claims (55)

1. A method for use in a distributed storage network including a distributed storage network (DSN) memory, the DSN memory including a plurality of storage units, the method comprising:

determining storage parameters associated with error-encoded data slices generated from data to be stored in the DSN memory, wherein the storage parameters include information indicating a read-threshold number of error-encoded data slices required to recover the data; and

distributedly storing the error-encoded data slices among the plurality of storage units, wherein distributedly storing includes limiting a number of the error-encoded data slices stored in each storage unit to a number that will leave at least the read-threshold number of error-encoded data slices stored in remaining storage units in the event of a failure of any individual storage unit.

2. The method of claim 1 , further comprising:

identifying failure potentials associated with the plurality of storage units; and

distributedly storing the error-encoded data slices in the plurality of storage units based on the failure potentials.

3. The method of claim 2 , wherein:

identifying the failure potentials includes determining failure rates associated with the plurality of storage units; and

distributedly storing the error-encoded data slices in the plurality of storage units includes storing the error-encoded data slices in the plurality of storage units based on the failure potentials.

4. The method of claim 1 , further comprising:

determining storage capacities of the plurality of storage units; and

distributedly storing the error-encoded data slices in plurality of storage units based on the storage capacity associated with the plurality of storage units.

5. The method of claim 1 , further comprising:

determining performance levels associated with the plurality of storage units.

6. The method of claim 5 , further comprising:

selecting a number of storage units for storing error-encoded data slices based, at least in part, on the performance levels associated with the plurality of storage units.

7. The method of claim 1 , wherein the storage parameters include:

a write-threshold number of error-encoded data slices corresponding to a minimum number of storage units used to store the error-encoded data slices, wherein the write-threshold number of error-encoded data slices is greater than or equal to the read-threshold number of error-encoded data slices.

8. A method for use in a distributed storage network including storage units, the method comprising:

determining first storage parameters associated with error-encoded data slices generated from data to be stored in the distributed storage network, wherein the storage parameters include information indicating a read-threshold number of the error-encoded data slices required to recover the data;

determining second storage parameters associated with storage units included in the distributed storage network, wherein the storage units include memory devices configured to store one or more error-encoded data slices of the read-threshold number of error-encoded data slices;

identifying, based on the first storage parameters and the second storage parameters, selected storage units to be used for storing the one or more error-encoded data slices; and

distributedly storing the error-encoded data slices among the selected storage units, wherein distributedly storing includes limiting a number of the error-encoded data slices stored in each storage unit to a number that will leave at least the read-threshold number of error-encoded data slices stored in remaining selected storage units in the event of a failure of any individual selected storage unit.

9. The method of claim 8 , wherein:

determining the second storage parameters includes identifying failure potentials associated with the storage units; and

distributedly storing the error-encoded data slices includes storing the error-encoded data slices in the selected storage units based on the failure potentials.

10. The method of claim 9 , wherein identifying the failure potentials includes:

determining failure rates associated with the storage units; and

distributedly storing the error-encoded data slices includes storing the error-encoded data slices in the selected storage units based on the failure rates.

11. The method of claim 8 , wherein:

determining the second storage parameters includes determining storage capacities of the storage units; and

distributedly storing the error-encoded data slices includes storing the error-encoded data slices in selected storage units based on the storage capacities.

12. The method of claim 8 , wherein:

determining the second storage parameters includes determining performance levels associated with the storage units; and

distributedly storing the error-encoded data slices includes storing the error-encoded data slices in the selected storage units based on the performance levels.

13. The method of claim 12 , further comprising:

selecting a number of the storage units for storing error-encoded data slices based, at least in part, on the performance levels associated with the storage units.

14. The method of claim 8 , wherein the first storage parameters include:

a write-threshold number of error-encoded data slices corresponding to a minimum number of the storage units used to store the error-encoded data slices, wherein the write-threshold is greater than or equal to the read-threshold number of error-encoded data slices.

15. A distributed storage network comprising:

at least one processor configured to determine storage parameters associated with error-encoded data slices generated from data to be stored in the distributed storage network, wherein the storage parameters include information indicating a read-threshold number of error-encoded data slices required to recover the data;

storage units including memory devices configured to store one or more error-encoded data slices of the read-threshold number of error-encoded data slices; and

the at least one processor further configured to distributedly store the error-encoded data slices among the storage units, wherein distributedly storing includes limiting a number of the error-encoded data slices stored in each storage unit to a number that will leave at least the read-threshold number of error-encoded data slices stored in remaining storage units in the event of a failure of any individual storage unit.

16. The distributed storage network of claim 15 , wherein:

the at least one processor is further configured to:

identify potential memory device failures; and

distributedly storing the error-encoded data slices in the storage units based on any identified potential memory device failures.

17. The distributed storage network of claim 16 , wherein:

the at least one processor is further configured to identify the potential memory device failures based, at least in part, on a failure rate associated with the storage unit.

18. The distributed storage network of claim 15 , wherein:

the at least one processor is further configured to determine storage unit capacities.

19. The distributed storage network of claim 15 , wherein the at least one processor is further configured to:

determine performance levels associated with the storage units.

20. The distributed storage network of claim 15 , wherein the at least one processor is further configured to:

select a number of the storage units to use for storing the error-encoded data slices based on the storage parameters associated with the storage unit.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 1, 2023
From: RESCH, JASON K.; DHUSE, GREG R.
To: PURE STORAGE, INC.
Reel/Frame 062561/0386 →
Continuity (6)
Continuation 17738244 · May 6, 2022
Continuation 16686492 · Nov 18, 2019
Continuation In Part 16142479 · Sep 26, 2018
Continuation In Part 13611533 · Sep 12, 2012
Provisional Application 61554358 · Nov 1, 2011
Related Publication 20230171111A1 · Jun 1, 2023