IP Library Granted Patent US 10,229,022
Granted Patent B1
US 10,229,022 · App. 15/499,546 · Granted Mar 12, 2019

Providing Raid-10 with a configurable Raid width using a mapped raid group

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 10,229,022
App. No.
15/499,546
Granted
Mar 12, 2019
Kind
B1
Abstract

A mapped RAID group is generated that contains multiple RAID extents, and each one of the RAID extents is configured and arranged to indicate multiple drive extents that are each a contiguous region of non-volatile data storage in a physical drive. The RAID extents are divided into equal size subsets based on a requested RAID width. Drive extents are allocated from a drive extent pool such that the drive extents indicated by RAID extents contained in the same subset are all allocated from different ones of the physical drives. Logical block rotation is performed between the storage object and the mapped RAID group, causing host data written to consecutive blocks of the storage object address space to be directed to different ones of the RAID extents in the mapped RAID group. Data mirroring is performed between drive extents contained within each of the individual RAID extents of the RAID group.

Claims (68)

1. A method of providing RAID (Redundant Array of Independent Disks) data protection for a storage object in a data storage system, wherein the data storage system includes a storage processor and a set of physical drives communicably coupled to the storage processor, the method comprising:

generating a mapped RAID group, wherein the mapped RAID group contains a plurality of RAID extents, wherein each RAID extent contained in the mapped RAID group is configured and arranged to indicate a plurality of drive extents that are used to store data directed to the RAID extent, and wherein each drive extent comprises a contiguous region of non-volatile data storage in the physical drives;

dividing the mapped RAID group into equal size subsets of the RAID extents in the mapped RAID group;

for each one of the subsets of the RAID extents in the mapped RAID group, allocating drive extents from a drive extent pool such that each drive extent indicated by the RAID extents in the subset is allocated from a different one of the physical drives; and

performing logical block rotation between the storage object and the mapped RAID group, wherein the logical block rotation causes data written to consecutive blocks of the storage object address space to be directed to different ones of the RAID extents in the mapped RAID group.

2. The method of claim 1 , further comprising, for each one of the RAID extents contained in the RAID group, performing data mirroring between the plurality of drive extents indicated by the RAID extent such that the data stored in each drive extent indicated by the RAID extent is an identical copy of the data stored in each other drive extent indicated by the RAID extent.

3. The method of claim 2 , wherein allocating drive extents from the drive extent pool is performed by drive extent pool logic in the storage processor;

wherein generating the mapped RAID group is performed by RAID group mapping logic in the storage processor; and

wherein the method further comprises:

receiving, by the drive extent pool logic from the RAID group mapping logic, a requested RAID width for the mapped RAID group, wherein the requested RAID width comprises a number of drive extents; and

wherein determining the equal size subsets of the RAID extents contained in the RAID group comprises the drive extent pool logic determining subsets of the RAID extents in the mapped RAID group such that each subset of the RAID extents indicates a total number of drive extents that is equal to the requested RAID width for the mapped RAID group.

4. The method of claim 3 , wherein the storage object is accessed by host I/O operations that are passed to storage object mapping logic in the storage processor, wherein the logical block rotation between the mapped RAID group and the storage object is performed by the storage object mapping logic, and wherein the method further comprises:

providing, to the storage object mapping logic from the RAID group mapping logic, a RAID extent size for the mapped RAID group, wherein the RAID extent size for the mapped RAID group comprises an amount of data that each RAID extent in the mapped RAID group is capable of storing;

providing, to the storage object mapping logic from the RAID group mapping logic, a total number of RAID extents contained in the mapped RAID group; and

wherein the logical block rotation between the storage object and the mapped RAID group is performed by the storage object mapping logic responsive to the RAID extent size for the mapped RAID group and the total number of RAID extents contained in the mapped RAID group.

5. The method of claim 4 , wherein performing logical block rotation between the storage object and the mapped RAID group comprises:

dividing the storage object address space into equal size logical blocks; and

directing data written to each one of a plurality of sets of consecutive logical blocks in the storage object address space to a corresponding one of the subsets of RAID extents in the mapped RAID group, wherein each one of the sets of consecutive logical blocks in the storage object address space has a size equal to a total number of logical blocks that can be stored by drive extents indicated by a single subset of RAID extents in the mapped RAID group.

6. The method of claim 4 , wherein performing logical block rotation between the storage object and the mapped RAID group comprises:

dividing the storage object address space into equal size logical blocks; and

directing data written to each logical block in each one of a plurality of sets of consecutive logical blocks in the storage object address space to a different RAID extent in the mapped RAID group, wherein each one of the sets of consecutive logical blocks in the storage object address space contains a total number of logical blocks that is equal to a total number of RAID extents in the mapped RAID group.

7. A data storage system that provides RAID (Redundant Array of Independent Disks) data protection for a storage object, comprising:

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

a set of physical drives communicably coupled to the storage processor; and

wherein the storage processor is configured and arranged to:

generate a mapped RAID group, wherein the mapped RAID group contains a plurality of RAID extents, wherein each RAID extent contained in the mapped RAID group is configured and arranged to indicate a plurality of drive extents that are used to store data directed to the RAID extent, and wherein each drive extent comprises a contiguous region of non-volatile data storage in the physical drives,

divide the mapped RAID group into equal size subsets of the RAID extents in the mapped RAID group,

for each one of the subsets of the RAID extents in the mapped RAID group, allocate drive extents from a drive extent pool such that each drive extent indicated by the RAID extents in the subset is allocated from a different one of the physical drives, and

perform logical block rotation between the storage object and the mapped RAID group, wherein the logical block rotation causes data written to consecutive blocks of the storage object address space to be directed to different ones of the RAID extents in the mapped RAID group.

8. The data storage system of claim 7 , wherein the storage processor is further configured and arranged to, for each one of the RAID extents contained in the RAID group, perform data mirroring between the plurality of drive extents indicated by the RAID extent such that the data stored in each drive extent indicated by the RAID extent is an identical copy of the data stored in each other drive extent indicated by the RAID extent.

9. The data storage system of claim 8 , wherein the storage processor is further configured and arranged to:

allocate drive extents from the drive extent pool using drive extent pool logic in the storage processor;

generate the mapped RAID group using RAID group mapping logic in the storage processor; and

receive, by the drive extent pool logic from the RAID group mapping logic, a requested RAID width for the mapped RAID group, wherein the requested RAID width comprises a number of drive extents; and

determine the equal size subsets of the RAID extents contained in the RAID group by the drive extent pool logic determining subsets of the RAID extents in the mapped RAID group such that each subset of the RAID extents indicates a total number of drive extents that is equal to the requested RAID width for the mapped RAID group.

10. The data storage system of claim 9 , wherein the storage object is accessed by host I/O operations that are passed to storage object mapping logic in the storage processor, wherein the logical block rotation between the mapped RAID group and the storage object is performed by the storage object mapping logic, and wherein the storage processor is further configured and arranged to:

provide, to the storage object mapping logic from the RAID group mapping logic, a RAID extent size for the mapped RAID group, wherein the RAID extent size for the mapped RAID group comprises an amount of data that each RAID extent in the mapped RAID group is capable of storing;

provide, to the storage object mapping logic from the RAID group mapping logic, a total number of RAID extents contained in the mapped RAID group; and

perform the logical block rotation between the storage object and the mapped RAID group by the storage object mapping logic responsive to the RAID extent size for the mapped RAID group and the total number of RAID extents contained in the mapped RAID group.

11. The data storage system of claim 10 , wherein to perform logical block rotation between the storage object and the mapped RAID group, the storage processor is further configured and arranged to:

divide the storage object address space into equal size logical blocks; and

direct data written to each one of a plurality of sets of consecutive logical blocks in the storage object address space to a corresponding one of the subsets of RAID extents in the mapped RAID group, wherein each one of the sets of consecutive logical blocks in the storage object address space has a size equal to a total number of logical blocks that can be stored by drive extents indicated by a single subset of RAID extents in the mapped RAID group.

12. The data storage system of claim 10 , wherein to perform logical block rotation between the storage object and the mapped RAID group, the storage processor is further configured and arranged to:

divide the storage object address space into equal size logical blocks; and

direct data written to each logical block in each one of a plurality of sets of consecutive logical blocks in the storage object address space to a different RAID extent in the mapped RAID group, wherein each one of the sets of consecutive logical blocks in the storage object address space contains a total number of logical blocks that is equal to a total number of RAID extents in the mapped RAID group.

13. A computer program product, comprising:

a non-transitory computer readable medium storing program code for providing RAID (Redundant Array of Independent Disks) data protection for a storage object in a data storage system, wherein the data storage system includes a storage processor and a set of non-volatile data storage devices communicably coupled to the storage processor, the set of instructions, when carried out by at least one processor in the storage processor, causing the storage processor to perform a method of:

generating a mapped RAID group, wherein the mapped RAID group contains a plurality of RAID extents, wherein each RAID extent contained in the mapped RAID group is configured and arranged to indicate a plurality of drive extents that are used to store data directed to the RAID extent, and wherein each drive extent comprises a contiguous region of non-volatile data storage in the physical drives;

dividing the mapped RAID group into equal size subsets of the RAID extents in the mapped RAID group;

for each one of the subsets of the RAID extents in the mapped RAID group, allocating drive extents from a drive extent pool such that each drive extent indicated by the RAID extents in the subset is allocated from a different one of the physical drives; and

performing logical block rotation between the storage object and the mapped RAID group, wherein the logical block rotation causes data written to consecutive blocks of the storage object address space to be directed to different ones of the RAID extents in the mapped RAID group.

14. The computer program product of claim 13 , wherein the method performed by the storage processor when the set of instructions is carried out by at least one processor in the storage processor, further comprises:

for each one of the RAID extents contained in the RAID group, performing data mirroring between the plurality of drive extents indicated by the RAID extent such that the data stored in each drive extent indicated by the RAID extent is an identical copy of the data stored in each other drive extent indicated by the RAID extent.

15. The computer program product of claim 14 , wherein the method performed by the storage processor when the set of instructions is carried out by at least one processor in the storage processor, further comprises:

allocating the drive extents from the drive extent pool using drive extent pool logic in the storage processor;

generating the mapped RAID group using RAID group mapping logic in the storage processor;

receiving, by the drive extent pool logic from the RAID group mapping logic, a requested RAID width for the mapped RAID group, wherein the requested RAID width comprises a number of drive extents; and

wherein determining the equal size subsets of the RAID extents contained in the RAID group comprises the drive extent pool logic determining subsets of the RAID extents in the mapped RAID group such that each subset of the RAID extents indicates a total number of drive extents that is equal to the requested RAID width for the mapped RAID group.

16. The computer program product of claim 15 , wherein the storage object is accessed by host I/O operations that are passed to storage object mapping logic in the storage processor, wherein the logical block rotation between the mapped RAID group and the storage object is performed by the storage object mapping logic, and wherein the method performed by the storage processor when the set of instructions is carried out by at least one processor in the storage processor, further comprises:

providing, to the storage object mapping logic from the RAID group mapping logic, a RAID extent size for the mapped RAID group, wherein the RAID extent size for the mapped RAID group comprises an amount of data that each RAID extent in the mapped RAID group is capable of storing;

providing, to the storage object mapping logic from the RAID group mapping logic, a total number of RAID extents contained in the mapped RAID group; and

wherein the logical block rotation between the storage object and the mapped RAID group is performed by the storage object mapping logic responsive to the RAID extent size for the mapped RAID group and the total number of RAID extents contained in the mapped RAID group.

17. The computer program product of claim 16 , wherein the method performed by the storage processor when the set of instructions is carried out by at least one processor in the storage processor, further comprises performing logical block rotation between the storage object and the mapped RAID group by:

dividing the storage object address space into equal size logical blocks; and

directing data written to each one of a plurality of sets of consecutive logical blocks in the storage object address space to a corresponding one of the subsets of RAID extents in the mapped RAID group, wherein each one of the sets of consecutive logical blocks in the storage object address space has a size equal to a total number of logical blocks that can be stored by drive extents indicated by a single subset of RAID extents in the mapped RAID group.

18. The computer program product of claim 16 , wherein the method performed by the storage processor when the set of instructions is carried out by at least one processor in the storage processor, further comprises performing logical block rotation between the storage object and the mapped RAID group by:

dividing the storage object address space into equal size logical blocks; and

directing data written to each logical block in each one of a plurality of sets of consecutive logical blocks in the storage object address space to a different RAID extent in the mapped RAID group, wherein each one of the sets of consecutive logical blocks in the storage object address space contains a total number of logical blocks that is equal to a total number of RAID extents in the mapped RAID group.

Assignments (9)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (050724/0466) 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; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO WYSE TECHNOLOGY L.L.C.)
Reel/Frame 060753/0486 →
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 (042769/0001) Recorded Apr 26, 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 (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO WYSE TECHNOLOGY L.L.C.)
Reel/Frame 059803/0802 →
RELEASE OF SECURITY INTEREST AT REEL 042768 FRAME 0585 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; MOZY, INC.; WYSE TECHNOLOGY L.L.C.
Reel/Frame 058297/0536 →
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 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Oct 15, 2019
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 050724/0466 →
PATENT SECURITY INTEREST (CREDIT) Recorded Jun 12, 2017
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; MOZY, INC.; WYSE TECHNOLOGY L.L.C.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 042768/0585 →
PATENT SECURITY INTEREST (NOTES) Recorded Jun 12, 2017
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; MOZY, INC.; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 042769/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 11, 2017
From: GAO, JIAN; WAHL, MICHAEL; DONG, JIBING; HAN, GENG; LI, WAYNE; KANG, JAMIN
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 042344/0196 →