IP Library Granted Patent US 10,042,704
Granted Patent B2
US 10,042,704 · App. 15/144,243 · Granted Aug 7, 2018

Validating stored encoded data slice integrity in a dispersed storage network

Inventors: Andrew D. Baptist (Mt. Pleasant, WI); Manish Motwani (Chicago, IL); Jason K. Resch (Chicago, IL); Ilya Volvovski (Chicago, IL)
Assignee: INTERNATIONAL BUSINESS MACHINES CORPORATION
G06F11/108G06F3/061G06F3/0604G06F3/065G06F3/0605G06F3/067G06F3/0619G06F3/0622G06F3/0643G06F3/0644G06F3/0647G06F3/0653G06F3/0668G06F3/0689G06F11/1076G06F11/1662G06F13/4282G06F17/3053G06F17/30082G06F17/30197G06F21/6218G06F21/645H03M13/2906H03M13/3761H04L9/0861H04L63/061H04L63/0853H04L63/108H04L67/1097H04L67/327G06F3/064G06F2201/805H03M13/1515H04L63/0428
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 10,042,704
App. No.
15/144,243
Granted
Aug 7, 2018
Kind
B2
Abstract

An encoded data slice is received for storage by a dispersed storage and task (DST) execution unit. A plurality of initial integrity values are generated by executing a plurality of integrity check algorithms on the encoded data slice. The encoded data slice and the plurality of initial integrity values are stored in a memory of the DST execution unit. A subset of the plurality of integrity check algorithms are selected in response to a request to retrieve the encoded data slice. At least one final integrity value is generated by executing the subset of the plurality of integrity check algorithms on the encoded data slice stored in memory. An integrity status is generated by comparing the at least one final integrity value to the corresponding subset of the plurality of initial integrity values.

Claims (54)

1. A method for execution by a dispersed storage and task (DST) execution unit that includes a processor, the method comprises:

for a write request regarding an encoded data slice:

receiving the encoded data slice for storage by the DST execution unit;

generating a plurality of initial integrity values for the encoded data slice by executing a plurality of integrity check algorithms on the encoded data slice;

storing the encoded data slice and the plurality of initial integrity values in a memory of the DST execution unit; and

for a read request regarding the encoded data slice:

selecting a subset of the plurality of integrity check algorithms in response to the read request;

generating at least one final integrity value by executing the subset of the plurality of integrity check algorithms on the encoded data slice stored in the memory;

generating an integrity status by comparing the at least one final integrity value to the corresponding subset of the plurality of initial integrity values; and

when the integrity status is favorable, sending the encoded data slice to a requesting computing device in response to the read request.

2. The method of claim 1 , further comprising selecting the plurality of integrity check algorithms to be executed on the encoded data slice.

3. The method of claim 2 , wherein the plurality of integrity check algorithms are selected based on at least one of: a processing resource availability level, a desired false-negative probability level, or an algorithm computational efficiency level.

4. The method of claim 2 , wherein a first integrity check algorithm is more error-prone than a second integrity check algorithm, wherein the plurality of integrity check algorithms selected includes the first integrity check algorithm in response to determining that processing resource availability is low, and wherein the plurality of integrity check algorithms selected includes the second integrity check algorithm in response to determining that sufficient processing resources are available.

5. The method of claim 2 , wherein a first integrity check algorithm is faster than a second integrity check algorithm, and wherein the plurality of integrity check algorithms selected includes the first integrity check algorithm in response to determining that a low desired latency level is required.

6. The method of claim 1 further comprising:

generating a plurality of priority levels corresponding to each of the plurality of integrity check algorithms;

wherein the plurality of integrity check algorithms are executed in an order based on the plurality of priority levels.

7. The method of claim 1 further comprising storing a plurality of identifiers corresponding to the plurality of integrity check algorithms in the memory.

8. The method of claim 1 wherein the subset of the plurality of integrity check algorithms is a non-null proper subset that is selected based on at least one of: an available resource level, a required retrieval performance level, and a recovery desired maximum false-negative probability level.

9. The method of claim 1 wherein the integrity status indicates a favorable comparison when a result of the comparison indicates that the plurality of initial integrity values and the at least one final integrity value are substantially identical, and wherein the integrity status indicates an unfavorable comparison when a result of the comparison indicates that the corresponding subset of the plurality of initial integrity values and the at least one final integrity value are not substantially identical.

10. The method of claim 1 , wherein the sending further comprises sending the integrity status.

11. A processing system of a dispersed storage and task (DST) execution unit comprises:

at least one processor;

a memory that stores operational instructions, that when executed by the at least one processor cause the processing system to:

for a write request regarding an encoded data slice:

receive the encoded data slice for storage by the DST execution unit;

generate a plurality of initial integrity values for the encoded data slice by executing a plurality of integrity check algorithms on the encoded data slice;

store the encoded data slice and the plurality of initial integrity values in a memory of the DST execution unit; and

for a read request regarding the encoded data slice:

select a subset of the plurality of integrity check algorithms in response to the read request;

generate at least one final integrity value by executing the subset of the plurality of integrity check algorithms on the encoded data slice stored in the memory;

generate an integrity status by comparing the at least one final integrity value to the corresponding subset of the plurality of initial integrity values; and

when the integrity status is favorable, sending the encoded data slice to a requesting computing device in response to the read request.

12. The processing system of claim 11 , further comprising selecting the plurality of integrity check algorithms to be executed on the encoded data slice.

13. The processing system of claim 12 , wherein the plurality of integrity check algorithms are selected based on at least one of: a processing resource availability level, a desired false-negative probability level, or an algorithm computational efficiency level.

14. The processing system of claim 12 , wherein a first integrity check algorithm is more error-prone than a second integrity check algorithm, wherein the plurality of integrity check algorithms selected includes the first integrity check algorithm in response to determining that processing resource availability is low, and wherein the plurality of integrity check algorithms selected includes the second integrity check algorithm in response to determining that sufficient processing resources are available.

15. The processing system of claim 12 , wherein a first integrity check algorithm is faster than a second integrity check algorithm, and wherein the plurality of integrity check algorithms selected includes the first integrity check algorithm in response to determining that a low desired latency level is required.

16. The processing system of claim 11 further comprising:

generating a plurality of priority levels corresponding to each of the plurality of integrity check algorithms;

wherein the plurality of integrity check algorithms are executed in an order based on the plurality of priority levels.

17. The processing system of claim 11 further comprising storing a plurality of identifiers corresponding to the plurality of integrity check algorithms in the memory.

18. The processing system of claim 11 wherein the subset of the plurality of integrity check algorithms is a non-null proper subset that is selected based on at least one of: an available resource level, a required retrieval performance level, and a recovery desired maximum false-negative probability level.

19. The processing system of claim 11 wherein the integrity status indicates a favorable comparison when a result of the comparison indicates that the plurality of initial integrity values and the at least one final integrity value are substantially identical, and wherein the integrity status indicates an unfavorable comparison when a result of the comparison indicates that the at least one initial integrity value and the at least one final integrity value are not substantially identical.

20. 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 dispersed storage network (DSN) that includes a processor and a memory, causes the processing system to:

for a write request regarding an encoded data slice:

receive the encoded data slice for storage;

generate a plurality of initial integrity values for the encoded data slice by executing a plurality of integrity check algorithms on the encoded data slice;

store the encoded data slice and the plurality of initial integrity values in a memory of a dispersed storage and task (DST) execution unit; and

for a read request regarding the encoded data slice:

select a subset of the plurality of integrity check algorithms in response to the read request;

generate at least one final integrity value by executing the subset of the plurality of integrity check algorithms on the encoded data slice stored in the memory;

generate an integrity status by comparing the at least one final integrity value to the corresponding subset of the plurality of initial integrity values; and

when the integrity status is favorable, sending the encoded data slice to a requesting computing device in response to the read request.

Assignments (6)
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT RIGHTS Recorded Jun 11, 2025
From: BARCLAYS BANK PLC, AS ADMINISTRATIVE AGENT
To: PURE STORAGE, INC.
Reel/Frame 071558/0523 →
SECURITY INTEREST Recorded Aug 26, 2020
From: PURE STORAGE, INC.
To: BARCLAYS BANK PLC AS ADMINISTRATIVE AGENT
Reel/Frame 053867/0581 →
CORRECTIVE ASSIGNMENT TO CORRECT THE 9992063 AND 10334045 LISTED IN ERROR PREVIOUSLY RECORDED ON REEL 049556 FRAME 0012. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNOR HEREBY CONFIRMS THE ASSIGNMENT. Recorded Jan 14, 2020
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: PURE STORAGE, INC.
Reel/Frame 052205/0705 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 21, 2019
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: PURE STORAGE, INC.
Reel/Frame 049556/0012 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ADDRESS OF THE ASSIGNEE PREVIOUSLY RECORDED ON REEL 038437 FRAME 0619. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Apr 3, 2018
From: BAPTIST, ANDREW D.; MOTWANI, MANISH; RESCH, JASON K.; VOLVOVSKI, ILYA
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 045820/0890 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 2, 2016
From: BAPTIST, ANDREW D.; MOTWANI, MANISH; RESCH, JASON K.; VOLVOVSKI, ILYA
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 038437/0619 →
Continuity (2)
Provisional Application 62199816 · Jul 31, 2015
Related Publication 20170031760A1 · Feb 2, 2017