IP Library Granted Patent US 11,481,138
Granted Patent B2
US 11,481,138 · App. 17/038,235 · Granted Oct 25, 2022

Creating indentical snapshots

Inventors: Michael Barber (Pearland, TX); Yaron Dar (Sudbury, MA); Michael E. Specht (Bolton, MA); Arieh Don (Newton, MA)
Assignee: EMC IP Holding Company LLC
G06F3/065G06F3/067G06F3/0619
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,481,138
App. No.
17/038,235
Granted
Oct 25, 2022
Kind
B2
Abstract

Snapshots are created on replicated storage systems R 1 and R 2 in a manner resulting in identical snapshots being generated on R 1 and R 2 . In response to an instruction to create a snapshot on a storage system (R 1 and/or R 2 ), command-phase write operations (CWOs) are held and data-phase write operations (DWOs) are completed on the storage system before the snapshot is created. Determining that DWOs includes querying processes, and using information, available on the storage system, by which a state of a write operation—e.g., whether the write operation is a DWO and when the DWO completes—may be determined. A CWO queue may be maintained on the storage system for tracking the status of CWOs. A DWO queue may be maintained on the storage system for tracking DWOs, to determine DWOs when the snapshot is created, and track their processing, including when they are completed.

Claims (72)

1. A method comprising:

receiving at a storage system an instruction to generate a first snapshot of a logical storage unit;

determining if one or more write operations for the logical storage unit have data currently being processed on the storage system when the instruction is received;

if the one or more write operations for the logical storage unit have data currently being processed on the storage system when the instruction is received, determining when the processing of the one or more write operations on the storage system is completed; and

in response to determining that the processing of the data of the one or more write operations has been completed on the storage system, generating the first snapshot of the logical storage unit, wherein the storage system includes a plurality of directors that process I/O operations on the storage system, and

wherein said determining if the one or more write operations for the logical storage unit have data currently being processed on the storage system when the instruction is received includes polling each of the plurality of directors to determine whether each of the plurality of directors is currently processing data for any write operations.

2. The method of claim 1 , further comprising:

in response to receiving the instruction, for each write operation initiated by a host system for which data has not started being processed on the storage system when the instruction is received, preventing the processing of the data of the write operation on the storage system until the generation of the first snapshot is complete.

3. The method of claim 2 , further comprising:

for each of the one or more write operations for which the processing of the data on the storage system has been prevented until the generation of the first snapshot is complete, creating an entry in a queue, each entry in the queue representing a respective one of the one or more write operations for which the processing of the data on the storage system has been prevented; and

in response to completion of the generation of the first snapshot, starting the processing of the data of each write operation having any entry in the queue.

4. A method comprising:

receiving at a storage system an instruction to generate a first snapshot of a logical storage unit;

determining if one or more write operations for the logical storage unit have data currently being processed on the storage system when the instruction is received;

if the one or more write operations for the logical storage unit have data currently being processed on the storage system when the instruction is received, determining when the processing of the one or more write operations on the storage system is completed;

in response to determining that the processing of the data of the one or more write operations has been completed on the storage system, generating the first snapshot of the logical storage unit; and

for each of the one or more write operations that have data currently being processed on the storage system when the instruction is received, creating an entry in a queue, each entry in the queue representing a respective one of the one or more write operations having data currently being processed on the storage system when the instruction is received.

5. The method of claim 1 , wherein the storage system is a first storage system configured to synchronously replicate data of the logical storage unit to a second storage system,

wherein it is determined that one or more write operations for the logical storage unit have data currently being processed on the first storage system, including the one or more write operations being replicated to the second storage system,

wherein the method further comprises:

receiving at the second storage system an instruction to generate a second snapshot of the logical storage unit specific to a same point in time as the first snapshot of the first storage system, and

generating the second snapshot on the second storage system, and wherein the first snapshot and the second snapshot are identical.

6. The method of claim 5 , further comprising:

in response to a failure on a system including the first storage system and the second storage system, recovering data of the logical storage unit on the first storage system using the first snapshot independently of, and concurrently to, recovering data of the logical storage unit on the second storage system using the second snapshot.

7. A system including executable logic that implements a method comprising:

receiving at a storage system an instruction to generate a first snapshot of a logical storage unit;

determining if one or more write operations for the logical storage unit have data currently being processed on the storage system when the instruction is received;

if the one or more write operations for the logical storage unit have data currently being processed on the storage system when the instruction is received, determining when the processing of the one or more write operations on the storage system is completed; and

in response to determining that the processing of the data of the one or more write operations has been completed on the storage system, generating the first snapshot of the logical storage unit, wherein the storage system includes a plurality of directors that process I/O operations on the storage system, and

wherein said determining if the one or more write operations for the logical storage unit have data currently being processed on the storage system when the instruction is received includes polling each of the plurality of directors to determine whether each of the plurality of directors is currently processing data for any write operations.

8. The system of claim 7 , wherein the method further comprises:

in response to receiving the instruction, for each write operation initiated by a host system for which data has not started being processed on the storage system when the instruction is received, preventing the processing of the data of the write operation on the storage system until the generation of the first snapshot is complete.

9. The system of claim 8 , wherein the method further comprises:

for each of the one or more write operations for which the processing of the data on the storage system has been prevented until the generation of the first snapshot is complete, creating an entry in a queue, each entry in the queue representing a respective one of the one or more write operations for which the processing of the data on the storage system has been prevented; and

in response to completion of the generation of the first snapshot, starting the processing of the data of each write operation having any entry in the queue.

10. A system including executable logic that implements a method comprising:

receiving at a storage system an instruction to generate a first snapshot of a logical storage unit;

determining if one or more write operations for the logical storage unit have data currently being processed on the storage system when the instruction is received;

if the one or more write operations for the logical storage unit have data currently being processed on the storage system when the instruction is received, determining when the processing of the one or more write operations on the storage system is completed;

in response to determining that the processing of the data of the one or more write operations has been completed on the storage system, generating the first snapshot of the logical storage unit; and

for each of the one or more write operations that have data currently being processed on the storage system when the instruction is received, creating an entry in a queue, each entry in the queue representing a respective one of the one or more write operations having data currently being processed on the storage system when the instruction is received.

11. The system of claim 7 , wherein the storage system is a first storage system configured to synchronously replicate data of the logical storage unit to a second storage system,

wherein it is determined that one or more write operations for the logical storage unit have data currently being processed on the first storage system, including the one or more write operations being replicated to the second storage system,

wherein the method further comprises:

receiving at the second storage system an instruction to generate a second snapshot of the logical storage unit specific to a same point in time as the first snapshot of the first storage system, and

generating the second snapshot on the second storage system, and wherein the first snapshot and the second snapshot are identical.

12. The system of claim 11 , wherein the method further comprises:

in response to a failure on a system including the first storage system and the second storage system, recovering data of the logical storage unit on the first storage system using the first snapshot independently of, and concurrently to, recovering data of the logical storage unit on the second storage system using the second snapshot.

13. One or more non-transitory computer-readable media having software stored thereon, the software comprising:

executable code that receives at a storage system an instruction to generate a first snapshot of a logical storage unit;

executable code that determines if one or more write operations for the logical storage unit have data currently being processed on the storage system when the instruction is received;

executable code that determines, if the one or more write operations for the logical storage unit have data currently being processed on the storage system when the instruction is received, when the processing of the one or more write operations on the storage system is completed; and

executable code that, in response to determining that the processing of the data of the one or more write operations has been completed on the storage system, generates the first snapshot of the logical storage unit, wherein the storage system includes a plurality of directors that process I/O operations on the storage system, and

wherein said executable code that determines if the one or more write operations for the logical storage unit have data currently being processed on the storage system when the instruction is received further includes executable code that polls each of the plurality of directors to determine whether each of the plurality of directors is currently processing data for any write operations.

14. The one or more non-transitory computer-readable media of claim 13 , wherein the software further comprises:

executable code that, in response to receiving the instruction, for each write operation initiated by a host system for which data has not started being processed on the storage system when the instruction is received, prevents the processing of the data of the write operation on the storage system until the generation of the first snapshot is complete.

15. The one or more non-transitory computer-readable media of claim 14 , wherein the software further comprises:

executable code that, for each of the one or more write operations for which the processing of the data on the storage system has been prevented until the generation of the first snapshot is complete, creates an entry in a queue, each entry in the queue representing a respective one of the one or more write operations for which the processing of the data on the storage system has been prevented; and

executable code that, in response to completion of the generation of the first snapshot, starts the processing of the data of each write operation having any entry in the queue.

16. One or more non-transitory computer-readable media having software stored thereon, the software comprising:

executable code that receives at a storage system an instruction to generate a first snapshot of a logical storage unit;

executable code that determines if one or more write operations for the logical storage unit have data currently being processed on the storage system when the instruction is received;

executable code that determines, if the one or more write operations for the logical storage unit have data currently being processed on the storage system when the instruction is received, when the processing of the one or more write operations on the storage system is completed; and

executable code that, in response to determining that the processing of the data of the one or more write operations has been completed on the storage system, generates the first snapshot of the logical storage unit; and

executable code that, for each of the one or more write operations that have data currently being processed on the storage system when the instruction is received, creates an entry in a queue, each entry in the queue representing a respective one of the one or more write operations having data currently being processed on the storage system when the instruction is received.

17. The one or more non-transitory computer-readable media of claim 13 , wherein the storage system is a first storage system configured to synchronously replicate data of the logical storage unit to a second storage system,

wherein it is determined that one or more write operations for the logical storage unit have data currently being processed on the first storage system, including the one or more write operations being replicated to the second storage system,

wherein the software further comprises:

executable code that receives at the second storage system an instruction to generate a second snapshot of the logical storage unit specific to a same point in time as the first snapshot of the first storage system, and

executable code that generates the second snapshot on the second storage system, and wherein the first snapshot and the second snapshot are identical.

18. The one or more non-transitory computer-readable media of claim 17 , wherein the software further comprises:

executable code that, in response to a failure on a system including the first storage system and the second storage system, recovers data of the logical storage unit on the first storage system using the first snapshot independently of, and concurrently to, recovering data of the logical storage unit on the second storage system using the second snapshot.

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 Sep 30, 2020
From: BARBER, MICHAEL; DAR, YARON; SPECHT, MICHAEL E.; DON, ARIEH
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 053930/0716 →