IP Library Granted Patent US 11,144,243
Granted Patent B2
US 11,144,243 · App. 16/579,990 · Granted Oct 12, 2021

Method and device for managing redundant array of independent disks and computer program product

Inventors: Shaoqin Gong (Beijing, CN); Jibing Dong (Beijing, CN); Geng Han (Beijing, CN); Jianbin Kang (Beijing, CN); Hongpo Gao (Beijing, CN)
Assignee: EMC IP Holding Company LLC
G06F3/0659G06F3/0604G06F3/0689G06F16/2237G06F16/2272
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,144,243
App. No.
16/579,990
Granted
Oct 12, 2021
Kind
B2
Abstract

Techniques manage a redundant array of independent disks. The techniques involve: in response to receiving a first command for assigning a first RAID stripe to a RAID group, storing metadata information of the first RAID stripe in a cache, the cache having different input/output (I/O) performance from the RAID; and storing the first command and the metadata information of the first RAID stripe in a predetermined storage space of the RAID in a sequential storage structure.

Claims (73)

1. A method for managing a redundant array of independent disks (RAID), comprising:

in response to receiving a first command for assigning a first RAID stripe to a RAID group, storing metadata information of the first RAID stripe in a cache, the cache having different input/output (I/O) performance from the RAID; and

storing the first command and the metadata information of the first RAID stripe in a predetermined storage space of the RAID in a sequential storage structure.

2. The method according to claim 1 , wherein the cache comprises a first index array configured to store pointers for pointing to a plurality of data arrays and a plurality of data arrays configured to store metadata information of RAID stripes in the RAID group.

3. The method according to claim 2 , wherein storing the metadata information of the first RAID stripe in the cache comprises:

in response to a first data array for storing the metadata information of the first RAID stripe being present in the cache, storing the metadata information of the first RAID stripe in the first data array; and

in response to the first data array being absent in the cache, creating the first data array in the cache and adding in the first index array a pointer for pointing to the first data array, and writing the metadata information of the first RAID stripe into the first data array.

4. The method according to claim 3 , further comprising:

in response to the first index array being filled up, allocating a second index array in the cache, wherein a storage space of the second index array is larger than that of the first index array;

copying the pointers stored in the first index array into the second index array; and

releasing the first index array.

5. The method according to claim 2 , further comprising:

in response to a second command for reading metadata information of a second RAID stripe in the RAID group, reading the metadata information of the second RAID stripe from a respective data array of the plurality of data arrays, wherein the second command comprises an index of the second RAID stripe.

6. The method according to claim 5 , wherein reading the metadata information of the second RAID stripe from the respective data array of the plurality of data arrays comprises:

selecting a pointer pointing to a second data array from the first index array based on the index of the second RAID stripe, wherein the metadata information of the second RAID stripe is already stored in the second data array;

determining a storage location of the metadata information of the second RAID stripe in the second data array based on the index of the second RAID stripe and the pointer pointing to the second data array; and

reading the metadata information of the second RAID stripe from the second data array based on the storage location.

7. The method according to claim 2 , further comprising:

in response to a third command for releasing a third RAID stripe from the RAID group, marking a storage location in a third data array configured to store metadata information of the third RAID stripe as a released state, wherein the metadata information of the third RAID stripe is already stored in the third data array.

8. The method according to claim 1 , wherein the predetermined storage space comprises:

a data storage region configured to store metadata information of RAID stripes in the RAID group and commands associated with the metadata information of the RAID stripes; and

a first super section and a second super section, each configured to store head and tail addresses of a storage space already occupied in the data storage region, wherein one of the first super section and the second super section is marked as a currently active super section, and the other of the first super section and the second super section is marked as a to-be-updated super section.

9. The method according to claim 8 , further comprising:

updating the head and tail addresses in the to-be-updated super section after storing the first command and the metadata information of the first RAID stripe in the predetermined storage space; and

marking the to-be-updated super-section as a new currently active super section, and marking the currently active super section as a new to-be-updated super section for next update.

10. The method according to claim 8 , wherein the predetermined storage space further comprises a first intermediate section associated with the first super section and a second intermediate section associated with the second super section, and the first intermediate section and the second intermediate section are each configured to temporarily store information to be written into the data storage region.

11. The method according to claim 10 , wherein storing the first command and the metadata information of the first RAID stripe in the predetermined storage space in the sequential storage structure comprises:

temporarily storing the first command and the metadata information of the first RAID stripe in an intermediate section of the first intermediate section and the second intermediate section corresponding to the to-be-updated super section; and

in response to the first intermediate section or the second intermediate section being filled up, writing information stored in the first intermediate section or the second intermediate section into the data storage region.

12. The method according to claim 8 , further comprising:

in response to a third command for releasing a third RAID stripe from the RAID group, appending the third command into the data storage region.

13. The method according to claim 8 , wherein the data storage region comprises a first data storage region and a second data storage region, the method further comprising:

in response to the occupied storage space in one storage region of the first storage region and the second storage region reaching a predetermined threshold, storing, in another storage region of the first storage region and the second storage region, the metadata information of the RAID stripes in the RAID group and the associated commands stored in the cache; and

releasing the one storage region.

14. A device for managing a redundant array of independent disks (RAID), comprising:

at least a processing unit;

at least one memory coupled to the at least one processing unit and storing instructions to be executed by the at least one processing unit, the instructions, when executed by the at least one processing unit, causing the device to perform actions comprising:

in response to receiving a first command for assigning a first RAID stripe to a RAID group, storing metadata information of the first RAID stripe in a cache, the cache having different input/output (I/O) performance from the RAID; and

storing the first command and the metadata information of the first RAID stripe in a predetermined storage space of the RAID in a sequential storage structure.

15. The device according to claim 14 , wherein the cache comprises a first index array configured to store pointers for pointing to a plurality of data arrays and a plurality of data arrays configured to store metadata information of RAID stripes in the RAID group.

16. The device according to claim 15 , wherein storing the metadata information of the first RAID stripe in the cache comprises:

in response to a first data array for storing the metadata information of the first RAID stripe being present in the cache, storing the metadata information of the first RAID stripe in the first data array; and

in response to the first data array being absent in the cache, creating the first data array in the cache and adding in the first index array a pointer for pointing to the first data array, and writing the metadata information of the first RAID stripe into the first data array.

17. The device according to claim 16 , wherein the actions further comprise:

in response to the first index array being filled up, allocating a second index array in the cache, wherein a storage space of the second index array is larger than that of the first index array;

copying the pointers stored in the first index array into the second index array; and

releasing the first index array.

18. The device according to claim 15 , wherein the actions further comprises:

in response to a second command for reading metadata information of a second RAID stripe in the RAID group, reading the metadata information of the second RAID stripe from a respective data array of the plurality of data arrays, wherein the second command comprises an index of the second RAID stripe.

19. The device according to claim 18 , wherein reading the metadata information of the second RAID stripe from the respective data array of the plurality of data arrays comprises:

selecting a pointer pointing to a second data array from the first index array based on the index of the second RAID stripe, wherein the metadata information of the second RAID stripe is already stored in the second data array;

determining a storage location of the metadata information of the second RAID stripe in the second data array based on the index of the second RAID stripe and the pointer pointing to the second data array; and

reading the metadata information of the second RAID stripe from the second data array based on the storage location.

20. The device according to claim 15 , wherein the actions further comprise:

in response to a third command for releasing a third RAID stripe from the RAID group, marking a storage location in a third data array configured to store metadata information of the third RAID stripe as a released state, wherein the metadata information of the third RAID stripe is already stored in the third data array.

21. The device according to claim 14 , wherein the predetermined storage space comprises:

a data storage region configured to store metadata information of RAID stripes in the RAID group and commands associated with the metadata information of the RAID stripes; and

a first super section and a second super section, each configured to store head and tail addresses of a storage space already occupied in the data storage region, wherein one of the first super section and the second super section is marked as a currently active super section, and the other of the first super section and the second super section is marked as a to-be-updated super section.

22. The device according to claim 21 , wherein the actions further comprise:

updating the head and tail addresses in the to-be-updated super section after storing the first command and the metadata information of the first RAID stripe in the predetermined storage space; and

marking the to-be-updated super-section as a new currently active super section, and marking the currently active super section as a new to-be-updated super section for next update.

23. The device according to claim 21 , wherein the predetermined storage space further comprises a first intermediate section associated with the first super section and a second intermediate section associated with the second super section, and the first intermediate section and the second intermediate section are each configured to temporarily store information to be written into the data storage region.

24. The device according to claim 23 , wherein storing the first command and the metadata information of the first RAID stripe in the predetermined storage space in the sequential storage structure comprises:

temporarily storing the first command and the metadata information of the first RAID stripe in an intermediate section of the first intermediate section and the second intermediate section corresponding to the to-be-updated super section; and

in response to the first intermediate section or the second intermediate section being filled up, writing information stored in the first intermediate section or the second intermediate section into the data storage region.

25. The device according to claim 21 , wherein the actions further comprise:

in response to a third command for releasing a third RAID stripe from the RAID group, appending the third command into the data storage region.

26. The device according to claim 21 , wherein the data storage region comprises a first data storage region and a second data storage region, and the actions further comprise:

in response to the occupied storage space in one storage region of the first storage region and the second storage region reaching a predetermined threshold, storing, in another storage region of the first storage region and the second storage region, the metadata information of the RAID stripes in the RAID group and the associated commands stored in the cache; and

releasing the one storage region.

27. A computer program product having a non-transitory computer readable medium which stores a set of instructions to manage a redundant array of independent disks (RAID); the set of instructions, when carried out by computerized circuitry, causing the computerized circuitry to perform a method of:

in response to receiving a first command for assigning a first RAID stripe to a RAID group, storing metadata information of the first RAID stripe in a cache, the cache having different input/output (I/O) performance from the RAID; and

storing the first command and the metadata information of the first RAID stripe in a predetermined storage space of the RAID in a sequential storage structure.

Assignments (9)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (051302/0528) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO WYSE TECHNOLOGY L.L.C.); SECUREWORKS CORP.
Reel/Frame 060438/0593 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053311/0169) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
Reel/Frame 060438/0742 →
RELEASE OF SECURITY INTEREST AT REEL 051449 FRAME 0728 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.; SECUREWORKS CORP.; EMC CORPORATION
Reel/Frame 058002/0010 →
SECURITY INTEREST Recorded Jun 5, 2020
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 053311/0169 →
SECURITY AGREEMENT Recorded Apr 22, 2020
From: CREDANT TECHNOLOGIES INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 053546/0001 →
SECURITY AGREEMENT Recorded Dec 31, 2019
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.; SECUREWORKS CORP.; EMC CORPORATION
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 051449/0728 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Dec 16, 2019
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.; SECUREWORKS CORP.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 051302/0528 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 29, 2019
From: GONG, SHAOQIN; DONG, JIBING; HAN, GENG; KANG, JIANBIN; GAO, HONGPO
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 050848/0561 →
Priority Claims (1)
CN 201811286810.2 · Oct 31, 2018 · national
Continuity (1)
Related Publication 20200133576A1 · Apr 30, 2020