Method and system for multi-dimensional raid reconstruction and defect avoidance
AssigneeDSSD, Inc.
InventorJeffrey S. Bonwick
Life of this patent
Estimating the term…
Abstract
In general, embodiments of the invention relate to storing data by receiving a request to write data, in response the request, selecting a first RAID grid location in a RAID grid to write the data, determining a first physical address in persistent storage corresponding to the first RAID grid location, generating a first page comprising the data and first out-of-band (OOB), wherein the first OOB comprises a first grid geometry for the RAID grid, and a first stripe membership for the page within the RAID grid, and writing the first page to a first physical location in persistent storage corresponding to the first physical address.
Claims20
A method for storing data comprising:
- receiving a request to write data;
- in response the request, selecting a first RAID grid location in a RAID grid to write the data;
- determining a first physical address in persistent storage corresponding to the first RAID grid location;
- generating a first page comprising the data and first out-of-band (OOB), wherein the first OOB comprises a first grid geometry for the RAID grid, and a first stripe membership for the page within the RAID grid;
- and
- writing the first page to a first physical location in persistent storage corresponding to the first physical address.
A method for reconstructing data, comprising:
- receiving a request for first data;
- obtaining the first page comprising the data, wherein the first page is obtained from a first physical location in persistent storage and wherein the first physical location is associated with a first physical address and a first RAID grid location in a RAID grid;
- making a determination that the first page is one selected from a group consisting of corrupted and not obtained;
- based on the determination:
- identifying a neighbor RAID grid location of the first RAID grid location in the RAID grid, wherein the RAID grid comprises a row, wherein the first RAID grid location and the neighbor grid location are in the row;
- obtaining a second page from the neighbor RAID grid location;
- obtaining out-of-band (OOB) data from the second page, wherein the OOB comprises a gridmap for the RAID grid, grid geometry for the RAID grid, and stripe membership for the second page within the RAID grid;
- identifying RAID grid locations within the row comprising data pages using the grid geometry and the stripe membership;
- obtaining the data pages within the row using the gridmap and the grid geometry;
- identifying a RAID grid location in the row comprising a parity value using the grid geometry and the stripe membership;
- obtaining the parity value within the row using the gridmap and the grid geometry;
- reconstructing the first page using the data pages and the parity value to obtain a reconstructed page;
- obtaining the data from the constructed page;
- and
- providing the reconstructed data to the client.
Dependencies are inferred from the claim text.