Providing local cache coherency in a shared storage environment
First Claim
1. A computer implemented method in a shared storage server for providing cache coherency within a cluster of multiple nodes, the method comprising:
- communicating with a cache coherency instance at each of the multiple nodes of the cluster, whereinthe each of the multiple nodes comprises a local cache that is configured to cache shared storage content of the shared storage server,each local cache is only accessible by the each node with which the each local cache is associated, andthe shared storage content is accessible by the multiple nodes of the cluster;
receiving one or more updates sent from the cache coherency instance executing on the each of the multiple nodes, whereinthe one or more updates represent one or more operations that are configured to access the shared storage content, when performed by the each node, andeach of the one or more updates is sent from a corresponding cache coherency instance after a predetermined number of operations are performed by the each node;
monitoring attempts to access the shared storage content by the each of the multiple nodes of the cluster based on the updates;
tracking statuses of the local caches of the multiple nodes of the cluster by determining whether an access attempt at a node affects the status of the local cache associated with the node and each of the other local caches of the other nodes in the cluster,whereinthe access attempt comprises one or more accesses that modify the shared storage content and one or more accesses that do not modify the shared storage content, andeach status stored in the shared storage server indicates whether the each local cache has a current version of each portion of shared storage content; and
upon a subsequent access attempt by one node of the multiple nodes to a portion of the shared storage content in the local cache associated with the one node;
accessing a specific portion of shared storage content from the local cache associated with the one node, if a determination is made from the statuses stored in the shared storage server that the current version of the specific portion of shared storage content is stored in the local cache associated with the one node, andaccessing the specific portion of shared storage content from the shared storage server, if a determination is made from the statuses that the current version of the specific portion of shared storage content is not stored on the local cache associated with the one node.
7 Assignments
0 Petitions
Accused Products
Abstract
Multiple nodes of a cluster have associated non-shared, local caches, used to cache shared storage content. Each local cache is accessible only to the node with which it is associated, whereas the cluster-level shared storage is accessible by any of the nodes. Attempts to access the shared storage by the nodes of the cluster are monitored. Information is tracked concerning the current statuses of the local caches of the nodes of the cluster. Current tracked local cache status information is maintained, and stored such that it is accessible by the multiple nodes of the cluster. The current tracked local cache status information is used in conjunction with the caching functionality to determine whether specific nodes of the cluster are to access their local caches or the shared storage to obtain data corresponding to specific regions of the shared storage.
12 Citations
19 Claims
-
1. A computer implemented method in a shared storage server for providing cache coherency within a cluster of multiple nodes, the method comprising:
-
communicating with a cache coherency instance at each of the multiple nodes of the cluster, wherein the each of the multiple nodes comprises a local cache that is configured to cache shared storage content of the shared storage server, each local cache is only accessible by the each node with which the each local cache is associated, and the shared storage content is accessible by the multiple nodes of the cluster; receiving one or more updates sent from the cache coherency instance executing on the each of the multiple nodes, wherein the one or more updates represent one or more operations that are configured to access the shared storage content, when performed by the each node, and each of the one or more updates is sent from a corresponding cache coherency instance after a predetermined number of operations are performed by the each node; monitoring attempts to access the shared storage content by the each of the multiple nodes of the cluster based on the updates; tracking statuses of the local caches of the multiple nodes of the cluster by determining whether an access attempt at a node affects the status of the local cache associated with the node and each of the other local caches of the other nodes in the cluster, wherein the access attempt comprises one or more accesses that modify the shared storage content and one or more accesses that do not modify the shared storage content, and each status stored in the shared storage server indicates whether the each local cache has a current version of each portion of shared storage content; and upon a subsequent access attempt by one node of the multiple nodes to a portion of the shared storage content in the local cache associated with the one node; accessing a specific portion of shared storage content from the local cache associated with the one node, if a determination is made from the statuses stored in the shared storage server that the current version of the specific portion of shared storage content is stored in the local cache associated with the one node, and accessing the specific portion of shared storage content from the shared storage server, if a determination is made from the statuses that the current version of the specific portion of shared storage content is not stored on the local cache associated with the one node. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14)
-
-
15. At least one non-transitory computer readable-storage medium in a shared storage server for providing cache coherency within a cluster of multiple nodes, the at least one non-transitory computer readable-storage medium storing computer executable instructions that, when loaded into computer memory and executed by at least one processor of a computing device, cause the computing device to:
-
communicate with a cache coherency instance at each of the multiple nodes of the cluster, wherein the each of the multiple nodes comprises a local cache that is configured to cache shared storage content of the shared storage server, each local cache is only accessible by the each node with which the each local cache is associated, and the shared storage content is accessible by the multiple nodes of the cluster; receive one or more updates sent from the cache coherency instance executing on the each of the multiple nodes, wherein the one or more updates represent one or more operations that are configured to access the shared storage content, when performed by the each node, and each of the one or more updates is sent from a corresponding cache coherency instance after a predetermined number of operations are performed by the each node; monitor attempts to access the shared storage content by the each of the multiple nodes of the cluster based on the updates; track statuses of the local caches of the multiple nodes of the cluster by determining whether an access attempt at a node affects the status of the local cache associated with the node and each of the other local caches of the other nodes in the cluster, wherein the access attempt comprises one or more accesses that modify the shared storage content and one or more accesses that do not modify the shared storage content, and each status stored in the shared storage server indicates whether the each local cache has a current version of each portion of shared storage content; and upon a subsequent access attempt by one node of the multiple nodes to a portion of the shared storage content in a local cache associated with the one node; access a specific portion of shared storage content from the local cache associated with the one node, if a determination is made from the statuses stored in the shared storage server that the current version of the specific portion of shared storage content is stored in the local cache associated with the one node, and access the specific portion of shared storage content from the shared storage server, if a determination is made from the statuses that the current version of the specific portion of shared storage content is not stored on the local cache associated with the one node. - View Dependent Claims (16, 17, 18)
-
-
19. A computer system for providing cache coherency within a cluster of multiple nodes, the computer system comprising:
-
a processor; and system memory, storing; a first module to communicate with a cache coherency instance at each of the multiple nodes of the cluster, wherein the each of the multiple nodes comprises a local cache that is configured to cache shared storage content of the shared storage server, each local cache is only accessible by the each node with which the each local cache is associated, and the shared storage content is accessible by the multiple nodes of the cluster; a second module to receive one or more updates sent from the cache coherency instance executing on the each of the multiple nodes, wherein the one or more updates represent one or more operations that are configured to access the shared storage content, when performed by the each node, and each of the one or more updates is sent from a corresponding cache coherency instance after a predetermined number of operations are performed by the each node; a third module to monitor attempts to access the shared storage content by the each of the multiple nodes of the cluster based on the updates; a fourth module to track statuses of the local caches of the multiple nodes of the cluster by determining whether an access attempt at a node affects the status of the local cache associated with the node and each of the other local caches of the other nodes in the cluster, wherein the access attempt comprises one or more accesses that modify the shared storage content and one or more accesses that do not modify the shared storage content, and each status stored in the shared storage server indicates whether each local cache has a current version of each portion of shared storage content; and a fifth module to, upon a subsequent access attempt by one of the nodes to a portion of shared storage content in a local cache associated with the one node, access a specific portion of shared storage content from the local cache associated with the one node, if a determination is made from the statuses stored in the shared storage server that the current version of the specific portion of shared storage content is stored in the local cache associated with the one node, and access the specific portion of shared storage content from the shared storage server, if a determination is made from the statuses that the current version of the specific portion of shared storage content is not stored on the local cache associated with the one node.
-
Specification