IP Library Granted Patent US 12,535,948
Granted Patent B2
US 12,535,948 · App. 17/305,004 · Granted Jan 27, 2026

Dynamically adjusting storage resources in a vast storage network

Inventors: Wesley B. Leggette (Chicago, IL); Bart R. Cilfone (Marina del Rey, CA)
Assignee: Pure Storage, Inc.
G06F3/0604G06F3/0619G06F3/0638G06F3/064G06F3/0661G06F3/067G06F3/0689G06F11/1076G06F21/44G06F21/6218H04L1/0045H04L1/0057H04L1/0061H04L1/06H04L63/08H04L63/101H04L67/04H04L67/10H04L67/1097H04L67/306H04L69/22H03M13/1515H03M13/6312H04L63/0428
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,535,948
App. No.
17/305,004
Granted
Jan 27, 2026
Kind
B2
Abstract

A method begins by determining storage performance for a set of storage resources of the storage network, where data is error encoded into pluralities of sets of encoded data slices in accordance with error encoding parameters, and, for a set of encoded data slices, the error encoding parameters include a decode threshold number and a pillar width threshold number. The method continues by determining a storage provisioning implementation for the set of storage resources based on the storage performance and a storage performance range threshold. The method continues by facilitating the storage provisioning implementation to produce an updated set of storage resources. The method continues by maintaining storage of the set of encoded data slices in accordance with the storage provisioning implementation, where the decode threshold number of encoded data slices of the set of encoded data slices remains available during the facilitating the storage provisioning implementation.

Claims (31)

1 . A method for execution by a computing device of a storage network, the method comprising:

determining storage performance for a set of storage resources of the storage network, wherein data is error encoded into pluralities of sets of encoded data slices in accordance with error encoding parameters, wherein, for a set of encoded data slices of the pluralities of sets of encoded data slices, the error encoding parameters include a decode threshold number and a pillar width, wherein a plurality of encoded data slices included in the pluralities of sets of encoded data slices are stored via the set of storage resources of the storage network, and wherein the plurality of encoded data slices stored via the set of storage resources of the storage network includes a first number of encoded data slices;

determining a storage provisioning implementation for the set of storage resources based on the storage performance and a storage performance threshold;

facilitating the storage provisioning implementation to produce an updated set of storage resources based on:

adding an additional set of storage resources to the set of storage resources to produce the updated set of storage resources;

generating a new plurality of encoded data slices to produce an updated plurality of encoded data slices that includes the new plurality of encoded data slices; and

storing the new plurality of encoded data slices in the updated set of storage resources, wherein at least some of the new plurality of encoded data slices are stored in the additional set of storage resources; and

maintaining storage of the set of encoded data slices in accordance with the storage provisioning implementation, wherein the decode threshold number of encoded data slices of the set of encoded data slices remains available during the facilitating the storage provisioning implementation.

2 . The method of claim 1 , wherein determining the storage provisioning implementation includes determining to expand storage associated with the set of storage resources.

3 . The method of claim 2 , wherein facilitating the storage provisioning implementation to expand the storage includes at least one of: adding a memory device to the set of storage resources or adding a storage unit to the set of storage resources.

4 . The method of claim 2 , wherein facilitating the storage provisioning implementation to expand the storage includes allocating more memory of an already provisioned memory device associated with the set of storage resources.

5 . The method of claim 2 , wherein facilitating the storage provisioning implementation to expand the storage comprises:

retrieving the decode threshold number of encoded data slices from the set of storage resources;

decoding the decode threshold number of encoded data slices to produce a data segment of the data, wherein the set of encoded data slices represent the data segment; and

error encoding the data segment to produce an additional encoded data slice for the set of encoded data slices.

6 . The method of claim 1 , wherein determining the storage provisioning implementation includes determining to contract storage associated with the set of storage resources.

7 . The method of claim 6 , wherein facilitating the storage provisioning implementation to contract the storage includes deleting a memory device associated with the set of storage resources.

8 . The method of claim 6 , wherein the facilitating the storage provisioning implementation to contract the storage includes deleting a storage unit associated with the set of storage resources from the updated set of resources.

9 . The method of claim 6 , wherein facilitating the storage provisioning implementation to contract the storage includes deallocating memory of already provisioned memory devices associated with the set of storage resources.

10 . The method of claim 1 , wherein the storage performance includes a memory device up time associated with the set of storage resources.

11 . The method of claim 1 , wherein the storage performance includes a mean time to failure associated with the set of storage resources.

12 . The method of claim 1 , wherein the storage performance includes at least one of: an access latency associated with the set of storage resources or an access bandwidth associated with the set of storage resources.

13 . The method of claim 1 , wherein the determining the storage provisioning implementation is further based on receiving a storage provisioning command.

14 . The method of claim 1 , wherein the determining the storage provisioning implementation includes determining new error encoding parameters for the set of encoded data slices.

15 . The method of claim 14 , wherein the new error encoding parameters include increasing the pillar width.

16 . The method of claim 14 , wherein the new error encoding parameters include decreasing the pillar width.

17 . The method of claim 1 , wherein the updated plurality of encoded data slices includes a second number of encoded data slices, and wherein the second number is greater than the first number.

18 . The method of claim 17 further comprises:

removing a second number of storage resources from the updated set of storage resources to produce a second updated set of storage resources storing a second updated set of encoded data slices, wherein the second number of storage resources stored a number of encoded data slices of the updated set of encoded data slices, and wherein a second number of encoded data slices in the second updated set of encoded data slices is equal to or greater than the decode threshold number.

19 . The method of claim 1 , wherein generating the new plurality of encoded data slices includes re-encoding at least some of the data to generate the new plurality of encoded data slices.

20 . The method of claim 19 , wherein re-encoding the at least some of the data to generate the new plurality of encoded data slices includes applying a new pillar width to generate the new plurality of encoded data slices, and wherein, based on addition of the additional set of storage resources, the new pillar width is greater than the pillar width utilized to generate the plurality of encoded data slices.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 30, 2021
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: PURE STORAGE, INC.
Reel/Frame 056718/0837 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 30, 2021
From: LEGGETTE, WESLEY B.; CILFONE, BART R.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 056776/0954 →
Continuity (9)
Continuation 16807076 · Mar 2, 2020
Continuation 16201486 · Nov 27, 2018
Continuation In Part 16136761 · Sep 20, 2018
Continuation 15427860 · Feb 8, 2017
Continuation In Part 14843022 · Sep 2, 2015
Continuation 14148198 · Jan 6, 2014
Continuation 13180675 · Jul 12, 2011
Provisional Application 61369812 · Aug 2, 2010
Related Publication 20210326043A1 · Oct 21, 2021
References Cited (121)
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 6792424B1 · Burns · 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 8627114B2 · Resch · 2014 [cited by applicant]
US 9081715B2 · Grube · 2015 [cited by applicant]
US 9143499B2 · Resch · 2015 [cited by applicant]
US 10361813B2 · Leggette · 2019 [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 20050091337A1 · Reasor · 2005 [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 20060101399A1 · Murayama · 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 20090323487A1 · Chen · 2009 [cited by applicant]
US 20100023524A1 · Gladwin · 2010 [cited by applicant]
US 20100037056A1 · Follis · 2010 [cited by applicant]
US 20100037060A1 · Irvine · 2010 [cited by applicant]
US 20100199089A1 · Vysogorets · 2010 [cited by applicant]
US 20120027134A1 · Gladwin · 2012 [cited by applicant]
US 20130304711A1 · Resch · 2013 [cited by applicant]
US 20190108368A1 · Gladwin · 2019 [cited by examiner]
US 20220374162A1 · Resch · 2022 [cited by examiner]
US 20230026842A1 · Kazi · 2023 [cited by examiner]
CA 2439692A1 · 2002 [cited by applicant]
Using Erasure Codes Efficiently for Storage in a Distributed System. Aguliera. IEEE. (Year: 2005). [cited by examiner]
Memory Mapped ECC: Low-Cost Error Protection for Last Level Caches. Yoon. ICSA. (Year: 2009). [cited by examiner]
STAR: An Efficient Coding Scheme for Correcting Triple Storage Node Failures. Huang. IEEE. (Year: 2008). [cited by examiner]
Reliability and Availability Assessment of Storage Area Network Extension Solutions. Qiu. IEEE. (Year: 2005). [cited by examiner]
Routing in Delay Tolerant Networks Using Storage Domains. Mundur. (Year: 2006). [cited by examiner]
Efficient Data Access for Parallel BLAST. Lin. IEEE. (Year: 2005). [cited by examiner]
R-ADMAD: High Reliability Provision for Large-Scale De-duplication Archival Storage Systems. Liu. ACM. (Year: 2009). [cited by examiner]
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]
Sandhu, Access Control Principles and Practice, IEEE Communications Magazine, Sep. 1994. [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]