IP Library Granted Patent US 9,501,410
Granted Patent B2
US 9,501,410 · App. 13/838,125 · Granted Nov 22, 2016

Providing local cache coherency in a shared storage environment

Inventors: Santosh Kalekar (Pune, IN); Niranjan Pendharkar (Pune, IN); Shailesh Marathe (Pune, IN)
Assignee: Veritas Technologies LLC
G06F12/0833G06F3/06G06F3/067G06F3/0619G06F3/0638G06F12/0817G06F2212/1008G06F2212/1024G06F2212/284G06F2212/311
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 9,501,410
App. No.
13/838,125
Granted
Nov 22, 2016
Kind
B2
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.

Claims (96)

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.

2. The method of claim 1 , wherein the monitoring the attempts to access the shared storage content by the each of the nodes of the cluster further comprises:

monitoring at least some operations being performed by a specific node of the cluster that result in an update being made to the local cache associated with the specific node.

3. The method of claim 1 , wherein the monitoring the attempts to access the shared storage content by the nodes of the cluster further comprises:

monitoring any operations that move content between nodes of the cluster and the shared storage server.

4. The method of claim 1 , wherein the tracking the statuses of the local caches of the multiple nodes of the cluster further comprises:

tracking any nodes of the cluster that contain current shared storage content in their local caches, for any regions of the shared storage content.

5. The method of claim 1 , wherein the tracking the statuses of the local caches of the multiple nodes of the cluster further comprises:

tracking any nodes of the cluster that contain non-current shared storage content in their associated local caches, for any regions of the shared storage content.

6. The method of claim 1 , further comprising:

maintaining current tracked local cache status information; and

responsive to at least one operation targeting at least one region of the shared storage content, updating the current tracked local cache status information to indicate local cache status changes for multiple local caches, for the at least one region of the shared storage content.

7. The method of claim 1 , further comprising:

maintaining current tracked local cache status information; and

responsive to a read operation by a specific node of the cluster targeting at least one region of the shared storage content, updating the current tracked local cache status information to indicate a local cache status change for the local cache associated with the specific node, for the at least one region of the shared storage content.

8. The method of claim 1 , further comprising:

maintaining current tracked local cache status information; and

responsive to a first write operation by a specific node of the cluster targeting at least one region of the shared storage content, updating the current tracked local cache status information to indicate a local cache status change for the local cache associated with the specific node, and to indicate local cache status changes for additional local caches associated with additional nodes of the cluster, for the at least one region of the shared storage content.

9. The method of claim 1 , further comprising:

maintaining current tracked local cache status information; and

storing the current tracked local cache status information in a data structure, wherein

at least a portion of the data structure is stored on the shared storage server such that it is accessible by the multiple nodes of the cluster.

10. The method of claim 9 , wherein

the data structure further comprises a bitmap residing on the shared storage server,

the bitmap comprises, for each specific node of the cluster, a separate bit set representing a current tracked local cache status of the local cache associated with the specific node, and

each bit set comprises one bit representing each tracked region of the shared storage content.

11. The method of claim 1 , further comprising:

maintaining current tracked local cache status information; and

storing the current tracked local cache status information in a data structure, wherein

a portion of the data structure is stored on the shared storage server such that it is accessible by the multiple nodes of the cluster, and, for each specific node of the cluster, a portion of the data structure is stored locally by and is accessible only to the specific node.

12. The method of claim 11 , wherein

the data structure further comprises:

for each specific node of the cluster, a set of data variables representing a current tracked local cache status of the local cache associated with the specific node, and

a single, shared set of data variables indicating a current content status of the shared storage content, and

each specific data variable of each data variable set represents a specific region of the shared storage content.

13. The method of claim 1 , further comprising:

maintaining current tracked local cache status information; and

representing specific data volumes of the shared storage content in the current tracked local cache status information.

14. The method of claim 1 , further comprising:

initializing all of the tracked local cache status information to indicate that, for each specific node of the cluster, the local cache associated with the specific node is non-current for every region of the shared storage content.

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.

16. The at least one non-transitory computer readable-storage medium of claim 15 further storing computer executable instructions to:

use information gleaned from monitoring node-level attempts to access the shared storage content to determine the statuses of the local caches.

17. The at least one non-transitory computer readable-storage medium of claim 15 further storing computer executable instructions to:

track any nodes of the cluster that contain current shared storage content in their local caches, for any regions of the shared storage content; and

track any nodes of the cluster that contain non-current shared storage content in their associated local caches, for any regions of the shared storage content.

18. The at least one non-transitory computer readable-storage medium of claim 15 further storing computer executable instructions to:

responsive to a read operation by a specific node of the cluster targeting at least one region of the shared storage content, updating current tracked local cache status information to indicate a local cache status change for the local cache associated with the specific node, for the at least one region of the shared storage content; and

responsive to a first write operation by the specific node of the cluster targeting the at least one region of the shared storage content, updating the current tracked local cache status information to indicate the local cache status change for the local cache associated with the specific node, and to indicate local cache status changes for additional local caches associated with additional nodes of the cluster, for the at least one region of the shared storage content.

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.

Assignments (17)
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 Recorded Apr 18, 2016
From: VERITAS US IP HOLDINGS LLC
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 038483/0203 →
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 037693/0158 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 15, 2013
From: KALEKAR, SANTOSH; PENDHARKAR, NIRANJAN; MARATHE, SHAILESH
To: SYMANTEC CORPORATION
Reel/Frame 030021/0678 →
Continuity (1)
Related Publication 20140281273A1 · Sep 18, 2014