IP Library › Granted Patent US 12,206,734
Granted Patent B2
US 12,206,734 · App. 17/567,182 · Granted Jan 21, 2025

Synchronous replication for storage

Inventors: Paul Anthony Powell (Holly Springs, NC); Akhil Kaushik (San Jose, CA); Srikumar Natarajan (Cary, NC); Ching-Yuk Paul Ngan (Redwood City, CA)
Assignee: NetApp, Inc.
H04L67/1095G06F3/06G06F3/0614G06F3/065G06F3/067G06F11/2064G06F11/2069G06F11/2076G06F16/178G06F16/1844H04L67/1097G06F2201/805
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,206,734
App. No.
17/567,182
Filed
Jan 3, 2022
Granted
Jan 21, 2025
Kind
B2
Examiner
ROJAS, MIDYS
Art Unit
2133
USPC
711/153
Abstract

One or more techniques and/or computing devices are provided for implementing synchronous replication. For example, a synchronous replication relationship may be established between a first storage controller hosting local storage and a second storage controller hosting remote storage (e.g., replication may be specified at a file, logical unit number (LUN), or any other level of granularity). Data operations and offloaded operations may be implemented in parallel upon the local storage and the remote storage. Error handling operations may be implemented upon the local storage and implement in parallel as a best effort on the remote storage, and a reconciliation may be performed to identify any data divergence from the best effort parallel implementation. Storage area network (SAN) operations may be implemented upon the local storage, and upon local completion may be remotely implemented upon the remote storage.

Claims (60)

1. A non-transitory machine readable medium comprising instructions for performing a method, which when executed by a machine, causes the machine to:

maintain a set of hash tables to track data operations that are inflight;

receive a data operation targeting a first storage object;

tag the data operation with an identifier of a hash table of the set of hash tables; and

search the hash table to identify information related to the data operation based upon the identifier with which the data operation is tagged.

2. The non-transitory machine readable medium of claim 1 , wherein the instructions cause the machine to:

tag a replication data operation with the identifier of the hash table, wherein the replication data operation is a replica of the data operation; and

search the hash table to identify information related to the replication data operation based upon the identifier with which the replication data operation is tagged.

3. The non-transitory machine readable medium of claim 1 , wherein the instructions cause the machine to:

tag a replication data operation with the identifier of the hash table, wherein the replication data operation is a replica of the data operation; and

search the hash table to identify information related to the replication data operation and the data operation based upon the identifier with which the replication data operation and the data operation are tagged.

4. The non-transitory machine readable medium of claim 1 , wherein the instructions cause the machine to:

populate the hash table with information used to perform a reconciliation for at least one of the data operation or a replication data operation that is a replica of the data operation.

5. The non-transitory machine readable medium of claim 1 , wherein the instructions cause the machine to:

populate the hash table with information indicating whether data operation or a replication data operation that is a replica of the data operation succeeded or failed.

6. The non-transitory machine readable medium of claim 1 , wherein the instructions cause the machine to:

populate the hash table with information indicating a local region within local storage targeted by the data operation and a remote region within remote storage targeted by a replication data operation that is a replica of the data operation; and

evaluate the local region and the remote region for data consistency.

7. A method comprising:

maintaining a set of hash tables to track data operations that are inflight;

receiving a data operation targeting a first storage object;

tagging the data operation with an identifier of a hash table of the set of hash tables; and

searching the hash table to identify information related to the data operation based upon the identifier with which the data operation is tagged.

8. The method of claim 7 , comprising:

tagging a replication data operation with the identifier of the hash table, wherein the replication data operation is a replica of the data operation; and

searching the hash table to identify information related to the replication data operation based upon the identifier with which the replication data operation is tagged.

9. The method of claim 7 , comprising:

tagging a replication data operation with the identifier of the hash table, wherein the replication data operation is a replica of the data operation; and

searching the hash table to identify information related to the replication data operation and the data operation based upon the identifier with which the replication data operation and the data operation are tagged.

10. The method of claim 7 , comprising:

populating the hash table with information used to perform a reconciliation for at least one of the data operation or a replication data operation that is a replica of the data operation.

11. The method of claim 7 , comprising:

populating the hash table with information indicating whether data operation or a replication data operation that is a replica of the data operation succeeded or failed.

12. The method of claim 7 , comprising:

populating the hash table with information indicating a local region within local storage targeted by the data operation and a remote region within remote storage targeted by a replication data operation that is a replica of the data operation; and

evaluating the local region and the remote region for data consistency.

13. The method of claim 7 , comprising:

tagging a replication data operation with the identifier of the hash table, wherein the replication data operation is a replica of the data operation.

14. A computing device comprising:

a memory comprising machine executable code; and

a processor coupled to the memory, the processor configured to execute the machine executable code to cause the processor to perform operations comprising:

maintaining a set of hash tables to track data operations that are inflight;

receiving a data operation targeting a first storage object;

tagging the data operation with an identifier of a hash table of the set of hash tables; and

searching the hash table to identify information related to the data operation based upon the identifier with which the data operation is tagged.

15. The computing device of claim 14 , the operations comprising:

tagging a replication data operation with the identifier of the hash table, wherein the replication data operation is a replica of the data operation; and

searching the hash table to identify information related to the replication data operation based upon the identifier with which the replication data operation is tagged.

16. The computing device of claim 14 , the operations comprising:

tagging a replication data operation with the identifier of the hash table, wherein the replication data operation is a replica of the data operation; and

searching the hash table to identify information related to the replication data operation and the data operation based upon the identifier with which the replication data operation and the data operation are tagged.

17. The computing device of claim 14 , the operations comprising:

populating the hash table with information used to perform a reconciliation for at least one of the data operation or a replication data operation that is a replica of the data operation.

18. The computing device of claim 14 , the operations comprising:

populating the hash table with information indicating whether data operation or a replication data operation that is a replica of the data operation succeeded or failed.

19. The computing device of claim 14 , the operations comprising:

populating the hash table with information indicating a local region within local storage targeted by the data operation and a remote region within remote storage targeted by a replication data operation that is a replica of the data operation; and

evaluating the local region and the remote region for data consistency.

20. The computing device of claim 14 , the operations comprising:

tagging a replication data operation with the identifier of the hash table, wherein the replication data operation is a replica of the data operation.

Continuity (4)
Continuation 16682056 · Nov 13, 2019
Continuation 15850754 · Dec 21, 2017
Continuation 14953048 · Nov 27, 2015
Related Publication 20220124149A1 · Apr 21, 2022
References Cited (33)
US 7406487B1 · Gupta et al. · 2008 [cited by applicant]
US 8868874B2 · Wilkinson · 2014 [cited by applicant]
US 9047189B1 · Gupta et al. · 2015 [cited by applicant]
US 9307011B2 · Keremane et al. · 2016 [cited by applicant]
US 9378219B1 · Bono et al. · 2016 [cited by applicant]
US 9521198B1 · Agarwala et al. · 2016 [cited by applicant]
US 9880777B1 · Bono et al. · 2018 [cited by applicant]
US 9917896B2 · Powell et al. · 2018 [cited by applicant]
US 10318491B1 · Graham et al. · 2019 [cited by applicant]
US 10523751B2 · Powell et al. · 2019 [cited by applicant]
US 11218539B2 · Powell et al. · 2022 [cited by applicant]
US 20040039888A1 · Lecrone et al. · 2004 [cited by applicant]
US 20050193272A1 · Stager et al. · 2005 [cited by applicant]
US 20070239944A1 · Rupanagunta et al. · 2007 [cited by applicant]
US 20100082700A1 · Parab · 2010 [cited by applicant]
US 20100250867A1 · Bettger et al. · 2010 [cited by applicant]
US 20110145517A1 · Bish et al. · 2011 [cited by applicant]
US 20130073519A1 · Lewis et al. · 2013 [cited by applicant]
US 20130198133A1 · Lee et al. · 2013 [cited by applicant]
US 20140068233A1 · Ueda et al. · 2014 [cited by applicant]
US 20140082414A1 · Olster · 2014 [cited by applicant]
US 20140172930A1 · Molaro et al. · 2014 [cited by applicant]
US 20140214772A1 · Kadayam et al. · 2014 [cited by applicant]
US 20140298078A1 · Keremane · 2014 [cited by examiner]
US 20150161184A1 · Patiejunas et al. · 2015 [cited by applicant]
US 20150229775A1 · Kamboh et al. · 2015 [cited by applicant]
US 20160147805A1 · Benke et al. · 2016 [cited by applicant]
US 20160306822A1 · Waghulde · 2016 [cited by applicant]
US 20170054802A1 · Annamalai et al. · 2017 [cited by applicant]
US 20170147601A1 · Kaushik et al. · 2017 [cited by applicant]
US 20200084271A1 · Powell · 2020 [cited by examiner]
CN 108604164A · 2018 [cited by examiner]
International Search Report and Written Opinion for Application No. PCT/US2016/063305 mailed Mar. 2, 2017, 12 pages. [cited by applicant]