IP Library Granted Patent US 10,437,509
Granted Patent B1
US 10,437,509 · App. 15/964,845 · Granted Oct 8, 2019

Creating consistent snapshots on synchronously replicated storage resources

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,437,509
App. No.
15/964,845
Granted
Oct 8, 2019
Kind
B1
Abstract

Techniques for creating consistent snapshots on synchronously replicated storage resources. The techniques perform such creation of consistent snapshots using snapshot requests that are handled in-band with other IO requests (e.g., write requests, read requests) being processed at a data storage site. By processing snapshot requests as a type of IO request with other IO requests in an IO path to a storage resource, a data storage system can employ the same synchronization logic for efficiently performing both synchronous data replication and synchronous snapshot replication. Further, the disclosed techniques serially process snapshot requests along with write requests that target overlapping sectors of a storage resource according to their order-of-arrival, while concurrently processing write requests that target non-overlapping sectors of the storage resource, thereby reducing repeated pausing and un-pausing of the processing of IO requests received at the data storage system.

Claims (77)

1. A method of creating consistent snapshots on synchronously replicated storage resources, comprising:

receiving a snapshot request at a source storage system, the source storage system including an input/output (TO) path to a source storage array, the source storage system being communicably coupled to a destination storage system including a destination storage array;

ordering the snapshot request with one or more write requests in the IO path to the source storage array, the one or more write requests being directed to a storage resource resident on the source storage array;

determining whether at least one of the one or more write requests is pending;

having determined that not one of the write requests is pending, obtaining a snapshot of the storage resource resident on the source storage array;

storing the snapshot in association with a primary image of the storage resource resident on the source storage array; and

having stored the snapshot in association with the primary image of the storage resource resident on the source storage array, performing remote mirroring to store a copy of the snapshot in association with a secondary image of the storage resource resident on the destination storage array.

2. The method of claim 1 further comprising:

having determined that a respective write request among the one or more write requests is pending, temporarily pausing processing of the snapshot request.

3. The method of claim 2 wherein the respective write request specifies content to be written to the primary image of the storage resource resident on the source storage array, and wherein the method further comprises:

writing the content specified by the respective write request to the primary image of the storage resource resident on the source storage array.

4. The method of claim 3 further comprising:

having written the content specified by the respective write request to the primary image of the storage resource resident on the source storage array, performing remote mirroring to store a copy of the content specified by the respective write request to the secondary image of the storage resource resident on the destination storage array.

5. The method of claim 4 further comprising:

receiving an acknowledgement from the destination storage system that the copy of the content specified by the respective write request has been stored to the secondary image of the storage resource resident on the destination storage array, and

having received the acknowledgement from the destination storage system, resuming the processing of the snapshot request to obtain the snapshot of the storage resource resident on the source storage array.

6. The method of claim 1 further comprising:

receiving a first write request subsequent to receipt of the snapshot request; and

ordering the first write request with the snapshot request in the IO path to the source storage array, the first write request being directed to the storage resource resident on the source storage array.

7. The method of claim 6 further comprising:

determining whether the snapshot request is pending; and

having determined that the snapshot request is pending, temporarily pausing processing of the first write request.

8. The method of claim 7 further comprising:

receiving a first acknowledgement from the destination storage system that the copy of the snapshot has been stored in association with the secondary image of the storage resource resident on the destination storage array; and

having received the first acknowledgement from the destination storage system, resuming the processing of the first write request.

9. The method of claim 8 further comprising:

receiving a second write request subsequent to receipt of the first write request; and

ordering the second write request with the first write request in the IO path to the source storage array, the second write request being directed to the storage resource resident on the source storage array.

10. The method of claim 9 further comprising:

determining whether the second write request targets one or more regions of the storage resource that overlap one or more regions of the storage resource targeted by the first write request.

11. The method of claim 10 further comprising:

having determined that the second write request targets one or more regions of the storage resource that overlap one or more regions of the storage resource targeted by the first write request, temporarily pausing processing of the second write request.

12. The method of claim 11 wherein the first write request specifies content to be written to the primary image of the storage resource resident on the source storage array, and wherein the method further comprises:

writing the content specified by the first write request to the primary image of the storage resource resident on the source storage array.

13. The method of claim 12 further comprising:

having written the content specified by the first write request to the primary image of the storage resource resident on the source storage array, performing remote mirroring to store a copy of the content specified by the first write request to the secondary image of the storage resource resident on the destination storage array.

14. The method of claim 13 further comprising:

receiving a second acknowledgement from the destination storage system that the copy of the content specified by the first write request has been stored to the secondary image of the storage resource resident on the destination storage array, and

having received the second acknowledgement from the destination storage system, resuming the processing of the second write request.

15. The method of claim 10 further comprising:

having determined that the second write request does not target any regions of the storage resource that overlap one or more regions of the storage resource targeted by the first write request, concurrently processing the first write request and the second write request.

16. A data storage system, comprising:

a source storage system including an input/output (IO) path to a source storage array; and

a destination storage system including a destination storage array, wherein the destination storage system is communicably coupled to the source storage system,

wherein the source storage system is configured:

to receive a snapshot request;

to order the snapshot request with one or more write requests in the IO path to the source storage array, the one or more write requests being directed to a storage resource resident on the source storage array;

to determine whether at least one of the one or more write requests is pending;

having determined that not one of the write requests is pending, to obtain a snapshot of the storage resource resident on the source storage array;

to store the snapshot in association with a primary image of the storage resource resident on the source storage array; and

having stored the snapshot in association with the primary image of the storage resource resident on the source storage array, to perform remote mirroring to store a copy of the snapshot in association with a secondary image of the storage resource resident on the destination storage array.

17. The data storage system of claim 16 wherein the source storage system is further configured:

having determined that a respective write request among the one or more write requests is pending, to temporarily pause processing of the snapshot request, wherein the respective write request specifies content to be written to the primary image of the storage resource resident on the source storage array;

to write the content specified by the respective write request to the primary image of the storage resource resident on the source storage array;

having written the content specified by the respective write request to the primary image of the storage resource resident on the source storage array, to perform remote mirroring to store a copy of the content specified by the respective write request to the secondary image of the storage resource resident on the destination storage array;

to receive an acknowledgement from the destination storage system that the copy of the content specified by the respective write request has been stored to the secondary image of the storage resource resident on the destination storage array, and

having received the acknowledgement from the destination storage system, to resume the processing of the snapshot request to obtain the snapshot of the storage resource resident on the source storage array.

18. The data storage system of claim 17 wherein the source storage system is further configured:

to receive a first write request subsequent to receipt of the snapshot request;

to order the first write request with the snapshot request in the IO path to the source storage array, the first write request being directed to the storage resource resident on the source storage array;

to determine whether the snapshot request is pending;

having determined that the snapshot request is pending, to temporarily pause processing of the first write request;

to receive a first acknowledgement from the destination storage system that the copy of the snapshot has been stored in association with the secondary image of the storage resource resident on the destination storage array; and

having received the first acknowledgement from the destination storage system, to resume the processing of the first write request.

19. A computer program product having a non-transitory computer readable medium that stores a set of instructions to create consistent snapshots on synchronously replicated storage resources, the set of instructions, when carried out by computerized circuitry, causing the computerized circuitry to perform a method of:

receiving a snapshot request at a source storage system, the source storage system including an input/output (IO) path to a source storage array, the source storage system being communicably coupled to a destination storage system including a destination storage array;

ordering the snapshot request with one or more write requests in the IO path to the source storage array, the one or more write requests being directed to a storage resource resident on the source storage array;

determining whether at least one of the one or more write requests is pending;

having determined that not one of the write requests is pending, obtaining a snapshot of the storage resource resident on the source storage array;

storing the snapshot in association with a primary image of the storage resource resident on the source storage array; and

having stored the snapshot in association with the primary image of the storage resource resident on the source storage array, performing remote mirroring to store a copy of the snapshot in association with a secondary image of the storage resource resident on the destination storage array.

20. The method of claim 19 further comprising:

having determined that a respective write request among the one or more write requests is pending, temporarily pausing processing of the snapshot request, wherein the respective write request specifies content to be written to the primary image of the storage resource resident on the source storage array;

writing the content specified by the respective write request to the primary image of the storage resource resident on the source storage array;

having written the content specified by the respective write request to the primary image of the storage resource resident on the source storage array, performing remote mirroring to store a copy of the content specified by the respective write request to the secondary image of the storage resource resident on the destination storage array;

receiving an acknowledgement from the destination storage system that the copy of the content specified by the respective write request has been stored to the secondary image of the storage resource resident on the destination storage array, and

having received the acknowledgement from the destination storage system, resuming the processing of the snapshot request to obtain the snapshot of the storage resource resident on the source storage array.

Assignments (8)
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 (046366/0014) Recorded May 20, 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 060450/0306 →
RELEASE OF SECURITY INTEREST AT REEL 046286 FRAME 0653 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 058298/0093 →
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 Jun 7, 2018
From: ALEXEEV, SERGEY ALEXANDROVICH; SHUSHARIN, ALEXEY VLADIMIROVICH; SUBRAMANIAN, VASU
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 046015/0940 →
PATENT SECURITY AGREEMENT (CREDIT) Recorded Jun 1, 2018
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 046286/0653 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Jun 1, 2018
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 046366/0014 →