Apparatus and method for storing data in a proxy cache in a network
AssigneeNetwork Appliance, Inc.
InventorsEmmanuel Ackaouy, Matthew Amdur, Kartik Ayyar, David Grunwald, Ashish Prakash, Brian Quirion
Life of this patent
Estimating the term…
Abstract
In one embodiment, the invention provides an apparatus for caching data in a network, with the apparatus including a proxy cache configured to receive request for an object from a client and to fetch data blocks from a server. The proxy cache may be configured to cache the data blocks in a hierarchical relationship within the object. The object may be, for example, a data file or a directory. The data blocks that are cached in the proxy cache define an active data set which is based upon a request from a client.
Claims73
An apparatus for caching data in a network, the apparatus comprising:
- a proxy cache configured to receive request for an object from a client and to fetch data blocks from a server, wherein the proxy cache includes a memory;
- and
- the proxy cache configured to cache the data blocks in a hierarchical relationship within the object and as an active data set, wherein the hierarchical relationship of data blocks are stored in the memory in the proxy cache;
- wherein in response to a cache miss where the proxy cache does not contain a requested data block, the proxy cache determines which server stores the requested data block by using a translation table of N values and FSid values in the proxy cache, where an N value is a hash computation based on an address of a server that has the requested data block, a volume name the contains the data block, and a file name of the data block, and an FSid value is a file system identifier of a server-side file handle from the server, and wherein the proxy cache sends a file handle associated with the requested data block to the server only if the address of the server is identified by the N value, and the proxy cache will fetch the data block from the server and cache the fetched data block in the active data set so that the active data will include a content in a first time period and will include a different content in a second time period and wherein the data blocks in the active data set is updated or a data block in the active data set is flushed, in response to a cache miss.
A method for caching data in a network, the method comprising:
- receiving request for an object from a client;
- if each data block in the requested object is in the cache, then sending the requested object to the client;
- and
- if a data block in the requested object is missing, then fetching the data block from a server, filling the data block in a hierarchical relationship and as part of an active data set, and sending the requested object to the client, wherein the hierarchical relationship including the data block are stored in a memory in a proxy cache;
- wherein in response to a cache miss where the proxy cache does not contain a requested data block, determining, by the proxy cache, which server stores the requested data block by using a translation table of N values and FSid values in the proxy cache, where an N value is a hash computation based on an address of a server that has the requested data block, a volume name the contains the data block, and a file name of the data block, and an FSid value is a file system identifier of a server-side file handle from the server, and sending, by the proxy cache, a file handle associated with the requested data block to the server only if the address of the server is identified by the N value, and fetching a data block from the server and caching the fetched data block in the active data set so that the active data will include a content in a first time period and will include a different content in a second time period and wherein the data blocks in the active data set is updated or a data block in the active data set is flushed, in response to a cache miss.
An apparatus for caching data in a network, the apparatus comprising:
- means for receiving a request for an object from a client;
- coupled to the receiving means, means for sending the requested object to the client, if each data block in the requested object is in the cache;
- and
- coupled to the receiving means, means for fetching the data block from a server, for filling the data block in a hierarchical relationship and as part of an active data set, and for sending the requested object to the client, if a data block in the requested object is missing, wherein the hierarchical relationship including the data block are stored in a memory in a proxy cache;
- wherein in response to a cache miss where the proxy cache does not contain a requested data block, the proxy cache determines which server stores the requested data block by using a translation table of N values and FSid values in the proxy cache, where an N value is a hash computation based on an address of a server that has the requested data block, a volume name the contains the data block, and a file name of the data block, and an FSid value is a file system identifier of a server-side file handle from the server, and wherein the proxy cache sends a file handle associated with the requested data block to the server only if the address of the server is identified by the N value, and the proxy cache will fetch a data block from the server and cache the fetched data block in the active data set so that the active data will include a content in a first time period and will include a different content in a second time period and wherein the data blocks in the active data set is updated or a data block in the active data set is flushed, in response to a cache miss.
An apparatus for caching data in a network, the apparatus comprising:
- a proxy cache configured to receive request for an object from a client and to fetch data blocks from a server, wherein the proxy cache includes a memory;
- and
- the proxy cache configured to cache the data blocks in a hierarchical relationship within the object and as an active data set which is defined based upon a request from a client, wherein the hierarchical relationship of data blocks are stored in the memory in the proxy cache;
- wherein in response to a cache miss where the proxy cache does not contain a requested data block, the proxy cache determines which server stores the requested data block by using a translation table of N values and FSid values in the proxy cache, where an N value is a hash computation based on an address of a server that has the requested data block, a volume name the contains the data block, and a file name of the data block, and an FSid value is a file system identifier of a server-side file handle from the server, and wherein the proxy cache sends a file handle associated with the requested data block to the server only if the address of the server is identified by the N value, and the proxy cache will fetch a data block from the server and cache the fetched data block in the active data set so that the active data will include a content in a first time period and will include a different content in a second time period and wherein the data blocks in the active data set is updated or a data block in the active data set is flushed, in response to a cache miss.
A method for caching data in a network, the method comprising:
- receiving request for an object from a client;
- determining if at least one data block in the requested object is stored in a cache;
- and
- if each data block in the requested object is in the cache, then sending the requested object to the client;
- and
- if a data block in the requested object is missing, then fetching the data block from a server, allocating the data block in the cache, wherein the data block is allocated in an active data set that is dependent upon a given time period, and sending the requested object to the client;
- wherein in response to a cache miss where the proxy cache does not contain a requested data block, determining, by the proxy cache, which server stores the requested data block by using a translation table of N values and FSid values in the proxy cache, where an N value is a hash computation based on an address of a server that has the requested data block, a volume name the contains the data block, and a file name of the data block, and an FSid value is a file system identifier of a server-side file handle from the server, and sending, by the proxy cache, a file handle associated with the requested data block to the server only if the address of the server is identified by the N value, and fetching a data block from the server and caching the fetched data block in the active data set so that the active data will include a content in a first time period and will include a different content in a second time period and wherein the data blocks in the active data set is updated or a data block in the active data set is flushed, in response to a cache miss.
Dependencies are inferred from the claim text.