IP Library Granted Patent US 9,311,184
Granted Patent B2
US 9,311,184 · App. 12/983,226 · Granted Apr 12, 2016

Storing raid data as encoded data slices in a dispersed storage network

Inventors: Gary W. Grube (Barrington Hills, IL); Timothy W. Markison (Mesa, AZ)
Assignee: CLEVERSAFE, INC.
G06F11/1076G06F3/065G06F3/067G06F3/068G06F3/0614G06F3/0619G06F3/0631G06F3/0647G06F3/0685G06F3/0689G06F11/0727G06F11/1092H04L67/1097G06F2211/1028
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,311,184
App. No.
12/983,226
Granted
Apr 12, 2016
Kind
B2
Abstract

A method begins by a processing module receiving data for storage and interpreting the data to identify the data as redundant array of independent disks (RAID) data. The method continues with the processing module interpreting the RAID data to identify at least one of RAID block data and RAID parity data. When the RAID data includes RAID block data and RAID parity data the method continues with the processing module encoding the RAID block data in accordance with error coding dispersal storage function parameters to produce at least one set of encoded data slices and outputting the at least one set of encoded data slices to a dispersed storage network memory.

Claims (74)

1. A method for a computer of a dispersed storage network to convert data stored in a redundant array of independent disks (RAID) format into data in a dispersed storage error encoded format, the method comprises:

receiving the data for storage;

interpreting the data to identify sets of RAID data blocks and corresponding RAID parity blocks; and

for a set of RAID data blocks and a corresponding RAID parity block:

converting format of the data from the RAID format to the dispersed storage error encoded format by:

reconstructing a portion of the data from the at least some of the RAID data blocks of the set of RAID data blocks and, when needed, the corresponding RAID parity block;

generating a data matrix of the portion of the data;

generating a set of encoded data slices by encoding the data matrix using an encoding matrix in accordance with error coding dispersal storage function parameters, wherein the set of encoded data slices includes a total number of encoded data slices, wherein the portion of the data is recoverable from a threshold number of encoded data slices of the set of encoded data slices, and wherein the threshold number is at least two less than the total number; and

outputting the set of encoded data slices to a set of storage units of a dispersed storage network (DSN) memory for storage therein.

2. The method of claim 1 , wherein the reconstructing the portion of the data comprises:

determining accuracy of the set of RAID data blocks based on the corresponding RAID parity block; and

when the accuracy of the set of RAID data blocks compares unfavorably to a desired accuracy, correcting the set of RAID data blocks based on the RAID parity block.

3. The method of claim 1 further comprises:

for a second set of RAID data blocks and a second corresponding RAID parity block:

encoding the second set of RAID data blocks in accordance with the error coding dispersal storage function parameters to produce a second set of encoded data slices; and

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

4. The method of claim 1 , wherein the receiving the data for storage comprises:

sending a request to a RAID memory device regarding the data; and

receiving the data from the RAID memory device.

5. The method of claim 1 , wherein the encoding the set of RAID data blocks further comprises:

determining the error coding dispersal storage function parameters based on at least one of: the data, detection of the set of RAID data blocks, the RAID parity block, detection of a RAID data stripe, RAID data checksum information, a vault lookup, RAID memory configuration information, a command, a message, a predetermination, a data object name, a data object, a data object size, a data type, a data block, parity information, a user identifier (ID), RAID unit information, disk drive information, address information, memory information, a command, and a request.

6. A method for a computer of a dispersed storage network to read data that is stored in a dispersed storage error encoded format as data having a redundant array of independent disks (RAID) format, the method comprises:

receiving a data retrieval request;

determining whether the data retrieval request is a redundant array of independent disks (RAID) data retrieval request or an error coding dispersed storage request;

when the data retrieval request is the RAID data retrieval request, converting the data retrieval request into the error coding dispersed storage request to retrieve a threshold number of encoded data slices of a set of encoded data slices, wherein the set of encoded data slices includes a total number of encoded data slices, wherein the data is recoverable from the threshold number of encoded data slices, and wherein the threshold number is at least two less than the total number;

decoding the threshold number set of encoded data slices in accordance with error coding dispersal storage function parameters to produce the data;

interpreting the data to determine whether the data represents a stripe of RAID data or a stripe-block of RAID data, wherein a stripe of RAID data includes a set of RAID data blocks and a corresponding RAID parity block and the stripe-block of RAID data includes the set of data blocks; and

when the data represents the stripe of RAID data:

generating the corresponding RAID parity block from the set of RAID data blocks; and

outputting the set of RAID data blocks and the corresponding RAID parity block.

7. The method of claim 6 further comprises:

when the data represents the stripe-block of data, outputting the data.

8. The method of claim 6 , wherein the interpreting the data comprises:

interpreting a header section of the data to determine whether the data represents the stripe of data or the stripe-block of data.

9. A computer comprises:

an interface;

a memory; and

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

receive, via the interface, the data for storage;

interpret the data to identify sets of RAID data blocks and corresponding RAID parity blocks; and

for a set of RAID data blocks and a corresponding RAID parity block:

convert format of the data from the RAID format to the dispersed storage error encoded format by:

reconstructing a portion of the data from the at least some of the RAID data blocks of the set of RAID data blocks and, when needed, the corresponding RAID parity block;

generating a data matrix of the portion of the data;

generating a set of encoded data slices by encoding the data matrix using an encoding matrix in accordance with error coding dispersal storage function parameters, wherein the set of encoded data slices includes a total number of encoded data slices, wherein the portion of the data is recoverable from a threshold number of encoded data slices of the set of encoded data slices, and wherein the threshold number is at least two less than the total number; and

output, via the interface, the set of encoded data slices to a set of storage units of a dispersed storage network (DSN) memory for storage therein.

10. The computer of claim 9 , wherein the processing module further functions to reconstruct the portion of the data by:

determining accuracy of the set of RAID data blocks based on the corresponding RAID parity block; and

when the accuracy of the set of RAID data blocks compares unfavorably to a desired accuracy, correcting the set of RAID data blocks based on the RAID parity block.

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

for a second set of RAID data blocks and a second corresponding RAID parity block:

encode the second set of RAID data blocks in accordance with the error coding dispersal storage function parameters to produce a second set of encoded data slices; and

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

12. The computer of claim 9 , wherein the processing module functions to receive the data for storage by:

sending, via the interface, a request to a RAID memory device regarding the data; and

receiving, the interface, the data from the RAID memory device.

13. The computer of claim 9 , wherein the processing module further functions to encode the set of RAID data blocks by:

determining the error coding dispersal storage function parameters based on at least one of: the data, detection of the set of RAID data blocks, the corresponding RAID parity block, detection of a RAID data stripe, RAID data checksum information, a vault lookup, RAID memory configuration information, a command, a message, a predetermination, a data object name, a data object, a data object size, a data type, a data block, parity information, a user identifier (ID), RAID unit information, disk drive information, address information, memory information, a command, and a request.

14. A computer comprises:

an interface;

a memory; and

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

receive, via the interface, a data retrieval request;

determine whether the data retrieval request is a redundant array of independent disks (RAID) data retrieval request or an error coding dispersed storage request;

when the data retrieval request is the RAID data retrieval request, converting the data retrieval request into the error coding dispersed storage request to retrieve, via the interface, a threshold number of encoded data slices of a set of encoded data slices, wherein the set of encoded data slices includes a total number of encoded data slices, wherein the data is recoverable from the threshold number of encoded data slices, and wherein the threshold number is at least two less than the total number;

decode the threshold number set of encoded data slices in accordance with error coding dispersal storage function parameters to produce the data;

interpret the data to determine whether the data represents a stripe of RAID data or a stripe-block of RAID data, wherein a stripe of RAID data includes a set of RAID data blocks and a corresponding RAID parity block and the stripe-block of RAID data includes the set of data blocks; and

when the data represents the stripe of data:

generate the corresponding RAID parity block from the set of RAID data blocks; and

output the set of RAID data blocks and the corresponding RAID parity block.

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

output, via the interface, the data when the data represents the stripe-block of RAID data.

16. The computer of claim 14 , wherein the processing module interprets the data by:

interpreting a header section of the data to determine whether the data represents the stripe of RAID data or the stripe-block of RAID data.

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 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 13, 2016
From: CLEVERSAFE, INC.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 038687/0596 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 12, 2011
From: GRUBE, GARY W.; MARKISON, TIMOTHY W.
To: CLEVERSAFE, INC
Reel/Frame 026579/0380 →
Continuity (3)
Provisional Application 61308938 · Feb 27, 2010
Provisional Application 61314166 · Mar 16, 2010
Related Publication 20110214011A1 · Sep 1, 2011