IP Library Granted Patent US 10,264,065
Granted Patent B2
US 10,264,065 · App. 15/252,465 · Granted Apr 16, 2019

Application aware input/output fencing

Inventors: Jai Gahlot (Pune, IN); Abhijit Toley (Pune, IN)
Assignee: Veritas Technologies LLC
H04L67/1034G06F11/2005G06F11/2028G06F17/30563H04L41/082H04L67/1097H04L41/0668H04L41/0859
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,264,065
App. No.
15/252,465
Granted
Apr 16, 2019
Kind
B2
Abstract

Disclosed herein are methods, systems, and processes to perform application aware input/output (I/O) fencing operations. A determination is made that a cluster has been partitioned. The cluster includes multiple nodes. As a result of the partitioning, the nodes are split between a first network partition with a first set of nodes and a second network partition with a second set of nodes. Another determination is made that instances of an application are executing on the first set of nodes and the second set of nodes. An application aware I/O fencing operation is then performed that causes termination of instances of the application executing on the first set of nodes or on the second set of nodes.

Claims (106)

1. A method comprising:

determining that a cluster has been partitioned, wherein

the cluster comprises a plurality of nodes,

each of a plurality of application instances of an application are executing on a corresponding one of the plurality of nodes,

as a result of the partitioning, the plurality of nodes are split into a plurality of network partitions, and

the plurality of network partitions comprise

a first network partition, comprising a first set of nodes of the plurality of nodes, and

a second network partition, comprising a second set of nodes of the plurality of nodes;

determining whether at least one application instance of the plurality of application instances is executing on at least one of the first set of nodes and at least one other application instance of the plurality of application instances is executing on at least one of the second set of nodes; and

in response to a determination that the at least one application instance of the plurality of application instances is executing on at least one of the first set of nodes and at least one other application instance of the plurality of application instances is executing on at least one of the second set of nodes, performing an application fencing operation, wherein

the application fencing operation causes termination of

the at least one application instance, or

the at least one other application instance, and

the application fencing operation does not prevent the first set of nodes or the second set of nodes from continuing to operate.

2. The method of claim 1 , further comprising:

performing a fencing race, wherein

the performing the fencing race comprises, at least in part,

accessing an application weight matrix, wherein

the application weight matrix comprises a weight assigned to each application instance of the application, and

comparing a first total application weight for the first set of nodes and a second total application weight for the second set of nodes, wherein

the first total application weight is a total of an application weight of each application instance executing on the first set of nodes, and

the second total application weight is a total of an application weight of each application instance executing on the second set of nodes.

3. The method of claim 2 , further comprising:

bypassing the fencing race, if all of the plurality of application instances are executing on the first set of nodes or on the second set of nodes; and

broadcasting a message to one or more nodes on which one or more remaining application instances of the plurality of application instances are executing.

4. The method of claim 2 , further comprising:

determining whether the first total application weight is greater than the second total application weight.

5. The method of claim 4 , wherein performing the fencing race further comprises:

uninstalling a registration key associated with each instance of the application executing on the second set of nodes in the second network partition from one or more coordination points.

6. The method of claim 5 , further comprising:

determining whether the first total application weight is lesser than the second total application weight; and

based on the determining whether the first total application weight is lesser than the second total application weight, performing the fencing race after a delay.

7. The method of claim 6 , wherein

the delay is based on a time required for a second racer node to perform another fencing race, wherein

the second set of nodes comprises the second racer node.

8. A non-transitory computer-readable storage medium storing program instructions executable to:

determine that a cluster has been partitioned, wherein

the cluster comprises a plurality of nodes,

each of a plurality of application instances of an application are executing on a corresponding one of the plurality of nodes,

as a result of the partitioning, the plurality of nodes are split into a plurality of network partitions, and

the plurality of network partitions comprise

a first network partition, comprising a first set of nodes of the plurality of nodes, and

a second network partition, comprising a second set of nodes of the plurality of nodes;

determine whether at least one application instance of the plurality of application instances is executing on at least one of the first set of nodes and at least one other application instance of the plurality of application instances is executing on at least one of the second set of nodes; and

in response to a determination that the at least one application instance of the plurality of application instances is executing on at least one of the first set of nodes and at least one other application instance of the plurality of application instances is executing on at least one of the second set of nodes, perform an application fencing operation, wherein

the application fencing operation causes termination of

the at least one application instance, or

the at least one other application instance, and

the application fencing operation does not prevent the first set of nodes or the second set of nodes from continuing to operate.

9. The non-transitory computer-readable storage medium of claim 8 , wherein the program instructions are further executable to:

perform a fencing race, wherein

the fencing race performed comprises, at least in part,

accessing an application weight matrix, wherein

the application weight matrix comprises a weight assigned to each application instance of the application, and

comparing a first total application weight for the first set of nodes and a second total application weight for the second set of nodes, wherein

the first total application weight is a total of an application weight of each application instance executing on the first set of nodes, and

the second total application weight is a total of an application weight of each application instance executing on the second set of nodes.

10. The non-transitory computer-readable storage medium of claim 9 , wherein the program instructions are further executable to:

bypass the fencing race, if all of the plurality of application instances are executing on the first set of nodes or on the second set of nodes; and

broadcast a message to one or more nodes on which one or more remaining application instances of the plurality of application instances are executing.

11. The non-transitory computer-readable storage medium of claim 9 , wherein the program instructions are further executable to:

determine whether the first total application weight is greater than the second total application weight.

12. The non-transitory computer-readable storage medium of claim 11 , wherein the program instructions to perform the fencing race further comprise program instructions to:

uninstall a registration key associated with each instance of the application executing on the second set of nodes in the second network partition from one or more coordination points.

13. The non-transitory computer-readable storage medium of claim 12 , wherein the program instructions are further executable to:

determine whether the first total application weight is lesser than the second total application weight; and

based on whether the first total application weight is lesser than the second total application weight, perform the fencing race after a delay.

14. The non-transitory computer-readable storage medium of claim 13 , wherein

the delay is based on a time required for a second racer node to perform another fencing race, wherein

the second set of nodes comprises the second racer node.

15. A system comprising:

one or more processors; and

a memory coupled to the one or more processors, wherein the memory stores program instructions executable by the one or more processors to

determine that a cluster has been partitioned, wherein the cluster comprises a plurality of nodes,

each of a plurality of application instances of an application are executing on a corresponding one of the plurality of nodes,

as a result of the partitioning, the plurality of nodes are split into a plurality of network partitions, and

the plurality of network partitions comprise

a first network partition, comprising a first set of nodes of the plurality of nodes, and

a second network partition, comprising a second set of nodes of the plurality of nodes,

a determine whether at least one application instance of the plurality of application instances is executing on at least one of the first set of nodes and at least one other application instance of the plurality of application instances is executing on at least one of the second set of nodes; and

in response to a determination that the at least one application instance of the plurality of application instances is executing on at least one of the first set of nodes and at least one other application instance of the plurality of application instances is executing on at least one of the second set of nodes, perform an application fencing operation, wherein

the application fencing operation causes termination of

the at least one application instance, or

the at least one other application instance, and

the application fencing operation does not prevent the first set of nodes or the second set of nodes from continuing to operate.

16. The system of claim 15 , wherein the program instructions are further executable to:

perform a fencing race, wherein

the fencing race performed comprises, at least in part,

accessing an application weight matrix, wherein

the application weight matrix comprises a weight assigned to each application instance of the application, and

comparing a first total application weight for the first set of nodes and a second total application weight for the second set of nodes, wherein

the first total application weight is a total of an application weight of each application instance executing on the first set of nodes, and

the second total application weight is a total of an application weight of each application instance executing on the second set of nodes.

17. The system of claim 16 , wherein the program instructions are further executable to:

bypass the fencing race, if all of the plurality of application instances are executing on the first set of nodes or on the second set of nodes; and

broadcast a message to one or more nodes on which one or more remaining application instances of the plurality of application instances are executing.

18. The system of claim 16 , wherein the program instructions are further executable to:

determine whether the first total application weight is greater than the second total application weight.

19. The system of claim 18 , wherein the program instructions to perform the fencing race further comprise program instructions to:

uninstall a registration key associated with each instance of the application executing on the second set of nodes in the second network partition from one or more coordination points.

20. The system of claim 19 , further comprising:

determine whether the first total application weight is lesser than the second total application weight on; and

based on whether the first total application weight is lesser than the second total application weight, perform the fencing race after a delay.

21. The system of claim 20 , wherein

the delay is based on a time required for a second racer node to perform another fencing race, wherein

the second set of nodes comprises the second racer node.

Assignments (10)
AMENDMENT NO. 1 TO PATENT SECURITY AGREEMENT Recorded Apr 8, 2025
From: VERITAS TECHNOLOGIES LLC; COHESITY, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 070779/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 26, 2025
From: VERITAS TECHNOLOGIES LLC
To: COHESITY, INC.
Reel/Frame 070335/0013 →
RELEASE OF SECURITY INTEREST Recorded Dec 13, 2024
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 069634/0584 →
RELEASE OF SECURITY INTEREST Recorded Dec 13, 2024
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 069632/0613 →
SECURITY INTEREST Recorded Dec 9, 2024
From: VERITAS TECHNOLOGIES LLC; COHESITY, INC.
To: JPMORGAN CHASE BANK. N.A.
Reel/Frame 069890/0001 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS AT R/F 052426/0001 Recorded Nov 30, 2020
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 054535/0565 →
SECURITY INTEREST Recorded Aug 20, 2020
From: VERITAS TECHNOLOGIES LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 054370/0134 →
PATENT SECURITY AGREEMENT SUPPLEMENT Recorded Apr 16, 2020
From: VERITAS TECHNOLOGIES, LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 052426/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 16, 2017
From: GAHLOT, JAI; TOLEY, ABHIJIT
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 043870/0133 →
PATENT SECURITY AGREEMENT Recorded Nov 23, 2016
From: VERITAS TECHNOLOGIES LLC
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 040679/0466 →
Priority Claims (1)
IN 201621022438 · Jun 30, 2016 · national
Continuity (1)
Related Publication 20180004613A1 · Jan 4, 2018