IP Library Granted Patent US 11,163,657
Granted Patent B2
US 11,163,657 · App. 16/790,305 · Granted Nov 2, 2021

Method and apparatus for avoiding redundant data recovery

Inventors: Lior Kamran (Rishon LeZion, IL); Alex Soukhman (Raanana, IL)
Assignee: EMC IP Holding Company LLC
G06F11/2094G06F12/0804G06F2201/82G06F2212/1032
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,163,657
App. No.
16/790,305
Granted
Nov 2, 2021
Kind
B2
Abstract

A method for use in a storage system, comprising: detecting that at least one storage device in a redundant storage device array has failed, the redundant storage device array including a plurality of storage devices; storing, in a memory, a recovery cache containing recovered data blocks, the recovered data blocks containing data previously stored on the failed storage device that has been calculated as part of executing read commands before the redundant storage device array is rebuilt; receiving an I/O command that is associated with the redundant storage device array, the I/O command including one of a read command or a write command; and executing the I/O command by using the recovery cache, wherein the redundant storage device array includes a plurality of storage regions, wherein any of the storage regions includes a respective portion of each of the plurality of storage devices.

Claims (60)

1. A method for use in a storage system, comprising:

detecting that at least one storage device in a redundant storage device array has failed, the redundant storage device array including a plurality of storage devices;

storing, in a memory, a recovery cache containing recovered data blocks, the recovered data blocks containing data previously stored on the failed storage device that has been calculated as part of executing read commands before the redundant storage device array is rebuilt;

receiving an I/O command that is associated with the redundant storage device array, the I/O command including one of a read command or a write command;

executing the I/O command by using the recovery cache; and

rebuilding the redundant storage device array by using the recovery cache, the rebuilding including; identifying one or more data blocks that are stored on the failed storage device performing one or more searches of the recovery cache to detect whether any of the identified data blocks has already been recovered; if not all of the identified data blocks have been recovered yet, recovering, based on parity data, each of the identified data blocks that has not been recovered yet, and copying the identified data blocks to the plurality of storage devices that remain operational,

wherein the redundant storage device array includes a plurality of storage regions, and

wherein any of the storage regions includes a respective portion of each of the plurality of storage devices.

2. The method of claim 1 , wherein the redundant storage device array includes a Redundant Array of Independent Disks 6 (RAID 6) array, and each of the plurality of storage regions includes a RAID 6 stripe.

3. The method of claim 1 , wherein the recovery cache is used to ensure that any data block that is stored on the failed storage device is recovered at most once before the redundant storage device array is rebuilt.

4. The method of claim 3 , wherein;

rebuilding the redundant storage device array further includes selecting one of the plurality of storage regions;

identifying the one or more data blocks includes identifying the one or more data blocks in the selected storage region; and

the parity data is stored in the selected storage region.

5. The method of claim 1 , wherein the I/O command includes a read command, and executing the I/O command includes:

detecting whether a given data block associated with the read command is stored on the failed storage device or an operational storage device;

when the given data block is stored on an operational storage device, retrieving the given data block from the operational storage device;

when the given data block is stored on the failed storage device, detecting whether the given data block has already been recovered by performing a search of the recovery cache;

when the given data block has already been recovered, retrieving the given data block from the recovery cache; and

when the given data block has not been recovered yet, recovering the given data block, and storing the given data block in the recovery cache.

6. A method for use in a storage system, comprising;

detecting that at least one storage device in a redundant storage device array has failed, the redundant storage device array including a plurality of storage devices;

storing in a memory, a recovery cache containing data blocks, the recovered data blocks containing data previously stored on the failed storage device that has been calculated as part of executing read commands before the redundant storage device array is rebuilt;

receiving and I/O command that is associated with the redundant storage device array, the I/O command including one of a read command or a write command; and

executing the I/O command by using the recovery cache,

wherein the redundant storage device array incudes a plurality of storage regions,

wherein any of the storage regions includes a respective portion of each of the plurality of storage devices, and

wherein the I/O command includes a write command, and executing the I/O command includes: when a type-1 storage region is available in the redundant storage device array to receive a data block associated with the write command, storing the data block in the type-1 storage region, the type-1 storage region being a storage region that contains no blocks that need to be recovered; and when a type-1 storage region is not available in the redundant storage device array to receive the data block and a type-2 storage region is available to receive the data block, storing the data block in the type-2 storage region, the type-2 storage region being a storage region that contains no blocks that have been recovered and stored in the recovery cache.

7. The method of claim 6 , wherein, when neither one of a type-1 storage region nor a type-2 storage region is available to receive the data block, executing the I/O command includes at least one of (i) allowing the write command to time out, (ii) generating an error indicating that the write command cannot be completed successfully, or (iii) storing the data block in a temporary storage location and generating an acknowledgement indicating that the write command has been completed successfully.

8. A system, comprising:

at least one processor that is configured to perform the operations of:

detecting that at least one storage device in a redundant storage device array has failed, the redundant storage device array including a plurality of storage devices;

storing, in a memory, a recovery cache containing recovered data blocks, the recovered data blocks containing data previously stored on the failed storage device that has been calculated as part of executing read commands before the redundant storage device array is rebuilt;

receiving an I/O command that is associated with the redundant storage device array, the I/O command including one of a read command or a write command;

executing the I/O command by using the recovery cache; and

rebuilding the redundant storage device array by using the recovery cache, the rebuilding including, identifying one or more data blocks that are stored on the failed storage device, performing one or more searches of the recovery cache to detect whether any of the identified data blocks has already been recovered; if not all of the identified data blocks have been recovered yet, recovering, based on parity data, each of the identified data blocks that has not been recovered yet, and copying the identified data blocks to the plurality of storage devices that remain operational,

wherein the redundant storage device array includes a plurality of storage regions,

wherein any of the storage regions includes a respective portion of each of the plurality of storage devices.

9. The system of claim 8 , wherein the redundant storage device array includes a Redundant Array of Independent Disks 6 (RAID 6) array, and each of the plurality of storage regions includes a RAID 6 stripe.

10. The system of claim 8 , wherein the recovery cache is used to ensure that any data block that is stored on the failed storage device is recovered at most once before the redundant storage device array is rebuilt.

11. The system of claim 10 , wherein;

rebuilding the redundant storage device array further includes selecting one of the plurality of storage regions;

identifying the one or more data blocks includes identifying the one or more data blocks in the selected storage region; and

the parity data is stored in the selected storage region.

12. The system of claim 8 , wherein the I/O command includes a read command, and executing the I/O command includes:

detecting whether a given data block associated with the read command is stored on the failed storage device or an operational storage device;

when the given data block is stored on an operational storage device, retrieving the given data block from the operational storage device;

when the given data block is stored on the failed storage device, detecting whether the given data block has already been recovered by performing a search of the recovery cache;

when the given data block has already been recovered, retrieving the given data block from the recovery cache; and

when the given data block has not been recovered yet, recovering the given data block, and storing the given data block in the recovery cache.

13. A system comprising;

at least one processor that is configured to perform the operation of,

detecting that at least one storage device in a redundant storage device array has failed, the redundant storage device array including a plurality of storage devices;

storing, in a memory, a recovery cache containing recovered data blocks, the recovered data blocks containing data previously stored on the failed storage device that has been calculated as part of executing read commands before the redundant storage device array is rebuilt;

receiving an I/O command that is associated with the redundant storage device array, the I/O command including one of a read command or a write command, and

executing the I/O command by using the recovery cache,

wherein the redundant storage device array includes a plurality of storage regions,

wherein any of the storage regions includes a respective portion of each of the plurality of storage devices

wherein the I/O command includes a write command, and executing the I/O command includes: when a type-1 storage region is available in the redundant storage device array to receive a data block associated with the write command, storing the data block in the type-1 storage region, the type-1 storage region being a storage region that contains no blocks that need to be recovered; and when a type-1 storage region is not available in the redundant storage device array to receive the data block and a type-2 storage region is available to receive the data block, storing the data block in the type-2 storage region, the type-2 storage region being a storage region that contains no blocks that have been recovered and stored in the recovery cache.

14. The system of claim 13 , wherein, when neither one of a type-1 storage region nor a type-2 storage region is available to receive the data block, executing the I/O command includes at least one of (i) allowing the write command to time out, (ii) generating an error indicating that the write command cannot be completed successfully, or (iii) storing the data block in a temporary storage location and generating an acknowledgement indicating that the write command has been completed successfully.

Assignments (13)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (052851/0081) 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
Reel/Frame 060436/0441 →
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 (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 IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (052852/0022) 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
Reel/Frame 060436/0582 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (052851/0917) 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
Reel/Frame 060436/0509 →
RELEASE OF SECURITY INTEREST AT REEL 052771 FRAME 0906 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 058001/0298 →
SECURITY INTEREST Recorded Jun 5, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 052851/0917 →
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 INTEREST Recorded Jun 5, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 052852/0022 →
SECURITY INTEREST Recorded Jun 5, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC; THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 052851/0081 →
SECURITY AGREEMENT Recorded May 28, 2020
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 052771/0906 →
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 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 14, 2020
From: KAMRAN, LIOR; SOUKHMAN, ALEX
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 051824/0387 →
Continuity (1)
Related Publication 20210255940A1 · Aug 19, 2021