IP Library Granted Patent US 9,424,130
Granted Patent B2
US 9,424,130 · App. 14/843,049 · Granted Aug 23, 2016

Efficiently accessing an encoded data slice in a memory container utilizing a memory bin

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,424,130
App. No.
14/843,049
Granted
Aug 23, 2016
Kind
B2
Abstract

A method includes determining whether a substantially similar data object to a data object is stored in a dispersed storage network (DSN). When the substantially similar data object is not stored in the DSN, the method includes dividing the data object into a plurality of data segments; encoding the plurality of data segments to produce a plurality of encoded data segments, wherein an encoded data segment of the plurality of encoded data segments includes a first number of data blocks and a second number of parity blocks; arranging the data blocks and the parity blocks of the plurality of encoded data segments into a matrix; establishing a set of encoded data slices from the matrix; and outputting the set of encoded data slices to storage units of the DSN for storage therein.

Claims (96)

1. A method for execution by one or more computing devices, the method comprises:

determining whether a substantially similar data object to a data object is stored in a dispersed storage network (DSN); and

when the substantially similar data object is not stored in the DSN:

dividing the data object into a plurality of data segments;

encoding the plurality of data segments to produce a plurality of encoded data segments, wherein an encoded data segment of the plurality of encoded data segments includes a first number of data blocks and a second number of parity blocks;

arranging the data blocks and the parity blocks of the plurality of encoded data segments into a matrix, wherein the data blocks and the parity blocks of an encoded data segment of the plurality of encoded data segments are placed in the matrix in a first orientation;

establishing a set of encoded data slices from the matrix based on a second orientation of the matrix; and

outputting the set of encoded data slices to storage units of the DSN for storage therein.

2. The method of claim 1 , wherein the determining whether the substantially similar data object is stored in the DSN comprises one or more of:

comparing a portion of the data object to the substantially similar data object:

comparing a hash of the portion of the data object to a hash of the portion of the substantially similar data object; and

determining data segment boundaries and comparing one or more data segments of the data objects to one or more data segments of the substantially similar data object.

3. The method of claim 1 further comprises:

when the substantially similar data object is stored in the DSN:

dividing the data object into the plurality of data segments based on a segmenting scheme used to segment the substantially similar data object;

identifying different data segments of the data object in comparison to data segments of the substantially similar data object;

encoding the different data segments to produce a set of encoded data segments;

arranging the data blocks and the parity blocks of the set of encoded data segments into the matrix;

establishing a new set of encoded data slices from the matrix; and

outputting the new set of encoded data slices to storage units of the DSN for storage therein.

4. The method of claim 1 , wherein the arranging the data blocks and the parity blocks of the plurality of encoded data segments into the matrix comprises:

placing the data blocks and parity blocks of one of the plurality of encoded data segments in a column of the matrix;

placing the data blocks and parity blocks of a second one of the plurality of encoded data segments in a second column of the matrix;

placing the data blocks and parity blocks of a third one of the plurality of encoded data segments in a third column of the matrix; and

placing the data blocks and parity blocks of an x th one of the plurality of encoded data segments in an x th column of the matrix, wherein x corresponds to the number of data segments in the plurality of data segments.

5. The method of claim 4 , wherein the establishing a set of encoded data slices from the matrix comprises:

establishing a first encoded data slice of the set of encoded data slices to include data blocks of a first row of the matrix;

establishing an m th encoded data slice of the set of encoded data slices to include data blocks of a m th row of the matrix, wherein m corresponds to the first number;

establishing an m th +1 encoded data slice of the set of encoded data slices to include parity blocks of a m th +1 row of the matrix; and

establishing an n th encoded data slice of the set of encoded data slices to include parity blocks of a n th row of the matrix, wherein n corresponds to the sum of the first number and the second number.

6. A computing device comprises:

an interface;

memory; and

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

determine whether a substantially similar data object to a data object is stored in a dispersed storage network (DSN); and

when the substantially similar data object is not stored in the DSN:

divide the data object into a plurality of data segments;

encode the plurality of data segments to produce a plurality of encoded data segments, wherein an encoded data segment of the plurality of encoded data segments includes a first number of data blocks and a second number of parity blocks;

arrange the data blocks and the parity blocks of the plurality of encoded data segments into a matrix, wherein the data blocks and the parity blocks of an encoded data segment of the plurality of encoded data segments are placed in the matrix in a first orientation;

establish a set of encoded data slices from the matrix based on a second orientation of the matrix; and

output, via the interface, the set of encoded data slices to storage units of the DSN for storage therein.

7. The computing device of claim 6 , wherein the processing module is further operable to determine whether the substantially similar data object is stored in the DSN by one or more of:

comparing a portion of the data object to the substantially similar data object:

comparing a hash of the portion of the data object to a hash of the portion of the substantially similar data object; and

determining data segment boundaries and comparing one or more data segments of the data objects to one or more data segments of the substantially similar data object.

8. The computing device of claim 6 , wherein the processing module is further operable to:

when the substantially similar data object is stored in the DSN:

divide the data object into the plurality of data segments based on a segmenting scheme used to segment the substantially similar data object;

identify different data segments of the data object in comparison to data segments of the substantially similar data object;

encode the different data segments to produce a set of encoded data segments;

arranging the data blocks and the parity blocks of the set of encoded data segments into the matrix;

establish a new set of encoded data slices from the matrix; and

output, via the interface, the new set of encoded data slices to storage units of the DSN for storage therein.

9. The computing device of claim 6 , wherein the processing module is further operable to arrange the data blocks and the parity blocks of the plurality of encoded data segments into the matrix by:

placing the data blocks and parity blocks of one of the plurality of encoded data segments in a column of the matrix;

placing the data blocks and parity blocks of a second one of the plurality of encoded data segments in a second column of the matrix;

placing the data blocks and parity blocks of a third one of the plurality of encoded data segments in a third column of the matrix; and

placing the data blocks and parity blocks of an x th one of the plurality of encoded data segments in an x th column of the matrix, wherein x corresponds to the number of data segments in the plurality of data segments.

10. The computing device of claim 9 , wherein the processing module is further operable to establish the set of encoded data slices from the matrix by:

establishing a first encoded data slice of the set of encoded data slices to include data blocks of a first row of the matrix;

establishing an m th encoded data slice of the set of encoded data slices to include data blocks of a m th row of the matrix, wherein m corresponds to the first number;

establishing an m th +1 encoded data slice of the set of encoded data slices to include parity blocks of a m th +1 row of the matrix; and

establishing an n th encoded data slice of the set of encoded data slices to include parity blocks of a n th row of the matrix, wherein n corresponds to the sum of the first number and the second number.

11. A non-transitory computer readable memory device comprises:

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

determine whether a substantially similar data object to a data object is stored in a dispersed storage network (DSN); and

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

when the substantially similar data object is not stored in the DSN:

divide the data object into a plurality of data segments;

encode the plurality of data segments to produce a plurality of encoded data segments, wherein an encoded data segment of the plurality of encoded data segments includes a first number of data blocks and a second number of parity blocks;

arrange the data blocks and the parity blocks of the plurality of encoded data segments into a matrix, wherein the data blocks and the parity blocks of an encoded data segment of the plurality of encoded data segments are placed in the matrix in a first orientation;

establish a set of encoded data slices from the matrix based on a second orientation of the matrix; and

output the set of encoded data slices to storage units of the DSN for storage therein.

12. The non-transitory computer readable memory device of claim 11 , wherein the first memory section further stores operational instructions that, when executed by the computing device, causes the computing device to determine whether the substantially similar data object is stored in the DSN by one or more of:

comparing a portion of the data object to the substantially similar data object:

comparing a hash of the portion of the data object to a hash of the portion of the substantially similar data object; and

determining data segment boundaries and comparing one or more data segments of the data objects to one or more data segments of the substantially similar data object.

13. The non-transitory computer readable memory device of claim 11 further comprises:

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

when the substantially similar data object is stored in the DSN:

divide the data object into the plurality of data segments based on a segmenting scheme used to segment the substantially similar data object;

identify different data segments of the data object in comparison to data segments of the substantially similar data object;

encode the different data segments to produce a set of encoded data segments;

arranging the data blocks and the parity blocks of the set of encoded data segments into the matrix;

establish a new set of encoded data slices from the matrix; and

output, via an interface, the new set of encoded data slices to storage units of the DSN for storage therein.

14. The non-transitory computer readable memory device of claim 11 , wherein the second memory section further stores operational instructions that, when executed by the computing device, causes the computing device to arrange the data blocks and the parity blocks of the plurality of encoded data segments into the matrix by:

placing the data blocks and parity blocks of one of the plurality of encoded data segments in a column of the matrix;

placing the data blocks and parity blocks of a second one of the plurality of encoded data segments in a second column of the matrix;

placing the data blocks and parity blocks of a third one of the plurality of encoded data segments in a third column of the matrix; and

placing the data blocks and parity blocks of an x th one of the plurality of encoded data segments in an x th column of the matrix, wherein x corresponds to the number of data segments in the plurality of data segments.

15. The non-transitory computer readable memory device of claim 14 , wherein the second memory section further stores operational instructions that, when executed by the computing device, causes the computing device to establish the set of encoded data slices from the matrix by:

establishing a first encoded data slice of the set of encoded data slices to include data blocks of a first row of the matrix;

establishing an m th encoded data slice of the set of encoded data slices to include data blocks of a m th row of the matrix, wherein m corresponds to the first number;

establishing an m th +1 encoded data slice of the set of encoded data slices to include parity blocks of a m th +1 row of the matrix; and

establishing an n th encoded data slice of the set of encoded data slices to include parity blocks of a n th row of the matrix, wherein n corresponds to the sum of the first number and the second number.

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 6, 2016
From: CLEVERSAFE, INC.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 038629/0015 →