IP Library Granted Patent US 11,656,776
Granted Patent B2
US 11,656,776 · App. 17/318,359 · Granted May 23, 2023

Method, device, and program product for creating extent array in storage system

Inventors: Jianbin Kang (Beijing, CN); Hongpo Gao (Beijing, CN); Chun Ma (Beijing, CN); Jibing Dong (Beijing, CN)
Assignee: EMC IP Holding Company LLC
G06F3/0638G06F3/0604G06F3/0689
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,656,776
App. No.
17/318,359
Granted
May 23, 2023
Kind
B2
Abstract

In creating an extent array in a storage system, in response to receiving a request to generate an extent array using idle extents in storage devices, a width of an extent stripe is determined, and a size of the extent array is designated by the storage system. A first extent group and a second extent group are respectively selected from the storage devices based on the width to form a first extent stripe and a second extent stripe, and a first extent at a given position in the first extent group and a second extent at a given position in the second extent group are respectively located in different storage devices. Based on the first extent stripe and the second extent stripe, an address mapping representing the extent array is generated. The address mapping includes association between extent identifiers of extents and extent indexes of the extents.

Claims (100)

1. A method of generating an extent array in a storage system that comprises a plurality of storage devices, the method comprising:

determining, in response to receiving a request to generate an extent array using idle extents in the plurality of storage devices, a width of an extent stripe in the extent array, wherein a size of the extent array is designated by the storage system;

respectively selecting a first group of extents and a second group of extents from the plurality of storage devices based on the width to form a first extent stripe and a second extent stripe,

wherein respectively selecting the first group of extents and the second group of extents includes assigning extent identifiers to extents in the plurality of storage devices, each extent identifier indicating (i) a corresponding extent stripe and (ii) a position in the corresponding extent stripe, the position being a relative placement in an ordered list of extents forming the corresponding extent stripe,

wherein a first extent at a given position in the first extent stripe and a second extent at a given position in the second extent stripe are respectively located in different storage devices among the plurality of storage devices, the given position in the first extent stripe being equal to the given position in the second extent stripe;

wherein the method further comprises:

generating an address mapping representing the extent array based on the first extent stripe and the second extent stripe, wherein the address mapping comprises an association relationship between the extent identifiers and extent indexes of the extents in the extent array;

wherein assigning the extent identifiers includes assigning, to the extents, (i) extent stripe numbers indicating corresponding extent stripes and (ii) position numbers indicating positions in the corresponding extent stripes; and

wherein generating the address mapping includes calculating respective values of the extent indexes using the extent stripe numbers and the position numbers.

2. The method according to claim 1 , wherein selecting the first group of extents and the second group of extents comprises:

selecting the first group of extents from a first set of storage devices in the plurality of storage devices based on the width;

determining a number of a second set of storage devices other than the first set of storage devices in the plurality of storage devices; and

selecting the second group of extents from the second set of storage devices in response to a determination that the number of the second set of storage devices is not less than the width.

3. The method according to claim 1 , wherein selecting the first group of extents and the second group of extents includes:

selecting the first group of extents from a first set of storage devices in the plurality of storage devices based on the width;

determining a number of a second set of storage devices other than the first set of storage devices in the plurality of storage devices; and

in response to a determination that the number of the second set of storage devices is less than the width:

selecting a part of the second group of extents from the second set of storage devices based on the number of the second set of storage devices; and

selecting a remaining part of the second group of extents from the first set of storage devices based on a difference between the width and the number of the second part of storage devices.

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

sorting the plurality of storage devices; and

determining, based on the width, the first set of storage devices and the second set of storage devices in the plurality of storage devices that are sorted.

5. The method according to claim 1 , wherein generating the address mapping comprises:

creating the address mapping of the extent array based on extent identifiers of the extents in the first group of extents and the second group of extents.

6. The method according to claim 5 , wherein the extent identifiers comprise identifiers of stripes where the extents are located and positions of the extents in the stripes, and creating the address mapping comprises:

determining the extent indexes of the extents in the extent array based on the identifiers of the stripes, the positions, and the width.

7. The method according to claim 1 , wherein the plurality of storage devices are divided into a first domain and a second domain, and wherein respectively selecting the first group of extents and the second group of extents comprises:

selecting the first group of extents from a plurality of storage devices located in the first domain; and

selecting the second group of extents from a plurality of storage devices located in the second domain.

8. The method according to claim 1 , further comprising: in response to a determination that an offline storage device appears in the plurality of storage devices,

determining, based on the address mapping, an index of at least one offline extent located in the offline storage device in the extent array;

determining, based on the index, an address range of a group of extents involved in reconstruction in the extent array; and

reconstructing data in the extent array based on the address range.

9. The method according to claim 1 , further comprising: in response to a determination that an abnormal storage device appears in the plurality of storage devices, wherein the abnormal storage device is accessible and there is an access abnormality,

determining, based on the address mapping, an index of at least one abnormal extent located in the abnormal storage device in the extent array;

determining, based on the index, an address range of a group of extents involved in migration in the extent array; and

migrating data in the extent array based on the address range.

10. The method according to claim 1 , further comprising:

determining the number of stripes that should be comprised in the extent array according to the size of the extent array and the width;

in response to the number of current stripes in the extent array being less than the number of the stripes, selecting a third group of extents from the plurality of storage devices based on the width to form a third group of stripes; and

adding the third group of stripes to the extent array.

11. An electronic device, comprising:

at least one processor; and

a memory coupled to the at least one processor, wherein the memory has instructions stored therein which, when executed by the at least one processor, cause the device to perform a method of generating an extent array in a storage system that comprises a plurality of storage devices, and the method comprises:

determining, in response to receiving a request to generate an extent array using idle extents in the plurality of storage devices, a width of an extent stripe in the extent array, wherein a size of the extent array is designated by the storage system;

respectively selecting a first group of extents and a second group of extents from the plurality of storage devices based on the width to form a first extent stripe and a second extent stripe,

respectively selecting a first group of extents and a second group of extents from the plurality of storage devices based on the width to form a first extent stripe and a second extent stripe,

wherein respectively selecting the first group of extents and the second group of extents includes assigning extent identifiers to extents in the plurality of storage devices, each extent identifier indicating (i) a corresponding extent stripe and (ii) a position in the corresponding extent stripe, the position being a relative placement in an ordered list of extents forming the corresponding extent stripe,

wherein a first extent at a given position in the first extent stripe and a second extent at a given position in the second extent stripe are respectively located in different storage devices among the plurality of storage devices, the given position in the first extent stripe being equal to the given position in the second extent stripe;

wherein the method further comprises:

generating an address mapping representing the extent array based on the first extent stripe and the second extent stripe, wherein the address mapping comprises an association relationship between the extent identifiers and extent indexes of the extents in the extent array;

wherein assigning the extent identifiers includes assigning, to the extents, (i) extent stripe numbers indicating corresponding extent stripes and (ii) position numbers indicating positions in the corresponding extent stripes; and

wherein generating the address mapping includes calculating respective values of the extent indexes using the extent stripe numbers and the position numbers.

12. The device according to claim 11 , wherein selecting the first group of extents and the second group of extents comprises:

selecting the first group of extents from a first set of storage devices in the plurality of storage devices based on the width;

determining a number of a second set of storage devices other than the first set of storage devices in the plurality of storage devices; and

selecting the second group of extents from the second set of storage devices in response to a determination that the number of the second set of storage devices is not less than the width.

13. The device according to claim 11 , wherein selecting the first group of extents and the second group of extents includes:

selecting the first group of extents from a first set of storage devices in the plurality of storage devices based on the width;

determining a number of a second set of storage devices other than the first set of storage devices in the plurality of storage devices; and

in response to a determination that the number of the second part of storage devices is less than the width:

selecting a part of the second group of extents from the second set of storage devices based on the number of the second set of storage devices; and

selecting a remaining part of the second group of extents from the first set of storage devices based on a difference between the width and the number of the second set of storage devices.

14. The device according to claim 12 , wherein the method further comprises:

sorting the plurality of storage devices; and

determining, based on the width, the first set of storage devices and the second set of storage devices in the plurality of storage devices that are sorted.

15. The device according to claim 11 , wherein generating the address mapping comprises:

creating the address mapping of the extent array based on extent identifiers of the extents in the first group of extents and the second group of extents.

16. The device according to claim 15 , wherein the extent identifiers comprise identifiers of stripes where the extents are located and positions of the extents in the stripes, and creating the address mapping comprises:

determining the extent indexes of the extents in the extent array based on the identifiers of the stripes, the positions, and the width.

17. The device according to claim 11 , wherein the plurality of storage devices are divided into a first domain and a second domain, and wherein respectively selecting the first group of extents and the second group of extents comprises:

selecting the first group of extents from a plurality of storage devices located in the first domain; and

selecting the second group of extents from a plurality of storage devices located in the second domain.

18. The device according to claim 11 , wherein the method further comprises: in response to a determination that an offline storage device appears in the plurality of storage devices,

determining, based on the address mapping, an index of at least one offline extent located in the offline storage device in the extent array;

determining, based on the index, an address range of a group of extents involved in reconstruction in the extent array; and

reconstructing data in the extent array based on the address range.

19. The device according to claim 11 , wherein the method further comprises: in response to a determination that an abnormal storage device appears in the plurality of storage devices, wherein the abnormal storage device is accessible and there is an access abnormality,

determining, based on the address mapping, an index of at least one abnormal extent located in the abnormal storage device in the extent array;

determining, based on the index, an address range of a group of extents involved in migration in the extent array; and

migrating data in the extent array based on the address range.

20. The device according to claim 11 , wherein the method further comprises:

determining the number of stripes that should be comprised in the extent array according to the size of the extent array and the width;

in response to the number of current stripes in the extent array being less than the number of the stripes, selecting a third group of extents from the plurality of storage devices based on the width to form a third group of stripes; and

adding the third group of stripes to the extent array.

21. A computer program product having a non-transitory computer readable medium which stores a set of instructions to generate an extent array in a storage system that comprises a plurality of storage devices; the set of instructions, when carried out by computerized circuitry, causing the computerized circuitry to perform a method of:

determining, in response to receiving a request to generate an extent array using idle extents in the plurality of storage devices, a width of an extent stripe in the extent array, wherein a size of the extent array is designated by the storage system;

respectively selecting a first group of extents and a second group of extents from the plurality of storage devices based on the width to form a first extent stripe and a second extent stripe,

respectively selecting a first group of extents and a second group of extents from the plurality of storage devices based on the width to form a first extent stripe and a second extent stripe,

wherein respectively selecting the first group of extents and the second group of extents includes assigning extent identifiers to extents in the plurality of storage devices, each extent identifier indicating (i) a corresponding extent stripe and (ii) a position in the corresponding extent stripe, the position being a relative placement in an ordered list of extents forming the corresponding extent stripe,

wherein a first extent at a given position in the first extent stripe and a second extent at a given position in the second extent stripe are respectively located in different storage devices among the plurality of storage devices, the given position in the first extent stripe being equal to the given position in the second extent stripe;

wherein the method further comprises:

generating an address mapping representing the extent array based on the first extent stripe and the second extent stripe, wherein the address mapping comprises an association relationship between the extent identifiers and extent indexes of the extents in the extent array;

wherein assigning the extent identifiers includes assigning, to the extents, (i) extent stripe numbers indicating corresponding extent stripes and (ii) position numbers indicating positions in the corresponding extent stripes; and

wherein generating the address mapping includes calculating respective values of the extent indexes using the extent stripe numbers and the position numbers.

22. The method according to claim 1 , further comprising:

locating, from the extent indexes, an extent index of an offline extent;

identifying, from an extent identifier mapped to the located extent index, an extent stripe formed using the offline extent;

locating a set of online extents with extent identifiers indicating the identified extent stripe; and

reconstructing data of the offline extent using data of the set of online extents.

Assignments (8)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (058014/0560) Recorded Jun 10, 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
Reel/Frame 062022/0473 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (057931/0392) Recorded Jun 10, 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
Reel/Frame 062022/0382 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (057758/0286) Recorded Jun 10, 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
Reel/Frame 061654/0064 →
SECURITY INTEREST Recorded Oct 6, 2021
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 058014/0560 →
SECURITY INTEREST Recorded Oct 6, 2021
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 057758/0286 →
SECURITY INTEREST Recorded Oct 6, 2021
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 057931/0392 →
SECURITY AGREEMENT Recorded Oct 1, 2021
From: DELL PRODUCTS, L.P.; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 057682/0830 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 26, 2021
From: KANG, JIANBIN; GAO, HONGPO; MA, CHUN; DONG, JIBING
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 056353/0461 →
Priority Claims (1)
CN 202011354956.3 · Nov 27, 2020 · national
Continuity (1)
Related Publication 20220171552A1 · Jun 2, 2022