System and method for multi-node storage system flushing
A method, computer program product, and computing system for processing, using a storage node, one or more updates to one or more metadata pages of a multi-node storage system. The one or more updates may be stored in one or more data containers in a cache memory system of the storage node, thus defining an active working set of data containers. Flushing ownership for each data container of the active working set may be assigned to one of the storage nodes based upon an assigned flushing ownership for each data container of a frozen working set and a number of updates within the frozen working set processed by each storage node, thus defining an assigned flushing storage node for each data container of the active working set. The one or more updates may be flushed, using the assigned flushing storage node, to a storage array.
1. A computer-implemented method, executed on a computing device, comprising:
processing, using a storage node of a plurality of storage nodes, one or more updates to one or more metadata pages of a multi-node storage system;
storing the one or more updates to the one or more metadata pages in one or more data containers in a cache memory system of the storage node, thus defining an active working set of data containers;
assigning flushing ownership for each data container of the active working set of data containers to one of the storage nodes of the plurality of storage nodes based upon, at least in part, an assigned flushing ownership for each data container of a frozen working set and a number of updates to the one or more metadata pages within the frozen working set processed by each storage node, thus defining an assigned flushing storage node for each data container of the active working set of data containers, wherein assigning flushing ownership for each data container of the active working set of data containers to one of the storage nodes of the plurality of storage nodes based upon, at least in part, an assigned flushing ownership for each data container of a frozen working set and a number of updates to the one or more metadata pages within the frozen working set processed by each storage node includes:
defining a processing balance value for the plurality of storage nodes based upon, at least in part, the number of updates to the one or more metadata pages within the frozen working set processed by each storage node,
determining a least utilized storage node of the plurality of storage nodes, and
defining a correction factor as a function of the processing balance value; and
flushing, using the assigned flushing storage node, the one or more updates to the one or more metadata pages from the one or more data containers of the active working set to a storage array.
2. The computer-implemented method of claim 1 , wherein the plurality of storage nodes include a pair of storage nodes in an active/active configuration with access to the same metadata pages of a storage array.
3. The computer-implemented method of claim 1 , wherein storing the one or more updates to the one or more metadata pages in one or more data containers in a cache memory system of the storage node includes:
determining one or more memory addresses associated with the one or more metadata pages; and
storing the one or more updates to the one or more metadata pages in one or more data containers within the cache memory system that are associated with the one or more memory addresses of the one or more metadata pages.
4. The computer implemented method of claim 1 , wherein the active working set of data containers includes a copy of the active working set of data containers in the cache memory system of each storage node, thus defining an active working set of data containers for each storage node, and wherein the frozen working set of data containers includes a copy of the frozen working set of data containers in the cache memory system of each storage node, thus defining a frozen working set of data containers for each storage node.
5. The computer implemented method of claim 1 , wherein assigning flushing ownership for each data container of the active working set of data containers to one of the storage nodes of the plurality of storage nodes based upon, at least in part, an assigned flushing ownership for each data container of a frozen working set and a number of updates to the one or more metadata pages within the frozen working set processed by each storage node includes:
calculating a hash function for each data container of the active working set based upon, at least in part, an initial memory address of the data container, thus defining a data container hash value for each data container;
comparing the data container hash value to the correction factor;
in response to the data container hash value being less than the correction factor, assigning flushing ownership for the respective data container to the least utilized storage node; and
in response to the data container hash value being greater than or equal to the correction factor, assigning flushing ownership for the respective data container to one of the storage nodes based upon, at least in part, the number of updates to the one or more metadata pages for the particular data container within the frozen working set processed by each storage node.
6. The computer implemented method of claim 5 , wherein the data container hash value for each data container is a predefined number of least significant bits of the hash function of the initial memory address of the data container.
7. A computer program product residing on a non-transitory computer readable medium having a plurality of instructions stored thereon which, when executed by a processor, cause the processor to perform operations comprising:
processing, using a storage node of a plurality of storage nodes, one or more updates to one or more metadata pages of a multi-node storage system;
storing the one or more updates to the one or more metadata pages in one or more data containers in a cache memory system of the storage node, thus defining an active working set of data containers;
assigning flushing ownership for each data container of the active working set of data containers to one of the storage nodes of the plurality of storage nodes based upon, at least in part, an assigned flushing ownership for each data container of a frozen working set and a number of updates to the one or more metadata pages within the frozen working set processed by each storage node, thus defining an assigned flushing storage node for each data container of the active working set of data containers, wherein assigning flushing ownership for each data container of the active working set of data containers to one of the storage nodes of the plurality of storage nodes based upon, at least in part, an assigned flushing ownership for each data container of a frozen working set and a number of updates to the one or more metadata pages within the frozen working set processed by each storage node includes: defining a processing balance value for the plurality of storage nodes based upon, at least in part, the number of updates to the one or more metadata pages within the frozen working set processed by each storage node, determining a least utilized storage node of the plurality of storage nodes, and defining a correction factor as a function of the processing balance value; and
flushing, using the assigned flushing storage node, the one or more updates to the one or more metadata pages from the one or more data containers of the active working set to a storage array.
8. The computer program product of claim 7 , wherein the plurality of storage nodes include a pair of storage nodes in an active/active configuration with access to the same metadata pages of a storage array.
9. The computer program product of claim 7 , wherein storing the one or more updates to the one or more metadata pages in one or more data containers in a cache memory system of the storage node includes:
determining one or more memory addresses associated with the one or more metadata pages; and
storing the one or more updates to the one or more metadata pages in one or more data containers within the cache memory system that are associated with the one or more memory addresses of the one or more metadata pages.
10. The computer program product of claim 7 , wherein the active working set of data containers includes a copy of the active working set of data containers in the cache memory system of each storage node, thus defining an active working set of data containers for each storage node, and wherein the frozen working set of data containers includes a copy of the frozen working set of data containers in the cache memory system of each storage node, thus defining a frozen working set of data containers for each storage node.
11. The computer program product of claim 7 , wherein assigning flushing ownership for each data container of the active working set of data containers to one of the storage nodes of the plurality of storage nodes based upon, at least in part, an assigned flushing ownership for each data container of a frozen working set and a number of updates to the one or more metadata pages within the frozen working set processed by each storage node includes:
calculating a hash function for each data container of the active working set based upon, at least in part, an initial memory address of the data container, thus defining a data container hash value for each data container;
comparing the data container hash value to the correction factor;
in response to the data container hash value being less than the correction factor, assigning flushing ownership for the respective data container to the least utilized storage node; and in response to the data container hash value being greater than or equal to the correction factor, assigning flushing ownership for the respective data container to one of the storage nodes based upon, at least in part, the number of updates to the one or more metadata pages for the particular data container within the frozen working set processed by each storage node.
12. The computer program product of claim 11 , wherein the data container hash value for each data container is a predefined number of least significant bits of the hash function of the initial memory address of the data container.
13. A computing system comprising:
a memory; and
a processor configured to process, using a storage node of a plurality of storage nodes, one or more updates to one or more metadata pages of a multi-node storage system, wherein the processor is further configured to store the one or more updates to the one or more metadata pages in one or more data containers in a cache memory system of the storage node, thus defining an active working set of data containers, wherein the processor is further configured to assign flushing ownership for each data container of the active working set of data containers to one of the storage nodes of the plurality of storage nodes based upon, at least in part, an assigned flushing ownership for each data container of a frozen working set and a number of updates to the one or more metadata pages within the frozen working set processed by each storage node, thus defining an assigned flushing storage node for each data container of the active working set of data containers, wherein assigning flushing ownership for each data container of the active working set of data containers to one of the storage nodes of the plurality of storage nodes based upon, at least in part, an assigned flushing ownership for each data container of a frozen working set and a number of updates to the one or more metadata pages within the frozen working set processed by each storage node includes: defining a processing balance value for the plurality of storage nodes based upon, at least in part, the number of updates to the one or more metadata pages within the frozen working set processed by each storage node, determining a least utilized storage node of the plurality of storage nodes, and defining a correction factor as a function of the processing balance value and wherein the processor is further configured to flush, using the assigned flushing storage node, the one or more updates to the one or more metadata pages from the one or more data containers of the active working set to a storage array.
14. The computing system of claim 13 , wherein the plurality of storage nodes include a pair of storage nodes in an active/active configuration with access to the same metadata pages of a storage array.
15. The computing system of claim 13 , wherein storing the one or more updates to the one or more metadata pages in one or more data containers in a cache memory system of the storage node includes:
determining one or more memory addresses associated with the one or more metadata pages; and
storing the one or more updates to the one or more metadata pages in one or more data containers within the cache memory system that are associated with the one or more memory addresses of the one or more metadata pages.
16. The computing system of claim 13 , wherein the active working set of data containers includes a copy of the active working set of data containers in the cache memory system of each storage node, thus defining an active working set of data containers for each storage node, and wherein the frozen working set of data containers includes a copy of the frozen working set of data containers in the cache memory system of each storage node, thus defining a frozen working set of data containers for each storage node.
17. The computing system of claim 13 , wherein assigning flushing ownership for each data container of the active working set of data containers to one of the storage nodes of the plurality of storage nodes based upon, at least in part, an assigned flushing ownership for each data container of a frozen working set and a number of updates to the one or more metadata pages within the frozen working set processed by each storage node includes:
calculating a hash function for each data container of the active working set based upon, at least in part, an initial memory address of the data container, thus defining a data container hash value for each data container;
comparing the data container hash value to the correction factor;
in response to the data container hash value being less than the correction factor, assigning flushing ownership for the respective data container to the least utilized storage node; and
in response to the data container hash value being greater than or equal to the correction factor, assigning flushing ownership for the respective data container to one of the storage nodes based upon, at least in part, the number of updates to the one or more metadata pages for the particular data container within the frozen working set processed by each storage node.