IP Library Granted Patent US 12,267,440
Granted Patent B2
US 12,267,440 · App. 18/403,005 · Granted Apr 1, 2025

Data availability in a storage network in the 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 12,267,440
App. No.
18/403,005
Granted
Apr 1, 2025
Kind
B2
Abstract

A device for use in a storage network including storage network memory distributed amongst a plurality of storage units. The device includes a processing module operably couple to a memory that stores operational instructions. The processing module is configured to execute the operational instructions to determine storage parameters associated with encoded data slices generated from data to be stored in the plurality of storage units. The storage parameters include information indicating a read threshold number of encoded data slices required to recover the data. The method further includes facilitating distributed storage of the encoded data slices among the plurality of storage units such that the number of the error-encoded data slices stored in any particular storage unit is chosen so that in the event of an unavailability of any individual storage unit, at least a read threshold number of encoded data slices are still accessible from the remaining storage units.

Claims (48)

1. A device comprises:

at least one interface;

memory that stores operational instructions; and

a processing module operably coupled to the memory and the at least one interface, wherein the processing module is configured to execute the operational instructions to:

determine storage parameters associated with encoded data slices generated from data that has been dispersed storage error encoded for storage in a plurality of storage units of a storage network, wherein the storage parameters include information indicating a read threshold number of encoded data slices required to recover the data; and

facilitate distributed storage of the encoded data slices among the plurality of storage units, wherein distributed storage includes limiting a number of the encoded data slices stored in each storage unit to a number that leaves at least the read threshold number of encoded data slices stored in the remaining storage units of the plurality of storage units in the event of an unavailability of any individual storage unit.

2. The device of claim 1 , wherein the processing module is further configured to execute the operational instructions to:

identify potential failures associated with memory of the plurality of storage units, wherein facilitating distributed storage of the encoded data slices among the plurality of storage units is based, at least in part, on the potential failures.

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

determine failure rates associated with the plurality of storage units, wherein facilitating distributed storage of the encoded data slices among the plurality of storage units is based, at least in part, on the failure rates.

4. The device of claim 1 , wherein the processing module is further configured to execute the operational instructions to:

determine at least one of performance levels or estimated performance levels associated with the plurality of storage units; and

select a number of storage units of the plurality of storage units for storing the encoded data slices based, at least in part, on the performance levels or the estimated performance levels.

5. The device of claim 1 , wherein the processing module is further configured to execute the operational instructions to:

determine storage capacities of the plurality of storage units; and

select a number of storage units of the plurality of storage units for storing the encoded data slices based, at least in part, on the storage capacities.

6. The device of claim 1 , wherein the storage parameters further include:

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

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

select a number of the storage units for storing the encoded data slices based, at least in part, on the write threshold number of encoded data slices.

8. A device comprises:

at least one interface;

memory that stores operational instructions; and

a processing module operably coupled to the memory and the at least one interface, wherein the processing module is configured to execute the operational instructions to:

determine storage parameters associated with encoded data slices generated from data that has been dispersed storage error encoded for storage in a plurality of storage units of a storage network, wherein the storage parameters include information indicating a read threshold number of encoded data slices required to recover the data;

determine performance information associated with the plurality of storage units, wherein the storage units include a plurality of memory devices configured to store one or more encoded data slices of the read threshold number of encoded data slices;

identify, based on the storage parameters and the performance information, selected storage units to be used for storing the encoded data slices; and

facilitate distributed storage of the encoded data slices among the selected storage units, wherein distributed storage includes limiting a number of the encoded data slices stored in each of the selected storage units to a number that leaves at least the read threshold number of encoded data slices stored in the remaining storage units of the selected storage units in the event of an unavailability of any individual storage unit.

9. The device of claim 8 , wherein determining the performance information includes identifying potential failures associated with the plurality of storage units, and wherein identifying the selected storage units is further based on the potential failures.

10. The device of claim 8 , wherein determining the performance information includes identifying failure rates associated with the plurality of storage units, and wherein identifying the selected storage units is further based on the failure rates.

11. The device of claim 8 , wherein the performance information includes at least one of performance levels or estimated performance levels associated with the plurality of storage units, and wherein identifying the selected storage units is further based on the performance levels or the estimated performance levels.

12. The device of claim 8 , wherein determining the performance information includes determining storage capacities associated with the plurality of storage units, and wherein identifying the selected storage units is further based on the storage capacities.

13. The device of claim 8 , wherein the storage parameters further include:

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

14. The device of claim 13 , wherein identifying the selected storage units is further based on the write threshold number of encoded data slices.

15. A device comprises:

at least one interface;

memory that stores operational instructions; and

a processing module operably coupled to the memory and the at least one interface, wherein the processing module is configured to execute the operational instructions to:

determine storage parameters associated with encoded data slices generated from data to be stored in a plurality of storage units of a storage network, wherein the storage parameters include information indicating a read threshold number of encoded data slices required to recover the data;

determine performance information corresponding to a storage unit of the plurality of storage units, wherein the storage unit includes a plurality of memory devices configured to store one or more encoded data slices of the read threshold number of encoded data slices; and

facilitate storage of one or more encoded data slices in the storage unit based on the storage parameters and the performance information.

16. The device of claim 15 , wherein determining the performance information includes identifying potential memory device failures.

17. The device of claim 16 , wherein identifying potential memory device failures includes determining a failure rate associated with the storage unit.

18. The device of claim 15 , wherein determining the performance information includes determining a storage capacity of the storage unit.

19. The device of claim 15 , wherein the processing module is further configured to execute the operational instructions to:

select, based at least in part on the performance information, one or more of the plurality of memory devices for storage of the one or more encoded data slices.

20. The device of claim 15 , wherein determining the performance information includes determining a status of an availability indicator associated with the storage unit.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 3, 2024
From: RESCH, JASON K.; DHUSE, GREG R.
To: PURE STORAGE, INC.
Reel/Frame 066007/0326 →
Continuity (7)
Continuation 18104382 · Feb 1, 2023
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 20240137226A1 · Apr 25, 2024
References Cited (113)
US 4092732A · Ouchi · 1978 [cited by applicant]
US 5454101A · Mackay · 1995 [cited by applicant]
US 5485474A · Rabin · 1996 [cited by applicant]
US 5774643A · Lubbers · 1998 [cited by applicant]
US 5802364A · Senator · 1998 [cited by applicant]
US 5809285A · Hilland · 1998 [cited by applicant]
US 5890156A · Rekieta · 1999 [cited by applicant]
US 5987622A · Lo Verso · 1999 [cited by applicant]
US 5991414A · Garay · 1999 [cited by applicant]
US 6012159A · Fischer · 2000 [cited by applicant]
US 6058454A · Gerlach · 2000 [cited by applicant]
US 6088805A · Davis et al. · 2000 [cited by applicant]
US 6128277A · Bruck · 2000 [cited by applicant]
US 6175571B1 · Haddock · 2001 [cited by applicant]
US 6192472B1 · Garay · 2001 [cited by applicant]
US 6256688B1 · Suetaka · 2001 [cited by applicant]
US 6272658B1 · Steele · 2001 [cited by applicant]
US 6301604B1 · Nojima · 2001 [cited by applicant]
US 6356949B1 · Katsandres · 2002 [cited by applicant]
US 6366995B1 · Vilkov · 2002 [cited by applicant]
US 6374336B1 · Peters · 2002 [cited by applicant]
US 6415373B1 · Peters · 2002 [cited by applicant]
US 6418539B1 · Walker · 2002 [cited by applicant]
US 6449688B1 · Peters · 2002 [cited by applicant]
US 6567948B2 · Steele · 2003 [cited by applicant]
US 6571282B1 · Bowman-Amuah · 2003 [cited by applicant]
US 6574657B1 · Dickinson · 2003 [cited by applicant]
US 6609223B1 · Wolfgang · 2003 [cited by applicant]
US 6718361B1 · Basani · 2004 [cited by applicant]
US 6754829B1 · Butt · 2004 [cited by applicant]
US 6760808B2 · Peters · 2004 [cited by applicant]
US 6785768B2 · Peters · 2004 [cited by applicant]
US 6785783B2 · Buckland · 2004 [cited by applicant]
US 6823454B1 · Hind · 2004 [cited by applicant]
US 6826711B2 · Moulton · 2004 [cited by applicant]
US 6879596B1 · Dooply · 2005 [cited by applicant]
US 7003688B1 · Pittelkow · 2006 [cited by applicant]
US 7024451B2 · Jorgenson · 2006 [cited by applicant]
US 7024609B2 · Wolfgang · 2006 [cited by applicant]
US 7080101B1 · Watson · 2006 [cited by applicant]
US 7103824B2 · Halford · 2006 [cited by applicant]
US 7103915B2 · Redlich · 2006 [cited by applicant]
US 7111115B2 · Peters · 2006 [cited by applicant]
US 7140044B2 · Redlich · 2006 [cited by applicant]
US 7146644B2 · Redlich · 2006 [cited by applicant]
US 7171493B2 · Shu · 2007 [cited by applicant]
US 7213262B1 · Elley · 2007 [cited by applicant]
US 7222133B1 · Raipurkar · 2007 [cited by applicant]
US 7240236B2 · Cutts · 2007 [cited by applicant]
US 7272613B2 · Sim · 2007 [cited by applicant]
US 7636724B2 · De La Torre · 2009 [cited by applicant]
US 8041641B1 · Panchbudhe · 2011 [cited by applicant]
US 8386540B1 · McAlister · 2013 [cited by applicant]
US 8572055B1 · Wu · 2013 [cited by applicant]
US 9207870B2 · Baptist · 2015 [cited by applicant]
US 10387247B2 · Baptist · 2019 [cited by applicant]
US 10496500B2 · Resch · 2019 [cited by applicant]
US 20020062422A1 · Butterworth · 2002 [cited by applicant]
US 20020166079A1 · Ulrich · 2002 [cited by applicant]
US 20030018927A1 · Gadir · 2003 [cited by applicant]
US 20030037261A1 · Meffert · 2003 [cited by applicant]
US 20030065617A1 · Watkins · 2003 [cited by applicant]
US 20030084020A1 · Shu · 2003 [cited by applicant]
US 20040024963A1 · Talagala · 2004 [cited by applicant]
US 20040122917A1 · Menon · 2004 [cited by applicant]
US 20040215998A1 · Buxton · 2004 [cited by applicant]
US 20040228493A1 · Ma · 2004 [cited by applicant]
US 20050100022A1 · Ramprashad · 2005 [cited by applicant]
US 20050114594A1 · Corbett · 2005 [cited by applicant]
US 20050125593A1 · Karpoff · 2005 [cited by applicant]
US 20050131993A1 · Fatula, Jr. · 2005 [cited by applicant]
US 20050132070A1 · Redlich · 2005 [cited by applicant]
US 20050144382A1 · Schmisseur · 2005 [cited by applicant]
US 20050229069A1 · Hassner · 2005 [cited by applicant]
US 20060047907A1 · Shiga · 2006 [cited by applicant]
US 20060136448A1 · Cialini · 2006 [cited by applicant]
US 20060156059A1 · Kitamura · 2006 [cited by applicant]
US 20060224603A1 · Correll, Jr. · 2006 [cited by applicant]
US 20070079081A1 · Gladwin · 2007 [cited by applicant]
US 20070079082A1 · Gladwin · 2007 [cited by applicant]
US 20070079083A1 · Gladwin · 2007 [cited by applicant]
US 20070088970A1 · Buxton · 2007 [cited by applicant]
US 20070174192A1 · Gladwin · 2007 [cited by applicant]
US 20070214285A1 · Au · 2007 [cited by applicant]
US 20070234110A1 · Soran · 2007 [cited by applicant]
US 20070283167A1 · Venters, III · 2007 [cited by applicant]
US 20080155169A1 · Hiltgen · 2008 [cited by applicant]
US 20090094251A1 · Gladwin · 2009 [cited by applicant]
US 20090094318A1 · Gladwin · 2009 [cited by applicant]
US 20100023524A1 · Gladwin · 2010 [cited by applicant]
US 20100250858A1 · Cremelie · 2010 [cited by applicant]
US 20120254959A1 · Schmidt · 2012 [cited by applicant]
US 20120278569A1 · Kawakami · 2012 [cited by applicant]
US 20130085914A1 · McPherson · 2013 [cited by applicant]
US 20140297951A1 · Baptist · 2014 [cited by applicant]
Chung; An Automatic Data Segmentation Method for 3D Measured Data Points; National Taiwan University; pp. 1-8; 1998. [cited by applicant]
Harrison; Lightweight Directory Access Protocol (LDAP): Authentication Methods and Security Mechanisms; IETF Network Working Group; RFC 4513; Jun. 2006; pp. 1-32. [cited by applicant]
Kubiatowicz, et al.; OceanStore: An Architecture for Global-Scale Persistent Storage; Proceedings of the Ninth International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS 20… [cited by applicant]
Legg; Lightweight Directory Access Protocol (LDAP): Syntaxes and Matching Rules; IETF Network Working Group; RFC 4517; Jun. 2006; pp. 1-50. [cited by applicant]
Plank, T1: Erasure Codes for Storage Applications; FAST2005, 4th Usenix Conference on File Storage Technologies; Dec. 13-16, 2005; pp. 1-74. [cited by applicant]
Rabin; Efficient Dispersal of Information for Security, Load Balancing, and Fault Tolerance; Journal of the Association for Computer Machinery; vol. 36, No. 2; Apr. 1989; pp. 335-348. [cited by applicant]
Satran, et al.; Internet Small Computer Systems Interface (iSCSI); IETF Network Working Group; RFC 3720; Apr. 2004; pp. 1-257. [cited by applicant]
Sciberras; Lightweight Directory Access Protocol (LDAP): Schema for User Applications; IETF Network Working Group; RFC 4519; Jun. 2006; pp. 1-33. [cited by applicant]
Sermersheim; Lightweight Directory Access Protocol (LDAP): The Protocol; IETF Network Working Group; RFC 4511; Jun. 2006; pp. 1-68. [cited by applicant]
Shamir; How to Share a Secret; Communications of the ACM; vol. 22, No. 11; Nov. 1979; pp. 612-613. [cited by applicant]
Smith; Lightweight Directory Access Protocol (LDAP): Uniform Resource Locator; IETF Network Working Group; RFC 4516; Jun. 2006; pp. 1-15. [cited by applicant]
Smith; Lightweight Directory Access Protocol (LDAP): String Representation of Search Filters; IETF Network Working Group; RFC 4515; Jun. 2006; pp. 1-12. [cited by applicant]
Wildi; Java iSCSi Initiator; Master Thesis; Department of Computer and Information Science, University of Konstanz; Feb. 2007; 60 pgs. [cited by applicant]
Xin, et al.; Evaluation of Distributed Recovery in Large-Scale Storage Systems; 13th IEEE International Symposium on High Performance Distributed Computing; Jun. 2004; pp. 172-181. [cited by applicant]
Zeilenga; Lightweight Directory Access Protocol (LDAP): Directory Information Models; IETF Network Working Group; RFC 4512; Jun. 2006; pp. 1-49. [cited by applicant]
Zeilenga; Lightweight Directory Access Protocol (LDAP): Internationalized String Preparation; IETF Network Working Group; RFC 4518; Jun. 2006; pp. 1-14. [cited by applicant]
Zeilenga; Lightweight Directory Access Protocol (LDAP): String Representation of Distinguished Names; IETF Network Working Group; RFC 4514; Jun. 2006; pp. 1-15. [cited by applicant]
Zeilenga; Lightweight Directory Access Protocol (LDAP): Technical Specification Road Map; IETF Network Working Group; RFC 4510; Jun. 2006; pp. 1-8. [cited by applicant]