IP Library Granted Patent US 12,505,017
Granted Patent B2
US 12,505,017 · App. 18/816,894 · Granted Dec 23, 2025

Prioritizing storage units for data retrieval operations

Inventors: Andrew G. Peake (Chicago, IL); Jason K. Resch (Warwick, RI)
Assignee: Pure Storage, Inc.
G06F11/1076G06F3/0619G06F3/064G06F3/0659G06F3/067G06F11/10G06F16/182G06F16/2379H04L67/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,505,017
App. No.
18/816,894
Granted
Dec 23, 2025
Kind
B2
Abstract

Methods and systems for use in a storage network to prioritize storage units for data retrieval operations. In various examples, a device obtains resource utilization information and pending resource demand information for a plurality of storage units of a storage network. The device further groups, based on the resource utilization information, the storage units into an underutilized resource group and an overutilized resource group, and further issues one or more high priority read slice access requests to the storage units of the underutilized resource group. The read slice access requests correspond to a pending resource demand for data retrieval. In response to determining that the high priority read access information does not include at least a read threshold number of read slice requests, the device further issues one or more additional read slice requests to one or more storage units of the overutilized resource group.

Claims (75)

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

obtaining resource utilization information for a plurality of storage units of the storage network;

grouping, based the resource utilization information, the plurality of storage units into an underutilized resource group and an overutilized resource group;

determining pending resource demand information relating to at least one pending resource demand for the plurality of storage units;

issuing high priority read access information to one or more storage units of the underutilized resource group, the high priority read access information including one or more read slice requests of a read threshold number of read slice requests corresponding to the pending resource demand information;

determining whether the high priority read access information includes at least the read threshold number of read slice requests; and

in response to determining that the high priority read access information does not include at least the read threshold number of read slice requests, issuing one or more additional read slice requests of the read threshold number of read slice requests to one or more storage units of the overutilized resource group.

2 . The method of claim 1 , wherein grouping the plurality of storage units includes identifying a storage unit as an underutilized resource when a resource utilization level of the storage unit is less than a utilization threshold level.

3 . The method of claim 1 , wherein grouping the plurality of storage units includes identifying a storage unit as an overutilized resource when a resource utilization level of the storage unit is greater than a utilization threshold level.

4 . The method of claim 1 , wherein the resource utilization information includes at least one of:

write availability information;

read availability information;

resource utilization by address range; or

computing processing level utilization information.

5 . The method of claim 1 , wherein obtaining resource utilization information for a plurality of storage units includes:

initiating a resources utilization request to at least some of the plurality of storage units; and

receiving responsive resource utilization information.

6 . The method of claim 1 , wherein the pending resource demand information includes tasks relating to at least one of:

data rebuilding operations;

distributed computing partial tasks;

maintenance operations;

update operations; or

data access tasks.

7 . A method for execution by one or more processing modules of a storage network, the method comprising:

obtaining cost information relating to the storage network;

obtaining resource utilization information for a plurality of storage units of the storage network;

grouping, based on at least one of the resource utilization information or the cost information, the plurality of storage units into an underutilized resource group and an overutilized resource group;

determining pending resource demand information relating to at least one pending resource demand for the plurality of storage units; and

issuing high priority read access information to one or more storage units of the underutilized resource group, the high priority read access information including one or more read slice requests of a read threshold number of read slice requests corresponding to the pending resource demand information.

8 . The method of claim 7 , further comprising:

determining whether the high priority read access information includes at least the read threshold number of read slice requests; and

in response to determining that the high priority read access information does not include at least the read threshold number of read slice requests, issuing one or more additional read slice requests of the read threshold number of read slice requests to one or more storage units of the overutilized resource group.

9 . The method of claim 7 , wherein grouping the plurality of storage units includes identifying a storage unit as an underutilized resource when a resource utilization level of the storage unit is less than a utilization threshold level, and identifying the storage unit as an overutilized resource when the resource utilization level is greater than the utilization threshold level.

10 . The method of claim 7 , wherein the cost information includes at least one of:

bandwidth costs of communication links; or

fixed capacity cost.

11 . The method of claim 7 , wherein the resource utilization information includes at least one of:

write availability information;

read availability information;

bandwidth utilization information; or

computing processing level utilization information.

12 . The method of claim 7 , wherein the pending resource demand information includes tasks relating to at least one of:

data rebuilding operations;

distributed computing partial tasks;

maintenance operations;

update operations; or

data access tasks.

13 . The method of claim 7 , wherein issuing one or more additional read slice requests includes issuing a remaining number of read slice requests to at least meet the read threshold number of read slice requests.

14 . A computing device for use in a storage network, the computing device comprises:

one or more network interfaces;

memory including operational instructions; and

a processing module operably coupled to the memory and the one or more network interfaces, the processing module configured to execute the operational instructions to:

obtain, via the one or more network interfaces, resource utilization information for a plurality of storage units of the storage network;

group, based the resource utilization information, the plurality of storage units into an underutilized resource group and an overutilized resource group;

determine pending resource demand information relating to at least one pending resource demand for the plurality of storage units;

issue, via the one or more network interfaces, high priority read access information to one or more storage units of the underutilized resource group, the high priority read access information including one or more read slice requests of a read threshold number of read slice requests corresponding to the pending resource demand information;

determine whether the high priority read access information includes at least the read threshold number of read slice requests; and

in response to determining that the high priority read access information does not include at least the read threshold number of read slice requests, issue one or more additional read slice requests of the read threshold number of read slice requests to one or more storage units of the overutilized resource group.

15 . The computing device of claim 14 , wherein grouping the plurality of storage units includes identifying a storage unit as an underutilized resource when a resource utilization level of the storage unit is less than a utilization threshold level.

16 . The computing device of claim 14 , wherein grouping the plurality of storage units includes identifying a storage unit as an overutilized resource when a resource utilization level of the storage unit is greater than a utilization threshold level.

17 . The computing device of claim 14 , wherein the resource utilization information includes at least one of:

write availability information;

read availability information;

resource utilization by address range; or

computing processing level utilization information.

18 . The computing device of claim 14 , wherein obtaining resource utilization information for a plurality of storage units includes executing the operational instructions to:

initiate a resources utilization request to at least some of the plurality of storage units; and

receive responsive resource utilization information.

19 . The computing device of claim 14 , wherein the pending resource demand information includes tasks relating to at least one of:

data rebuilding operations;

distributed computing partial tasks;

maintenance operations;

update operations; or

data access tasks.

20 . The computing device of claim 14 , wherein issuing one or more additional read slice requests includes issuing a remaining number of read slice requests to at least meet the read threshold number of read slice requests.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 28, 2024
From: PEAKE, ANDREW G.; RESCH, JASON K.
To: PURE STORAGE, INC.
Reel/Frame 068423/0231 →
Continuity (7)
Continuation 17646576 · Dec 30, 2021
Continuation In Part 16402170 · May 2, 2019
Continuation In Part 15920843 · Mar 14, 2018
Continuation 15428390 · Feb 9, 2017
Continuation 14306335 · Jun 17, 2014
Provisional Application 61841625 · Jul 1, 2013
Related Publication 20240419547A1 · Dec 19, 2024
References Cited (105)
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 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 · de la Torre · 2009 [cited by applicant]
US 7945752B1 · Miller · 2011 [cited by examiner]
US 8996450B1 · Rubio · 2015 [cited by applicant]
US 9002805B1 · Barber · 2015 [cited by applicant]
US 9513814B1 · Can · 2016 [cited by examiner]
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 20090094251A1 · Gladwin · 2009 [cited by applicant]
US 20090094318A1 · Gladwin · 2009 [cited by applicant]
US 20100023524A1 · Gladwin · 2010 [cited by applicant]
US 20110289122A1 · Grube · 2011 [cited by applicant]
US 20120054581A1 · Grube · 2012 [cited by applicant]
US 20120066449A1 · Colgrove · 2012 [cited by examiner]
US 20140215147A1 · Pan · 2014 [cited by applicant]
US 20140281300A1 · Martin · 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]