IP Library Granted Patent US 11,531,470
Granted Patent B2
US 11,531,470 · App. 17/075,820 · Granted Dec 20, 2022

Offload of storage system data recovery to storage devices

Inventors: Lior Kamran (Rishon LeZion, IL); Amitai Alkalay (Kadima, IL)
Assignee: EMC IP Holding Company LLC
G06F3/0619G06F3/0653G06F3/0659G06F3/0689G06F11/1092
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,531,470
App. No.
17/075,820
Granted
Dec 20, 2022
Kind
B2
Abstract

A storage system comprises a plurality of storage devices that are configured to store data pages. The data pages are distributed across the plurality of storage devices in a plurality of data stripes. A processing device of a storage controller is configured to identify a data stripe that corresponds to a given data page that was stored on a failed storage device and to provide an indication of the identified data stripe to a first storage device. A first processing device of the first storage device is configured to obtain data pages corresponding to the identified data stripe from at least one storage device other than the failed storage device and to perform a parity calculation based at least in part on the obtained data pages to rebuild the given data page. The rebuilt given data page is then stored on a third storage device.

Claims (83)

1. An apparatus comprising:

a storage system comprising:

a plurality of storage devices that are configured to store data pages, the data pages being distributed across the plurality of storage devices in a plurality of data stripes, a first storage device of the plurality of storage devices comprising a first processing device;

a storage controller comprising a second processing device;

the second processing device of the storage controller being configured, based at least in part on a failure of a second storage device of the plurality of storage devices:

to identify a data stripe of the plurality of data stripes that corresponds to a given data page that was stored on the failed second storage device; and

to provide an indication of the identified data stripe to the first storage device;

the first processing device of the first storage device being configured, based at least in part on the provided indication:

to obtain data pages corresponding to the identified data stripe from at least one storage device of the plurality of storage devices other than the failed second storage device;

to perform a parity calculation based at least in part on the obtained data pages to rebuild the given data page; and

to store the rebuilt given data page on a third storage device of the plurality of storage devices;

wherein the second processing device of the storage controller is further configured to select the first storage device as a rebuild offload storage device based at least in part on information associated with the given data page.

2. The apparatus of claim 1 , wherein the first storage device comprises the third storage device.

3. The apparatus of claim 1 , wherein:

the information associated with the given data page comprises a stripe index and a row index of the given data page; and

providing the indication of the identified data stripe to the first storage device comprises providing the indication of the identified data stripe to the first storage device based at least in part on the selection of the first storage device by the second processing device.

4. The apparatus of claim 1 , wherein:

the indication of the identified data stripe comprises a first indication of a first portion of the first data stripe;

the second processing device of the storage controller is further configured to provide a second indication of a second portion of the first data stripe to a fourth storage device; and

obtaining the data pages corresponding to the identified data stripe from the at least one storage device of the plurality of storage devices other than the failed second storage device comprises obtaining a first data page from the fourth storage device, the fourth storage device being configured to generate the first data page by performing a parity calculation based at least in part on the second portion of the first data stripe.

5. The apparatus of claim 4 , wherein:

the second processing device of the storage controller is further configured to designate the first storage device as a master storage device for rebuilding the given data page and to provide the first storage device with an indication of a location where the first data page is stored;

obtaining the first data page from the fourth storage device comprises obtaining the first data page from the indicated location; and

performing the parity calculation based at least in part on the obtained data pages to rebuild the given data page comprises performing the parity calculation based at least in part on the obtained first data page.

6. The apparatus of claim 5 , wherein:

obtaining the data pages corresponding to the identified data stripe from the at least one storage device of the plurality of storage devices other than the failed second storage device comprises obtaining at least two data pages from the storage devices of the plurality of storage devices other than the second and fourth storage devices;

performing the parity calculation based at least in part on the obtained data pages to rebuild the given data page comprises performing a first parity calculation based at least in part on the obtained at least two data pages to generate a second data page; and

performing the parity calculation based at least in part on the obtained first data page comprises performing a second parity calculation based at least in part on the first data page and the second data page to rebuild the given data page.

7. The apparatus of claim 6 , wherein the second processing device of the storage controller is further configured:

to determine a first latency associated with a first process of obtaining the data pages corresponding to the identified data stripe from the at least one storage device of the plurality of storage devices other than the failed second storage device and performing the parity calculation based at least in part on the obtained data pages to rebuild the given data page;

to determine a second latency associated with a second process of obtaining the at least two data pages from the storage devices of the plurality of storage devices other than the second and fourth storage devices, performing the first parity calculation and performing a second parity calculation; and

selecting one of the first process and the second process based at least in part on a comparison the first latency to the second latency.

8. The apparatus of claim 4 , wherein obtaining the first data page from the fourth storage device comprises obtaining partial parity calculations from the fourth storage device in parallel with performing at least part of the parity calculation to rebuild the given data page.

9. A method comprising:

storing data pages on a plurality of storage devices of a storage system, the data pages being distributed across the plurality of storage devices in a plurality of data stripes, a first storage device of the plurality of storage devices comprising a first processing device;

identifying, by a second processing device of a storage controller of the storage system based at least in part on a failure of a second storage device of the plurality of storage devices, a data stripe of the plurality of data stripes that corresponds to a given data page that was stored on the failed second storage device;

selecting, by the second processing device, the first storage device as a rebuild offload storage device based at least in part on information associated with the given data page;

providing, by the second processing device, an indication of the identified data stripe to the first storage device;

obtaining, by the first processing device based at least in part on the provided indication, data pages corresponding to the identified data stripe from at least one storage device of the plurality of storage devices other than the failed second storage device;

performing, by the first processing device, a parity calculation based at least in part on the obtained data pages to rebuild the given data page; and

storing the rebuilt given data page on a third storage device of the plurality of storage devices.

10. The method of claim 9 , wherein the first storage device comprises the third storage device.

11. The method of claim 9 , wherein:

the information associated with the given data page comprises a stripe index and a row index of the given data page; and

providing the indication of the identified data stripe to the first storage device comprises providing the indication of the identified data stripe to the first storage device based at least in part on the selection of the first storage device by the second processing device.

12. The method of claim 9 , wherein:

the indication of the identified data stripe comprises a first indication of a first portion of the first data stripe;

the method further comprises providing, by the second processing device, a second indication of a second portion of the first data stripe to a fourth storage device; and

obtaining the data pages corresponding to the identified data stripe from the at least one storage device of the plurality of storage devices other than the failed second storage device comprises obtaining a first data page from the fourth storage device, the fourth storage device being configured to generate the first data page by performing a parity calculation based at least in part on the second portion of the first data stripe.

13. The method of claim 12 , wherein:

the method further comprises designating, by the second processing device, the first storage device as a master storage device for rebuilding the given data page and providing the first storage device with an indication of a location where the first data page is stored;

obtaining the first data page from the fourth storage device comprises obtaining the first data page from the indicated location; and

performing the parity calculation based at least in part on the obtained data pages to rebuild the given data page comprises performing the parity calculation based at least in part on the obtained first data page.

14. The method of claim 13 , wherein:

obtaining the data pages corresponding to the identified data stripe from the at least one storage device of the plurality of storage devices other than the failed second storage device comprises obtaining at least two data pages from the storage devices of the plurality of storage devices other than the second and fourth storage devices;

performing the parity calculation based at least in part on the obtained data pages to rebuild the given data page comprises performing a first parity calculation based at least in part on the obtained at least two data pages to generate a second data page; and

performing the parity calculation based at least in part on the obtained first data page comprises performing a second parity calculation based at least in part on the first data page and the second data page to rebuild the given data page.

15. The method of claim 14 , wherein method further comprises:

determining, by the second processing device, a first latency associated with a first process of obtaining the data pages corresponding to the identified data stripe from the at least one storage device of the plurality of storage devices other than the failed second storage device and performing the parity calculation based at least in part on the obtained data pages to rebuild the given data page;

determining, by the second processing device, a second latency associated with a second process of obtaining the at least two data pages from the storage devices of the plurality of storage devices other than the second and fourth storage devices, performing the first parity calculation and performing a second parity calculation; and

selecting, the second processing device, one of the first process and the second process based at least in part on a comparison the first latency to the second latency.

16. The method of claim 12 , wherein obtaining the first data page from the fourth storage device comprises obtaining partial parity calculations from the fourth storage device in parallel with performing at least part of the parity calculation to rebuild the given data page.

17. A computer program product comprising a non-transitory processor-readable storage medium having stored therein program code of one or more software programs, the program code being executable by at least one processing device of a storage system, the storage system comprising a plurality of storage devices that are configured to store data pages, the data pages being distributed across the plurality of storage devices in a plurality of data stripes, a first storage device of the plurality of storage devices comprising a first processing device, the storage system further comprising a storage controller comprising a second processing device, wherein:

the program code, when executed by the second processing device, causes the second processing device, based at least in part on a failure of a second storage device of the plurality of storage devices:

to identify a data stripe of the plurality of data stripes that corresponds to a given data page that was stored on the failed second storage device;

to select the first storage device as a rebuild offload storage device based at least in part on information associated with the given data page; and

to provide an indication of the identified data stripe to the first storage device;

the program code, when executed by the first processing device, causes the first processing device, based at least in part on the provided indication:

to obtain data pages corresponding to the identified data stripe from at least one storage device of the plurality of storage devices other than the failed second storage device;

to perform a parity calculation based at least in part on the obtained data pages to rebuild the given data page; and

to store the rebuilt given data page on a third storage device of the plurality of storage devices.

18. The computer program product of claim 17 , wherein:

the indication of the identified data stripe comprises a first indication of a first portion of the first data stripe;

the program code, when executed by the second processing device, causes the second processing device to provide a second indication of a second portion of the first data stripe to a fourth storage device; and

obtaining the data pages corresponding to the identified data stripe from the at least one storage device of the plurality of storage devices other than the failed second storage device comprises obtaining a first data page from the fourth storage device, the fourth storage device being configured to generate the first data page by performing a parity calculation based at least in part on the second portion of the first data stripe.

19. The computer program product of claim 18 , wherein:

the program code, when executed by the second processing device, causes the second processing device to designate the first storage device as a master storage device for rebuilding the given data page and to provide the first storage device with an indication of a location where the first data page is stored;

obtaining the first data page from the fourth storage device comprises obtaining the first data page from the indicated location; and

performing the parity calculation based at least in part on the obtained data pages to rebuild the given data page comprises performing the parity calculation based at least in part on the obtained first data page.

20. The computer program product of claim 19 , wherein:

obtaining the data pages corresponding to the identified data stripe from the at least one storage device of the plurality of storage devices other than the failed second storage device comprises obtaining at least two data pages from the storage devices of the plurality of storage devices other than the second and fourth storage devices;

performing the parity calculation based at least in part on the obtained data pages to rebuild the given data page comprises performing a first parity calculation based at least in part on the obtained at least two data pages to generate a second data page; and

performing the parity calculation based at least in part on the obtained first data page comprises performing a second parity calculation based at least in part on the first data page and the second data page to rebuild the given data page.

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 21, 2020
From: KAMRAN, LIOR; ALKALAY, AMITAI
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 054123/0263 →