IP Library Granted Patent US 11,314,416
Granted Patent B1
US 11,314,416 · App. 17/078,837 · Granted Apr 26, 2022

Defragmentation of striped volume in data storage system

Inventors: Vladimir Shveidel (Pardes-Hana, IL); Lior Kamran (Rishon LeZion, IL)
Assignee: EMC IP Holding Company LLC
G06F3/0611G06F3/0613G06F3/0632G06F3/0653G06F3/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,314,416
App. No.
17/078,837
Granted
Apr 26, 2022
Kind
B1
Abstract

A storage control system generates a striped storage volume in an array of data storage devices. The striped storage volume includes multiple stripe sets, each associated with a different stripe type, and each having stripes that are assigned the stripe type associated with the stripe set. The stripe type represents a block size of the stripes included in the stripe set. A background stripe defragmentation process is performed to defragment stripes in a target stripe set and generate empty stripes. The empty stripes generated by the background stripe defragmentation process are added into an empty stripe set of the striped storage volume. The empty stripes in the empty stripe set have unassigned stripe types. A stripe type is assigned to an empty stripe in the empty stripe which is selected for removal and inclusion in the stripe set associated with the stripe type assigned to the empty stripe.

Claims (43)

1. A method, comprising:

generating, by a storage control system, a striped storage volume in an array of data storage devices of a data storage system, wherein the striped storage volume comprises a plurality of stripe sets, wherein each stripe set is assigned a different stripe type, wherein each stripe set includes stripes that are assigned the same stripe type that is assigned to the stripe set, wherein the stripe type assigned to a given stripe set specifies a same block size of data blocks within the stripes that are included in the given stripe set, and wherein the stripes with different stripe types have respective different block sizes;

performing, by the storage control system, a background stripe defragmentation process to defragment one or more stripes in a target stripe set and generate empty stripes;

adding, by the storage control system, the empty stripes generated by the background stripe defragmentation process into an empty stripe set of the striped storage volume, wherein the empty stripes in the empty stripe set have unassigned stripe types; and

assigning, by the storage control system, a stripe type to an empty stripe in the empty stripe which is selected for removal from the empty stripe set and inclusion in the stripe set associated with the stripe type assigned to the empty stripe.

2. The method of claim 1 , wherein performing the background stripe defragmentation process comprises throttling, by the storage control system, an amount of a stripe defragmentation workload performed by the background stripe defragmentation process based at least in part on an input/output (I/O) load of the data storage system.

3. The method of claim 2 , wherein throttling the amount of the stripe defragmentation workload performed by the background stripe defragmentation process comprises:

periodically determining, by the storage control system, a current I/O load of the data storage system in each of a plurality of monitoring intervals; and

providing, by the storage control system, the current I/O load of the data storage system determined in each of the monitoring intervals as feedback to the background stripe defragmentation process to periodically adjust the amount of the stripe defragmentation workload performed by the background stripe defragmentation process.

4. The method of claim 2 , further comprising determining, by the storage control system, the I/O load of the data storage system as a function of an I/O latency of I/O requests that are received and processed by the data storage system.

5. The method of claim 1 , further comprising suspending, by the storage control system, the background stripe defragmentation process in response to determining that an input/output (I/O) load of the data storage system exceeds a predefined maximum threshold value.

6. The method of claim 1 , wherein the stripes of the plurality of stripes sets have a same stripe size.

7. The method of claim 1 , wherein the plurality of stripes sets comprises at least one or more of (i) a first stripe set which comprises one or more stripes that are assigned a first stripe type in which the stripes are formed of blocks with a block size of 16 KB, (ii) a second stripe set which comprises one or more stripes that are assigned a second stripe type in which the stripes are formed of blocks with a block size of 8 KB, and (iii) a third stripe set which comprises one or more stripes that are assigned a third stripe type in which the stripes are formed of blocks with a block size of 4 KB.

8. The method of claim 1 , wherein the striped storage volume comprises a RAID storage volume.

9. An article of manufacture comprising a non-transitory processor-readable storage medium having stored therein program code of one or more software programs, wherein the program code is executable by one or more processors to implement a method which comprises:

generating, by a storage control system, a striped storage volume in an array of data storage devices of a data storage system, wherein the striped storage volume comprises a plurality of stripe sets, wherein each stripe set is assigned a different stripe type, wherein each stripe set includes stripes that are assigned the same stripe type that is assigned to the stripe set, wherein the stripe type assigned to a given stripe set specifies a same block size of data blocks within the stripes that are included in the given stripe set, and wherein the stripes with different stripe types have respective different block sizes;

performing, by the storage control system, a background stripe defragmentation process to defragment one or more stripes in a target stripe set and generate empty stripes;

adding, by the storage control system, the empty stripes generated by the background stripe defragmentation process into an empty stripe set of the striped storage volume, wherein the empty stripes in the empty stripe set have unassigned stripe types; and

assigning, by the storage control system, a stripe type to an empty stripe in the empty stripe which is selected for removal from the empty stripe set and inclusion in the stripe set associated with the stripe type assigned to the empty stripe.

10. The article of manufacture of claim 9 , wherein the program code for performing the background stripe defragmentation process comprises program code that is executable by the one or more processors to implement a method which comprises throttling, by the storage control system, an amount of a stripe defragmentation workload performed by the background stripe defragmentation process based at least in part on an input/output (I/O) load of the data storage system.

11. The article of manufacture of claim 10 , wherein the program code for throttling the amount of the stripe defragmentation workload performed by the background stripe defragmentation process comprises program code that is executable by the one or more processors to implement a method which comprises:

periodically determining, by the storage control system, a current I/O load of the data storage system in each of a plurality of monitoring intervals; and

providing, by the storage control system, the current I/O load of the data storage system determined in each of the monitoring intervals as feedback to the background stripe defragmentation process to periodically adjust the amount of the stripe defragmentation workload performed by the background stripe defragmentation process.

12. The article of manufacture of claim 11 , further comprising program code that is executable by the one or more processors to implement a method which comprises determining, by the storage control system, the I/O load of the data storage system as a function of an I/O latency of I/O requests that are received and processed by the data storage system.

13. The article of manufacture of claim 9 , further comprising program code that is executable by the one or more processors to implement a method which comprises suspending, by the storage control system, the background stripe defragmentation process in response to determining that an input/output (I/O) load of the data storage system exceeds a predefined maximum threshold value.

14. The article of manufacture of claim 9 , wherein the stripes of the plurality of stripes sets have a same stripe size.

15. The article of manufacture of claim 9 , wherein the plurality of stripes sets comprises at least one or more of (i) a first stripe set which comprises one or more stripes that are assigned a first stripe type in which the stripes are formed of blocks with a block size of 16 KB, (ii) a second stripe set which comprises one or more stripes that are assigned a second stripe type in which the stripes are formed of blocks with a block size of 8 KB, and (iii) a third stripe set which comprises one or more stripes that are assigned a third stripe type in which the stripes are formed of blocks with a block size of 4 KB.

16. The article of manufacture of claim 9 , wherein the striped storage volume comprises a RAID storage volume.

17. A data storage system, comprising:

an array of data storage devices;

at least one processor; and

a system memory configured to store program code, wherein the program code is executable by the at least one processor to implement a storage control system which is configured to:

generate a striped storage volume in the array of data storage devices, wherein the striped storage volume comprises a plurality of stripe sets, wherein each stripe set is assigned a different stripe type, wherein each stripe set includes stripes that are assigned the same stripe type that is assigned to the stripe set, wherein the stripe type assigned to a given stripe set specifies a same block size of data blocks within the stripes that are included in the given stripe set, and wherein the stripes with different stripe types have respective different block sizes;

perform a background stripe defragmentation process to defragment one or more stripes in a target stripe set and generate empty stripes;

add the empty stripes generated by the background stripe defragmentation process into an empty stripe set of the striped storage volume, wherein the empty stripes in the empty stripe set have unassigned stripe types; and

assign a stripe type to an empty stripe in the empty stripe which is selected for removal from the empty stripe set and inclusion in the stripe set associated with the stripe type assigned to the empty stripe.

18. The data storage system of claim 17 , wherein:

in performing the background stripe defragmentation process, the storage control system is configured to throttle an amount of a stripe defragmentation workload performed by the background stripe defragmentation process based at least in part on an input/output (I/O) load of the data storage system; and

in throttling the amount of the stripe defragmentation workload performed by the background stripe defragmentation process, the storage control system is configured to:

periodically determine a current I/O load of the data storage system in each of a plurality of monitoring intervals; and

provide the current I/O load of the data storage system determined in each of the monitoring intervals as feedback to the background stripe defragmentation process to periodically adjust the amount of the stripe defragmentation workload performed by the background stripe defragmentation process.

19. The data storage system of claim 18 , wherein the storage control system is configured to determine the I/O load of the data storage system as a function of an I/O latency of I/O requests that are received and processed by the data storage system.

20. The data storage system of claim 17 , wherein the storage control system is configured to suspend the background stripe defragmentation process in response to determining that an input/output (I/O) load of the data storage system exceeds a predefined maximum threshold value.

Assignments (9)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (054475/0523) 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 060332/0664 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (054475/0434) 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 060332/0740 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (054475/0609) 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/0570 →
RELEASE OF SECURITY INTEREST AT REEL 054591 FRAME 0471 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 058001/0463 →
SECURITY INTEREST Recorded Nov 18, 2020
From: EMC IP HOLDING COMPANY LLC; DELL PRODUCTS L.P.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 054475/0609 →
SECURITY INTEREST Recorded Nov 18, 2020
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 054475/0434 →
SECURITY INTEREST Recorded Nov 18, 2020
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 054475/0523 →
SECURITY AGREEMENT Recorded Nov 13, 2020
From: EMC IP HOLDING COMPANY LLC; DELL PRODUCTS L.P.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 054591/0471 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 23, 2020
From: SHVEIDEL, VLADIMIR; KAMRAN, LIOR
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 054152/0066 →
Cited By (5)
US 12,253,945 US 12,271,611 US 12,436,843 US 12,619,372 US 12,650,788