Raid-6 computation system and method
First Claim
1. A computer-implemented method for computing erasure codes for a redundant array of independent disks (RAID), the method comprising:
- storing user data associated with a RAID stripe that is defined by a data block common to each disk in the redundant array, wherein, for each byte offset within the data block, user data associated with only N−
2 disks is stored, N being the number of disks in the redundant array;
for each byte offset within the data block, computing a first erasure code by accumulating a plurality of values generated by performing, across each disk in the redundant array, a first exclusive-or operation based on the byte offset within the data block;
for each byte offset within the data block, computing a second erasure code by accumulating a plurality of values generated by performing, across each disk in the redundant array, a second exclusive-or operation based on a look-up table value, wherein, each disk in the redundant array is associated with a respective disk drive number, and the respective disk drive number is input as an index to the look-up table to generate the look-up table value; and
for each byte offset within the data block, storing the first erasure code and the second erasure code along with the user data associated with the N−
2 disks.
2 Assignments
0 Petitions
Accused Products
Abstract
One embodiment of the present invention sets forth a technique for performing RAID-6 computations using simple arithmetic functions and two-dimensional table lookup operations. Four lookup tables are computed and saved prior to normal operation of a RAID-6 disk array. During normal operation of the RAID-6 disk array, all RAID-6 related computations may be performed using a small set of simple arithmetic operations and a set of lookup operations to three of the four previously saved lookup tables. Greater computational efficiency is gained by reducing the RAID-6 computations to simple operations that are performed efficiently on a typical central processing unit or graphics processing unit.
-
Citations
22 Claims
-
1. A computer-implemented method for computing erasure codes for a redundant array of independent disks (RAID), the method comprising:
-
storing user data associated with a RAID stripe that is defined by a data block common to each disk in the redundant array, wherein, for each byte offset within the data block, user data associated with only N−
2 disks is stored, N being the number of disks in the redundant array;for each byte offset within the data block, computing a first erasure code by accumulating a plurality of values generated by performing, across each disk in the redundant array, a first exclusive-or operation based on the byte offset within the data block; for each byte offset within the data block, computing a second erasure code by accumulating a plurality of values generated by performing, across each disk in the redundant array, a second exclusive-or operation based on a look-up table value, wherein, each disk in the redundant array is associated with a respective disk drive number, and the respective disk drive number is input as an index to the look-up table to generate the look-up table value; and for each byte offset within the data block, storing the first erasure code and the second erasure code along with the user data associated with the N−
2 disks. - View Dependent Claims (2, 3, 4, 6, 7, 8, 9, 10, 11, 12)
-
-
5. The method 4, wherein the user data is stored in the memory local to the graphics processing unit or in a frame buffer memory coupled to the graphics processing unit.
-
13. A computer-readable medium including instructions that, when executed by a processing unit, cause the processing unit to compute erasure codes for a redundant array of independent disks (RAID), by performing the steps of:
-
storing user data associated with a RAID stripe that is defined by a data block common to each disk in the redundant array, wherein, for each byte offset within the data block, user data associated with only N−
2 disks is stored, N being the number of disks in the redundant array;for each byte offset within the data block, computing a first erasure code by accumulating a plurality of values generated by performing, across each disk in the redundant array, a first exclusive-or operation based on the byte offset within the data block; for each byte offset within the data block, computing a second erasure code by accumulating a plurality of values generated by performing, across each disk in the redundant array, a second exclusive-or operation based on a look-up table value wherein, each disk in the redundant array is associated with a respective disk drive number, and the respective disk drive number is input as an index to the look-up table to generate the look-up table value; and for each byte offset within the data block, storing the first erasure code and the second erasure code along with the user data associated with the N−
2 disks. - View Dependent Claims (14, 15, 16, 18, 19, 20)
-
-
17. The computer-readable medium 16, wherein the user data is stored in the memory local to the graphics processing unit or in a frame buffer memory coupled to the graphics processing unit.
-
21. A computer system, comprising:
-
a processing unit; a system memory coupled to the processing unit; and a redundant array of independent disks (RAID) coupled to the processing unit and the system memory, wherein the processing unit is configured to compute erasure codes for the redundant array by performing the steps of; storing user data associated with a RAID stripe that is defined by a data block common to each disk in the redundant array, wherein, for each byte offset within the data block, user data associated with only N−
2 disks is stored, N being the number of disks in the redundant array,for each byte offset within the data block, computing a first erasure code by accumulating a plurality of values generated by performing, across each disk in the redundant array, a first exclusive-or operation based on the byte offset within the data block, for each byte offset within the data block, computing a second erasure code by accumulating a plurality of values generated by performing, across each disk in the redundant array, a second exclusive-or operation based on a look-up table value, wherein, each disk in the redundant array is associated with a respective disk drive number, and the respective disk drive number is input as an index to the look-up table to generate the look-up table value, and for each byte offset within the data block, storing the first erasure code and the second erasure code along with the user data associated with the N−
2 disks. - View Dependent Claims (22)
-
Specification