IP Library Granted Patent US 6,944,785
Granted Patent B2
US 6,944,785 · App. 09/911,902 · Granted Sep 13, 2005

High-availability cluster virtual server system

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 6,944,785
App. No.
09/911,902
Granted
Sep 13, 2005
Kind
B2
Abstract

Systems and methods, including computer program products, providing high-availability in server systems. In one implementation, a server system is cluster of two or more autonomous server nodes, each running one or more virtual servers. When a node fails, its virtual servers are migrated to one or more other nodes. Connectivity between nodes and clients is based on virtual IP addresses, where each virtual server has one or more virtual IP addresses. Virtual servers can be assigned failover priorities, and, in failover, higher priority virtual servers can be migrated before lower priority ones. Load balancing can be provided by distributing virtual servers from a failed node to multiple different nodes. When a port within a node fails, the node can reassign virtual IP addresses from the failed port to other ports on the node until no good ports remain and only then migrate virtual servers to another node or nodes.

Claims (99)

1. A file server system, comprising:

two or more nodes, each node configured to run two or more virtual servers, each virtual server having as exclusive resources a virtual interface to clients and one or more file systems, wherein an exclusive resource of a virtual server can be seen by the virtual server and not by another virtual server, and wherein the virtual interface comprises two or more virtual IP addresses.

2. The system of claim 1 , wherein the virtual interface comprises a virtual IP address.

3. The system of claim 1 , wherein clients access the file systems using NFS or CIFS protocols.

4. The system of claim 1 , further comprising failover computer program instructions operable to be executed to cause the system to:

detect a failure of a first node; and

migrate each virtual server on the first node to a different node in the system.

5. The system of claim 4 , wherein each virtual server has an associated failover priority, and the failover instructions further comprise instructions to:

migrate virtual servers in order of their respective priorities.

6. The system of claim 4 , wherein the failover instructions further comprise instructions to:

recognize a virtual server that is identified as not to be migrated in the event of node failure and prevent migration of a so-identified virtual servers when it is on a node that fails.

7. The system of claim 1 , further comprising rerouting computer program instructions operable to be executed to cause the system to:

detect a failure in a first subnet connected to a first node, the first node having a network connection to a first client;

identify a second node having a network connection to the first client and a connection over a second, different subnet to the first node;

use the second node as a router in response to the detected failure to route data between the first client and the first node.

8. The system of claim 7 , wherein before failure in the first subnet, the connection between the first client and the first node is through a first virtual IP address assigned to a port on the first node, the rerouting instructions further comprising instructions to:

migrate the first virtual IP address to a port on the second node connected to the second subnet.

9. The system of claim 1 , further comprising failover computer program instructions operable to be executed to cause the system to:

detect a failure of a physical port on a first node;

determine whether any other physical port on the first node is good;

migrate all virtual IP addresses associated with the failed physical port to a good physical port on the first node if there is such a good port; and

migrate all virtual IP addresses associated with the failed physical port along with all virtual servers attached to such virtual IP addresses to a different, second node if there is no such good port on the first node.

10. The system of claim 9 , wherein the failed physical port is on a first subnet and the good physical port is on a different, second subnet.

11. The system of claim 1 , wherein the system comprises load-balancing computer program instructions operable to be executed to cause the system to:

calculate a balanced distribution of the virtual server loads across the nodes of the system, excluding any failed nodes; and

perform load balancing by migrating one or more virtal servers from heavily loaded nodes to less heavily loaded nodes.

12. The system of claim 1 , further comprising computer program instructions operable to be executed on a first node to:

determine a load on each physical port on the first node; and

redistribute the virtual interfaces on the first node among the physical ports of the fist node for load balancing over the physical ports.

13. The system of claim 1 , further comprising computer program instructions operable to be executed to cause the system to:

detect an inability on a first node to access of shared storage unit; and

in response to detection of the inability to access the shared storage unit, migrate all virtual servers containing file systems on the shared storage unit to an alternative node that can access the storage unit if such an alternative node exists in the system.

14. The system of claim 11 , wherein the load-balancing instructions are further operable to determine a load on each virtual server.

15. The system of claim 11 , wherein the load-balancing instructions are further operable to determine a load on each physical server.

16. The system of claim 11 , wherein the nodes include a master node and the load-balancing instructions are operable to be executed on the master node.

17. The system of claim 11 , wherein the load-balancing instructions are operable to migrate a first virtual server and a second virtual server from a first node, the first virtual server being migrated to a second node of the system and the second virtual server being migrated to a different, third node of the system.

18. The system of claim 11 , wherein the load-balancing instructions are operable to balance system load as part of a failover process.

19. The system of claim 11 , wherein the load-balancing instructions are operable to balance system load independent of any failover occurring.

20. The system of claim 1 , further comprising computer program instructions operable to be executed to cause the system to:

detect without user intervention a file system degradation of a fist file system; and

block access to the first file system in response to the detection of the degradation, repair the first file system, and then permit access to the first file system, all without user intervention.

21. A file server system, comprising:

a node configured with a virtual server, the virtual server having two or more simultaneously active virtual IP addresses, the virtual server having as exclusive resources one or more file systems, wherein an exclusive resource of a virtual server can be seen by the virtual server and not by another virtual server.

22. The system of claim 21 , wherein the node is configured with a second virtual server having two or more other simultaneously active virtual IP addresses.

23. A file server system, comprising:

two or more nodes, each node being configured to run a virtual server having as exclusive resources a virtual IP address and one or more file systems, wherein an exclusive resource of the virtual server can be seen by the virtual server and not by another virtual server, and each node being configured with two or more physical ports;

wherein a first node is further configured to:

detect a failure of a physical port on the first node;

determine whether any other physical port on the first node is good;

migrate all virtual IP addresses associated with the filed physical port to a good physical port on the first node if there is such a good port; and

migrate all virtual IP addresses associated with the failed physical port along with all virtual servers attached to such virtual IP addresses to a different, second node if there is no such good port on the first node.

24. A computer program product, tangibly stored on a computer-readable medium, for execution in multiple nodes of a file server system cluster, comprising instructions operable to cause a programmable processor to:

detect a failure of a first node of the cluster, and

migrate each of multiple virtual servers on the first node to a different node in the cluster each virtual server having as exclusive resources one or more file systems, wherein an exclusive resource of a virtual server can be seen by the virtual server and not by another virtual server.

25. The product of claim 24 , further comprising instructions to:

migrate virtual servers in order of their respective priorities.

26. The product of claim 24 , further comprising instructions to:

recognize a virtual server that is identified as not to be migrated in the event of node failure and prevent migration of a so-identified virtual server when it is on a node that fails.

27. The product of claim 24 , comprising instructions to:

detect a failure in a first subnet connected to a first node, the first node having a network connection to a first client;

identify a second node having a network connection to the first client and a connection over a second, different subnet to the fist node;

use the second node as a router in response to the detected failure to route data between the first client and the first node.

28. The product of claim 24 , further comprising instructions to:

detect a failure of a physical port on a first node of the cluster;

determine whether any other physical port on the first node is good;

migrate all virtual IP addresses associated with the failed physical port to a good physical port on the first node if there is such a good port; and

migrate all virtual IP addresses associated with the failed physical port along with all virtual servers attached to such virtual IP addresses to a different, second node of the cluster if there is no such good port on the first node.

29. The product of claim 28 , wherein before failure in the first subnet, the connection between the first client and the first node is through a first virtual IP address assigned to a port on the first node, the rerouting instructions further comprising instructions to:

migrate the first virtual IP address to a port on the second node connected to the second subnet.

30. The product of claim 24 , further comprising load-balancing instructions to:

determine a load produced by each virtual server;

calculate a balanced distribution of the virtual server loads across the nodes of the server, excluding any failed nodes, and

perform load balancing by migrating one or more virtual servers from heavily loaded nodes to less heavily loaded nodes.

31. The system of claim 30 , when the nodes include a master node and the load-balancing instructions are operable to be executed on the master node.

32. The system of claim 30 , wherein the load-balancing instructions are operable to migrate a first virtual server and a second virtual server from a first node, the first virtual server being migrated to a second node of the system and the second virtual server being migrated to a different, third node of the system.

33. A computer program product, tangibly stored on a computer-readable medium, for execution in a node of a file server system cluster, the product comprising instructions operable to cause a programmable processor to:

detect a failure of a physical port on a first node of the cluster, wherein one or more virtual IP addresses are associated with the physical port, at least one of the one or more of the virtual IP addresses being an exclusive resource to a virtual server that includes as exclusive resources one or more file systems, wherein an exclusive resource of a virtual server can be seen by the virtual server and not by another virtual server;

determine whether any other physical port on the first node is good;

migrate all virtual IP addresses associated with the failed physical port to a good physical port on the first node if there is such a good port; and

migrate all virtual IP addresses associated with the failed physical port along with all virtual servers attached to such virtual IP addresses to a different, second node if there is no such good port on the first node.

34. A computer program product, tangibly stored on a computer-readable medium, for execution in a file server node in which one or more virtual servers each have one or more virtual IP addresses associated with physical ports, the product comprising instructions operable to cause a programmable processor to:

detect a failure of a physical port on a file server node, the node having two or more physical ports, the node having one or more virtual servers each having as exclusive resources one or more virtual IP addresses associated with physical ports and one or more file systems, wherein an exclusive resource of a virtual server can be seen by the virtual server and not by another virtual server;

identify one or more other physical ports on the file server node as being good; and

migrate each virtual IP addresses associated with the failed physical port to a good physical port on the file server node.

35. The product of claim 34 , further comprising instructions to:

determine a load on each physical port on the first node; and

use the determined load for load balancing over the good physical ports when migrating the virtual IP addresses associated with the failed physical port to the good physical ports of the file server node.

36. The product of claim 34 , wherein:

each physical port of the file server node is within a one of a plurality of subnets; and

virtual IP addresses are migrated preferentially to good physical port that is in the same subnet as the failed physical port.

37. A file server node, comprising:

two or more physical ports;

the node being configured to run two or more virtual servers, each virtual server having as exclusive resources a virtual interface to clients and one or more file systems, each virtual interface comprising a virtual IP address, wherein an exclusive resource of a virtual server can be seen by the virtual server and not by another virtual server,

the node being further configured to detect a failure of a first physical port, determine which other physical port or ports of the node is healthy, and to migrate all virtual IP addresses associated with the failed first physical port to a good physical port of the first node.

38. The file server node of claim 37 , further configured to:

determine a load on each physical port; and

use the determined load for load balancing over the good physical ports when migrating the virtual IP addresses associated with the failed physical port to the good physical ports of the node.

39. The file server node of claim 37 , wherein:

each physical port of the file server node is within a one of a plurality of subnets; and virtual IP addresses are migrated preferentially to a good physical port that is in the same subnet as the failed physical port.

Assignments (3)
CHANGE OF NAME Recorded Apr 2, 2014
From: NETWORK APPLIANCE, INC.
To: NETAPP, INC.
Reel/Frame 032585/0661 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 29, 2003
From: AUSPEX SYSTEMS, INC.
To: NETWORK APPLIANCE, INC.
Reel/Frame 013933/0292 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 4, 2002
From: GADIR, OMAR M. A.; SUBBANNA, KARTIK; VAYYALA, ANANDA R.; SHANMUGAM, HARIPRASAD; BODAS, AMOD P.; TRIPATHY, TARUN KUMAR; INDURKAR, RAVI S.; RAO, KURMA H.
To: AUSPEX SYSTEMS, INC.
Reel/Frame 012425/0325 →