IP Library Granted Patent US 12,481,559
Granted Patent B1
US 12,481,559 · App. 17/022,449 · Granted Nov 25, 2025

Data recovery in a distributed storage network

Inventors: Greg R. Dhuse (Chicago, IL); Ilir Iljazi (Chicago, IL)
Assignee: Pure Storage, Inc.
G06F11/1092G06F3/0619G06F3/064G06F3/0644G06F3/067G06F11/1076G06F11/1088G06F11/1612H03M13/1515H04L67/1097G06F11/008G06F2201/81
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,481,559
App. No.
17/022,449
Granted
Nov 25, 2025
Kind
B1
Abstract

A computing device includes an interface configured to interface and communicate with a storage network (SN), a memory that stores operational instructions, and a processing module operably coupled to the interface and memory such that the processing module, when operable within the computing device based on the operational instructions, is configured to perform various operations. Based on a detected storage error, the computing device is configured to determine availability status of encoded data slices (EDSs) within a set of EDSs. When at least a decode threshold number of EDSs are available, the computing device is configured to initiate a rebuilding function to abate the detected storage error. When less than a decode threshold number of EDSs are available, the computing device is configured to initiate a data recovery function for at least one storage unit (SU) to abate the detected storage error.

Claims (63)

1 . A computing device comprising:

an interface configured to interface and communicate with a storage network;

memory that stores operational instructions; and

a processing module operably coupled to the interface and to the memory, wherein the processing module, when operable within the computing device based on the operational instructions, is configured to:

based on a detected storage error, determine an availability status for encoded data slices within a set of encoded data slices stored within one or more storage units within the storage network, wherein a data object is segmented into a plurality of data segments, wherein a data segment of the plurality of data segments is dispersed error encoded in accordance with dispersed error encoding parameters to produce the set of encoded data slices;

in response to a determination that at least a decode threshold number of encoded data slices of the set of encoded data slices are available, initiate a rebuilding function for one or more encoded data slices of the set of encoded data slices associated with the detected storage error, wherein a decode threshold number of encoded data slices of the set of encoded data slices is a number of encoded data slices below which the data segment is unrecoverable without repair of one or more encoded data slices of the set of encoded data slices, and wherein the rebuilding function includes dispersed error encoding a recovered data segment to generate one or more rebuilt encoded data slices; and

in response to a determination that at least a decode threshold number of encoded data slices of the set of encoded data slices are not available, transmit a data recovery request to at least one storage unit of the one or more storage units, wherein the data recovery request includes a request to initiate a data repair function adapted to enable repairing a single encoded data slice without dispersed error encoding a recovered data segment.

2 . The computing device of claim 1 , wherein the processing module, when operable within the computing device based on the operational instructions, is further configured to initiate the rebuilding function to abate the detected storage error including to:

facilitate the rebuilding function using the at least a decode threshold number of encoded data slices of the set of encoded data slices to produce a recovered data segment;

dispersed error encode the recovered data segment to produce one or more rebuilt encoded data slices; and

facilitate replacement of one or more missing encoded data slices within the set of encoded data slices with the one or more rebuilt encoded data slices within the one or more storage units.

3 . The computing device of claim 1 , wherein the processing module, when operable within the computing device based on the operational instructions, is further configured to initiate the data repair function by issuing a data recovery request to at least one storage unit of the one or more storage units to direct the storage unit to produce at least one repaired encoded data slice; and

for the at least one repaired encoded data slice that is successfully generated by the storage unit, facilitate replacement of an unavailable encoded data slice with the repaired encoded data slice that is produced by the storage unit.

4 . The computing device of claim 3 , wherein:

the storage unit, is configured to perform at least one of a filesystem repair operation, a memory recovery technique, or an individual data block rebuilding of an encoded data slice to produce the repaired encoded data slice based on the data recovery request received by the storage unit.

5 . The computing device of claim 1 , wherein the set of encoded data slices of pillar width and wherein:

a decode threshold number of encoded data slices are needed to recover the data segment;

a read threshold number of encoded data slices provides for reconstruction of the data segment; and

a write threshold number of encoded data slices provides for a successful transfer of the set of encoded data slices from a first at least one location in the storage network to a second at least one location in the storage network.

6 . The computing device of claim 1 , wherein the computing device is located at a first location that is remote from at least one storage unit of the one or more storage units within the storage network.

7 . The computing device of claim 1 further comprising:

an integrity processing unit, a storage unit of the one or more storage units, a wireless smart phone, a laptop, a tablet, a personal computers (PC), a work station, or a video game device.

8 . The computing device of claim 1 , wherein the storage network includes at least one of a wireless communication system, a wire lined communication systems, a non-public intranet system, a public internet system, a local area network (LAN), or a wide area network (WAN).

9 . A computing device comprising:

an interface configured to interface and communicate with a storage network;

memory that stores operational instructions; and

a processing module operably coupled to the interface and to the memory, wherein the processing module, when operable within the computing device based on the operational instructions, is configured to:

based on a detected storage error, determine availability status of encoded data slices within a set of encoded data slices stored within one or more storage units within the storage network, wherein a data object is segmented into a plurality of data segments, wherein a data segment of the plurality of data segments is dispersed error encoded in accordance with dispersed error encoding parameters to produce the set of encoded data slices;

in response to a determination that at least a decode threshold number of encoded data slices of the set of encoded data slices are available:

initiate a rebuilding function using the at least a decode threshold number of encoded data slices of the set of encoded data slices to produce a recovered data segment;

dispersed error encode the recovered data segment to produce one or more rebuilt encoded data slices; and

facilitate replacement of one or more missing encoded data slices within the set of encoded data slices with the one or more rebuilt encoded data slices;

in response to a determination that at least a decode threshold number of encoded data slices of the set of encoded data slices are not available:

issue a data recovery request to at least one storage unit of the one or more storage units to direct the storage unit to produce a repaired encoded data slice, using a data recovery function adapted for repairing a single encoded data slice without dispersed error encoding a recovered data segment; and

for at least one repaired encoded data slice, facilitate replacement of an unavailable encoded data slice with the repaired encoded data slice.

10 . The computing device of claim 9 , wherein:

the storage unit is configured to perform at least one of a filesystem repair operation, a memory recovery technique, or an individual data block rebuilding of an encoded data slice to produce the repaired encoded data slice based on the data recovery request received by the storage unit.

11 . The computing device of claim 9 , wherein the set of encoded data slices is of pillar width and wherein:

a decode threshold number of encoded data slices are needed to recover the data segment;

a read threshold number of encoded data slices provides for reconstruction of the data segment; and

a write threshold number of encoded data slices provides for a successful transfer of the set of encoded data slices from a first at least one location in the storage network to a second at least one location in the storage network.

12 . The computing device of claim 9 further comprising:

an integrity processing unit, a storage unit of the one or more storage units, a wireless smart phone, a laptop, a tablet, a personal computers (PC), a work station, or a video game device.

13 . The computing device of claim 9 , wherein the storage network includes at least one of a wireless communication system, one or more wire-line communication systems, a non-public intranet system, a public internet system, a local area network (LAN), or a wide area network (WAN).

14 . A method for execution by a computing device, the method comprising:

based on a detected storage error, determining availability status of encoded data slices within a set of encoded data slices stored within one or more storage units within a storage network, wherein a data object is segmented into a plurality of data segments, wherein a data segment of the plurality of data segments is dispersed error encoded in accordance with dispersed error encoding parameters to produce the set of encoded data slices;

in response to a determination that at least a decode threshold number of encoded data slices of the set of encoded data slices are available, initiating, via an interface configured to interface and communicate with the storage network, a rebuilding function to abate the detected storage error; and

in response to a determination that at least a decode threshold number of encoded data slices of the set of encoded data slices are not available, initiating a data repair function, via the interface, wherein the data repair function is adapted for repairing a single encoded data slice without dispersed error encoding a recovered data segment.

15 . The method of claim 14 further comprising initiating the rebuilding function to abate the detected storage error including:

facilitating the rebuilding function using the at least a threshold number of encoded data slices of the set of encoded data slices to produce a recovered data segment;

dispersed error encoding the recovered data segment to produce one or more rebuilt encoded data slices; and

facilitating replacement of one or more missing encoded data slices within the set of encoded data slices with the one or more rebuilt encoded data slices within the one or more storage units.

16 . The method of claim 14 further comprising initiating the data repair function, wherein the initiating the data recovery function further comprises:

issuing a data recovery request to at least one storage unit of the one or more storage units to direct the storage unit to generate a repaired encoded data slice; and

for the encoded data slice generated, facilitating replacement of an unavailable encoded data slice with the repaired encoded data slice that is produced by the storage unit.

17 . The method of claim 16 , wherein:

the storage unit is configured to perform at least one of a filesystem repair operation, a memory recovery technique, or an individual data block rebuilding of an encoded data slice to produce the repaired encoded data slice based on the data recovery request received by the storage unit.

18 . The method of claim 14 , wherein the set of encoded data slices is of a pillar width and

wherein a decode threshold number of encoded data slices are needed to recover the data segment;

a read threshold number of encoded data slices provides for reconstruction of the data segment; and

a write threshold number of encoded data slices provides for a successful transfer of the set of encoded data slices from a first at least one location in the storage network to a second at least one location in the storage network.

19 . The method of claim 14 , wherein the computing device includes an integrity processing unit, a storage unit of the one or more storage units, a wireless smart phone, a laptop, a tablet, a personal computers (PC), a work station, or a video game device.

20 . The method of claim 14 , wherein the storage network includes at least one of a wireless communication system, one or more wire-line communication systems, a non-public intranet system, a public internet system, a local area network (LAN), or a wide area network (WAN).

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 16, 2020
From: DHUSE, GREG R.; ILJAZI, ILIR
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 053790/0232 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 16, 2020
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: PURE STORAGE, INC.
Reel/Frame 053795/0794 →
Continuity (3)
Continuation 15445404 · Feb 28, 2017
Continuation In Part 15075946 · Mar 21, 2016
Provisional Application 62168114 · May 29, 2015
References Cited (118)
US 4092732A · Ouchi · 1978 [cited by applicant]
US 5454101A · Mackay et al. · 1995 [cited by applicant]
US 5485474A · Rabin · 1996 [cited by applicant]
US 5774643A · Lubbers et al. · 1998 [cited by applicant]
US 5802364A · Senator et al. · 1998 [cited by applicant]
US 5809285A · Hilland · 1998 [cited by applicant]
US 5890156A · Rekieta et al. · 1999 [cited by applicant]
US 5987622A · Lo Verso et al. · 1999 [cited by applicant]
US 5991414A · Garay et al. · 1999 [cited by applicant]
US 6012159A · Fischer et al. · 2000 [cited by applicant]
US 6058454A · Gerlach et al. · 2000 [cited by applicant]
US 6128277A · Bruck et al. · 2000 [cited by applicant]
US 6175571B1 · Haddock et al. · 2001 [cited by applicant]
US 6192472B1 · Garay et al. · 2001 [cited by applicant]
US 6256688B1 · Suetaka et al. · 2001 [cited by applicant]
US 6272658B1 · Steele et al. · 2001 [cited by applicant]
US 6301604B1 · Nojima · 2001 [cited by applicant]
US 6356949B1 · Katsandres et al. · 2002 [cited by applicant]
US 6366995B1 · Vilkov et al. · 2002 [cited by applicant]
US 6374336B1 · Peters et al. · 2002 [cited by applicant]
US 6415373B1 · Peters et al. · 2002 [cited by applicant]
US 6418539B1 · Walker · 2002 [cited by applicant]
US 6449688B1 · Peters et al. · 2002 [cited by applicant]
US 6567948B2 · Steele et al. · 2003 [cited by applicant]
US 6571282B1 · Bowman-Amuah · 2003 [cited by applicant]
US 6609223B1 · Wolfgang · 2003 [cited by applicant]
US 6718361B1 · Basani et al. · 2004 [cited by applicant]
US 6760808B2 · Peters et al. · 2004 [cited by applicant]
US 6785768B2 · Peters et al. · 2004 [cited by applicant]
US 6785783B2 · Buckland · 2004 [cited by applicant]
US 6826711B2 · Moulton et al. · 2004 [cited by applicant]
US 6879596B1 · Dooply · 2005 [cited by applicant]
US 7003688B1 · Pittelkow et al. · 2006 [cited by applicant]
US 7024451B2 · Jorgenson · 2006 [cited by applicant]
US 7024609B2 · Wolfgang et al. · 2006 [cited by applicant]
US 7080101B1 · Watson et al. · 2006 [cited by applicant]
US 7103824B2 · Halford · 2006 [cited by applicant]
US 7103915B2 · Redlich et al. · 2006 [cited by applicant]
US 7111115B2 · Peters et al. · 2006 [cited by applicant]
US 7140044B2 · Redlich et al. · 2006 [cited by applicant]
US 7146644B2 · Redlich et al. · 2006 [cited by applicant]
US 7171493B2 · Shu et al. · 2007 [cited by applicant]
US 7222133B1 · Raipurkar et al. · 2007 [cited by applicant]
US 7240236B2 · Cutts et al. · 2007 [cited by applicant]
US 7272613B2 · Sim et al. · 2007 [cited by applicant]
US 7636724B2 · de la Torre et al. · 2009 [cited by applicant]
US 8495466B2 · Cilfone et al. · 2013 [cited by applicant]
US 8612382B1 · Patel · 2013 [cited by examiner]
US 9098447B1 · Donlan · 2015 [cited by examiner]
US 10095872B2 · Volvovski · 2018 [cited by examiner]
US 10789128B2 · Dhuse · 2020 [cited by examiner]
US 20020062422A1 · Butterworth et al. · 2002 [cited by applicant]
US 20020166079A1 · Ulrich et al. · 2002 [cited by applicant]
US 20030018927A1 · Gadir et al. · 2003 [cited by applicant]
US 20030037261A1 · Meffert et al. · 2003 [cited by applicant]
US 20030065617A1 · Watkins et al. · 2003 [cited by applicant]
US 20030084020A1 · Shu · 2003 [cited by applicant]
US 20040024963A1 · Talagala et al. · 2004 [cited by applicant]
US 20040122917A1 · Menon et al. · 2004 [cited by applicant]
US 20040215998A1 · Buxton et al. · 2004 [cited by applicant]
US 20040228493A1 · Ma · 2004 [cited by applicant]
US 20050100022A1 · Ramprashad · 2005 [cited by applicant]
US 20050114594A1 · Corbett et al. · 2005 [cited by applicant]
US 20050125593A1 · Karpoff et al. · 2005 [cited by applicant]
US 20050131993A1 · Fatula · 2005 [cited by applicant]
US 20050132070A1 · Redlich et al. · 2005 [cited by applicant]
US 20050144382A1 · Schmisseur · 2005 [cited by applicant]
US 20050229069A1 · Hassner et al. · 2005 [cited by applicant]
US 20060047907A1 · Shiga et al. · 2006 [cited by applicant]
US 20060136448A1 · Cialini et al. · 2006 [cited by applicant]
US 20060156059A1 · Kitamura · 2006 [cited by applicant]
US 20060224603A1 · Correll · 2006 [cited by applicant]
US 20070079081A1 · Gladwin et al. · 2007 [cited by applicant]
US 20070079082A1 · Gladwin et al. · 2007 [cited by applicant]
US 20070079083A1 · Gladwin et al. · 2007 [cited by applicant]
US 20070088970A1 · Buxton et al. · 2007 [cited by applicant]
US 20070150790A1 · Gross · 2007 [cited by examiner]
US 20070174192A1 · Gladwin et al. · 2007 [cited by applicant]
US 20070214285A1 · Au et al. · 2007 [cited by applicant]
US 20070234110A1 · Soran et al. · 2007 [cited by applicant]
US 20070283167A1 · Venters et al. · 2007 [cited by applicant]
US 20090094251A1 · Gladwin et al. · 2009 [cited by applicant]
US 20090094318A1 · Gladwin et al. · 2009 [cited by applicant]
US 20100023524A1 · Gladwin et al. · 2010 [cited by applicant]
US 20110107113A1 · Resch · 2011 [cited by examiner]
US 20110213929A1 · Baptist et al. · 2011 [cited by applicant]
US 20120254116A1 · Thereska · 2012 [cited by examiner]
US 20130031414A1 · Dhuse · 2013 [cited by applicant]
US 20130111293A1 · Gladwin · 2013 [cited by examiner]
US 20140122968A1 · Kazi · 2014 [cited by examiner]
US 20140201541A1 · Paul · 2014 [cited by examiner]
US 20140351632A1 · Grube et al. · 2014 [cited by applicant]
US 20160294949A1 · Motwani · 2016 [cited by examiner]
US 20170052729A1 · Resch · 2017 [cited by examiner]
US 20170163378A1 · Baptist · 2017 [cited by examiner]
US 20170185303A1 · McShane · 2017 [cited by examiner]
US 20180074879A1 · Khadiwala · 2018 [cited by examiner]
US 20180101305A1 · Kazi · 2018 [cited by examiner]
US 20220238159A1 · Bronner · 2022 [cited by examiner]
US 20220342755A1 · Vedpathak · 2022 [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]
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): String Representation of Search Filters; IETF Network Working Group; RFC 4515; Jun. 2006; pp. 1-12. [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]
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): Technical Specification Road Map; IETF Network Working Group; RFC 4510; Jun. 2006; pp. 1-8. [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]