Method and system for multi-dimensional raid
Abstract
A method for storing data. The method includes receiving data to write to persistent storage, calculating parity values for a grid using the data, where each of the parity values is associated with one selected from of the Row Q Parity Group, the Row P Parity Group, the Column Q Parity Group, the Column P Parity Group, and the Intersection Parity Group. The method further includes writing the data to a data grid in the persistent storage, where the data grid is part of the grid, and writing the parity values for the grid to a portion of the grid, where the portion of the grid comprises physical locations associated with a Row Q Parity Group, a Row P Parity Group, a Column Q Parity Group, a Column P Parity Group, and an Intersection Parity Group, wherein the portion of the grid is distinct from the data grid.
Claims
exact text as granted — not AI-modified1 .- 29 . (canceled)
30 . A non-transitory computer readable medium comprising instructions, which when executed perform a method for storing data, the method comprising:
receiving the data to write to persistent storage; calculating parity values for a grid using the data, wherein the grid comprises a Row Q Parity Group, a Row P Parity Group, a Column Q Parity Group, a Column P Parity Group, and an Intersection Parity Group, wherein each of the parity values is associated with one selected from a group consisting of the Row Q Parity Group, the Row P Parity Group, the Column Q Parity Group, the Column P Parity Group, and the Intersection Parity Group, and wherein the parity values associated with the Intersection Parity Group are calculated using the parity values from at least one selected from a group consisting of the Row Q Parity Group, the Row P Parity Group, the Column Q Parity Group, and the Column P Parity Group; writing the data to a data grid in the persistent storage, wherein the data grid is part of the grid; and writing the parity values for the grid to a portion of the grid, wherein the portion of the grid comprises physical locations associated with the Row Q Parity Group, the Row P Parity Group, the Column Q Parity Group, the Column P Parity Group, and the Intersection Parity Group, wherein the portion of the grid is distinct from the data grid.
31 . The non-transitory computer readable medium of claim 30 , wherein at least one physical location in the portion of the grid is associated with a first independent fault domain and a second independent fault domain.
32 . The non-transitory computer readable medium of claim 30 , wherein the persistent storage comprises a plurality of storage modules, wherein each of the plurality of storage modules comprises solid state memory, and wherein the first independent fault domain is the plurality of storage modules and the second independent fault domain is a plurality of channels in each of the plurality of storage modules.
33 . The non-transitory computer readable medium of claim 30 , wherein a parity value in the Row P Parity Group is a P parity value.
34 . The non-transitory computer readable medium of claim 30 , wherein a parity value in the Row Q Parity Group is a Q parity value.
35 . The non-transitory computer readable medium of claim 30 , wherein the persistent storage comprises solid state memory.
36 . The non-transitory computer readable medium of claim 35 , wherein the solid state memory comprises NAND flash.
37 . The non-transitory computer readable medium of claim 30 , parity values associated with the Intersection Parity Group are not calculated using any of the data.
38 . The non-transitory computer readable medium of claim 30 , wherein the grid comprises a plurality of rows, wherein a location of a parity value from the Row P Parity Group in a first row of the plurality of rows is in a different relative location as compared to a location of a parity value from the Row P Parity Group in a second row of the plurality of rows.
39 . A system, comprising:
a controller; a non-transitory computer medium operatively connected to the controller; persistent storage operatively connected to the controller and comprising a plurality of storage modules; wherein the non-transitory computer readable medium comprises instructions which when executed by the controller performs a method, the method comprising: receiving data to write to persistent storage; calculating parity values for a grid using the data, wherein the grid comprises a Row Q Parity Group, a Row P Parity Group, a Column Q Parity Group, a Column P Parity Group, and an Intersection Parity Group, wherein each of the parity values is associated with one selected from a group consisting of the Row Q Parity Group, the Row P Parity Group, the Column Q Parity Group, the Column P Parity Group, and the Intersection Parity Group, and wherein the parity values associated with the Intersection Parity Group are calculated using the parity values from at least one selected from a group consisting of the Row Q Parity Group, the Row P Parity Group, the Column Q Parity Group, and the Column P Parity Group; writing the data to a data grid in the persistent storage, wherein the data grid is part of the grid; and writing the parity values for the grid to a portion of the grid, wherein the portion of the grid comprises physical locations associated with the Row Q Parity Group, the Row P Parity Group, the Column Q Parity Group, the Column P Parity Group, and the Intersection Parity Group, wherein the portion of the grid is distinct from the data grid.
40 . The system of claim 39 , further comprising:
a field programmable gate array (FPGA) operatively connected to the controller, wherein calculating at least one of the parity values using the data comprises using the FPGA to calculate at least one of the parity values.
41 . The system of claim 39 , wherein the controller stores a grid geometry for the grid.
42 . The system of claim 41 , wherein the grid geometry comprises a size of the grid and specifies independent fault domains associated with each dimension of the grid.
43 . The system of claim 41 , wherein the controller tracks locations of parity values in the grid.
44 . The system of claim 39 , wherein the plurality of storage modules each comprises a plurality of NAND dies.
45 . The system of claim 43 , wherein the controller is configured to reconstruct a corrupted datum in the persistent storage using the parity values in at least one selected from a group consisting of the Row Q Parity Group, the Row P Parity Group, the Column Q Parity Group, the Column P Parity Group, and the Intersection Parity Group.
46 . The system of claim 39 , wherein at least one physical location in the portion of the grid is associated with a first independent fault domain and a second independent fault domain.
47 . The system of claim 39 , wherein each of the plurality of storage modules comprises solid state memory, and wherein the first independent fault domain is the plurality of storage modules and the second independent fault domain is a plurality of channels in each of the plurality of storage modules.
48 . The system of claim 39 , wherein a parity value in the Row P Parity Group is a P parity value.
49 . The system of claim 39 , wherein a parity value in the Row Q Parity Group is a Q parity value.Cited by (0)
No later patents cite this yet.
References (0)
No backward citations on record.