IP Library Granted Patent US 12,061,519
Granted Patent B2
US 12,061,519 · App. 17/645,563 · Granted Aug 13, 2024

Reconstructing data segments in a storage network and methods for use therewith

Inventors: Greg R. Dhuse (Chicago, IL); Vance T. Thornton (Columbus, OH); Jason K. Resch (Warwick, RI); Ilya Volvovski (Chicago, IL); Dustin M. Hendrickson (Chicago, IL); John Quigley (Chicago, IL)
Assignee: Purage Storage, Inc.
G06F11/1092G06F11/0727G06F11/141G06F11/167G06F16/13H04L9/3242H04L9/3247H04L9/3263H04L9/3271H04L63/06H04L63/12H04L67/06H04W12/041H04W12/0431H04W12/35G06F16/137G06F21/31G06F21/6209G06F2211/1028H04L63/0428H04L67/1097H04L2209/043H04L2209/30H04L2209/34H04L2209/56H04L2209/80H04W12/10
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,061,519
App. No.
17/645,563
Granted
Aug 13, 2024
Kind
B2
Abstract

A processor in a storage network operates by: receiving an access request for a data segment, wherein the data segment is encoded utilizing an error correcting information dispersal algorithm as a set of encoded data slices that are stored in a plurality of storage units of the storage network and wherein each encoded data slice of the set of encoded data slices includes a corresponding checksum of a plurality of checksums; retrieving, from the storage network, a subset of encoded data slices that includes a threshold number of encoded data slices of the set of encoded data slices; determining, based on ones of the plurality of checksums corresponding to the subset of encoded data slices, when the subset of encoded data slices includes at least one corrupted encoded data slice; retrieving from at least one of the plurality of storage units an addition number of encoded data slices required to generate a reconstructed data segment based on the subset of encoded data slices; generating the reconstructed data segment in accordance with the error correcting information dispersal algorithm, using the additional number of encoded data slices and at least some of the subset of encoded data slices; providing the reconstructed data segment in response to the access request; forming a reconstructed set of encoded data slices utilizing the error correcting information dispersal algorithm on the reconstructed data segment; and replacing the at least one corrupted encoded data slice with at least one reconstructed encoded data slice of the reconstructed set of encoded data slices.

Claims (59)

1. A method comprising:

receiving an access request for a data segment, wherein the data segment is encoded utilizing an error correcting information dispersal algorithm as a set of encoded data slices that are stored in a plurality of storage units of a storage network and wherein each encoded data slice of the set of encoded data slices includes a corresponding checksum of a plurality of checksums;

retrieving, from the storage network, a subset of encoded data slices that includes a threshold number of encoded data slices of the set of encoded data slices;

determining, based on ones of the plurality of checksums corresponding to the subset of encoded data slices, when the subset of encoded data slices includes at least one corrupted encoded data slice;

retrieving from at least one of the plurality of storage units an additional number of encoded data slices required to generate a reconstructed data segment based on the subset of encoded data slices;

generating the reconstructed data segment in accordance with the error correcting information dispersal algorithm, using the additional number of encoded data slices and at least some of the subset of encoded data slices;

providing the reconstructed data segment in response to the access request;

forming a reconstructed set of encoded data slices utilizing the error correcting information dispersal algorithm on the reconstructed data segment; and

replacing the at least one corrupted encoded data slice with at least one reconstructed encoded data slice of the reconstructed set of encoded data slices.

2. The method of claim 1 , wherein the threshold number of encoded data slices corresponds to a minimum number of the set of encoded data slices required to reconstruct the data segment.

3. The method of claim 1 , wherein the error correcting information dispersal algorithm is a Cauchy-Reed-Solomon coding.

4. The method of claim 1 , wherein the error correcting information dispersal algorithm is an erasure coding.

5. The method of claim 1 , further comprising:

determining, based on ones of the plurality of checksums corresponding to the subset of encoded data slices, when the subset of encoded data slices does not include a corrupted encoded data slice;

decoding the threshold number of encoded data slices to recover the data segment;

verifying accuracy of the recovered data segment; and

when the accuracy of the recovered data segment has been verified, providing the recovered data segment in response to the access request.

6. The method of claim 1 , wherein a first of the plurality of storage units is remotely located from a second of the plurality of storage units within the storage network.

7. The method of claim 1 , wherein the plurality of checksums are based on a cyclic redundancy check.

8. A computer comprising:

a port configured to support communications with a storage network;

an application, coupled to the port, that is configured to enable a computer to perform operations that include:

receiving an access request for a data segment, wherein the data segment is encoded utilizing an error correcting information dispersal algorithm as a set of encoded data slices that are stored in a plurality of storage units of the storage network and wherein each encoded data slice of the set of encoded data slices includes a corresponding checksum of a plurality of checksums;

retrieving, from the storage network, a subset of encoded data slices that includes a threshold number of encoded data slices of the set of encoded data slices;

determining, based on ones of the plurality of checksums corresponding to the subset of encoded data slices, when the subset of encoded data slices includes at least one corrupted encoded data slice;

retrieving from at least one of the plurality of storage units an additional number of encoded data slices required to generate a reconstructed data segment based on the subset of encoded data slices;

generating the reconstructed data segment in accordance with the error correcting information dispersal algorithm, using the additional number of encoded data slices and at least some of the subset of encoded data slices;

providing the reconstructed data segment in response to the access request;

forming a reconstructed set of encoded data slices utilizing the error correcting information dispersal algorithm on the reconstructed data segment; and

replacing the at least one corrupted encoded data slice with at least one reconstructed encoded data slice of the reconstructed set of encoded data slices.

9. The computer of claim 8 , wherein the error correcting information dispersal algorithm is a Reed-Solomon coding.

10. The computer of claim 8 , wherein the error correcting information dispersal algorithm is a Cauchy-Reed-Solomon coding.

11. The computer of claim 8 , wherein the error correcting information dispersal algorithm is an erasure coding.

12. The computer of claim 8 , wherein the operations further comprise:

determining, based on ones of the plurality of checksums corresponding to the subset of encoded data slices, when the subset of encoded data slices does not include a corrupted encoded data slice;

decoding the threshold number of encoded data slices to recover the data segment;

verifying accuracy of the recovered data segment; and

when the accuracy of the recovered data segment has been verified, providing the recovered data segment in response to the access request.

13. The computer of claim 8 , wherein a first of the plurality of storage units is remotely located from a second of the plurality of storage units within the storage network.

14. The computer of claim 8 , wherein the plurality of checksums are based on a cyclic redundancy check.

15. A non-transitory computer readable storage medium comprises:

at least one memory section that stores operational instructions that, when executed by a processing system of a storage network that includes a processor and a memory, causes the processing system to perform operations that include:

receiving an access request for a data segment, wherein the data segment is encoded utilizing an error correcting information dispersal algorithm as a set of encoded data slices that are stored in a plurality of storage units of the storage network and wherein each encoded data slice of the set of encoded data slices includes a corresponding checksum of a plurality of checksums;

retrieving, from the storage network, a subset of encoded data slices that includes a threshold number of encoded data slices of the set of encoded data slices;

determining, based on ones of the plurality of checksums corresponding to the subset of encoded data slices, when the subset of encoded data slices includes at least one corrupted encoded data slice;

retrieving from at least one of the plurality of storage units an additional number of encoded data slices required to generate a reconstructed data segment based on the subset of encoded data slices;

generating the reconstructed data segment in accordance with the error correcting information dispersal algorithm, using the additional number of encoded data slices and at least some of the subset of encoded data slices;

providing the reconstructed data segment in response to the access request;

forming a reconstructed set of encoded data slices utilizing the error correcting information dispersal algorithm on the reconstructed data segment; and

replacing the at least one corrupted encoded data slice with at least one reconstructed encoded data slice of the reconstructed set of encoded data slices.

16. The non-transitory computer readable storage medium of claim 15 , wherein the error correcting information dispersal algorithm is a Reed-Solomon coding.

17. The non-transitory computer readable storage medium of claim 15 , wherein the error correcting information dispersal algorithm is a Cauchy-Reed-Solomon coding.

18. The non-transitory computer readable storage medium of claim 15 , wherein the error correcting information dispersal algorithm is an erasure coding.

19. The non-transitory computer readable storage medium of claim 15 , wherein the operations further comprise:

determining, based on ones of the plurality of checksums corresponding to the subset of encoded data slices, when the subset of encoded data slices does not include a corrupted encoded data slice;

decoding the threshold number of encoded data slices to recover the data segment;

verifying accuracy of the recovered data segment; and

when the accuracy of the recovered data segment has been verified, providing the recovered data segment in response to the access request.

20. The non-transitory computer readable storage medium of claim 15 , wherein a first of the plurality of storage units is remotely located from a second of the plurality of storage units within the storage network.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 9, 2022
From: DHUSE, GREG R.; THORNTON, VANCE T.; RESCH, JASON K.; VOLVOVSKI, ILYA; HENDRICKSON, DUSTIN M.; QUIGLEY, JOHN
To: PURE STORAGE, INC.
Reel/Frame 058936/0898 →
Continuity (23)
Continuation In Part 16988135 · Aug 7, 2020
Continuation 16390530 · Apr 22, 2019
Continuation In Part 16149667 · Oct 2, 2018
Continuation In Part 15819810 · Nov 21, 2017
Continuation 14447890 · Jul 31, 2014
Continuation In Part 13869655 · Apr 24, 2013
Continuation 13154725 · Jun 7, 2011
Continuation 12749592 · Mar 30, 2010
Continuation In Part 12218594 · Jul 16, 2008
Continuation In Part 12218200 · Jul 14, 2008
Continuation In Part 12080042 · Mar 31, 2008
Continuation In Part 11973613 · Oct 9, 2007
Continuation In Part 11973621 · Oct 9, 2007
Continuation In Part 11973622 · Oct 9, 2007
Continuation In Part 11973542 · Oct 9, 2007
Continuation In Part 11403684 · Apr 13, 2006
Continuation In Part 11403391 · Apr 13, 2006
Continuation In Part 11404071 · Apr 13, 2006
Continuation In Part 11241555 · Sep 30, 2005
Provisional Application 61655736 · Jun 5, 2012
Provisional Application 61357430 · Jun 22, 2010
Provisional Application 61237624 · Aug 27, 2009
Related Publication 20220114053A1 · Apr 14, 2022