IP Library Granted Patent US 7,778,157
Granted Patent B1
US 7,778,157 · App. 11/731,854 · Granted Aug 17, 2010

Port identifier management for path failover in cluster environments

Assignee: Symantec Operating Corporation
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 7,778,157
App. No.
11/731,854
Granted
Aug 17, 2010
Kind
B1
Abstract

A method includes assigning a port identifier to a first port on a node and communicating data on a first path between the first port and a logical unit on an active/passive storage array. The port identifier is registered in a persistent reservation scheme for the logical unit. The method also includes detecting a failure of the first path, de-assigning the port identifier from the first port, assigning the port identifier to a second port on the first node, and resuming communications between the node and the logical unit. One implementation of a system includes a first port configured to communicate with a storage device, a second port configured to communicate with the storage device, and an identifier management block. The identifier management block executes a failover with N_Port ID Virtualization commands that transfer a world wide port name from the first port to the second port.

Claims (108)

1. A method comprising:

assigning a port identifier to a first port among a plurality of ports on a first node, wherein the first node is a member of a cluster of nodes;

registering the port identifier as a permitted port identifier for communicating with a storage unit, wherein

the registering comprises storing a port identifier registration in a storage system,

the storage system comprises the storage unit,

the storage unit is communicatively coupled to the cluster,

the storage unit comprises an active/passive (A/P) storage array, and

the A/P storage array comprises a storage controller;

detecting a failure of a first path that couples the first port to the storage unit;

determining whether a single-node failover would cause a trespass onto the storage controller;

in response to a determination that a single-node failover would cause a trespass onto the storage controller,

de-assigning the port identifier from the first port on the first node, wherein

the port identifier registration is preserved in the storage system during the de-assigning, and

assigning the port identifier to a second port among the plurality of ports on the first node.

2. The method of claim 1 , further comprising:

detecting a failure of a first path that couples the first port to the storage unit; wherein the de-assigning and the assigning the port identifier to the second port are performed in response to the detecting the failure;

examining a location of the failure with regard to a topology of network paths, wherein the network paths couple the storage unit with nodes in the cluster of nodes;

in response to the examining the location of the failure, determining whether a single-node failover is adequate to address the failure; and

in response to a determination that a single-node failover is not adequate to address the failure, updating port assignments in each node in the cluster other than the first node.

3. The method of claim 2 , further comprising:

preserving a port identifier registration for the port identifier on the storage unit.

4. The method of claim 1 , further comprising:

prior to the de-assigning, communicating data between the first port and the storage unit through a first path that couples the first port to the storage unit; and

after the de-assigning, communicating data between the second port and the storage unit through a second path that couples the second port to the storage unit.

5. The method of claim 1 , wherein the registering comprises:

recording a registration key as a permitted registration key for the storage unit, wherein the registration key corresponds to the port identifier.

6. The method of claim 1 , wherein the storage unit is comprised in a storage array.

7. The method of claim 2 , wherein the storage unit comprises a logical unit in an active/passive (A/P) storage array, and the determining whether a single-node failover is adequate to address the failure comprises:

determining whether a single-node failover would cause a trespass onto a passive storage controller in the A/P storage array.

8. The method of claim 7 , wherein the first port comprises a host bus adapter on the first node and the registering comprises:

recording a registration key in the A/P storage array as a permitted registration key for the logical unit, wherein the registration key corresponds to the port identifier.

9. The method of claim 1 , wherein the assigning the port identifier to the second port is performed prior to the de-assigning, the method further comprising:

communicating data between the first port and the storage unit through a first path that couples the first port to the storage unit;

detecting a failure of the first path, wherein the de-assigning and the assigning the port identifier to the second port are performed in response to the detecting the failure;

examining the failure;

in response to the examining, determining that a single-node failover is adequate to address the failure; and

after the de-assigning, communicating data between the second port and the storage unit through a second path that couples the second port to the storage unit.

10. The method of claim 1 , further comprising:

communicating data between the first port and the storage unit through a first path that couples the first port to the storage unit;

detecting a failure of the first path, wherein the de-assigning and the assigning the port identifier to the second port are performed in response to the detecting the failure;

examining the failure;

in response to the examining, determining that a cluster-wide failover is necessary to address the failure; and

after the de-assigning, communicating data between the second port and the storage unit through a second path that couples the second port to the storage unit.

11. The method of claim 10 , further comprising:

alerting a master node in the cluster of the failure;

transmitting from the master node, to each node in the cluster, an instruction to perform a failover for the storage unit, wherein the de-assigning and the assigning the port identifier to the second port are performed in response to the instruction; and

in response to said transmitting, for each additional node in the cluster other than the first node:

de-assigning a port identifier associated with the additional node from a first port on the additional node, and

assigning the port identifier associated with the additional node to a second port on the additional node.

12. A system comprising:

a first port configured to communicate with a storage unit;

a first memory, coupled to the first port and configured to store a first set of data for the first port, wherein

the first set of data comprises a first port identifier,

the first port identifier is recorded in a registration at the storage unit,

the storage unit comprises an active/passive (A/P) storage array, and

the A/P storage array comprises a storage controller;

a second port configured to communicate with the storage unit;

a second memory, coupled to the second port and configured to store a second set of data for the second port;

an identifier management block, coupled to the first and second memories and configured to respond to a failover instruction by

revising, based at least in part on a determination that a single-node failover would cause a trespass onto the storage controller, the first and second sets of data, wherein the revising comprises assigning the first port identifier in the second set of data, maintaining the first port identifier in the registration at the storage unit, and

de-assigning the first port identifier from the first set of data.

13. The system of claim 12 , wherein the storage unit comprises a logical unit in the A/P storage array.

14. The system of claim 13 , wherein the first port comprises a first host bus adapter comprising the first memory, the second port comprises a second host bus adapter comprising the second memory, the first port identifier comprises a first world wide port number (WWPN), and the identifier management block is configured to transmit N_Port ID Virtualization (NPIV) commands to the first and second host bus adapters to revise WWPN data in the first and second memories.

15. The system of claim 12 , wherein the system comprises a node in a cluster and the identifier management block is configured to respond to a cluster-wide failover message from a master node in the cluster.

16. A computer readable medium comprising:

a non-transitory computer-readable storage medium; and

computer-readable instructions encoded on the computer-readable storage medium, wherein the computer readable instructions are executable on at least one processor and comprise instructions for

assigning a port identifier to a first port among a plurality of ports on a first node, wherein the first node is a member of a cluster of nodes,

registering the port identifier as a permitted port identifier for communicating with a storage unit, wherein

the registering comprises storing a port identifier registration in a storage system,

the storage system comprises the storage unit,

the storage unit is communicatively coupled to the cluster,

the storage unit comprises an active/passive (A/P) storage array, and

the A/P storage array comprises a storage controller,

detecting a failure of a first path that couples the first port to the storage unit,

determining whether a single-node failover would cause a trespass onto the storage controller,

in response to a determination that a single-node failover would cause a trespass onto the storage controller,

de-assigning the port identifier from the first port on the first node, wherein

the port identifier registration is preserved in the storage system during the de-assigning, and

assigning the port identifier to a second port among the plurality of ports on the first node.

17. The computer readable medium of claim 16 , wherein the computer-readable storage medium is an optical disk storage medium.

18. The computer readable medium of claim 16 , wherein the first port comprises a first host bus adapter, the second port comprises a second host bus adapter, the storage unit comprises a logical unit in an active/passive (A/P) storage array, the port identifier comprises a world wide port number (WWPN) recorded in the A/P storage array as a permitted identifier for the logical unit, the assigning comprises transmitting an N_Port ID Virtualization (NPIV) command to the second host bus adapter, and the computer-readable instructions comprise instructions for:

prior to the de-assigning, communicating data between the first port and the storage unit through a first path that couples the first port to the storage unit;

detecting a failure of a first path that couples the first port to the storage unit; wherein the de-assigning and the assigning the port identifier to the second port are performed in response to the detecting the failure; and

examining the failure.

19. The computer readable medium of claim 18 , wherein the computer-readable instructions comprise instructions for:

preserving a port identifier registration for the port identifier on the storage unit.

20. The computer readable medium of claim 18 , wherein the computer-readable instructions comprise instructions for:

in response to the examining, determining that a single-node failover is adequate to address the failure; and

after the de-assigning, communicating data between the second port and the storage unit through a second path that couples the second port to the storage unit.

21. The computer readable medium of claim 18 , wherein the computer-readable instructions comprise instructions for:

in response to the examining, determining that a cluster-wide failover is necessary to address the failure;

alerting a master node in the cluster of the failure;

transmitting from the master node, to each node in the cluster, an instruction to perform a failover for the storage unit, wherein the de-assigning and the assigning the port identifier to the second port are performed in response to the instruction; and

after the de-assigning, communicating data between the second port and the storage unit through a second path that couples the second port to the storage unit.

22. A system comprising:

means for assigning a port identifier to a first port among a plurality of ports on a first node, wherein the first node is a member of a cluster of nodes;

means for registering the port identifier as a permitted port identifier for communicating with a storage unit, wherein

the registering comprises storing a port identifier registration in a storage system,

the storage system comprises the storage unit,

the storage unit is communicatively coupled to the cluster,

the storage unit comprises an active/passive (A/P) storage array, and

the A/P storage array comprises a storage controller;

means for detecting a failure of a first path that couples the first port to the storage unit;

means for determining whether a single-node failover would cause a trespass onto the storage controller;

means for, in response to a determination that a single-node failover would cause a trespass onto the storage controller, de-assigning the port identifier from the first port on the first node, wherein

the port identifier registration is preserved in the storage system during the de-assigning; and

means for assigning the port identifier to a second port among the plurality of ports on the first node.

Assignments (18)
CORRECTIVE ASSIGNMENT TO CORRECT THE CONVEYING PARTY DATA AND CORRECT THE PATENT NUMBERS PREVIOUSLY RECORDED AT REEL: 69548 FRAME: 468. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Feb 4, 2026
From: VERITAS TECHNOLOGIES LLC
To: ARCTERA US LLC
Reel/Frame 074876/0584 →
SECURITY INTEREST Recorded Dec 12, 2025
From: ARCTERA US LLC
To: CITIBANK, N.A., AS COLLATERAL AGENT
Reel/Frame 073951/0470 →
TERMINATION AND RELEASE OF PATENT SECURITY AGREEMENT AT R/F 069585/0150 Recorded Dec 1, 2025
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: ARCTERA US LLC
Reel/Frame 073833/0848 →
TERMINATION AND RELEASE OF PATENT SECURITY AGREEMENT AT R/F 070530/0497 Recorded Dec 1, 2025
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: ARCTERA US LLC
Reel/Frame 073833/0730 →
RELEASE OF SECURITY INTEREST Recorded Dec 16, 2024
From: ACQUIOM AGENCY SERVICES LLC, AS COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC (F/K/A VERITAS US IP HOLDINGS LLC)
Reel/Frame 069712/0090 →
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 →
PATENT SECURITY AGREEMENT Recorded Dec 10, 2024
From: ARCTERA US LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 069585/0150 →
SECURITY INTEREST Recorded Dec 10, 2024
From: ARCTERA US LLC
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 069563/0243 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2024
From: VERITAS TECHNOLOGIES LLC
To: ARCTERA US LLC
Reel/Frame 069548/0468 →
ASSIGNMENT OF SECURITY INTEREST IN PATENT COLLATERAL Recorded Nov 25, 2024
From: BANK OF AMERICA, N.A., AS ASSIGNOR
To: ACQUIOM AGENCY SERVICES LLC, AS ASSIGNEE
Reel/Frame 069440/0084 →
TERMINATION AND RELEASE OF SECURITY IN PATENTS AT R/F 037891/0726 Recorded Nov 30, 2020
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: VERITAS US IP HOLDINGS, LLC
Reel/Frame 054535/0814 →
SECURITY INTEREST Recorded Aug 20, 2020
From: VERITAS TECHNOLOGIES LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 054370/0134 →
MERGER AND CHANGE OF NAME Recorded Apr 18, 2016
From: VERITAS US IP HOLDINGS LLC; VERITAS TECHNOLOGIES LLC
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 038455/0752 →
SECURITY INTEREST Recorded Feb 23, 2016
From: VERITAS US IP HOLDINGS LLC
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 037891/0001 →
SECURITY INTEREST Recorded Feb 23, 2016
From: VERITAS US IP HOLDINGS LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 037891/0726 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 4, 2016
From: SYMANTEC CORPORATION
To: VERITAS US IP HOLDINGS LLC
Reel/Frame 037697/0412 →
CHANGE OF NAME Recorded Oct 1, 2007
From: VERITAS OPERATING CORPORATION
To: SYMANTEC OPERATING CORPORATION
Reel/Frame 019899/0213 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 30, 2007
From: TAWRI, DEEPAK; SINGH, ABHAY; KRISHNAMURTHY, RAGHU
To: VERITAS OPERATING CORPORATION
Reel/Frame 019200/0740 →