IP Library Granted Patent US 12,411,733
Granted Patent B2
US 12,411,733 · App. 18/363,179 · Granted Sep 9, 2025

Generating multiple sets of integrity information in a vast storage system

Inventors: Gary W. Grube (Barrington Hills, IL); Timothy W. Markison (Mesa, AZ); Sebastien Vas (Sunnyvale, CA); Zachary J. Mark (Chicago, IL); Jason K. Resch (Warwick, RI)
Assignee: Pure Storage, Inc.
G06F11/1076G06F3/0619G06F3/0653G06F3/067G06F3/0689G06F11/1004
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,411,733
App. No.
18/363,179
Granted
Sep 9, 2025
Kind
B2
Abstract

A method includes storing a plurality of data in a storage system. A plurality of identifiers corresponding to the plurality of data is determined and the plurality of identifiers are stored in the storage system. A first set of integrity information corresponding to a first system storage level is generated for the plurality of data by performing a first set of cyclic redundancy checks and the first set of integrity information is stored in the storage system. A second set of integrity information corresponding to a second system storage level is generated for the plurality of data and the second set of integrity information is stored in the storage system.

Claims (57)

1. A method comprising:

storing a plurality of data in a storage system;

determining a plurality of identifiers corresponding to the plurality of data;

generating, for the plurality of data, a first set of integrity information corresponding to a first system storage level by performing a first set of cyclic redundancy checks;

generating, for the plurality of data, a plurality of corresponding data structures that each include:

a corresponding one of the plurality of identifiers; and

corresponding integrity information of the first set of integrity information;

storing the first set of integrity information and the plurality of identifiers in the storage system via storage of the plurality of corresponding data structures;

generating, for the plurality of data, a second set of integrity information corresponding to a second system storage level by performing a second set of cyclic redundancy checks; and

storing the second set of integrity information in the storage system.

2. The method of claim 1 , wherein the plurality of data is generated based on erasure coding.

3. The method of claim 1 , wherein the plurality of identifiers are associated with at least one data slice generated via an encoding process in accordance with a width, and wherein a corresponding decoding process can accommodate a number of failures equal to the width minus an error coding parameter of the encoding process.

4. The method of claim 1 , wherein the plurality of identifiers identify a virtual memory space that maps to storage units of the storage system.

5. The method of claim 1 , wherein the plurality of identifiers are determined in conjunction with determining a plurality of virtual memory addresses.

6. The method of claim 5 , wherein each virtual memory address of the plurality of virtual memory addresses is associated with a physical address, and wherein the integrity information is generated based on the plurality of virtual memory addresses.

7. The method of claim 1 , further comprising:

performing periodic data storage integrity verification based on accessing at least one of the second set of integrity information in the storage system;

wherein performing the periodic data storage integrity verification is based on periodically determining whether any of the plurality of data has been corrupted.

8. The method of claim 7 , further comprising:

rebuilding at least some of the plurality of data based on determining the at least some of the plurality of data has been corrupted.

9. The method of claim 1 , wherein the storage system is configured to store the data via a plurality of system storage levels that includes the first system storage level and the second system storage level.

10. The method of claim 1 , wherein the first set of integrity information is generated based on a first plurality of data portions of the plurality of data having first data structuring corresponding to the first system storage level, and wherein the second set of integrity information is generated based on a second plurality of data portions of the plurality of data having second data structuring corresponding to the second system storage level.

11. The method of claim 10 , wherein each of the first plurality of data portions include multiple ones of the second plurality of data portions.

12. A computer comprises:

a memory; and

a processing module operable to:

store a plurality of data in a storage system;

determine a plurality of identifiers corresponding to the plurality of data;

generate, for the plurality of data, a first set of integrity information corresponding to a first system storage level by performing a first set of cyclic redundancy checks;

generate, for the plurality of data, a plurality of corresponding data structures that each include:

a corresponding one of the plurality of identifiers; and

corresponding integrity information of the first set of integrity information;

store the first set of integrity information and the plurality of identifiers in the storage system via storage of the plurality of corresponding data structures;

generate, for the plurality of data, a second set of integrity information corresponding to a second system storage level by performing a second set of cyclic redundancy checks; and

store the second set of integrity information in the storage system.

13. The computer of claim 12 , wherein the plurality of identifiers are associated with at least one data slice generated via an encoding process in accordance with a width, and wherein a corresponding decoding process can accommodate a number of failures equal to the width minus an error coding parameter of the encoding process.

14. The computer of claim 12 , wherein the plurality of identifiers identify a virtual memory space that maps to storage units of the storage system.

15. The computer of claim 12 , wherein the plurality of identifiers are determined in conjunction with determining a plurality of virtual memory addresses.

16. The computer of claim 15 , wherein each virtual memory address of the plurality of virtual memory addresses is associated with a physical address, and wherein the integrity information is generated based on the plurality of virtual memory addresses.

17. The computer of claim 12 , further comprising:

performing periodic data storage integrity verification based on accessing at least one of the second set of integrity information in the storage system;

wherein performing the periodic data storage integrity verification is based on periodically determining whether any of the plurality of data has been corrupted.

18. The computer of claim 17 , further comprising:

rebuilding at least some of the plurality of data based on determining the at least some of the plurality of data has been corrupted.

19. A storage system comprises:

a plurality of storage units; and

at least one processing module operable to:

store a plurality of data;

determine a plurality of identifiers corresponding to the plurality of data;

generate, for the plurality of data, a first set of integrity information corresponding to a first system storage level by performing a first set of cyclic redundancy checks;

generate, for the plurality of data, a plurality of corresponding data structures that each include:

a corresponding one of the plurality of identifiers; and

corresponding integrity information of the first set of integrity information;

store the first set of integrity information and the plurality of identifiers in the storage system via storage of the plurality of corresponding data structures;

generate, for the plurality of data, a second set of integrity information corresponding to a second system storage level by performing a second set of cyclic redundancy checks; and

store the second set of integrity information in the storage system.

20. The storage system of claim 19 , wherein the plurality of data is generated based on erasure coding.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 1, 2023
From: GRUBE, GARY W.; MARKISON, TIMOTHY W.; VAS, SEBASTIEN; MARK, ZACHARY J.; RESCH, JASON K.
To: PURE STORAGE, INC.
Reel/Frame 064454/0272 →
Continuity (26)
Continuation 18059833 · Nov 29, 2022
Continuation 17743717 · May 13, 2022
Division 17362251 · Jun 29, 2021
Continuation 17023971 · Sep 17, 2020
Continuation In Part 16137681 · Sep 21, 2018
Continuation In Part 14454013 · Aug 7, 2014
Continuation In Part 13021552 · Feb 4, 2011
Continuation In Part 16390530 · Apr 22, 2019
Continuation 14447890 · Jul 31, 2014
Continuation 13154725 · Jun 7, 2011
Continuation In Part 12749592 · Mar 30, 2010
Continuation In Part 12218594 · Jul 16, 2008
Continuation In Part 11673613 · Oct 9, 2007
Continuation In Part 11973622 · Oct 9, 2007
Continuation In Part 11973542 · Oct 9, 2007
Continuation In Part 11973621 · Oct 9, 2007
Continuation In Part 11241555 · Sep 30, 2005
Continuation In Part 11403684 · Apr 13, 2006
Continuation In Part 11404071 · Apr 13, 2006
Continuation In Part 11403391 · Apr 13, 2006
Continuation In Part 12080042 · Mar 31, 2008
Continuation In Part 12218200 · Jul 14, 2008
Provisional Application 61327921 · Apr 26, 2010
Provisional Application 61357430 · Jun 22, 2010
Provisional Application 61237624 · Aug 27, 2009
Related Publication 20230376380A1 · Nov 23, 2023
References Cited (186)
US 4092732A · Ouchi · 1978 [cited by applicant]
US 4961139A · Hong · 1990 [cited by applicant]
US 5301288A · Newman · 1994 [cited by examiner]
US 5404361A · Casorso · 1995 [cited by applicant]
US 5454101A · Mackay · 1995 [cited by applicant]
US 5485474A · Rabin · 1996 [cited by applicant]
US 5488702A · Byers · 1996 [cited by applicant]
US 5632012A · Belsan · 1997 [cited by applicant]
US 5664144A · Yanai · 1997 [cited by applicant]
US 5768623A · Judd · 1998 [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 5909692A · Yanai · 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 6052785A · Lin · 2000 [cited by applicant]
US 6058454A · Gerlach · 2000 [cited by applicant]
US 6128277A · Bruck · 2000 [cited by applicant]
US 6151659A · Solomon · 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 6260120B1 · Blumenau · 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 6366982B1 · Suzuki · 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 6567948B2 · Steele · 2003 [cited by applicant]
US 6571282B1 · Bowman-Amuah · 2003 [cited by applicant]
US 6606629B1 · Dekoning · 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 6779003B1 · Midgley et al. · 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 6964008B1 · Van Meter, III · 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 7028139B1 · Kiselev · 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 7149935B1 · Morris · 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 7246369B1 · Duan · 2007 [cited by applicant]
US 7272613B2 · Sim · 2007 [cited by applicant]
US 7299325B1 · Waterhouse · 2007 [cited by applicant]
US 7461319B2 · Hanam · 2008 [cited by applicant]
US 7574570B2 · Gladwin et al. · 2009 [cited by applicant]
US 7636724B2 · De La Torre · 2009 [cited by applicant]
US 7657008B2 · Zimba · 2010 [cited by applicant]
US 7680843B1 · Panchbudhe · 2010 [cited by applicant]
US 7904475B2 · Gladwin · 2011 [cited by applicant]
US 7962641B1 · Dhuse · 2011 [cited by applicant]
US 8082390B1 · Fan · 2011 [cited by applicant]
US 8171101B2 · Gladwin · 2012 [cited by applicant]
US 8209363B2 · Palthepu · 2012 [cited by applicant]
US 8239535B2 · Error · 2012 [cited by examiner]
US 8266237B2 · Moore · 2012 [cited by applicant]
US 8285878B2 · Gladwin · 2012 [cited by applicant]
US 8451908B2 · MacInnis · 2013 [cited by examiner]
US 8464133B2 · Grube · 2013 [cited by applicant]
US 8626820B1 · Levy · 2014 [cited by applicant]
US 8938591B2 · Mark · 2015 [cited by applicant]
US 9229646B2 · Todd · 2016 [cited by applicant]
US 9332422B2 · Bai · 2016 [cited by applicant]
US 9401838B2 · Brady · 2016 [cited by applicant]
US 9411810B2 · Mark · 2016 [cited by applicant]
US 20020062422A1 · Butterworth · 2002 [cited by applicant]
US 20020129230A1 · Albright · 2002 [cited by applicant]
US 20020162075A1 · Talagala · 2002 [cited by examiner]
US 20020162076A1 · Talagala · 2002 [cited by applicant]
US 20020165913A1 · Tokuda · 2002 [cited by applicant]
US 20020166079A1 · Ulrich · 2002 [cited by applicant]
US 20020170013A1 · Bolourchi · 2002 [cited by applicant]
US 20030018927A1 · Gadir · 2003 [cited by applicant]
US 20030037261A1 · Meffert · 2003 [cited by applicant]
US 20030046587A1 · Bheemarasetti · 2003 [cited by applicant]
US 20030065617A1 · Watkins · 2003 [cited by applicant]
US 20030084020A1 · Shu · 2003 [cited by applicant]
US 20030145270A1 · Holt · 2003 [cited by applicant]
US 20040024963A1 · Talagala · 2004 [cited by applicant]
US 20040122917A1 · Menon · 2004 [cited by applicant]
US 20040123202A1 · Talagala · 2004 [cited by applicant]
US 20040133577A1 · Miloushev · 2004 [cited by applicant]
US 20040133652A1 · Miloushev · 2004 [cited by applicant]
US 20040215998A1 · Buxton · 2004 [cited by applicant]
US 20040228493A1 · Ma · 2004 [cited by applicant]
US 20040243762A1 · Brant · 2004 [cited by applicant]
US 20050080330A1 · Masuzawa · 2005 [cited by applicant]
US 20050086646A1 · Zahavi · 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 · 2005 [cited by applicant]
US 20050132070A1 · Redlich · 2005 [cited by applicant]
US 20050138235A1 · Khasid · 2005 [cited by applicant]
US 20050144382A1 · Schmisseur · 2005 [cited by applicant]
US 20050168460A1 · Razdan · 2005 [cited by applicant]
US 20050229069A1 · Hassner · 2005 [cited by applicant]
US 20060010416A1 · Kreck · 2006 [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 · 2006 [cited by applicant]
US 20060224852A1 · Kottomtharayil · 2006 [cited by applicant]
US 20060282744A1 · Kounavis · 2006 [cited by applicant]
US 20070033430A1 · Itkis · 2007 [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 20070101074A1 · Patterson · 2007 [cited by examiner]
US 20070174192A1 · Gladwin · 2007 [cited by applicant]
US 20070180272A1 · Trezise · 2007 [cited by applicant]
US 20070180294A1 · Kameyama · 2007 [cited by applicant]
US 20070214285A1 · Au · 2007 [cited by applicant]
US 20070234110A1 · Soran · 2007 [cited by applicant]
US 20070245103A1 · Lam · 2007 [cited by examiner]
US 20070283167A1 · Venters · 2007 [cited by applicant]
US 20080183975A1 · Foster · 2008 [cited by applicant]
US 20080282106A1 · Shalvi · 2008 [cited by applicant]
US 20080298470A1 · Boyce · 2008 [cited by applicant]
US 20090006487A1 · Gavrilov · 2009 [cited by applicant]
US 20090037500A1 · Kirshenbaum · 2009 [cited by applicant]
US 20090094250A1 · Dhuse · 2009 [cited by applicant]
US 20090094251A1 · Gladwin · 2009 [cited by applicant]
US 20090094318A1 · Gladwin · 2009 [cited by applicant]
US 20090150631A1 · Wilsey · 2009 [cited by applicant]
US 20090178144A1 · Redlich et al. · 2009 [cited by applicant]
US 20090183056A1 · Aston · 2009 [cited by applicant]
US 20090259667A1 · Wang · 2009 [cited by applicant]
US 20090265278A1 · Wang · 2009 [cited by applicant]
US 20090271454A1 · Anglin · 2009 [cited by applicant]
US 20090313248A1 · Balachandran · 2009 [cited by applicant]
US 20100023524A1 · Gladwin · 2010 [cited by applicant]
US 20100042523A1 · Henry · 2010 [cited by applicant]
US 20100042735A1 · Blinn · 2010 [cited by applicant]
US 20100074149A1 · Terada · 2010 [cited by applicant]
US 20100077447A1 · Dholakia · 2010 [cited by applicant]
US 20100138239A1 · Reicher · 2010 [cited by applicant]
US 20100162076A1 · Sim-Tang · 2010 [cited by applicant]
US 20100268692A1 · Resch · 2010 [cited by applicant]
US 20110029809A1 · Dhuse · 2011 [cited by applicant]
US 20110047192A1 · Utsunomiya · 2011 [cited by applicant]
US 20110107410A1 · Dargis · 2011 [cited by applicant]
US 20110126060A1 · Grube · 2011 [cited by applicant]
US 20110138391A1 · Cho · 2011 [cited by applicant]
US 20110238623A1 · Rodriguez · 2011 [cited by examiner]
US 20110264989A1 · Resch et al. · 2011 [cited by applicant]
US 20110289122A1 · Grube · 2011 [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]