IP Library Granted Patent US 12,574,438
Granted Patent B2
US 12,574,438 · App. 18/616,573 · Granted Mar 10, 2026

Selectively testing a storage unit

Inventors: Thomas D. Cocagne (Elk Grove Village, IL); Jason K. Resch (Warwick, RI)
Assignee: Pure Storage, Inc.
H04L67/1097G06F16/182H04L67/5682H04L67/60H04L67/62
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,574,438
App. No.
18/616,573
Granted
Mar 10, 2026
Kind
B2
Abstract

A method for execution by one or more computing devices of a storage network includes determining a threshold number of favorably performing storage units of a set of storage units will be available during a time period for testing a storage unit of the set of storage units that is not apart of the threshold number of favorably performing storage units. The method further includes initiating the testing of the storage unit. The method further includes generating a testing report regarding the testing of the storage unit.

Claims (51)

1 . A method for execution by one or more computing devices of a storage network, the method comprising:

generating a plurality of encoded data slices for storage via a plurality of storage units based on performing an encoding function upon at least one data object;

storing the plurality of encoded data slices via a set of storage units located in a plurality of different locations;

determining a subset of the set of storage units that includes a predetermined threshold number of storage units of the set of storage units will be available during a time period for testing a storage unit of the set of storage units that is not included in the subset of the set of storage units;

initiating the testing of the storage unit based on determining the predetermined threshold number of storage units of the set of storage units will be available during the time period for testing the storage unit;

generating a testing report regarding the testing of the storage unit; and

accessing the data object based on reading multiple ones of the plurality of encoded data slices from multiple ones of the set of storage units, wherein the multiple ones of the set of storage units includes the storage unit.

2 . The method of claim 1 further comprises:

identifying the storage unit for the testing.

3 . The method of claim 2 , wherein the identifying comprises interpreting a previous test response.

4 . The method of claim 2 , wherein the identifying comprises interpreting a performance monitor.

5 . The method of claim 1 , wherein the determining whether the predetermined threshold number of storage units of the set of storage units will be available during the time period for testing comprises:

determining the predetermined threshold number;

determining the subset of the set of storage units;

comparing the predetermined threshold number with a number of storage units included in the subset of the set of storage units; and

when the number of storage units included in the subset of the set of storage units is equal to or greater than the predetermined threshold number, determining the predetermined threshold number of storage units of the set of storage units will be available.

6 . The method of claim 5 further comprises:

error encoding a data segment of data into a set of encoded data slices; and

storing the set of encoded data slices in the set of storage units.

7 . The method of claim 6 , wherein the predetermined threshold number corresponds with a decode threshold number of encoded data slices of the set of encoded data slices needed to reconstruct the data segment.

8 . The method of claim 1 , wherein the initiating the testing comprises:

issuing test tasks to the storage unit; and

receiving test results from the storage unit.

9 . The method of claim 8 further comprises:

generating the testing report based on the received test results.

10 . The method of claim 1 , wherein the initiating the testing comprises:

inhibiting access requests to the storage unit during the testing.

11 . The method of claim 1 , wherein the testing report comprises a memory utilization level of the storage unit.

12 . The method of claim 1 , wherein the testing report comprises a memory fragmentation level of the storage unit.

13 . The method of claim 1 , wherein the testing report comprises a number of vaults associated with the storage unit.

14 . The method of claim 1 , wherein the testing report comprises a number of namespace ranges supported by the storage unit.

15 . The method of claim 1 , wherein the testing report comprises a number of encoded data slices stored by the storage unit.

16 . The method of claim 1 , wherein the testing report comprises data storage statistics.

17 . The method of claim 1 , wherein the testing report comprises data retrieval statistics.

18 . The method of claim 1 further comprises:

determining a second subset of the set of storage units that includes the predetermined threshold number of storage units will be available during a time period for testing a second storage unit of the set of storage units that is not included in the subset of the set of storage units;

initiating the testing of the second storage unit; and

generating a second testing report regarding the testing of the second storage unit.

19 . A computing device comprising:

memory;

an interface; and

a processing module operably coupled to the memory and the interface, wherein the processing module is operable to:

generate a plurality of encoded data slices for storage via a plurality of storage units based on performing an encoding function upon at least one data object;

store the plurality of encoded data slices via a set of storage units located in a plurality of different locations;

determine a subset of the set of storage units that includes a predetermined threshold number of storage units of the set of storage units will be available during a time period for testing a storage unit of the set of storage units that is not included in the subset of the set of storage units;

initiate the testing of the storage unit based on determining the predetermined threshold number of storage units of the set of storage units will be available during the time period for testing the storage unit;

generate a testing report regarding the testing of the storage unit; and

access the data object based on reading multiple ones of the plurality of encoded data slices from multiple ones of the set of storage units, wherein the multiple ones of the set of storage units includes the storage unit.

20 . The computing device of claim 19 , wherein the processing module is further operable to:

error encode a data segment of data into a set of encoded data slices; and

store the set of encoded data slices in the set of storage units.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 26, 2024
From: COCAGNE, THOMAS D.; RESCH, JASON K.
To: PURE STORAGE, INC.
Reel/Frame 066902/0438 →
Continuity (10)
Continuation 18172228 · Feb 21, 2023
Continuation 17651614 · Feb 18, 2022
Continuation In Part 16862166 · Apr 29, 2020
Continuation 16256649 · Jan 24, 2019
Continuation In Part 15805085 · Nov 6, 2017
Continuation 14721723 · May 26, 2015
Continuation In Part 14707943 · May 8, 2015
Provisional Application 62031320 · Jul 31, 2014
Provisional Application 62019074 · Jun 30, 2014
Related Publication 20240236184A1 · Jul 11, 2024
References Cited (133)
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 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 6609223B1 · Wolfgang · 2003 [cited by applicant]
US 6651070B1 · Hirashima · 2003 [cited by applicant]
US 6718361B1 · Basani · 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 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 7222133B1 · Raipurkar · 2007 [cited by applicant]
US 7240236B2 · Cutts · 2007 [cited by applicant]
US 7272613B2 · Sim · 2007 [cited by applicant]
US 7636724B2 · Del La Torre · 2009 [cited by applicant]
US 8190947B1 · Holl · 2012 [cited by examiner]
US 8275744B2 · Baptist · 2012 [cited by applicant]
US 8386838B1 · Byan · 2013 [cited by examiner]
US 10447767B2 · Baptist · 2019 [cited by examiner]
US 11347590B1 · Resch · 2022 [cited by applicant]
US 11487620B1 · Volvovski · 2022 [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 20040030771A1 · Strassner · 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 20050102297A1 · Lloyd · 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 20090094251A1 · Gladwin · 2009 [cited by applicant]
US 20090094318A1 · Gladwin · 2009 [cited by applicant]
US 20100023524A1 · Gladwin · 2010 [cited by applicant]
US 20110106972A1 · Grube et al. · 2011 [cited by applicant]
US 20110185258A1 · Grube et al. · 2011 [cited by applicant]
US 20110261838A1 · Baptist · 2011 [cited by examiner]
US 20110289577A1 · Resch · 2011 [cited by examiner]
US 20120089809A1 · Resch · 2012 [cited by applicant]
US 20120311068A1 · Gladwin et al. · 2012 [cited by applicant]
US 20130110962A1 · Grube · 2013 [cited by applicant]
US 20130111166A1 · Resch · 2013 [cited by applicant]
US 20130151670A1 · Leggette · 2013 [cited by applicant]
US 20130275480A1 · Dhuse · 2013 [cited by applicant]
US 20130290482A1 · Leggette · 2013 [cited by applicant]
US 20130290703A1 · Resch · 2013 [cited by applicant]
US 20130322418A1 · Ho · 2013 [cited by applicant]
US 20130325820A1 · Grube · 2013 [cited by examiner]
US 20140115579A1 · Kong · 2014 [cited by applicant]
US 20140126585A1 · Baptist · 2014 [cited by examiner]
US 20140164551A1 · Resch · 2014 [cited by applicant]
US 20140195875A1 · Resch · 2014 [cited by applicant]
US 20140245063A1 · Baptist · 2014 [cited by applicant]
US 20140330921A1 · Storm · 2014 [cited by applicant]
US 20150067421A1 · Baptist · 2015 [cited by applicant]
US 20150242272A1 · Resch · 2015 [cited by applicant]
US 20160179618A1 · Resch · 2016 [cited by applicant]
US 20160378350A1 · Motwani · 2016 [cited by applicant]
US 20170168720A1 · Kazi · 2017 [cited by applicant]
US 20190095344A1 · Gladwin · 2019 [cited by applicant]
US 20220091937A1 · Baptist · 2022 [cited by applicant]
US 20230267042A1 · Shirley, Jr. · 2023 [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]