IP Library Granted Patent US 9,087,016
Granted Patent B2
US 9,087,016 · App. 14/330,194 · Granted Jul 21, 2015

Detecting intentional corruption of data in a dispersed storage network

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 9,087,016
App. No.
14/330,194
Granted
Jul 21, 2015
Kind
B2
Abstract

A method begins by a dispersed storage (DS) processing module of a DS unit selecting a data slice for corruption analysis and requesting integrity information for the data slice from one or more other DS units of a dispersed storage network. When the one or more requested integrity information is received, the method continues with the DS processing module analyzing the one or more received integrity information and local integrity information of the data slice stored in the DS unit. When the analysis of the one or more received integrity information and the local integrity information of the data slice is unfavorable, the method continues with the DS processing module identifying the data slice as being corrupted.

Claims (77)

1. A method for detecting intentional corruption of data in a dispersed storage network (DSN), the method comprises:

selecting, by a storage unit of the DSN, a selected encoded data slice of a set of encoded data slices for corruption analysis, wherein a data segment of the data was dispersed error encoded to produce the set of encoded data slices, wherein an integrity value was created for each encoded data slice of at least some of the set of encoded data slices to produce a set of integrity values, wherein encoded data slices of the set of encoded data slices and the set of integrity values are stored in a set of storage units, and wherein the set of storage units includes the storage unit;

requesting and receiving, by the storage unit, the set of integrity values from another storage unit of the set of storage units;

comparing, by the storage unit, the received set of integrity values with the set of integrity values that are stored by the storage unit; and

when the comparison of the received set of integrity values with the set of integrity values that are stored by the storage unit is unfavorable, identifying, by the storage unit, the selected encoded data slice as being corrupted.

2. The method of claim 1 , wherein the comparing comprises:

extracting the integrity value of the selected encoded data slice from the set of encoded data slices to produce a received integrity value;

extracting the integrity value of the selected encoded data slice from the set of encoded data slices stored by the storage unit to produce a local integrity value; and

comparing the received integrity value with the local integrity value.

3. The method of claim 1 , wherein the comparing comprises:

extracting the integrity value for a threshold number of encoded data slices from the set of encoded data slices to produce a received threshold set of integrity values;

extracting the integrity value for the threshold number of encoded data slices from the set of encoded data slices stored by the storage unit to produce a local set of integrity values; and

comparing the received set of integrity values with the local set of integrity values.

4. The method of claim 1 further comprises:

requesting and receiving, by the storage unit, the set of integrity values from a second other storage unit of the set of storage units;

comparing, by the storage unit, the received set of integrity values from the second other storage unit with the set of integrity values that are stored by the storage unit;

when the comparison of the received set of integrity values from the second other storage unit with the set of integrity values that are stored by the storage unit is unfavorable, identifying, by the storage unit, the selected encoded data slice as being corrupted; and

when the comparison of both the received set of integrity values with the set of integrity values that are stored by the storage unit and the received set of integrity values from the second other storage unit with the set of integrity values that are stored by the storage unit are favorable, indicating, by the storage unit, that the selected encoded data slice is not corrupted.

5. The method of claim 1 further comprises:

initiating a rebuilding process to rebuild the selected encoded data slice when the selected encoded data slice is corrupted.

6. The method of claim 5 , wherein the rebuilding process comprises one of:

a partial rebuilding process in which the identified data slice is rebuilt; and

a rebuilding process in which a data segment is rebuilt from a set of data slices and the data segment is re-encoded to produce a rebuilt data slice.

7. A computer readable storage device comprises:

a first memory section that stores operational instructions that, when executed by a storage unit, causes the storage unit to:

select a selected encoded data slice of a set of encoded data slices for corruption analysis, wherein a data segment of data was dispersed error encoded to produce the set of encoded data slices, wherein an integrity value was created for each encoded data slice of at least some of the set of encoded data slices to produce a set of integrity values, wherein encoded data slices of the set of encoded data slices and the set of integrity values are stored in a set of storage units, and wherein the set of storage units includes the storage unit;

a second memory section that stores operational instructions that, when executed by the storage unit, causes the storage unit to:

request and receive the set of integrity values from another storage unit of the set of storage units; and

a third memory section that stores operational instructions that, when executed by the storage unit, causes the storage unit to:

compare the received set of integrity values with the set of integrity values that are stored by the storage unit; and

when the comparison of the received set of integrity values with the set of integrity values that are stored by the storage unit is unfavorable, identify the selected encoded data slice as being corrupted.

8. The computer readable storage device of claim 7 , wherein the third memory section further stores operational instructions that, when executed by the storage unit, causes the storage unit to perform the comparing by:

extracting the integrity value of the selected encoded data slice from the set of encoded data slices to produce a received integrity value;

extracting the integrity value of the selected encoded data slice from the set of encoded data slices stored by the storage unit to produce a local integrity value; and

comparing the received integrity value with the local integrity value.

9. The computer readable storage device of claim 7 , wherein the third memory section further stores operational instructions that, when executed by the storage unit, causes the storage unit to perform the comparing by:

extracting the integrity value for a threshold number of encoded data slices from the set of encoded data slices to produce a received threshold set of integrity values;

extracting the integrity value for the threshold number of encoded data slices from the set of encoded data slices stored by the storage unit to produce a local set of integrity values; and

comparing the received set of integrity values with the local set of integrity values.

10. The computer readable storage device of claim 7 further comprises:

the second memory section further storing operational instructions that, when executed by the storage unit, causes the storage unit to:

request and receive the set of integrity values from a second other storage unit of the set of storage units;

the third memory section further storing operational instructions that, when executed by the storage unit, causes the storage unit to:

compare the received set of integrity values from the second other storage unit with the set of integrity values that are stored by the storage unit;

when the comparison of the received set of integrity values from the second other storage unit with the set of integrity values that are stored by the storage unit is unfavorable, identify the selected encoded data slice as being corrupted; and

when the comparison of both the received set of integrity values with the set of integrity values that are stored by the storage unit and the received set of integrity values from the second other storage unit with the set of integrity values that are stored by the storage unit are favorable, indicate that the selected encoded data slice is not corrupted.

11. The computer readable storage device of claim 7 , wherein the third memory section further stores operational instructions that, when executed by the storage unit, causes the storage unit to:

initiate a rebuilding process to rebuild the selected encoded data slice when the selected encoded data slice is corrupted.

12. The computer readable storage device of claim 11 , wherein the rebuilding process comprises one of:

a partial rebuilding process in which the identified data slice is rebuilt; and

a rebuilding process in which a data segment is rebuilt from a set of data slices and the data segment is re-encoded to produce a rebuilt data slice.

13. A storage unit comprises:

an interface;

memory; and

a processing module operably coupled to the memory and the interface, wherein the processing module is operable to:

select a selected encoded data slice of a set of encoded data slices for corruption analysis, wherein a data segment of data was dispersed error encoded to produce the set of encoded data slices, wherein an integrity value was created for each encoded data slice of at least some of the set of encoded data slices to produce a set of integrity values, wherein encoded data slices of the set of encoded data slices and the set of integrity values are stored in a set of storage units, and wherein the set of storage units includes the storage unit;

request and receive, via the interface, the set of integrity values from another storage unit of the set of storage units; and

compare the received set of integrity values with the set of integrity values that are stored in the memory; and

when the comparison of the received set of integrity values with the set of integrity values that are stored in the memory is unfavorable, identify the selected encoded data slice as being corrupted.

14. The storage unit of claim 13 , wherein the processing module is further operable to perform the comparing by:

extracting the integrity value of the selected encoded data slice from the set of encoded data slices to produce a received integrity value;

extracting the integrity value of the selected encoded data slice from the set of encoded data slices stored by the storage unit to produce a local integrity value; and

comparing the received integrity value with the local integrity value.

15. The storage unit of claim 13 , wherein the processing module is further operable to perform the comparing by:

extracting the integrity value for a threshold number of encoded data slices from the set of encoded data slices to produce a received threshold set of integrity values;

extracting the integrity value for the threshold number of encoded data slices from the set of encoded data slices stored by the storage unit to produce a local set of integrity values; and

comparing the received set of integrity values with the local set of integrity values.

16. The storage unit of claim 13 , wherein the processing module is further operable to:

request and receive, via the interface, the set of integrity values from a second other storage unit of the set of storage units;

compare the received set of integrity values from the second other storage unit with the set of integrity values that are stored in the memory;

when the comparison of the received set of integrity values from the second other storage unit with the set of integrity values that are stored in the memory is unfavorable, identify the selected encoded data slice as being corrupted; and

when the comparison of both the received set of integrity values with the set of integrity values that are stored in the memory and the received set of integrity values from the second other storage unit with the set of integrity values that are stored in the memory are favorable, indicate that the selected encoded data slice is not corrupted.

17. The storage unit of claim 13 , wherein the processing module is further operable to:

initiate a rebuilding process to rebuild the selected encoded data slice when the selected encoded data slice is corrupted.

18. The storage unit of claim 17 , wherein the rebuilding process comprises one of:

a partial rebuilding process in which the identified data slice is rebuilt; and

a rebuilding process in which a data segment is rebuilt from a set of data slices and the data segment is re-encoded to produce a rebuilt data slice.

Assignments (5)
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 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 13, 2016
From: CLEVERSAFE, INC.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 038687/0596 →