IP Library Granted Patent US 8,244,846
Granted Patent B2
US 8,244,846 · App. 11/964,264 · Granted Aug 14, 2012

Balanced consistent hashing for distributed resource management

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 8,244,846
App. No.
11/964,264
Granted
Aug 14, 2012
Kind
B2
Abstract

A method, system, computer-readable storage medium and apparatus for balanced and consistent placement of resource management responsibilities within a multi-computer environment, such as a cluster, that are both scalable and make efficient use of cluster resources are provided. Embodiments reduce the time that a cluster is unavailable due to redistribution of resource management responsibilities by reducing the amount of redistribution of those responsibilities among the surviving cluster members. Embodiments further provide redistribution of resource management responsibilities based upon relative capabilities of the remaining cluster nodes.

Claims (82)

1. A method comprising:

determining locations of a plurality of resource identifiers in a resource identification space, wherein

the determining is performed by a computer;

dividing the resource identification space into a first plurality of disjoint areas of responsibility, wherein

the dividing is performed by the computer;

associating each area of responsibility with a distinct network node of a plurality of network nodes, wherein

the associating is performed by the computer,

each network node of the plurality of network nodes is a member of a cluster, and

a sum of all the areas of responsibility encompasses the entire resource identification space;

assigning management responsibility for a resource associated with a resource identifier located in a first area of responsibility to a network node associated with the first area of responsibility, wherein

the assigning is performed by the computer,

the resource is shared by the network nodes, and

the assigning comprises distributing lock mastering responsibilities associated with the resource identifier to the network node associated with the first area of responsibility;

detecting that a first network node is added to or removed from the network;

performing said dividing and said assigning using a current number of network nodes available to be associated with an area of responsibility into a second plurality of areas of responsibility, in response to said detecting; and

maximizing an overlap of areas of responsibility between the first plurality of areas of responsibility and the second plurality of areas of responsibility.

2. The method of claim 1 wherein the resource identification space is a name space.

3. The method of claim 2 further comprising:

calculating a resource identifier of the plurality of resource identifiers by hashing a name of the resource.

4. The method of claim 3 further comprising:

deriving the name of the resource using an inode identifier, wherein the resource is one of a file and a storage location in a file system.

5. The method of claim 3 further comprising:

deriving the name of the resource using an electronic mail address, wherein

the resource is one of a mailbox, state information associated with the mailbox, metadata associated with the mailbox, management information associated with the mailbox, and mail data in an electronic mail system.

6. The method of claim 1 wherein a resource identified by one of the plurality of resource identifiers is accessible to all members of the cluster.

7. The method of claim 1 further comprising:

determining the area of responsibility for the associated network node based on a capability of the associated network node.

8. The method of claim 7 further comprising:

relating the capability of the associated network node to one or more of processor capacity and memory capacity.

9. The method of claim 7 further comprising:

defining the capability of the associated network node by user input.

10. The method of claim 7 wherein the capability of the associated network node is defined relative to each other network node of the plurality of network nodes.

11. A non-transitory computer-readable storage medium comprising:

a first set of instructions, executable by a processor, configured to determine locations of a plurality of resource identifiers in a resource identification space;

a second set of instructions, executable by the processor, configured to divide the resource identification space into a first plurality of disjoint areas of responsibility, and associate each area of responsibility with a distinct network node of a plurality of network nodes, wherein

each network node of the plurality of network nodes is a member of a cluster, and

a sum of all the areas of responsibility encompasses the entire resource identification space;

a third set of instructions, executable by the processor, configured to assign management responsibility for a resource associated with a resource identifier located in a first area of responsibility to a network node associated with the first area of responsibility, wherein

the resource is shared by the network nodes, and

the assigning comprises distributing lock mastering responsibilities associated with the resource identifier to the network node associated with the first area of responsibility; and

a fourth set of instructions, executable by the processor, configured to detect that a first network node is added to or removed from the network;

divide the resource identification space and assign management responsibility using a current number of network nodes available to be associated with an area of responsibility into a second plurality of areas of responsibility, in response to detect that first network node is added or removed from the network, and

maximize an overlap of areas of responsibility between the first plurality of areas of responsibility and the second plurality of areas of responsibility.

12. The non-transitory computer-readable storage medium of claim 11 wherein the resource identification space is a name space.

13. The non-transitory computer-readable storage medium of claim 12 further comprising:

a fifth set of instructions, executable by the processor, configured to calculate a resource identifier of the plurality of resource identifiers by hashing a name of the resource.

14. The non-transitory computer-readable storage medium of claim 11 further comprising:

a fifth set of instructions, executable by the processor, configured to determine the area of responsibility for the associated network node based on a capability of the associated network node.

15. A system comprising:

a plurality of network nodes, wherein

each network node of the plurality of network nodes comprises a corresponding processor, a memory coupled to the processor, and a network interface coupled to the processor, and

the memory of each network node stores

a first set of instructions, executable by the processor of the network node, configured to determine locations of a plurality of resource identifiers in a resource identification space,

a second set of instructions, executable by the processor of the network node, configured to divide the resource identification space into a first plurality of disjoint areas of responsibility, and associate each area of responsibility with a distinct network node of the plurality of network nodes, wherein

each network node of the plurality of network nodes is a member of a cluster, and

a sum of all the areas of responsibility encompasses the entire resource identification space, and

a third set of instructions, executable by the processor of the network node, configured to assign management responsibility for a resource associated with a resource identifier located in a first area of responsibility to a network node associated with the first area of responsibility, wherein

the resource is shared by the network nodes, and

the assigning comprises distributing lock mastering responsibilities associated with the resource identifier to the network node associated with the first area of responsibility;

a fourth set of instructions, executable by the processor, configured to

detect that a first network node is added to or removed from the network;

divide the resource identification space and assign management responsibility using a current number of network nodes available to be associated with an area of responsibility into a second plurality of areas of responsibility, in response to detect that first network node is added or removed from the network, and

maximize an overlap of areas of responsibility between the first plurality of areas of responsibility and the second plurality of areas of responsibility; and

a network configured to couple the plurality of network nodes to one another wherein the network is coupled to the network interface of each network node.

16. The system of claim 15 wherein the memory of each network node further stores:

a fifth set of instructions, executable by the processor of the network node, configured to calculate a resource identifier of the plurality of resource identifiers by hashing a name of the resource, wherein the resource identification space is a name space.

17. The system of claim 15 wherein the memory of each network node further stores:

a fifth set of instructions, executable by the processor of the network node, configured to determine the area of responsibility for the associated network node based on a capability of the associated network node.

18. An apparatus comprising:

a network node of a plurality of network nodes, wherein

each network node of the plurality of network nodes is a member of a cluster;

means for determining locations of a plurality of resource identifiers in a resource identification space;

means for dividing the resource identification space into a first plurality of disjoint areas of responsibility, and associating each area of responsibility with a distinct network node, wherein

a sum of all the areas of responsibility encompasses the entire resource identification space;

means for assigning management responsibility for a resource associated with a resource identifier located in a first area of responsibility to a network node associated with the first area of responsibility, wherein

the resource is shared by the network nodes;

means for detecting that a first network node is added to or removed from the network;

means performing said dividing and said assigning using a current number of network nodes available to be associated with an area of responsibility into a second plurality of areas of responsibility, in response to said detecting; and

means for maximizing an overlap of areas of responsibility between the first plurality of areas of responsibility and the second plurality of areas of responsibility.

19. The method of claim 1 , further comprising:

the distinct network node sending a message to each other node in the cluster in response to a cluster restart, wherein

the cluster restart is performed in response to a cluster membership change.

Assignments (16)
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 070530/0497 Recorded Dec 1, 2025
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: ARCTERA US LLC
Reel/Frame 073833/0730 →
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 →
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 →
SECURITY INTEREST Recorded Dec 10, 2024
From: ARCTERA US LLC
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 069563/0243 →
PATENT SECURITY AGREEMENT Recorded Dec 10, 2024
From: ARCTERA US LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 069585/0150 →
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 →
CHANGE OF NAME Recorded Feb 14, 2020
From: SYMANTEC CORPORATION
To: NORTONLIFELOCK INC.
Reel/Frame 051935/0228 →
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: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 037891/0726 →
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 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 4, 2016
From: SYMANTEC CORPORATION
To: VERITAS US IP HOLDINGS LLC
Reel/Frame 037697/0412 →