IP Library Granted Patent US 11,507,482
Granted Patent B2
US 11,507,482 · App. 17/153,108 · Granted Nov 22, 2022

Recovering consistency of a raid (redundant array of independent disks) metadata database

Inventors: Charles Ma (Beijing, CN); Shaoqin Gong (Beijing, CN); Geng Han (Beijing, CN); Vamsi K. Vankamamidi (Hopkinton, MA); Shuyu Lee (Acton, MA); Ping Ge (Beijing, CN); Jian Gao (Beijing, CN)
Assignee: EMC IP Holding Company LLC
G06F11/2094G06F12/06G06F16/2365G06F2201/82G06F2212/657
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 11,507,482
App. No.
17/153,108
Granted
Nov 22, 2022
Kind
B2
Abstract

Technology is disclosed for recovering the consistency of a RAID (Redundant Array of Independent Disks) metadata database when data corruption is detected in the RAID metadata database. The RAID metadata database includes super sectors, stage sectors, and a data region. Valid data within the data region is a contiguous set of sectors extending from a head sector to a tail sector. In response to data corruption in one of the two super sectors, a set of pointers contained in the other super sector is used to identify the head sector and tail sector. In response to data corruption in both super sectors, the head sector and tail sector are located based on the contents of the sectors in the data region. Techniques are also disclosed for recovering consistency when the data corruption occurs in the stage sectors and/or data region.

Claims (46)

1. A method comprising:

detecting data corruption in a RAID (Redundant Array of Independent Disks) metadata database, wherein the RAID metadata database includes a data region and two super sectors, wherein the super sectors include a primary super sector containing a first set of pointers indicating valid data within the data region and a secondary super sector containing a second set of pointers indicating valid data within the data region; and

in response to the data corruption being in one of the two super sectors, using the set of pointers contained in the other super sector to identify a portion of the data region that stores valid data.

2. The method of claim 1 , further comprising:

in response to the data corruption being detected only in the secondary super sector, using the first set of pointers in the primary super sector to identify the portion of the data region that stores valid data.

3. The method of claim 2 , wherein the portion of the data region that stores valid data comprises a contiguous set of sectors within the data region extending from a head sector to a tail sector, and wherein the first set of pointers in the primary super sector comprises a logical block address of the head sector and a logical block address of the tail sector.

4. The method of claim 1 , further comprising:

in response to the data corruption being detected only in the primary super sector, using the second set of pointers in the secondary super sector to identify the portion of the data region that stores valid data.

5. The method of claim 4 , wherein the portion of the data region that stores valid data comprises a contiguous set of sectors within the data region extending from a head sector to a tail sector, and wherein the second set of pointers in the secondary super sector comprises a logical block address of the head sector and a logical block address of the tail sector.

6. The method of claim 1 , wherein the first set of pointers in the primary super sector comprises a most recent set of pointers indicating a most recent set of valid data within the data region; and

wherein the second set of pointers in the secondary super sector comprises a previous set of pointers indicating a previous set of valid data within the data region.

7. The method of claim 1 , wherein the portion of the data region storing valid data comprises a contiguous set of sectors within the data region extending from a head sector to a tail sector;

further comprising, in response to detecting data corruption in both super sectors:

locating the head sector by searching the data region for a sector containing a magic number, wherein the sector containing the magic number is the head sector, and

locating the tail sector by traversing sectors of the data region located after the head sector until reaching a sector having a generation number smaller than a generation number contained in the head sector, wherein the sector containing the generation number smaller than the generation number contained in the head sector is the tail sector.

8. The method of claim 7 , further comprising, in response to detecting data corruption in at least one sector within the portion of the data region storing valid data:

loading, into memory, the sectors of valid data contained within the portion of the data region extending from the head sector to the tail sector; and

marking, in memory, each sector of the valid data in which data corruption was detected as invalid.

9. The method of claim 8 , wherein the RAID metadata database further includes two stage sectors, wherein the stage sectors include a primary stage sector containing data not yet stored in the portion of the data region that stores valid data and a secondary stage sector containing data previously stored in the portion of the data region that stores valid data, and further comprising:

in response to the data corruption being in one of the two stage sectors, loading data into memory only from the other stage sector.

10. A data storage system comprising:

at least one storage processor including processing circuitry and a memory;

a plurality of non-volatile data storage drives communicably coupled to the storage processor; and

wherein the memory has program code stored thereon, wherein the program code, when executed by the processing circuitry, causes the processing circuitry to:

detect data corruption in a RAID (Redundant Array of Independent Disks) metadata database, wherein the RAID metadata database includes a data region and two super sectors, wherein the super sectors include a primary super sector containing a first set of pointers indicating valid data within the data region and a secondary super sector containing a second set of pointers indicating valid data within the data region, and

in response to the data corruption being in one of the two super sectors, use the set of pointers contained in the other super sector to identify a portion of the data region that stores valid data.

11. The data storage system of claim 10 , wherein the program code, when executed by the processing circuitry, further causes the processing circuitry to:

in response to the data corruption being detected only in the secondary super sector, use the first set of pointers in the primary super sector to identify the portion of the data region that stores valid data.

12. The data storage system of claim 11 , wherein the portion of the data region that stores valid data comprises a contiguous set of sectors within the data region extending from a head sector to a tail sector, and wherein the first set of pointers in the primary super sector comprises a logical block address of the head sector and a logical block address of the tail sector.

13. The data storage system of claim 10 , wherein the program code, when executed by the processing circuitry, further causes the processing circuitry to:

in response to the data corruption being detected only in the primary super sector, use the second set of pointers in the secondary super sector to identify the portion of the data region that stores valid data.

14. The data storage system of claim 13 , wherein the portion of the data region that stores valid data comprises a contiguous set of sectors within the data region extending from a head sector to a tail sector, and wherein the second set of pointers in the secondary super sector comprises a logical block address of the head sector and a logical block address of the tail sector.

15. The data storage system of claim 10 , wherein the first set of pointers in the primary super sector comprises a most recent set of pointers indicating a most recent set of valid data within the data region; and

wherein the second set of pointers in the secondary super sector comprises a previous set of pointers indicating a previous set of valid data within the data region.

16. The data storage system of claim 10 , wherein the portion of the data region storing valid data comprises a contiguous set of sectors within the data region extending from a head sector to a tail sector, and wherein the program code, when executed by the processing circuitry, further causes the processing circuitry to:

in response to detecting data corruption in both super sectors:

locate the head sector by searching the data region for a sector containing a magic number, wherein the sector containing the magic number is the head sector, and

locate the tail sector by traversing sectors of the data region located after the head sector until reaching a sector having a generation number smaller than a generation number contained in the head sector, wherein the sector containing the generation number smaller than the generation number contained in the head sector is the tail sector.

17. The data storage system of claim 16 , wherein the program code, when executed by the processing circuitry, further causes the processing circuitry to, in response to detection of data corruption in at least one sector within the portion of the data region storing valid data:

load, into memory, the sectors of valid data contained within the portion of the data region extending from the head sector to the tail sector; and

mark, in memory, each sector of the valid data in which data corruption was detected as invalid.

18. The data storage system of claim 17 , wherein the RAID metadata database further includes two stage sectors, wherein the stage sectors include a primary stage sector containing data not yet stored in the portion of the data region that stores valid data and a secondary stage sector containing data previously stored in the portion of the data region that stores valid data, and wherein the program code, when executed by the processing circuitry, further causes the processing circuitry to:

in response to the data corruption being in one of the two stage sectors, load data into memory only from the other stage sector.

19. A computer program product including a non-transitory computer readable medium having instructions stored thereon, wherein the instructions, when executed on processing circuitry, cause the processing circuitry to perform steps including:

detecting data corruption in a RAID (Redundant Array of Independent Disks) metadata database, wherein the RAID metadata database includes a data region and two super sectors, wherein the super sectors include a primary super sector containing a first set of pointers indicating valid data within the data region and a secondary super sector containing a second set of pointers indicating valid data within the data region; and

in response to the data corruption being in one of the two super sectors, using the set of pointers contained in the other super sector to identify a portion of the data region that stores valid data.

Assignments (9)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (055479/0342) Recorded Jun 10, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: EMC IP HOLDING COMPANY LLC; DELL PRODUCTS L.P.
Reel/Frame 062021/0460 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (055479/0051) Recorded Jun 10, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: EMC IP HOLDING COMPANY LLC; DELL PRODUCTS L.P.
Reel/Frame 062021/0663 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (056136/0752) Recorded Jun 10, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: EMC IP HOLDING COMPANY LLC; DELL PRODUCTS L.P.
Reel/Frame 062021/0771 →
RELEASE OF SECURITY INTEREST AT REEL 055408 FRAME 0697 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 058001/0553 →
SECURITY INTEREST Recorded Mar 3, 2021
From: EMC IP HOLDING COMPANY LLC; DELL PRODUCTS L.P.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 056136/0752 →
SECURITY INTEREST Recorded Mar 3, 2021
From: EMC IP HOLDING COMPANY LLC; DELL PRODUCTS L.P.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 055479/0051 →
SECURITY INTEREST Recorded Mar 3, 2021
From: EMC IP HOLDING COMPANY LLC; DELL PRODUCTS L.P.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 055479/0342 →
SECURITY AGREEMENT Recorded Feb 25, 2021
From: EMC IP HOLDING COMPANY LLC; DELL PRODUCTS L.P.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 055408/0697 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 25, 2021
From: MA, CHARLES; GONG, SHAOQIN; HAN, GENG; VANKAMAMIDI, VAMSI K.; LEE, SHUYU; GE, PING; GAO, JIAN
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 055410/0387 →