IP Library Granted Patent US 10,146,648
Granted Patent B1
US 10,146,648 · App. 15/281,599 · Granted Dec 4, 2018

Preserving disaster recovery protection for a data storage object

Inventors: Deepak Vokaliga (Hopkinton, MA); Sandeep Chandrashekara (Hopkinton, MA); Benjamin Yoder (Westborough, MA); Deepika Kini (Bangalore, IN)
Assignee: EMC IP Holding Company LLC
G06F11/2017G06F3/065G06F3/067G06F3/0619G06F3/0647G06F11/1464H04L67/1095G06F2201/84
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,146,648
App. No.
15/281,599
Granted
Dec 4, 2018
Kind
B1
Abstract

Replication of a storage object to a remote storage array is seamlessly maintained by i) while write operations directed to the storage object are being collected into a set of write cycles that are stored in a master storage array, also collecting the write operations directed to the storage volume into a set of write cycles stored in a slave storage array, and ii) in response to detecting a failure of the master storage array, and while the host computer continues to access the storage object using a copy of the storage object located in the slave storage array, transmitting the write cycles stored in the slave storage array to the remote storage array, so that the remote storage array can apply the write operations in the write cycles it receives from the slave storage array on the copy of the storage object contained in the remote storage array.

Claims (58)

1. A method of preserving disaster recovery protection for a storage object, comprising:

during an initial time period, while write operations from a host computer and directed to the storage object are collected into a set of write cycles stored in a first local storage array, and while the write cycles stored in the first local storage array are transmitted to a remote storage array and applied to a copy of the storage object stored in the remote storage array to provide replication of the storage object on the remote storage array, collecting the write operations from the host computer and directed to the storage object into a set of write cycles stored in a second local storage array;

after the initial time period, and while the host computer continues to access the storage object using a copy of the storage object stored in the second local storage array, detecting a failure of the first local storage array;

in response to detecting the failure of the first local storage array, transmitting the write cycles in the second local storage array to the remote storage array for the remote storage array to apply the write operations in write cycles transmitted from the second local storage array on the copy of the storage object stored in the remote storage array to maintain replication of the storage object on the remote storage array;

wherein the first local storage array associates sequential cycle numbers with the write cycles stored in the first local storage array;

wherein the second local storage array associates the sequential cycle numbers with the write cycles in the second local storage array;

wherein the first local storage array, in response to receiving an indication from the remote storage array that all write operations in a write cycle transmitted from the first local storage array have been successfully received by the remote storage array, discards the successfully received write cycle from the write cycles stored in the first local storage array, and transmits a discard command to the second local storage array causing the second local storage array to discard a write cycle in the write cycles stored in the second local storage array that is associated with a cycle number that is one less than the cycle number of the write cycle that was successfully received by the remote storage array from the first local storage array; and

wherein a total number of write cycles stored in the second local storage array is at least one greater than a total number of write cycles stored in the first local storage array.

2. The method of claim 1 , further comprising performing synchronous replication of the storage object on the first local storage array and the second local storage array at least in part by, for each write operation received from the host computer and directed to the storage object, applying the write operation on both i) a copy of the storage object stored in the first local storage array, and ii) the copy of the storage object stored in the second local storage array, prior to acknowledging completion of the write operation to the host computer.

3. The method of claim 2 , wherein the first local storage array and the second local storage array both operate to receive write operations directed to the storage object; and

wherein applying each write operation from the host computer and directed to the storage object includes applying i) at least one write operation from the host computer and directed to the storage object that is received by the first local storage array and ii) at least one write operation from the host computer and directed to the storage object that is received by the second local storage array, on both i) the copy of the storage object stored in the first local storage array, and ii) the copy of the storage object stored in the second local storage array.

4. The method of claim 3 , wherein collecting write operations from the host computer and directed to the storage object into the set of write cycles stored in the first local storage array includes collecting both i) write operations directed to the storage object received by the first local storage array, and ii) write operations directed to the storage object received by the second local storage array, into the set of write cycles stored in the first local storage array; and

wherein collecting write operations from the host computer and directed to the storage object into the set of write cycles stored in the second local storage array includes collecting both i) write operations directed to the storage object received by the first local storage array, and ii) write operations directed to the storage object received by the second local storage array, into the set of write cycles stored in the second local storage array.

5. The method of claim 4 , further comprising:

while the write cycles from the host computer and directed to the storage object are being collected into the write cycles stored in the first local storage array and into the write cycles stored in the second local storage array, the first local storage array controls when cycle number changes occur in both the first local storage array and the second local storage array by, in response to a new cycle trigger condition, incrementing the cycle number on the first local storage array, and then sending a new cycle number command to the second local storage array causing the second local storage array to increment the cycle number on the second local storage array.

6. The method of claim 5 , further comprising:

detecting expiration of a cycle period timer on the first local storage array; and

wherein the new cycle trigger condition comprises expiration of the cycle period timer on the first local storage array.

7. The method of claim 1 , wherein transmitting the write cycles from the second local storage array to the remote storage array includes transmitting, to the remote storage array as a single write cycle, i) a write cycle associated with a lowest cycle number of the cycle numbers associated with the write cycles stored in the second local storage array with ii) a write cycle associated with a second lowest cycle number of the cycle numbers associated with the write cycles stored in the second local storage array.

8. The method of claim 7 , further comprising:

wherein the remote storage array is operable to detect failure of the first local storage array and to transmit a failure message to the second local storage array indicating that the first local storage array has failed; and

wherein detecting the failure of the first local storage array includes receiving the failure message from the remote storage array at the second local storage array.

9. A computer program product, comprising:

at least one non-transitory computer readable medium storing program code for preserving disaster recovery protection for a storage object, the program code, when executed by processing circuitry, causing the processing circuitry to:

during an initial time period, while write operations from a host computer and directed to the storage object are collected into a set of write cycles stored in a first local storage array, and while the write cycles stored in the first local storage array are transmitted to a remote storage array and applied to a copy of the storage object stored in the remote storage array to provide replication of the storage object on the remote storage array, collect the write operations from the host computer and directed to the storage object into a set of write cycles stored in a second local storage array,

after the initial time period, and while the host computer continues to access the storage object using a copy of the storage object stored in the second local storage array, detect a failure of the first local storage array,

in response to detection of the failure of the first local storage array, transmit the write cycles in the second local storage array to the remote storage array and to cause the write operations in the write cycles transmitted from the second local storage array to be applied on the copy of the storage object stored in the remote storage array to maintain replication of the storage object on the remote storage array,

associate sequential cycle numbers with the write cycles stored in the first local storage array,

associate the sequential cycle numbers with the write cycles in the second local storage array, and

in the first local storage array, in response to receiving an indication from the remote storage array that all write operations in a write cycle transmitted from the first local storage array have been successfully received by the remote storage array, discard the successfully received write cycle from the write cycles stored in the first local storage array, and transmits a discard command to the second local storage array causing the second local storage array to discard a write cycle in the write cycles stored in the second local storage array that is associated with a cycle number that is one less than the cycle number of the write cycle that was successfully received by the remote storage array from the first local storage array; and

wherein a total number of write cycles stored in the second local storage array is at least one greater than a total number of write cycles stored in the first local storage array.

10. The computer program product of claim 9 , wherein the program code, when executed by the processing circuitry, further causes the processing circuitry to perform synchronous replication of the storage object on the first local storage array and the second local storage array at least in part by, for each write operation received from the host computer and directed to the storage object, applying the write operation on both i) a copy of the storage object stored in the first local storage array, and ii) the copy of the storage object stored in the second local storage array, prior to acknowledging completion of the write operation to the host computer.

11. The computer program product of claim 10 , wherein the program code, when executed by the processing circuitry, further causes the processing circuitry to:

cause the first local storage array and the second local storage array to both operate to receive write operations directed to the storage object; and

apply each write operation from the host computer and directed to the storage object includes at least in part by applying i) at least one write operation from the host computer and directed to the storage object that is received by the first local storage array and ii) at least one write operation from the host computer and directed to the storage object that is received by the second local storage array, on both i) the copy of the storage object stored in the first local storage array, and ii) the copy of the storage object stored in the second local storage array.

12. The computer program product of claim 11 , wherein the program code, when executed by the processing circuitry, further causes the processing circuitry to:

collect write operations from the host computer and directed to the storage object into the set of write cycles stored in the first local storage array at least in part by collecting both i) write operations directed to the storage object received by the first local storage array, and ii) write operations directed to the storage object received by the second local storage array, into the set of write cycles stored in the first local storage array; and

collect write operations from the host computer and directed to the storage object into the set of write cycles stored in the second local storage array at least in part by collecting both i) write operations directed to the storage object received by the first local storage array, and ii) write operations directed to the storage object received by the second local storage array, into the set of write cycles stored in the second local storage array.

13. The computer program product of claim 12 , wherein the program code, when executed by the processing circuitry, further causes the processing circuitry to:

while the write cycles from the host computer and directed to the storage object are being collected into the write cycles stored in the first local storage array and into the write cycles stored in the second local storage array, the control when cycle number changes occur in both the first local storage array and the second local storage array by, in response to a new cycle trigger condition, cause the first local storage array to increment the cycle number on the first local storage array, and then sending a new cycle number command to the second local storage array causing the second local storage array to increment the cycle number on the second local storage array.

14. The computer program product of claim 13 , wherein the program code, when executed by the processing circuitry, further causes the processing circuitry to:

detect expiration of a cycle period timer on the first local storage array; and

wherein the new cycle trigger condition comprises expiration of the cycle period timer on the first local storage array.

15. The computer program product of claim 9 , wherein the program code, when executed by the processing circuitry, further causes the processing circuitry to:

transmit the write cycles from the second local storage array to the remote storage array at least in part by transmitting, to the remote storage array as a single write cycle, i) a write cycle associated with a lowest cycle number of the cycle numbers associated with the write cycles stored in the second local storage array with ii) a write cycle associated with a second lowest cycle number of the cycle numbers associated with the write cycles stored in the second local storage array.

16. The computer program product of claim 15 , wherein the program code, when executed by the processing circuitry, further causes the processing circuitry to:

detect failure of the first local storage array at the remote storage array and cause the remote storage array to transmit a failure message to the second local storage array indicating that the first local storage array has failed; and

detect the failure of the first local storage array at least in part by receiving the failure message from the remote storage array at the second local storage array.

17. A system comprising:

processing circuitry;

at least one memory having program code stored thereon, wherein the program code, when executed by the processing circuitry, causes the processing circuitry to

during an initial time period, while write operations from a host computer and directed to the storage object are collected into a set of write cycles stored in a first local storage array, and while the write cycles stored in the first local storage array are transmitted to a remote storage array and applied to a copy of the storage object stored in the remote storage array to provide replication of the storage object on the remote storage array, collect the write operations from the host computer and directed to the storage object into a set of write cycles stored in a second local storage array,

after the initial time period, and while the host computer continues to access the storage object using a copy of the storage object stored in the second local storage array, detect a failure of the first local storage array,

in response to detecting the failure of the first local storage array, transmit the write cycles in the second local storage array to the remote storage array for the remote storage array to apply the write operations in write cycles transmitted from the second local storage array on the copy of the storage object stored in the remote storage array to maintain replication of the storage object on the remote storage array,

associate sequential cycle numbers with the write cycles stored in the first local storage array,

associate the sequential cycle numbers with the write cycles in the second local storage array, and

in the first local storage array, in response to receiving an indication from the remote storage array that all write operations in a write cycle transmitted from the first local storage array have been successfully received by the remote storage array, discard the successfully received write cycle from the write cycles stored in the first local storage array, and transmits a discard command to the second local storage array causing the second local storage array to discard a write cycle in the write cycles stored in the second local storage array that is associated with a cycle number that is one less than the cycle number of the write cycle that was successfully received by the remote storage array from the first local storage array; and

wherein a total number of write cycles stored in the second local storage array is at least one greater than a total number of write cycles stored in the first local storage array.

Assignments (6)
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 AT REEL 048825 FRAME 0489 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
Reel/Frame 058000/0916 →
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 →
SECURITY AGREEMENT Recorded Apr 8, 2019
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 048825/0489 →
SECURITY AGREEMENT Recorded Mar 21, 2019
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 049452/0223 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 31, 2016
From: VOKALIGA, DEEPAK; CHANDRASHEKARA, SANDEEP; YODER, BENJAMIN; KINI, DEEPIKA K.
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 040176/0805 →
Cited By (1)
US 12,265,621