IP Library Granted Patent US 12,222,959
Granted Patent B2
US 12,222,959 · App. 18/348,498 · Granted Feb 11, 2025

Storage network for rebuilding encoded data slices and processing system for use therewith

Inventors: Asimuddin Kazi (Naperville, IL); Jason K. Resch (Warwick, RI)
Assignee: Pure Storage, Inc.
G06F16/27G06F3/0619G06F3/064G06F3/0659G06F3/067G06F3/0689G06F11/1076G06F16/178H04L67/1097H04L67/34
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,222,959
App. No.
18/348,498
Granted
Feb 11, 2025
Kind
B2
Abstract

A storage network operates by: encoding, via a dispersed error encoding, at least one data object as a write threshold number of encoded data slices; storing the write threshold number of the encoded data slices in a set of storage units of the storage network; determining when, due to a failure, less than a pillar width number of the encoded data slices are retrievable from the set of storage units: retrieving a decode threshold number of the encoded data slices from others of the set of storage units; decoding the decode threshold number of the encoded data slices to reproduce the at least one data object; restoring availability of the pillar width number of the encoded data slices of the common revision by: rebuilding at least a subset of encoded data slices of the set of encoded data slices, based on an encoding of the at least one data object; and storing the at least a subset of encoded data slices in the storage network.

Claims (40)

1. A method for execution by a processor of a storage network, the method comprises:

encoding, via a dispersed error encoding, at least one data object as a write threshold number of encoded data slices;

storing the write threshold number of the encoded data slices in a set of storage units of the storage network;

determining when, less than a pillar width number of the encoded data slices of a common revision are retrievable from the set of storage units:

retrieving a decode threshold number of the encoded data slices from others of the set of storage units;

decoding the decode threshold number of the encoded data slices to reproduce the at least one data object;

restoring availability of the pillar width number of the encoded data slices by:

rebuilding at least a subset of encoded data slices of the set of encoded data slices, based on an encoding of the at least one data object; and

storing the at least a subset of encoded data slices in the storage network.

2. The method of claim 1 , wherein determining when less than the pillar width number of encoded data slices are available includes invoking a list query to the set of storage units and comparing query responses received from the set of storage units.

3. The method of claim 1 , wherein retrieving the decode threshold number of encoded data slices includes generating at least the decode threshold number of read slice requests for transmission to the set of storage units, and receiving the at least the decode threshold number of encoded data slices from the set of storage units in response.

4. The method of claim 1 , further comprising: identifying dispersal parameters associated with the set of encoded data slices, wherein the dispersal parameters include the decode threshold number.

5. The method of claim 4 , wherein identifying the dispersal parameters includes reading an encoded data slice of the set of encoded data slices and extracting the dispersal parameters from the encoded data slice.

6. The method of claim 5 , wherein retrieving the decode threshold number of encoded data slices is performed when the less than the pillar width number includes at least the decode threshold number of encoded data slices.

7. The method of claim 6 , further comprising:

determining whether to rebuild the subset of encoded data slices of the set of encoded data slices based on determining whether combining the at least one encoded data slice with the less than the pillar width number of encoded data slices reforms a full pillar width number of encoded data slices.

8. The method of claim 7 , further comprising:

encoding the at least one data object to reproduce the set of encoded data slices and facilitating storage of the reproduced set of encoded data slices in the set of storage units in accordance with a new revision when it is determined to not rebuild the subset of encoded data slices of the set of encoded data slices.

9. The method of claim 7 , wherein determining whether to rebuild the at least one encoded data slice is further based on a reliability goal.

10. A processing system of a storage network comprises:

at least one processor;

at least one memory that stores operational instructions, that when executed by the at least one processor cause the processing system to perform operations that include:

encoding, via a dispersed error encoding, at least one data object as a write threshold number of encoded data slices;

storing the write threshold number of the encoded data slices in a set of storage units of the storage network;

determining when, less than a pillar width number of the encoded data slices of a common revision are retrievable from the set of storage units:

retrieving a decode threshold number of the encoded data slices from others of the set of storage units;

decoding the decode threshold number of the encoded data slices to reproduce the at least one data object;

restoring availability of the pillar width number of the encoded data slices by:

rebuilding at least a subset of encoded data slices of the set of encoded data slices, based on an encoding of the at least one data object; and

storing the at least a subset of encoded data slices in the storage network.

11. The processing system of claim 10 , wherein determining when less than the pillar width number of encoded data slices are available includes invoking a list query to the set of storage units and comparing query responses received from the set of storage units.

12. The processing system of claim 10 , wherein retrieving the decode threshold number of encoded data slices includes generating at least the decode threshold number of read slice requests for transmission to the set of storage units, and receiving the at least the decode threshold number of encoded data slices from the set of storage units in response.

13. The processing system of claim 10 , wherein the operations further include: identifying dispersal parameters associated with the set of encoded data slices, wherein the dispersal parameters include the decode threshold number.

14. The processing system of claim 13 , wherein identifying the dispersal parameters includes reading an encoded data slice of the set of encoded data slices and extracting the dispersal parameters from the encoded data slice.

15. The processing system of claim 14 , wherein retrieving the decode threshold number of encoded data slices is performed when the less than the pillar width number includes at least the decode threshold number of encoded data slices.

16. The processing system of claim 15 , wherein the operations further include:

determining whether to rebuild the subset of encoded data slices of the set of encoded data slices based on determining whether combining the at least one encoded data slice with the less than the pillar width number of encoded data slices reforms a full pillar width number of encoded data slices.

17. The processing system of claim 16 , wherein the operations further include:

encoding the at least one data object to reproduce the set of encoded data slices and facilitating storage of the reproduced set of encoded data slices in the set of storage units in accordance with a new revision when it is determined to not rebuild the subset of encoded data slices of the set of encoded data slices.

18. The processing system of claim 16 , wherein determining whether to rebuild the at least one encoded data slice is further based on a reliability goal.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 12, 2023
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: PURE STORAGE, INC.
Reel/Frame 064519/0796 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 11, 2023
From: KAZI, ASIMUDDIN; RESCH, JASON K.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 064207/0669 →
Continuity (9)
Continuation 17810928 · Jul 6, 2022
Continuation 17097140 · Nov 13, 2020
Continuation 16297978 · Mar 11, 2019
Continuation 15822873 · Nov 27, 2017
Continuation In Part 15400092 · Jan 6, 2017
Continuation In Part 15223707 · Jul 29, 2016
Continuation 13959702 · Aug 5, 2013
Provisional Application 61700691 · Sep 13, 2012
Related Publication 20230350918A1 · Nov 2, 2023
References Cited (102)
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 6055120A · Schirle · 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 · Nikolaevich · 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 6457065B1 · Rich · 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 7467265B1 · Tawri · 2008 [cited by applicant]
US 7636724B2 · de la Torre · 2009 [cited by applicant]
US 8676851B1 · Nesbit · 2014 [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 examiner]
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 20110161754A1 · Baptist · 2011 [cited by applicant]
US 20120137095A1 · Grube · 2012 [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]