Lightweight coherency control protocol for clustered storage system
First Claim
1. A method for ensuring consistency of data containers and associated data buffers stored on one or more volumes served by a plurality of nodes connected as a cluster, comprising:
- tagging each data buffer of each data container with a current cache sequence number comprising a load generation value and an update count value;
incrementing the load generation value every time an inode of a data container is loaded into a memory of a node;
loading a data buffer of the data container into the memory; and
incrementing the update count value of the data buffer each time the buffer is modified as long as its inode remains loaded in memory.
2 Assignments
0 Petitions
Accused Products
Abstract
A lightweight coherency control protocol ensures consistency of data containers, such as a file, and associated data buffers stored on one or more volumes served by a plurality of nodes, e.g., storage systems, connected as a cluster. Each data buffer is associated with a current cache sequence number comprising a load generation value and an update count value. The load generation value is incremented every time an inode of a file is loaded into a memory of the storage system. Once the inode is loaded and its load generation value is set, then the appropriate buffer of a buffer tree for the file is loaded into the memory. The update count value is incremented each time the buffer is updated with a write request/operation. Therefore, each buffer loaded into memory is tagged with the load generation value and an update count from the time that buffer is loaded.
61 Citations
21 Claims
-
1. A method for ensuring consistency of data containers and associated data buffers stored on one or more volumes served by a plurality of nodes connected as a cluster, comprising:
-
tagging each data buffer of each data container with a current cache sequence number comprising a load generation value and an update count value; incrementing the load generation value every time an inode of a data container is loaded into a memory of a node; loading a data buffer of the data container into the memory; and incrementing the update count value of the data buffer each time the buffer is modified as long as its inode remains loaded in memory. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. A system configured to ensure consistency of data containers and associated data buffers stored on one or more volumes served by a plurality of nodes connected as a cluster, they system comprising:
-
a disk element of a node adapted to service the one or more volumes of the cluster, the disk element further adapted to maintain an authoritative version of a data container and associated data buffer stored on its serviced volumes; a network element of a node adapted to redirect a data access request for the data container and associated data buffer to the disk element; a local cache of the network element adapted to provide caching of the data buffer, the cached data buffer having an associated current cache sequence number wherein the current cache sequence number comprises a load generation value and an update count value, wherein the load generation value is incremented every time an inode of the data container is loaded into a memory of the disk element and wherein the update count value of the data buffer is incremented each time the buffer is modified as long as the inode remains loaded in memory; and wherein the network element uses the cached data buffer to service the data access request when the current cache sequence number represents a most recent version of the data buffer.
-
-
10. Apparatus adapted to ensure consistency of data containers and associated data buffers stored on one or more volumes served by a plurality of nodes connected as a cluster, the apparatus comprising:
-
means for tagging each data buffer of each data container with a current cache sequence number comprising a load generation value and an update count value; means for incrementing the load generation value every time an inode of a data container is loaded into a memory of a node; means for loading a data buffer of the data container into the memory; and means for incrementing the update count value of the data buffer each time the buffer is modified as long as its inode remains loaded in memory. - View Dependent Claims (11, 12, 13, 14, 15)
-
-
16. A computer readable medium containing executable program instructions for ensuring consistency of data containers and associated data buffers stored on one or more volumes served by a plurality of nodes connected as a cluster, the executable instructions comprising one or more program instructions for:
-
tagging each data buffer of each data container with a current cache sequence number comprising a load generation value and an update count value; incrementing the load generation value every time an inode of a data container is loaded into a memory of a node; loading a data buffer of the data container into the memory; and incrementing the update count value of the data buffer each time the buffer is modified as long as its inode remains loaded in memory. - View Dependent Claims (17, 18, 19, 20, 21)
-
Specification