Patent ID: 7783716

Claim:
A system for implementing hierarchical distributed cache coherence in a storage network, the system comprising: a redundancy group (RG) including a first plurality of storage resources and a second plurality of storage resources located remotely from the first plurality of storage resources; an array management function (AMF) access group (AAG), including a plurality of AMFs that share read and write access to the RG, wherein the AAG includes two or more local AMF access groups (LAAGs), each LAAG being either remote from other LAAGS or communicably coupled to other LAAGs by a low bandwidth network link; and a proxy node configured to manage communications between the two or more LAAGs so as to minimize or eliminate inter-LAAG meta-data traffic for read and write operations; wherein the AMF access group includes: a set of first array management function devices forming a first LAAG which is constructed and arranged to access a redundancy group of first storage resources, and a set of second array management function devices forming a second LAAG which is constructed and arranged to access a redundancy group of second storage resources, the first array management function devices being separate and distinct from the second array management function devices, and the first storage resources being separate and distinct from the second storage resources; wherein a particular first array management function device is constructed and arranged to operate as a proxy node of the first LAAG; wherein a particular second array management function device is constructed and arranged to operate as a proxy node of the second LAAG; wherein the proxy node of the first LAAG is constructed and arranged to exchange cache coherency communications with the proxy node of the second LAAG; and wherein the proxy node of the first LAAG has a local cache; and wherein the proxy node of the first LAAG is constructed and arranged to: receive a write invalidate command signal from a first array management function device of the first LAAG, invalidate particular blocks of the local cache of the proxy node of the first LAAG, send a command message to the proxy node of the second LAAG directing the proxy node of the second LAAG to inform all of the second array management function devices to invalidate particular blocks of their local caches, the particular blocks of their local caches corresponding to the particular blocks of the local cache of the proxy node of the first LAAG; and receive a reply message from the proxy node of the second LAAG indicating that the proxy node of the second LAAG has confirmed that all of the second array management function devices have invalidated the blocks of their local caches in response to the command message.