IP Library Granted Patent US 11,340,988
Granted Patent B2
US 11,340,988 · App. 17/362,251 · Granted May 24, 2022

Generating 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/067G06F3/0619G06F3/0653G06F3/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 11,340,988
App. No.
17/362,251
Granted
May 24, 2022
Kind
B2
Abstract

A method includes encoding data via erasure coding to produce a plurality of data slices. The method further includes determining a plurality of identifiers corresponding to the data. The method further includes generating integrity information based on the plurality of identifiers by performing a cyclic redundancy check. The method further includes storing the plurality of data slices, the plurality of identifiers, and the integrity information in a storage system.

Claims (41)

1. A method comprises:

encoding data via erasure coding to produce a plurality of data slices;

determining a plurality of identifiers corresponding to the data;

generating integrity information based on the plurality of identifiers by performing a cyclic redundancy check; and

storing the plurality of data slices, the plurality of identifiers, and the integrity information in a storage system.

2. The method of claim 1 , wherein the data is encoded 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 utilized to encode the data.

3. The method of claim 2 , wherein the width is greater than a size of the data.

4. The method of claim 1 , further comprising:

performing data storage integrity verification by periodically retrieving data slices of the plurality of data slices from the storage system to verify whether one or more data slices of the plurality of data slices have been corrupted.

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

6. The method of claim 1 , wherein the plurality of identifiers are determined in conjunction with determining a plurality of virtual memory addresses corresponding to the plurality of data slices, 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 , wherein storing the plurality of data slices, the plurality of identifiers, and the integrity information in the storage system includes sending the plurality of data slices, the plurality of identifiers, and the integrity information to a plurality of storage units of the storage system for storage therein.

8. The method of claim 7 , wherein the plurality of data slices and the plurality of identifiers and the integrity information are sent to the plurality of storage units based on operational health of the plurality of storage units.

9. The method of claim 1 , wherein determining the integrity information further comprises:

generating data file integrity information for at least some of the plurality of identifiers; and

generating the integrity information based on the data file integrity information.

10. The method of claim 1 , further comprising:

sending first list digest requests to at least first and second storage units of the storage system, the first list digest requests indicating a first range of slice identifiers to include in a first list digest;

receiving, in response to the first list digest requests, first and second list digest responses from the first and second storage units;

determining whether the first list digest response compares favorably to the second list digest response; and

in response to an unfavorable determination, sending second list digest requests to the first and second storage units, the second list digest requests indicating a second range of slice identifiers to include in second list digests.

11. A computer comprises:

an interface;

a memory; and

a processing module operable to:

encode data via erasure coding to produce a plurality of data slices;

determine a plurality of identifiers corresponding to the data;

generate integrity information based on the plurality of identifiers by performing a cyclic redundancy check; and

store the plurality of data slices, the plurality of identifiers, and the integrity information in a storage system.

12. The computer of claim 11 , wherein the data is encoded 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 algorithm utilized to encode the data.

13. The computer of claim 12 , wherein the width is greater than a size of the data.

14. The computer of claim 11 , wherein the processing module further functions to:

perform data storage integrity verification by periodically retrieving data slices of the plurality of data slices from the storage system to verify whether one or more data slices of the plurality of data slices have been corrupted.

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

16. The computer of claim 11 , wherein the plurality of identifiers are determined in conjunction with determining a plurality of virtual memory addresses corresponding to the plurality of data slices, 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 11 , wherein storing the plurality of data slices, the plurality of identifiers, and the integrity information in the storage system includes sending the plurality of data slices, the plurality of identifiers and the integrity information to a plurality of storage units of the storage system for storage therein.

18. The computer of claim 17 , wherein the plurality of data slices and the plurality of identifiers and the integrity information are sent to the plurality of storage units based on operational health of the plurality of storage units.

19. The computer of claim 11 , wherein determining the integrity information further comprises:

generating data file integrity information for at least some of the plurality of identifiers; and

generating the integrity information based on the data file integrity information.

20. The computer of claim 11 , wherein the data is dispersed storage error encoded in accordance with dispersed storage error coding parameters to produce the plurality of data slices.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 11, 2022
From: VAS, SEBASTIEN; MARK, ZACHARY J.; RESCH, JASON K.
To: PURE STORAGE, INC.
Reel/Frame 058991/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 30, 2021
From: GRUBE, GARY W.; MARKISON, TIMOTHY W.
To: PURE STORAGE, INC.
Reel/Frame 056717/0637 →
Continuity (23)
Continuation 17023971 · Sep 17, 2020
Continuation In Part 16390530 · Apr 22, 2019
Continuation In Part 16137681 · Sep 21, 2018
Continuation In Part 14454013 · Aug 7, 2014
Continuation 14447890 · Jul 31, 2014
Continuation 13154725 · Jun 7, 2011
Continuation In Part 13021552 · Feb 4, 2011
Continuation In Part 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 61357430 · Jun 22, 2010
Provisional Application 61327921 · Apr 26, 2010
Provisional Application 61237624 · Aug 27, 2009
Related Publication 20210326205A1 · Oct 21, 2021