IP Library Granted Patent US 10,108,507
Granted Patent B1
US 10,108,507 · App. 13/077,280 · Granted Oct 23, 2018

Asynchronous copy on write

Inventor: Assaf Natanzon (Ramat-Gan, IL)
Assignee: EMC IP Holding Company
G06F11/2074G06F11/1402G06F11/1458G06F11/1471G06F2201/84G06F2201/855
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,108,507
App. No.
13/077,280
Filed
Mar 31, 2011
Granted
Oct 23, 2018
Kind
B1
Art Unit
2133
USPC
711/118
Abstract

A method, system, and computer program product for receiving a request to roll an image to a point in time by reading data from a journal, applying data from the journal to create a asynchronous copy on write image at the requested point in time, creating a virtual image data structure, and allowing writes to be cached in a journal based replication appliance.

Claims (93)

1. A system for data replication, the system comprising:

a splitter;

a non-transitory storage medium;

a journal based replication appliance;

a journal; and

computer-executable logic operating in memory, wherein the computer-executable program logic is configured for execution of:

receiving a request to roll an image to a point in time;

reading data from the journal;

applying data from the journal to create an asynchronous copy on write image at the requested point in time, creating a virtual image data structure, wherein the virtual image data structure includes a reference to a write cache on the journal based replication appliance, a metadata part, and a reference to the asynchronous copy on write image;

presenting the virtual image data structure as the requested point of time; and

allowing writes to the request point in time be cached in the write cache of the virtual image data structure on the journal based replication appliance;

intercepting a read IO to the virtual image data structure at the splitter;

sending IO to the journal based replication appliance;

determining if the read IO is in the virtual image data structure;

based on a negative determination, sending the read down an IO stack of the splitter; and

based on a positive determination, sending a write before read command from the splitter to the journal based replication appliance; and

reading data to service the IO from the write cache of the journal based replication appliance.

2. The system of claim 1 wherein the logic is further configured for execution of:

determining if the write cache is full;

based on a determination that the write cache is full, writing the data to the journal; and

based on a determination the write cache is not full, either mirroring the data to a second replication appliance or adding data to the write cache and writing it to the journal.

3. The system of claim 1 wherein the logic is further configured for execution of:

intercepting a write IO to the virtual image data structure;

sending the write IO to the journal based replication appliance; and

updating the virtual image data structure; wherein the metadata part enables the journal based replication appliance to build reads from the write cache, journal, and the asynchronous copy on write image; wherein the metadata part indicates where data corresponding to the read is stored.

4. The system of claim 2 wherein the logic is further configured for execution of:

based on a determination that the write cache is full, determining if an IO is for a location in the write cache;

based on a positive determination that the IO was for the write cache, invalidating the write cache for the location.

5. The system of claim 2 wherein the logic is further configured for execution of:

applying data from the cache to the storage mediums volumes to free data from the write cache; and

transferring data from the journal to the write cache.

6. The system of claim 2 wherein the logic is further configured for execution of:

upon transferring the data from the journal to the write cache, allowing new IO to enter the write cache.

7. The system of claim 1 wherein the logic is further configured for execution of:

determining whether a read is in the virtual image data structure;

based on a positive determination, reading the read from the virtual image data structure in the write cache of the journal based replication appliance; and

based on a negative determination, reading the read from the journal.

8. The system of claim 2 wherein the logic is further configured for execution of:

creating a change bitmap in a memory of the splitter;

determining if a read is in a location indicated as not changed in bitmap; and

based on a positive determination, sending the read down the IO stack.

9. The system of claim 8 wherein the logic is further configured for execution of:

receiving a write in the splitter; and

updating the change in bitmap in the splitter memory.

10. The system of claim 8 wherein the logic is further configured for execution of:

periodically creating a new change bitmap, and updating new writes in new bitmap;

reading the change bitmap from the DPA, and merging into the new change bitmap;

erasing the old change bitmap; and

setting the new change bitmap as the change bitmap.

11. A computer implemented method for data replication, the method comprising:

receiving a request to roll an image to a point in time;

reading data from a journal;

applying data from the journal to create an asynchronous copy on write image at the requested point in time, creating a virtual image data structure, wherein the virtual image data structure includes a reference to a write cache on the journal based replication appliance, a metadata part; and a reference to the asynchronous copy on write image;

presenting the virtual image data structure as the requested point in time; and

allowing writes to the requested point in time be cached in the write cache of the virtual image data structure on the journal based replication appliance;

intercepting a read IO to the virtual image data structure at the splitter;

sending IO to the journal based replication appliance;

determining if the read IO is in the virtual image data structure;

based on a negative determination, sending the read down an IO stack of the splitter; and

based on a positive determination, sending a write before read command from the splitter to the journal based replication appliance; and

reading data to service the IO from the write cache of the journal based replication appliance.

12. The method of claim 11 further comprising:

determining if a write cache is full;

based on a determination that the write cache is full, writing data to the journal; and

based on a determination the write cache is not full, either mirroring the data to a second replication appliance or adding data to the write cache and writing it to the journal.

13. The method of claim 11 further comprising:

intercepting a write IO to the virtual image data structure;

sending the write IO to a journal based replication appliance; and

updating the virtual image data structure; wherein the metadata part enables the journal based replication appliance to build reads from the write cache, journal, and the asynchronous copy on write image; wherein the metadata part indicates where data corresponding to the read is stored.

14. The method of claim 12 further comprising:

based on a determination that the write cache is full, determining if an IO is for a location in the write cache;

based on a positive determination that the IO was for the write cache, invalidating the write cache for the location.

15. A computer program product comprising:

a non-transitory computer readable medium encoded with computer executable program code for implementing consistent snapshots in a replication environment, the replication environment having a production site and a splitter, the production site having storage mediums, the code:

receiving a request to roll an image to a point in time;

reading data from a journal;

applying data from the journal to create an asynchronous copy on write image at the requested point in time, creating a virtual image data structure, wherein the virtual image data structure includes a reference in a write cache on the journal based replication appliance, a metadata part; and a reference to the asynchronous copy on write image;

presenting the virtual image data structure as the requested point in time; and

allowing writes to the requested point in time be cached in the write cache of the virtual image data structure on the journal based replication appliance;

intercepting a read IO to the virtual image data structure at the splitter;

sending IO to the journal based replication appliance;

determining if the read IO is in the virtual image data structure;

based on a negative determination, sending the read down an IO stack of the splitter; and

based on a positive determination, sending a write before read command from the splitter to the journal based replication appliance; and

reading data to service the IO from the write cache of the journal based replication appliance.

16. The computer program product of claim 15 , wherein the code further enables:

determining if a write cache is full;

based on a determination that the write cache is full, writing data to the journal; and

based on a determination the write cache is not full, either mirroring the data to a second replication appliance or adding data to the write cache and writing it to the journal.

17. The computer program product of claim 15 , wherein the code further enables:

intercepting a write IO to the virtual image data structure;

sending the write IO to a journal based replication appliance; and

updating the virtual image data structure; wherein the metadata part enables the journal based replication appliance to build reads from the write cache, journal, and the asynchronous copy on write image; wherein the metadata part indicates where data corresponding to the read is stored.

Assignments (11)
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 (045455/0001) Recorded May 20, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061753/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (040136/0001) Recorded Apr 26, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061324/0001 →
RELEASE OF SECURITY INTEREST Recorded Nov 3, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL, L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; WYSE TECHNOLOGY L.L.C.
Reel/Frame 058216/0001 →
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 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 Sep 29, 2016
From: EMC CORPORATION
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 040203/0001 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 040136/0001 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040134/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 22, 2013
From: EMC INTERNATIONAL COMPANY
To: EMC CORPORATION
Reel/Frame 030847/0412 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 24, 2013
From: NATANZON, ASSAF
To: EMC INTERNATIONAL COMPANY
Reel/Frame 030479/0841 →