Methods and apparatus facilitating access to storage among multiple computers
First Claim
1. A method, embodied in a system in which a given computer and multiple other computers in a cluster share access to a set of named resources, for granting access rights associated with the set of named resources, the method comprising:
- maintaining current access rights associated with the given computer for the set of named resources, the set of named resources including a first named resource, a second named resource, and a third named resource;
associating exclusive access rights to the first named resource for the given computer indicating that the multiple other computers have no associated access rights to the first named resource;
associating no access rights to the second named resource for the given computer indicating that the given computer has no knowledge about access associated with the multiple other computers for the second named resource;
associating shared access rights to the third named resource for the given computer indicating that none of the multiple other computers has associated exclusive access rights to the third named resource;
maintaining respective sets of identifiers of neighbor computers in the cluster, the respective sets of identifiers forming a respective tree associated with a respective resource, each node in the respective tree representing a computer in the cluster, each computer in the tree having a pointer pointing to computers at a higher level towards a root computer of the tree;
maintaining each respective tree to include a root computer in the cluster with other computers having one of the computers in their neighbors set as a leader neighbor for that tree, either pointing directly or indirectly to the root computer via a chain composed of leader neighbors;
wherein a single computer in the cluster has exclusive access rights for a given shared resource while other computers in the cluster have no access rights for the given shared resource;
maintaining the single computer having exclusive access to the given shared resource as a root computer of a respective tree corresponding to the given shared resource, the root computer associated with no neighbor computers;
maintaining computers other than the single computer in the cluster as having no access rights to the given shared resource in which each of such computers has only a single neighbor computer associated with the given shared resource, the single neighbor computer being a respective leader computer towards the root computer;
maintaining a requesting computer having no access rights to the given shared resource to send a request for exclusive access rights for the given shared resource to the respective leader computer associated with a tree of the given shared resource, the request including identification of the requesting computer and a name of the given shared resource for which exclusive access is being requested;
upon receiving the request for exclusive access rights by another computer in the cluster also having no current access rights for the given shared resource as specified by the request, forwarding the request to a respective leader computer towards a root computer having the exclusive access rights to the given shared resource;
upon receiving the request for exclusive access rights by the root computer currently having the exclusive access rights for the given shared resource which name is specified in the request, changing access rights to no access rights for the receiving root computer for the given shared resource, associating the computer requesting the exclusive access rights to be a leader and only neighbor computer for the given shared resource and sending the requesting computer a lead message indicating that the requesting computer is allowed to associate itself with exclusive access rights for the given shared resource, the message including the name of the given shared resource; and
upon receiving the lead message associated with the given shared resource at the requesting computer in the cluster, assigning the requesting computer with exclusive access rights for the given shared resource and associating an empty neighbors set for the given shared resource at the requesting computer.
10 Assignments
0 Petitions
Accused Products
Abstract
Multiple computers in a cluster maintain respective sets of identifiers of neighbor computers in the cluster for each of multiple named resource. A combination of the respective sets of identifiers define a respective tree formed by the respective sets of identifiers for a respective named resource in the set of named resources. Upon origination and detection of a request at a given computer in the cluster, a given computer forwards the request from the given computer over a network to successive computers in the hierarchical tree leading to the computers relevant in handling the request based on use of identifiers of neighbor computers. Thus, a combination of identifiers of neighbor computers identify potential paths to related computers in the tree.
-
Citations
18 Claims
-
1. A method, embodied in a system in which a given computer and multiple other computers in a cluster share access to a set of named resources, for granting access rights associated with the set of named resources, the method comprising:
-
maintaining current access rights associated with the given computer for the set of named resources, the set of named resources including a first named resource, a second named resource, and a third named resource; associating exclusive access rights to the first named resource for the given computer indicating that the multiple other computers have no associated access rights to the first named resource; associating no access rights to the second named resource for the given computer indicating that the given computer has no knowledge about access associated with the multiple other computers for the second named resource; associating shared access rights to the third named resource for the given computer indicating that none of the multiple other computers has associated exclusive access rights to the third named resource; maintaining respective sets of identifiers of neighbor computers in the cluster, the respective sets of identifiers forming a respective tree associated with a respective resource, each node in the respective tree representing a computer in the cluster, each computer in the tree having a pointer pointing to computers at a higher level towards a root computer of the tree; maintaining each respective tree to include a root computer in the cluster with other computers having one of the computers in their neighbors set as a leader neighbor for that tree, either pointing directly or indirectly to the root computer via a chain composed of leader neighbors; wherein a single computer in the cluster has exclusive access rights for a given shared resource while other computers in the cluster have no access rights for the given shared resource; maintaining the single computer having exclusive access to the given shared resource as a root computer of a respective tree corresponding to the given shared resource, the root computer associated with no neighbor computers; maintaining computers other than the single computer in the cluster as having no access rights to the given shared resource in which each of such computers has only a single neighbor computer associated with the given shared resource, the single neighbor computer being a respective leader computer towards the root computer; maintaining a requesting computer having no access rights to the given shared resource to send a request for exclusive access rights for the given shared resource to the respective leader computer associated with a tree of the given shared resource, the request including identification of the requesting computer and a name of the given shared resource for which exclusive access is being requested; upon receiving the request for exclusive access rights by another computer in the cluster also having no current access rights for the given shared resource as specified by the request, forwarding the request to a respective leader computer towards a root computer having the exclusive access rights to the given shared resource; upon receiving the request for exclusive access rights by the root computer currently having the exclusive access rights for the given shared resource which name is specified in the request, changing access rights to no access rights for the receiving root computer for the given shared resource, associating the computer requesting the exclusive access rights to be a leader and only neighbor computer for the given shared resource and sending the requesting computer a lead message indicating that the requesting computer is allowed to associate itself with exclusive access rights for the given shared resource, the message including the name of the given shared resource; and upon receiving the lead message associated with the given shared resource at the requesting computer in the cluster, assigning the requesting computer with exclusive access rights for the given shared resource and associating an empty neighbors set for the given shared resource at the requesting computer. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A method, embodied in a system in which a given computer and multiple other computers in a cluster share access to a set of named resources, for granting access rights associated with the set of named resources, the method comprising:
-
maintaining current access rights associated with the given computer for the set of named resources, the set of named resources including a first named resource, a second named resource, and a third named resource; associating exclusive access rights to the first named resource for the given computer indicating that the multiple other computers have no associated access rights to the first named resource; associating no access rights to the second named resource for the given computer indicating that the given computer has no knowledge about access associated with the multiple other computers for the second named resource; associating shared access rights to the third named resource for the given computer indicating that none of the multiple other computers has associated exclusive access rights to the third named resource; maintaining respective sets of identifiers of neighbor computers in the cluster, the respective sets of identifiers forming a respective tree associated with a respective resource, each node in the respective tree representing a computer in the cluster, each computer in the tree having a pointer pointing to computers at a higher level towards a root computer of the tree; wherein at least two computers in the cluster have shared access to a given shared resource while all other computers, other than the at least two computers, in the cluster have no access rights to the given shared resource; maintaining a root computer of a tree associated with the given shared resource to be one of the at least two computers that has shared access associated with the given shared resource; maintaining non-root computers to have one of the computers in their neighbors set as a leader neighbor for that three, either pointing directly or indirectly to the root computer via a chain composed of leader neighbors; maintaining a leader computer associated with the given shared resource for a computer having shared access to the given shared resource to be associated with shared access for the given shared resource; maintaining a set of neighbor computers associated with the given shared resource for each of the at least two computers that have shared access to the given shared resource, the neighbor sets providing direct or indirect paths from each of these computers to all other computers of the at least two computers that have shared access, all paths traveling only through computers having shared access, the paths provide a bidirectional link between computers having shared access associated with the given shared resource in a corresponding tree; maintaining a computer to have no access rights to a given shared resource having an identity of single neighbor computer associated with that shared resource, the single neighbor being leader of the computer for that shared resource; sending a joint transformation message containing a name of a shared resource between computers in the cluster; upon receipt of the joint transformation message, if a respective receiving computer has no access rights associated with the given shared resource whose name is provided in the transformation message, the respective receiving computer assigns shared access rights with respect to the given shared resource and changes its neighbors set association for the given shared resource to contain an identification of a sender of the joint transformation message as an only element in a set and associates the sender computer as leader neighbor for the shared resource; upon receipt of the joint transformation message, if the receiving computer has shared access associated with the given shared resource whose name is provided with the joint transformation message and an identification of a respective computer that sent the joint transformation message is included in a neighbors set associated with the given shared resource for the receiving computer, the receiving computer excludes a respective sender of the joint transformation message from the neighbors set; and upon receipt of the joint transformation message, if the receiving computer has shared access associated with the given shared resource whose name is provided with the joint transformation message and the identification of a respective computer that sent the joint transformation message is not included in the neighbors set associated with the given shared resource for the receiving computer, the receiving computer sends the joint transformation message back to an originator of the joint transformation message. - View Dependent Claims (9, 10, 11, 12, 13, 14, 15)
-
-
16. A system, including multiple computers in a cluster having access to a set of named resources in a shared storage system, the system comprising:
-
at least one processor; at least one memory unit that stores instructions that, when executed by the processor cause the processor to perform the steps of; maintaining current access rights associated with a given computer in the cluster for the set of named resources, the set of named resources including a first named resource, a second named resource, and a third named resource; associating exclusive access rights to the first named resource for the given computer indicating that the multiple other computers have no associated access rights to the first named resource; associating no access rights to the second named resource for the given computer indicating that the given computer has no knowledge about access associated with the multiple other computers for the second named resource; associating shared access rights to the third named resource for the given computer indicating that none of the multiple other computers has associated exclusive access rights to the third named resource; maintaining respective sets of identifiers of neighbor computers in the cluster, the respective sets of identifiers forming a respective tree associated with a respective resource, each node in the respective tree representing a computer in the cluster, each computer in the tree having a pointer pointing to computers at a higher level towards a root computer of the tree; maintaining each respective tree to include a root computer in the cluster with other computers having one of the computers in their neighbors set as a leader neighbor for that tree, either pointing directly or indirectly to the root computer via a chain composed of leader neighbors; wherein a single computer in the cluster has exclusive access rights for a given shared resource while other computers in the cluster have no access rights for the given shared resource; maintaining the single computer having exclusive access to the given shared resource as a root computer of a respective tree corresponding to the given shared resource, the root computer associated with no neighbor computers; maintaining computers other than the single computer in the cluster as having no access rights to the given shared resource in which each of such computers has only a single neighbor computer associated with the given shared resource, the single neighbor computer being a respective leader computer towards the root computer; maintaining a requesting computer having no access rights to the given shared resource to send a request for exclusive access rights for the given shared resource to the respective leader computer associated with a tree of the given shared resource, the request including identification of the requesting computer and a name of the given shared resource for which exclusive access is being requested; upon receiving the request for exclusive access rights by another computer in the cluster also having no current access rights for the given shared resource as specified by the request, forwarding the request to a respective leader computer towards a root computer having the exclusive access rights to the given shared resource; upon receiving the request for exclusive access rights by the root computer currently having the exclusive access rights for the given shared resource which name is specified in the request, changing access rights to no access rights for the receiving root computer for the given shared resource, associating the computer requesting the exclusive access rights to be a leader and only neighbor computer for the given shared resource and sending the requesting computer a lead message indicating that the requesting computer is allowed to associate itself with exclusive access rights for the given shared resource, the message including the name of the given shared resource; and upon receiving the lead message associated with the given shared resource at the requesting computer in the cluster, assigning the requesting computer with exclusive access rights for the given shared resource and associating an empty neighbors set for the given shared resource at the requesting computer.
-
-
17. A method, embodied in a system in which multiple computers in a cluster share access to a set of named resources, for granting access rights associated with the set of named resources, the method comprising:
-
maintaining respective sets of identifiers of neighbor computers in the cluster, the respective sets of identifiers forming a respective tree associated with a respective resource, each node in the respective tree representing a computer in the cluster, each computer in the tree having a pointer pointing to computers at a higher level towards a root computer of the tree; maintaining each respective tree to include a root computer in the cluster with other computers having one of the computers in their neighbors set as a leader neighbor for that tree, either pointing directly or indirectly to the root computer via a chain composed of leader neighbors; wherein a single computer in the cluster has exclusive access rights for a given shared resource while other computers in the cluster have no access rights for the given shared resource; maintaining the single computer having exclusive access to the given shared resource as a root computer of a respective tree corresponding to the given shared resource, the root computer associated with no neighbor computers; maintaining computers other than the single computer in the cluster as having no access rights to the given shared resource in which each of such computers has only a single neighbor computer associated with the given shared resource, the single neighbor computer being a respective leader computer towards the root computer; maintaining a requesting computer having no access rights to the given shared resource to send a request for exclusive access rights for the given shared resource to the respective leader computer associated with a tree of the given shared resource, the request including identification of the requesting computer and a name of the given shared resource for which exclusive access is being requested; upon receiving the request for exclusive access rights by another computer in the cluster also having no current access rights for the given shared resource as specified by the request, forwarding the request to a respective leader computer towards a root computer having the exclusive access rights to the given shared resource; upon receiving the request for exclusive access rights by the root computer currently having the exclusive access rights for the given shared resource which name is specified in the request, changing access rights to no access rights for the receiving root computer for the given shared resource, associating the computer requesting the exclusive access rights to be a leader and only neighbor computer for the given shared resource and sending the requesting computer a lead message indicating that the requesting computer is allowed to associate itself with exclusive access rights for the given shared resource, the message including the name of the given shared resource; and upon receiving the lead message associated with the given shared resource at the requesting computer in the cluster, assigning the requesting computer with exclusive access rights for the given shared resource and associating an empty neighbors set for the given shared resource at the requesting computer.
-
-
18. A method, embodied in a system in which multiple computers in a cluster share access to a set of named resources, for granting access rights associated with the set of named resources, the method comprising:
-
maintaining respective sets of identifiers of neighbor computers in the cluster, the respective sets of identifiers forming a respective tree associated with a respective resource, each node in the respective tree representing a computer in the cluster, each computer in the tree having a pointer pointing to computers at a higher level towards a root computer of the tree; wherein at least two computers in the cluster have shared access to a given shared resource while all other computers, other than the at least two computers, in the cluster have no access rights to the given shared resource; maintaining a root computer of a tree associated with the given shared resource to be one of the at least two computers that has shared access associated with the given shared resource; maintaining non-root computers to have one of the computers in their neighbors set as a leader neighbor for that three, either pointing directly or indirectly to the root computer via a chain composed of leader neighbors; maintaining a leader computer associated with the given shared resource for a computer having shared access to the given shared resource to be associated with shared access for the given shared resource; maintaining a set of neighbor computers associated with the given shared resource for each of the at least two computers that have shared access to the given shared resource, the neighbor sets providing direct or indirect paths from each of these computers to all other computers of the at least two computers that have shared access, all paths traveling only through computers having shared access, the paths provide a bidirectional link between computers having shared access associated with the given shared resource in a corresponding tree; maintaining a computer to have no access rights to a given shared resource having an identity of single neighbor computer associated with that shared resource, the single neighbor being leader of the computer for that shared resource; sending a joint transformation message containing a name of a shared resource between computers in the cluster; upon receipt of the joint transformation message, if a respective receiving computer has no access rights associated with the given shared resource whose name is provided in the transformation message, the respective receiving computer assigns shared access rights with respect to the given shared resource and changes its neighbors set association for the given shared resource to contain an identification of a sender of the joint transformation message as an only element in a set and associates the sender computer as leader neighbor for the shared resource; upon receipt of the joint transformation message, if the receiving computer has shared access associated with the given shared resource whose name is provided with the joint transformation message and an identification of a respective computer that sent the joint transformation message is included in a neighbors set associated with the given shared resource for the receiving computer, the receiving computer excludes a respective sender of the joint transformation message from the neighbors set; and upon receipt of the joint transformation message, if the receiving computer has shared access associated with the given shared resource whose name is provided with the joint transformation message and the identification of a respective computer that sent the joint transformation message is not included in the neighbors set associated with the given shared resource for the receiving computer, the receiving computer sends the joint transformation message back to an originator of the joint transformation message.
-
Specification