IP Library › Granted Patent US 12,321,627
Granted Patent B2
US 12,321,627 · App. 18/424,244 · Granted Jun 3, 2025

Methods and storage nodes to decrease delay in resuming input output (I/O) operations after a non-disruptive event for a storage object of a distributed storage system by utilizing asynchronous inflight replay of the I/O operations

Inventors: Krishna Murthy Chandraiah Setty Narasingarayanapeta (Bangalore, IN); Akhil Kaushik (Bangalore Karnataka, IN)
Assignee: NetApp, Inc.
G06F3/0647G06F3/0604G06F3/0679
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,321,627
App. No.
18/424,244
Filed
Jan 26, 2024
Granted
Jun 3, 2025
Kind
B2
Art Unit
2100
USPC
711/154
Abstract

In one embodiment, a method comprises maintaining state information regarding a data replication status for a storage object of the storage node of a primary storage cluster with the storage object being replicated to a replicated storage object of a secondary storage cluster, temporarily disallowing input/output (I/O) operations when the storage object has a connection loss or failure. The method further includes initiating a resynchronization between the storage object and the replicated storage object including initiating asynchronous persistent inflight tracking and replay of any missing I/O operations that are missing from one of a first Op log of the primary storage cluster and a second Op log of the secondary storage cluster, and allowing new I/O operations to be handled with the storage object of the primary storage cluster without waiting for completion of the asynchronous persistent inflight tracking and replay at the secondary storage cluster.

Claims (56)

1. A computer implemented method performed by one or more processing resources of a storage node, the method comprising:

temporarily disallowing input/output (I/O) operations for a storage object of the storage node of a primary storage cluster when the storage object of the primary storage cluster has a connection loss or failure;

initiating a resynchronization between the storage object and a replicated storage object of a secondary storage cluster based on the connection loss or failure with the resynchronization including initiating asynchronous inflight tracking and replay for reconciliation of any missing I/O operations that are missing from one of a first Op log of the primary storage cluster and a second Op log of the secondary storage cluster and performing a dependency check to determine any dependencies between Ops for any I/O operations being replayed from the primary storage cluster; and

allowing new I/O operations to be handled with the storage object of the primary storage cluster just after asynchronous inflight tracking and replay processes pendings Ops at the primary storage cluster without waiting for completion of the asynchronous inflight tracking and replay including receiving responses from the secondary storage cluster.

2. The computer implemented method of claim 1 , further comprising:

performing the dependency check with a dependent graph manager at a volume level barrier for any missing I/O operations that are issued during the asynchronous inflight tracking and replay; and

populating a tracking data structure of the dependent graph manager during the dependency check.

3. The computer implemented method of claim 1 , further comprising:

performing the dependency check with a dependent graph manager at a file system object barrier level for any missing I/O operations that are issued during the asynchronous inflight tracking and replay; and

populating a tracking data structure of the dependent graph manager during the dependency check.

4. The computer implemented method of claim 3 , wherein the tracking data structure of the dependent graph manager is configured to track in flight Ops, Ops completed at the secondary storage cluster, and Ops waiting for dependencies to be satisfied.

5. The computer implemented method of claim 1 , further comprising:

performing an overlap conflict check of any storage object to be modified by any missing I/O operations and also be modified by an inflight Op with an overlap write manager; and

populating a tracking data structure of the overlap write manager during the overlap conflict check.

6. The computer implemented method of claim 5 , wherein the tracking data structure of the overlap write manager is configured to track in flight Ops, Ops completed at the secondary storage cluster, and Ops waiting for dependencies to be satisfied.

7. The computer implemented method of claim 1 , wherein the new I/O operations are allowed to be handled with the storage object of the primary storage cluster without waiting for replay Ops to complete at the secondary storage cluster.

8. A non-transitory computer-readable storage medium embodying a set of instructions, which when executed by a processing resource of a storage node cause the processing resource to:

temporarily disallow input/output (I/O) operations for a storage object of the storage node of a primary storage cluster when the storage object of the primary storage cluster has a connection loss or failure;

initiating a resynchronization between the storage object and a replicated storage object of a secondary storage cluster based on the connection loss or failure with the resynchronization including initiating asynchronous inflight tracking and replay for reconciliation of any missing I/O operations that are missing from one of a first Op log of the primary storage cluster and a second Op log of the secondary storage cluster and performing a dependency check to determine any dependencies between Ops for any I/O operations being replayed from the primary storage cluster; and

allowing new I/O operations to be handled with the storage object of the primary storage cluster just after asynchronous inflight tracking and replay processes pendings Ops at the primary storage cluster without waiting for completion of the asynchronous inflight tracking and replay including receiving responses from the secondary storage cluster.

9. The non-transitory computer-readable storage medium of claim 8 , wherein the instructions when executed by the processing resource cause the processing resource to:

perform the dependency check with a dependent graph manager at a volume level barrier for any missing I/O operations that are issued during the asynchronous inflight tracking and replay; and

populate a tracking data structure of the dependent graph manager during the dependency check.

10. The non-transitory computer-readable storage medium of claim 8 , wherein the instructions when executed by the processing resource cause the processing resource to:

perform the dependency check with a dependent graph manager at a file system object barrier level for any missing I/O operations that are issued during the asynchronous inflight tracking and replay; and

populate a tracking data structure of the dependent graph manager during the dependency check.

11. The non-transitory computer-readable storage medium of claim 10 , wherein the tracking data structure of the dependent graph manager is configured to track in flight Ops, Ops completed at the secondary storage cluster, and Ops waiting for dependencies to be satisfied.

12. The non-transitory computer-readable storage medium of claim 8 , wherein the instructions when executed by the processing resource cause the processing resource to:

perform an overlap conflict check of any storage object to be modified by any missing I/O operations and also to be modified by an inflight Op with an overlap write manager; and

populate a tracking data structure of the overlap write manager during the overlap conflict check.

13. The non-transitory computer-readable storage medium of claim 12 , wherein the tracking data structure of the overlap write manager is configured to track in flight Ops, Ops completed at the secondary storage cluster, and Ops waiting for dependencies to be satisfied.

14. The non-transitory computer-readable storage medium of claim 8 , wherein the new I/O operations are allowed to be handled with the storage object of the primary storage cluster without waiting for replay Ops to complete at the secondary storage cluster.

15. A storage node of a primary storage cluster, comprising:

a processing resource; and

a non-transitory computer-readable medium coupled to the processing resource, having stored therein instructions, which when executed by the processing resource cause the processing resource to:

temporarily disallow input/output (I/O) operations for a storage object of the storage node of a primary storage cluster when the storage object of the primary storage cluster has a connection loss or failure;

initiate a resynchronization between the storage object and a replicated storage object of a secondary storage cluster based on the connection loss or failure with the resynchronization including initiating asynchronous inflight tracking and replay for reconciliation of any missing I/O operations that are missing from one of a first Op log of the primary storage cluster and a second Op log of the secondary storage cluster;

perform a dependency check to determine any dependencies between Ops for any I/O operations being replayed from the primary storage cluster; and

allow new I/O operations to be handled with the storage object of the primary storage cluster just after asynchronous inflight tracking and replay processes pendings Ops at the primary storage cluster without waiting for completion of the asynchronous inflight tracking and replay including receiving responses from the secondary storage cluster.

16. The storage node of claim 15 , wherein the instructions when executed by the processing resource cause the processing resource to:

perform the dependency check with a dependent graph manager at a volume level barrier for any missing I/O operations that are issued during the persistent inflight tracking replay; and

populate a tracking data structure of the dependent graph manager during the dependency check.

17. The storage node of claim 15 , wherein the instructions when executed by the processing resource cause the processing resource to:

perform the dependency check with a dependent graph manager at a file system object barrier level for any missing I/O operations that are issued during the asynchronous inflight tracking and replay; and

populate a tracking data structure of the dependent graph manager during the dependency check, wherein the tracking data structure of the dependent graph manager is configured to track in flight Ops, Ops completed at the secondary storage cluster, and Ops waiting for dependencies to be satisfied.

18. The storage node of claim 15 , wherein the instructions when executed by the processing resource cause the processing resource to:

perform an overlap conflict check of any storage object to be modified by any missing I/O operations and inflight Ops with an overlap write manager for any missing I/O operations that are issued during the asynchronous inflight tracking and replay; and

populate a tracking data structure of the overlap write manager during the overlap conflict check, wherein the tracking data structure of the overlap write manager is configured to track in flight Ops, Ops completed at the secondary storage cluster, and Ops waiting for dependencies to be satisfied.

19. The storage node of claim 15 , wherein the new I/O operations are allowed to be handled with the storage object of the primary storage cluster without waiting for replay Ops to complete at the secondary storage cluster.

20. The storage node of claim 15 , wherein the instructions when executed by the processing resource cause the processing resource to:

maintain a count of a number of Ops in the asynchronous inflight tracking replay;

create an identifier for each Op being replayed;

increment a count for each Op being replayed;

decrement the count for each Op that completes the asynchronous inflight tracking and replay;

until the count becomes zero, subject read Ops to overlap range manager and dependent graph manager checks; and

determine if an incoming read Op is conflicting with Ops pending in the asynchronous inflight tracking and replay.

Continuity (2)
Continuation 17861768 · Jul 11, 2022
Related Publication 20240168671A1 · May 23, 2024
References Cited (133)
US 5742792A · Yanai et al. · 1998 [cited by applicant]
US 6163856A · Dion et al. · 2000 [cited by applicant]
US 6389551B1 · Yount · 2002 [cited by applicant]
US 6415372B1 · Zakai et al. · 2002 [cited by applicant]
US 6732124B1 · Koseki et al. · 2004 [cited by applicant]
US 7039827B2 · Meyer et al. · 2006 [cited by applicant]
US 7475204B2 · Buah et al. · 2009 [cited by applicant]
US 7500014B1 · Jacobson et al. · 2009 [cited by applicant]
US 7631066B1 · Schatz et al. · 2009 [cited by applicant]
US 7640451B2 · Meyer et al. · 2009 [cited by applicant]
US 7890626B1 · Gadir · 2011 [cited by applicant]
US 8335761B1 · Natanzon · 2012 [cited by applicant]
US 8498967B1 · Chatterjee et al. · 2013 [cited by applicant]
US 8645623B1 · O'Shea et al. · 2014 [cited by applicant]
US 8856583B1 · Visser et al. · 2014 [cited by applicant]
US 8874960B1 · Khan et al. · 2014 [cited by applicant]
US 9189341B1 · Natanzon et al. · 2015 [cited by applicant]
US 9875042B1 · Natanzon et al. · 2018 [cited by applicant]
US 10412066B1 · Vemuri · 2019 [cited by applicant]
US 10489230B1 · Chen et al. · 2019 [cited by applicant]
US 10496320B2 · Eisler et al. · 2019 [cited by applicant]
US 10725691B1 · Kaushik et al. · 2020 [cited by applicant]
US 10761768B1 · Kaushik et al. · 2020 [cited by applicant]
US 11036423B2 · Kaushik et al. · 2021 [cited by applicant]
US 11089105B1 · Karumbunathan et al. · 2021 [cited by applicant]
US 11327857B2 · Bhargava et al. · 2022 [cited by applicant]
US 11360867B1 · Subramanian et al. · 2022 [cited by applicant]
US 11409622B1 · Kaushik et al. · 2022 [cited by applicant]
US 11481139B1 · Vijayan et al. · 2022 [cited by applicant]
US 11537314B1 · Subramanian et al. · 2022 [cited by applicant]
US 11593016B2 · Kaushik et al. · 2023 [cited by applicant]
US 11853589B2 · Narasingarayanapeta · 2023 [cited by applicant]
US 11893261B2 · Narasingarayanapeta · 2024 [cited by applicant]
US 11907562B2 · Narasingarayanapeta · 2024 [cited by applicant]
US 11928352B2 · Narasingarayanapeta · 2024 [cited by applicant]
US 20020132613A1 · Leung et al. · 2002 [cited by applicant]
US 20040153719A1 · Achiwa et al. · 2004 [cited by applicant]
US 20040267809A1 · East et al. · 2004 [cited by applicant]
US 20050229034A1 · Fujibayashi · 2005 [cited by applicant]
US 20050270855A1 · Earhart et al. · 2005 [cited by applicant]
US 20060095478A1 · Cherkauer et al. · 2006 [cited by applicant]
US 20060136354A1 · Bell et al. · 2006 [cited by applicant]
US 20060236048A1 · Deguchi et al. · 2006 [cited by applicant]
US 20070016754A1 · Testardi · 2007 [cited by applicant]
US 20070180307A1 · Zohar et al. · 2007 [cited by applicant]
US 20070234006A1 · Radulescu et al. · 2007 [cited by applicant]
US 20080201702A1 · Bunn · 2008 [cited by applicant]
US 20090043979A1 · Jarvis · 2009 [cited by applicant]
US 20090070528A1 · Bartfai et al. · 2009 [cited by applicant]
US 20090089609A1 · Baba · 2009 [cited by applicant]
US 20090307530A1 · Tarta · 2009 [cited by applicant]
US 20100064168A1 · Smoot et al. · 2010 [cited by applicant]
US 20100082962A1 · Srinivasan et al. · 2010 [cited by applicant]
US 20100161554A1 · Datuashvili et al. · 2010 [cited by applicant]
US 20110106855A1 · Resch et al. · 2011 [cited by applicant]
US 20110314148A1 · Petersen et al. · 2011 [cited by applicant]
US 20120151249A1 · Swan et al. · 2012 [cited by applicant]
US 20130159620A1 · Sakashita et al. · 2013 [cited by applicant]
US 20130254590A1 · Chercoles Sanchez et al. · 2013 [cited by applicant]
US 20140298136A1 · Resch et al. · 2014 [cited by applicant]
US 20150006949A1 · Bittles et al. · 2015 [cited by applicant]
US 20150058838A1 · Tsirkin · 2015 [cited by applicant]
US 20150169414A1 · Lalsangi et al. · 2015 [cited by applicant]
US 20160077917A1 · Battepati et al. · 2016 [cited by applicant]
US 20160110378A1 · Mu · 2016 [cited by examiner]
US 20160366226A1 · Friedman et al. · 2016 [cited by applicant]
US 20170093983A1 · Everhart et al. · 2017 [cited by applicant]
US 20180246658A1 · Bretschneider · 2018 [cited by examiner]
US 20180260125A1 · Botes et al. · 2018 [cited by applicant]
US 20180352032A1 · Liu et al. · 2018 [cited by applicant]
US 20190004908A1 · Gopinath et al. · 2019 [cited by applicant]
US 20190034286A1 · Brown et al. · 2019 [cited by applicant]
US 20190212924A1 · Ward et al. · 2019 [cited by applicant]
US 20190229978A1 · Rajvaidya et al. · 2019 [cited by applicant]
US 20190347352A1 · Gochkov et al. · 2019 [cited by applicant]
US 20190394266A1 · Fukuyama et al. · 2019 [cited by applicant]
US 20200027898A1 · Paul et al. · 2020 [cited by applicant]
US 20200034258A1 · Avraham et al. · 2020 [cited by applicant]
US 20200035627A1 · Iguchi et al. · 2020 [cited by applicant]
US 20200050495A1 · Voutilainen et al. · 2020 [cited by applicant]
US 20200050587A1 · Kaushik et al. · 2020 [cited by applicant]
US 20200081801A1 · Brown et al. · 2020 [cited by applicant]
US 20200125460A1 · Selvaraj et al. · 2020 [cited by applicant]
US 20200133520A1 · Patnaik et al. · 2020 [cited by applicant]
US 20200137157A1 · Joseph et al. · 2020 [cited by applicant]
US 20200250151A1 · Yin et al. · 2020 [cited by applicant]
US 20200250171A1 · Yin et al. · 2020 [cited by applicant]
US 20200273984A1 · Nakano et al. · 2020 [cited by applicant]
US 20200278984A1 · Kaushik et al. · 2020 [cited by applicant]
US 20200301787A1 · Cabral et al. · 2020 [cited by applicant]
US 20200319982A1 · Rusev et al. · 2020 [cited by applicant]
US 20210165573A1 · Demoor et al. · 2021 [cited by applicant]
US 20210303165A1 · Kaushik et al. · 2021 [cited by applicant]
US 20210374157A1 · Reddy et al. · 2021 [cited by applicant]
US 20220019350A1 · Karr · 2022 [cited by applicant]
US 20220121533A1 · Kumar et al. · 2022 [cited by applicant]
US 20220374321A1 · Kaushik et al. · 2022 [cited by applicant]
US 20230110776A1 · Subramanian et al. · 2023 [cited by applicant]
US 20230121272A1 · Subramanian et al. · 2023 [cited by applicant]
US 20230168834A1 · Narasingarayanapeta · 2023 [cited by applicant]
US 20240160374A1 · Narasingarayanapeta · 2024 [cited by applicant]
Corrected Notice of Allowance mailed on Nov. 8, 2023 for U.S. Appl. No. 18/158,957, filed Jan. 24, 2023, 2 pages. [cited by applicant]
Final Office Action mailed May 20, 2024 for U.S. Appl. No. 18/158,947, filed Jan. 24, 2023, 13 pages. [cited by applicant]
Non-Final Office Action mailed on Feb. 1, 2024 for U.S. Appl. No. 18/158,947, filed Jan. 24, 2023, 11 pages. [cited by applicant]
Non-Final Office Action mailed on Feb. 17, 2023 for U.S. Appl. No. 17/510,795, filed Oct. 26, 2021, 11 pages. [cited by applicant]
Notice of Allowance mailed Aug. 14, 2023 for U.S. Appl. No. 18/158,957, filed Jan. 24, 2023, 08 pages. [cited by applicant]
Notice of Allowance mailed Dec. 13, 2022 for U.S. Appl. No. 17/219,815, filed Mar. 31, 2021. [cited by applicant]
Notice of Allowance mailed Jun. 28, 2023 for U.S. Appl. No. 18/158,947, filed Jan. 24, 2023, 8 pages. [cited by applicant]
Notice of Allowance mailed Nov. 2, 2022 for U.S. Appl. No. 17/495,990, filed Oct. 7, 2021,8 pages. [cited by applicant]
Notice of Allowance mailed Nov. 18, 2022 for U.S. Appl. No. 17/219,812, filed Mar. 31, 2021, 12 pages. [cited by applicant]
Notice of Allowance mailed Oct. 31, 2022 for U.S. Appl. No. 17/219,812, filed Mar. 31, 2021, 9 pages. [cited by applicant]
Notice of Allowance mailed on Aug. 5, 2024 for U.S. Appl. No. 18/158,947, filed Jan. 24, 2023, 08 pages. [cited by applicant]
Notice of Allowance mailed on Feb. 8, 2024 for U.S. Appl. No. 17/510,795, filed Oct. 26, 2021, 02 pages. [cited by applicant]
Notice of Allowance mailed on Jan. 2, 2024 for U.S. Appl. No. 17/510,788, filed Oct. 26, 2021, 02 pages. [cited by applicant]
Notice of Allowance mailed on Jan. 19, 2024 for U.S. Appl. No. 17/861,768, filed Jul. 11, 2022, 03 pages. [cited by applicant]
Notice of Allowance mailed on Jul. 7, 2023 for U.S. Appl. No. 17/510,795, filed Oct. 26, 2021, 08 pages. [cited by applicant]
Notice of Allowance mailed on Jul. 26, 2023 for U.S. Appl. No. 17/510,795, filed Oct. 26, 2021, 3 pages. [cited by applicant]
Notice of Allowance mailed on Jun. 14, 2023 for U.S. Appl. No. 17/505,962, filed Oct. 20, 2021, 8 pages. [cited by applicant]
Notice of Allowance mailed on Jun. 20, 2023 for U.S. Appl. No. 17/510,788, filed Oct. 26, 2021, 7 pages. [cited by applicant]
Notice of Allowance mailed on Nov. 17, 2023 for U.S. Appl. No. 18/158,957, filed Jan. 24, 2023, 2 pages. [cited by applicant]
Notice of Allowance mailed on Oct. 6, 2023 for U.S. Appl. No. 17/861,768, filed Jul. 11, 2022, 09 pages. [cited by applicant]
Notice of Allowance mailed on Oct. 12, 2023 for U.S. Appl. No. 17/510,795, filed Oct. 26, 2021, 7 pages. [cited by applicant]
Notice of Allowance mailed on Oct. 19, 2023 for U.S. Appl. No. 17/861,768, filed Jul. 11, 2022, 2 pages. [cited by applicant]
Notice of Allowance mailed on Oct. 19, 2023 for U.S. Appl. No. 18/158,947, filed Jan. 24, 2023, 8 pages. [cited by applicant]
Notice of Allowance mailed on Oct. 25, 2023 for U.S. Appl. No. 17/510,795, filed Oct. 26, 2021, 2 pages. [cited by applicant]
Notice of Allowance mailed on Sep. 28, 2023 for U.S. Appl. No. 17/510,788, filed Oct. 26, 2021, 07 pages. [cited by applicant]
Pan L, “Paxos at Its Heart is Very Simple,” Distributed System, 2018, Retrieved From : URL: https://blog.the-pans.com/paxos-explained/, pp. 1-12. [cited by applicant]
U.S. Non-Final Office action dated Dec. 21, 2021 in U.S. Appl. No. 17/238,829, filed Apr. 23, 2021, 20 pages. [cited by applicant]
U.S. Notice of Allowance dated Apr. 6, 2022 in U.S. Appl. No. 17/238,829, filed Apr. 23, 2021, 9 pages. [cited by applicant]
U.S. Notice of Allowance mailed Jun. 24, 2022 in U.S. Appl. No. 17/219,816, filed Mar. 31, 2021, 8 pages. [cited by applicant]
U.S. Notice of Allowance mailed May 6, 2022 in U.S. Appl. No. 17/219,746, filed Mar. 31, 2021, 18 pages. [cited by applicant]
U.S. Notice of Allowance mailed Oct. 26, 2022 in U.S. Appl. No. 17/219,812, filed Mar. 31, 2021, 9 pages. [cited by applicant]
Non-Final Office Action mailed on Dec. 6, 2024 for U.S. Appl. No. 18/421,649, filed Jan. 24, 2024, 06 pages. [cited by applicant]
Cited By (1)
US 12,436,707