IP Library Granted Patent US 11,544,146
Granted Patent B2
US 11,544,146 · App. 17/743,717 · Granted Jan 3, 2023

Utilizing 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, IL)
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,544,146
App. No.
17/743,717
Granted
Jan 3, 2023
Kind
B2
Abstract

A method includes receiving a data retrieval request. A plurality of identifiers are determined in accordance with the data retrieval request. Integrity information is generated based on determining the plurality of identifiers by performing a cyclic redundancy check. Stored integrity information corresponding to the data retrieval request is compared with the integrity information, where the stored integrity information was previously generated by performing the cyclic redundancy check. When the stored integrity information compares unfavorably with the integrity information, corruption associated with the plurality of identifiers is determined.

Claims (45)

1. A method comprises:

receiving a data retrieval request;

determining a plurality of identifiers in accordance with the data retrieval request;

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

comparing stored integrity information corresponding to the data retrieval request with the integrity information, wherein the stored integrity information was previously generated by performing the cyclic redundancy check; and

when the stored integrity information compares unfavorably with the integrity information, determining corruption associated with the plurality of identifiers.

2. 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.

3. The method of claim 1 , further comprising:

performing data storage integrity verification by periodically retrieving data slices from a storage system to determine whether one or more data slices have been corrupted.

4. The method of claim 1 , wherein the plurality of identifiers identify a virtual memory space that maps to storage units of a 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:

receiving the stored integrity information corresponding to the data retrieval request.

8. The method of claim 1 , further comprising:

decoding a plurality of data slices corresponding to the plurality of identifiers when the stored integrity information compares favorably with the integrity information.

9. The method of claim 1 , further comprising:

performing a set level integrity check when the stored integrity information compares unfavorably with the integrity information to identify at least one set of data slices having an error; and

for each set of data slices identified as having an error, performing an individual encoded slice name integrity check to identify at least one data slice having an error in the at least one set of data slices.

10. The method of claim 9 , further comprising:

identifying a proper subset of a plurality of data slices corresponding to the plurality of identifiers by excluding ones of the plurality of data slices identified as having an error; and

reproducing a data file by dispersed storage error decoding the proper subset of the plurality of data slices when the proper subset of the plurality of data slices includes at least a decode threshold number of data slices.

11. The method of claim 1 , further comprising:

determining a plurality of sets of slice names in accordance with the data retrieval request, wherein the plurality of identifiers are determined based on the plurality of sets of slice names, wherein the plurality of sets of slice names correspond to a plurality of data slices stored in a set of storage units that were dispersed storage error encoded utilizing dispersed storage error coding parameters.

12. The method of claim 1 , further comprising:

rebuilding at least one data slice associated with the plurality of identifiers based on determining the corruption.

13. A computer comprises:

an interface;

a memory; and

a processing module operable to:

receive a data retrieval request;

determine a plurality of identifiers in accordance with the data retrieval request;

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

compare stored integrity information corresponding to the data retrieval request with the integrity information, wherein the stored integrity information was previously generated by performing the cyclic redundancy check; and

when the stored integrity information compares unfavorably with the integrity information, determine corruption associated with the plurality of identifiers.

14. The computer of claim 13 , 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.

15. The computer of claim 13 , wherein the processing module further functions to:

performing data storage integrity verification by periodically retrieving data slices from a storage system to determine whether one or more data slices have been corrupted.

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

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

18. The computer of claim 17 , 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.

19. The computer of claim 13 , wherein the processing module further functions to:

rebuild at least one data slice associated with the plurality of identifiers based on determining the corruption.

20. The computer of claim 13 , wherein the processing module further functions to:

decode a plurality of data slices corresponding to the plurality of identifiers when the stored integrity information compares favorably with the integrity information.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 17, 2022
From: GRUBE, GARY W.; MARKISON, TIMOTHY W.; VAS, SEBASTIEN; MARK, ZACHARY J.; RESCH, JASON K.
To: PURE STORAGE, INC.
Reel/Frame 059933/0171 →