IP Library › Granted Patent US 12,282,678
Granted Patent B2
US 12,282,678 · App. 18/448,224 · Granted Apr 22, 2025

Synchronous replication

Inventors: Michael Robin Eisler (Colorado Springs, CO); Santosh Ananth Rao (Santa Clara, CA); Akhil Kaushik (San Jose, CA); Yuedong Mu (San Jose, CA)
Assignee: NetApp, Inc.
G06F3/065G06F3/0619G06F3/067G06F11/2058G06F11/2069G06F11/2071G06F11/2082G06F2201/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 12,282,678
App. No.
18/448,224
Filed
Aug 11, 2023
Granted
Apr 22, 2025
Kind
B2
Art Unit
2114
USPC
714/6.21
Abstract

One or more techniques and/or computing devices are provided for synchronous replication. For example, synchronous replication relationships are established between a first storage object (e.g., a file, a logical unit number (LUN), a consistency group, etc.), hosted by a first storage controller, and a plurality of replication storage objects hosted by other storage controllers. In this way, a write operation to the first storage object is implemented in parallel upon the first storage object and the replication storage objects in a synchronous manner, such as using a zero-copy operation to reduce overhead otherwise introduced by performing copy operations. Reconciliation is performed in response to a failure so that the first storage object and the replication storage objects comprise consistent data. Failed write operations and replication write operations are retried, while enforcing a single write semantic. Dependent write order consistency is enforced for dependent write operations, such as overlapping write operations.

Claims (45)

1. A method comprising:

receiving a write operation targeting a first storage object having a synchronous replication relationship with a first replication storage object and a second replication storage object;

splitting the write operation into a first replication write operation targeting the first replication storage object and a second replication write operation targeting the second replication storage object; and

implementing the write operation upon the first storage object, the first replication write operation upon the first replication storage object, and the second replication write operation upon the second replication storage object in parallel; wherein the write operation is implemented as a zero-copy operation using a data reference in place of copying data by using an original copy of data within the write operation for at least one of an initial replication attempt or a subsequent replication attempt.

2. The method of claim 1 , comprising:

responsive to detecting a failure, performing a reconciliation between the first storage object, the first replication storage object, and the second replication storage object, wherein the reconciliation comprises:

withholding a current client acknowledgment for an operation associated with the failure;

reading content, targeted by the operation, from the first storage object;

writing the content to the first replication storage object and the second replication storage object; and

releasing the current client acknowledgment.

3. The method of claim 2 , comprising:

responsive to successfully writing the content so that data within the first storage object, the first replication storage object, and the second replication storage object have data symmetry, utilizing one or more consistency points to perform a data integrity validation to flag data corruption or data loss issues.

4. The method of claim 1 , comprising responsive to detecting a failure, performing a reconciliation between the first storage object, the first replication storage object, and the second replication storage object.

5. The method of claim 1 , comprising enforcing a single write semantic for the first replication storage object.

6. The method of claim 1 , comprising responsive to a lifecycle indicating that performance of the first replication write operation has encountered an issue, retrying the first replication write operation as a retry first replication write operation.

7. The method of claim 6 , comprising:

enforcing a single write semantic for the first replication storage object, the single write semantic specifying:

responsive to the first replication write operation being successfully performed, disregarding the retry first replication write operation; and

responsive to the retry first replication write operation being successfully performed, disregarding the first replication write operation.

8. The method of claim 1 , comprising:

receiving a second write operation; and

responsive to the second write operation and the write operation having a dependency, enforcing a dependent write order consistency for the write operation and the second write operation.

9. The method of claim 8 , comprising:

determining that the second write operation and the write operation have the dependency based upon the write operation and the second write operation overlapping a same region that is to be modified.

10. The method of claim 8 , wherein the enforcing the dependent write order consistency comprises serially implementing the write operation and the second write operation.

11. The method of claim 1 , comprising:

receiving a metadata operation for a first storage controller hosting the first storage object; and

implementing the metadata operation upon the first storage controller and replicating the metadata operation to a second storage controller hosting the first replication storage object and a third storage controller hosting the second replication storage object.

12. The method of claim 11 , wherein the metadata operation comprises at least one of an application consistency point creation operation, a resync point creation operation, a clone operation, an attribute modification operation, a create operation, a volume operation, a logical unit number (LUN) operation, or a delete operation.

13. The method of claim 1 , wherein the first storage object is exposed with read and write access, and the first replication storage object and the second replication storage object are exposed with read only access with a write access option when a failover is performed.

14. The method of claim 1 , wherein a first storage controller hosting the first storage object and a second storage controller hosting the first replication storage object are maintained within a same data center.

15. The method of claim 1 , wherein a first storage controller hosting the first storage object and a second storage controller hosting the first replication storage object are maintained within different data centers.

16. The method of claim 1 , comprising performing load balancing between the first replication storage object and the second replication storage object.

17. A non-transitory machine readable medium having stored thereon instructions for performing a method comprising machine executable code which when executed by a machine, causes the machine to:

receive a write operation targeting a first storage object having a synchronous replication relationship with a first replication storage object and a second replication storage object;

split the write operation into a first replication write operation targeting the first replication storage object and a second replication write operation targeting the second replication storage object; and

implement the write operation upon the first storage object, the first replication write operation upon the first replication storage object, and the second replication write operation upon the second replication storage object in parallel; wherein the write operation is implemented as a zero-copy operation using a data reference in place of copying data by using an original copy of data within the write operation for at least one of an initial replication attempt or a subsequent replication attempt.

18. The non-transitory machine readable medium of claim 17 , wherein the machine executable code causes the machine to:

determining that the first replication write operation encountered an error based upon a lifecycle of the first replication write operation.

19. A computing device comprising:

a memory storing instructions; and

a processor coupled to the memory, the processor configured to execute the instructions to perform operations comprising:

receiving a write operation targeting a first storage object having a synchronous replication relationship with a first replication storage object and a second replication storage object;

splitting the write operation into a first replication write operation targeting the first replication storage object and a second replication write operation targeting the second replication storage object; and

implementing the write operation upon the first storage object, the first replication write operation upon the first replication storage object, and the second replication write operation upon the second replication storage object in parallel, wherein the write operation is implemented as a zero-copy operation using a data reference in place of copying data by using an original copy of data within the write operation for at least one of an initial replication attempt or a subsequent replication attempt.

Continuity (4)
Continuation 17683009 · Feb 28, 2022
Continuation 16683427 · Nov 14, 2019
Continuation 14980526 · Dec 28, 2015
Related Publication 20240126470A1 · Apr 18, 2024
References Cited (33)
US 6052797A · Ofek et al. · 2000 [cited by applicant]
US 6721901B1 · Mcbrearty et al. · 2004 [cited by applicant]
US 7149818B2 · Chow et al. · 2006 [cited by applicant]
US 7979652B1 · Sivasubramanian · 2011 [cited by applicant]
US 9348831B1 · Mccline et al. · 2016 [cited by applicant]
US 10244069B1 · Michaud et al. · 2019 [cited by applicant]
US 10496320B2 · Eisler et al. · 2019 [cited by applicant]
US 11262931B2 · Eisler et al. · 2022 [cited by applicant]
US 11726697B2 · Eisler · 2023 [cited by examiner]
US 20030014523A1 · Teloh et al. · 2003 [cited by applicant]
US 20030188218A1 · Lubbers et al. · 2003 [cited by applicant]
US 20050050286A1 · Crowley et al. · 2005 [cited by applicant]
US 20060064558A1 · Cochran et al. · 2006 [cited by applicant]
US 20060111794A1 · Wysuph et al. · 2006 [cited by applicant]
US 20060112251A1 · Karr et al. · 2006 [cited by applicant]
US 20060129612A1 · Maccormick et al. · 2006 [cited by applicant]
US 20070235537A1 · Yoneda et al. · 2007 [cited by applicant]
US 20120254342A1 · Evans · 2012 [cited by applicant]
US 20120323850A1 · Hildebrand et al. · 2012 [cited by applicant]
US 20130185479A1 · Lin · 2013 [cited by applicant]
US 20140095758A1 · Smith et al. · 2014 [cited by applicant]
US 20140195871A1 · Clayton et al. · 2014 [cited by applicant]
US 20140298078A1 · Keremane et al. · 2014 [cited by applicant]
US 20150089140A1 · Sridharan et al. · 2015 [cited by applicant]
US 20150095627A1 · Dechene et al. · 2015 [cited by applicant]
US 20150254298A1 · Bourbonnais et al. · 2015 [cited by applicant]
US 20180357140A1 · Xiang et al. · 2018 [cited by applicant]
US 20190034505A1 · Renauld et al. · 2019 [cited by applicant]
US 20220187993A1 · Eisler et al. · 2022 [cited by applicant]
WO 0104754A2 · 2001 [cited by applicant]
International Search Report and Written Opinion for Application No. PCT/US2016/067741 mailed Mar. 20, 2017, 12 pages. [cited by applicant]
Wikipedia “disk mirroring” pages of date Oct. 29, 2015, retrieved using WBM drom. URL: https://web.archive.org/web/20151029160620/https://en.wikipedia.org/wiki/Disk_mirroring. [cited by applicant]
Wikipedia “Zero-copy” page from date Oct. 1, 2015, retrieved using the Way Back Machine, from URL: https://web.archive.org/web/20151001142624/ URL: https://en.wikipedia.org/wiki/Zero-copy Year: 2015. [cited by applicant]