Virtualizing network-attached-storage (NAS) with a compact table that stores lossy hashes of file names and parent handles rather than full names
First Claim
1. A virtual Network Attached Storage (NAS) translator comprising:
- a network interface that receives requests from clients, and receives server-data from a plurality of NAS appliance servers, each of the plurality of NAS appliance servers storing files and having a file system and a network connection;
wherein the server-data from the plurality of NAS appliance servers is carried over a network in network packets;
wherein the requests from clients are carried over the network in network packets;
wherein the requests from clients are messages using a networked-file-protocol, the requests including initial requests that contain a file name and a directory-path locator;
a hash engine, receiving the file name and a directory-path locator from the network interface, the hash engine generating a hashed-name key having a fixed-length;
a translation table with a plurality of entries that each contain a storage key, file meta-data, and a unique identifier, the entries not storing the file name;
wherein the meta-data includes a server identifier that indicates a server storing the file in the plurality of NAS appliance servers;
a comparator, receiving the hashed-name key and the storage key, for selecting a matching entry in the translation table, the matching entry having a storage key that matches the hashed-name key; and
a reply generator, receiving the unique identifier for the matching entry from the translation table, for generating a reply to the client that is sent through the network interface to the client, the reply containing a virtual file handle using the unique identifier;
wherein the requests from clients also include secondary requests that contain the virtual file handle received by the client from the replay generator;
a secondary translator, receiving the virtual file handle from the client, the secondary translator extracting a client unique identifier from the virtual file handle and searching the translation table for a matching entry that has the unique identifier matching the client unique identifier; and
a request forwarder, coupled to the network interface, for substituting a native file handle for the matching entry for the virtual file handle to generate a request to a NAS appliance server in the plurality of NAS appliance servers,whereby virtual file handles from clients are replaced with native file handles by the virtual NAS translator before being forwarded to the plurality of NAS appliance servers.
3 Assignments
0 Petitions
Accused Products
Abstract
Multiple Network Attached Storage (NAS) appliances are pooled together by a virtual NAS translator, forming one common name space visible to clients. Clients send messages to the virtual NAS translator with a file name and a virtual handle of the parent directory that are concatenated to a full file-path name and compressed by a cryptographic hash function to generate a hashed-name key. The hashed-name key is matched to a storage key in a table. The full file-path name is not stored, reducing the table size. A unique entry number is returned to the client as the virtual file handle that is also stored in another table with one or more native file handles, allowing virtual handles to be translated to native handles that the NAS appliance servers use to retrieve files. File movement among NAS servers alters native file handles but not virtual handles, hiding NAS details from clients.
-
Citations
14 Claims
-
1. A virtual Network Attached Storage (NAS) translator comprising:
-
a network interface that receives requests from clients, and receives server-data from a plurality of NAS appliance servers, each of the plurality of NAS appliance servers storing files and having a file system and a network connection; wherein the server-data from the plurality of NAS appliance servers is carried over a network in network packets; wherein the requests from clients are carried over the network in network packets; wherein the requests from clients are messages using a networked-file-protocol, the requests including initial requests that contain a file name and a directory-path locator; a hash engine, receiving the file name and a directory-path locator from the network interface, the hash engine generating a hashed-name key having a fixed-length; a translation table with a plurality of entries that each contain a storage key, file meta-data, and a unique identifier, the entries not storing the file name; wherein the meta-data includes a server identifier that indicates a server storing the file in the plurality of NAS appliance servers; a comparator, receiving the hashed-name key and the storage key, for selecting a matching entry in the translation table, the matching entry having a storage key that matches the hashed-name key; and a reply generator, receiving the unique identifier for the matching entry from the translation table, for generating a reply to the client that is sent through the network interface to the client, the reply containing a virtual file handle using the unique identifier; wherein the requests from clients also include secondary requests that contain the virtual file handle received by the client from the replay generator; a secondary translator, receiving the virtual file handle from the client, the secondary translator extracting a client unique identifier from the virtual file handle and searching the translation table for a matching entry that has the unique identifier matching the client unique identifier; and a request forwarder, coupled to the network interface, for substituting a native file handle for the matching entry for the virtual file handle to generate a request to a NAS appliance server in the plurality of NAS appliance servers, whereby virtual file handles from clients are replaced with native file handles by the virtual NAS translator before being forwarded to the plurality of NAS appliance servers. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A virtual Network Attached Storage (NAS) translator comprising:
-
a network interface that receives requests from clients, and receives server-data from a plurality of NAS appliance servers, each of the plurality of NAS appliance servers storing files and having a file system and a network connection; wherein the server-data from the plurality of NAS appliance servers is carried over a network in network packets; wherein the requests from clients are carried over the network in network packets; wherein the requests from clients are messages using a networked-file-protocol, the requests including initial requests that contain a file name and a directory-path locator; a hash engine, receiving the file name and a directory-path locator from the network interface, the hash engine generating a hashed-name key having a fixed-length; a translation table with a plurality of entries that each contain a storage key, file meta-data, and a unique identifier, the entries not storing the file name; wherein the meta-data includes a server identifier that indicates a server storing the file in the plurality of NAS appliance servers; a comparator, receiving the hashed-name key and the storage key, for selecting a matching entry in the translation table, the matching entry having a storage key that matches the hashed-name key; and a reply generator, receiving the unique identifier for the matching entry from the translation table, for generating a reply to the client that is sent through the network interface to the client, the reply containing a virtual file handle using the unique identifier; a secondary hash engine, receiving the hashed-name key from the hash engine, for generating a locator key; wherein the locator key selects a bucket of entries from the translation table; wherein the comparator compares the hashed-name key to storage keys from the bucket of entries but does not compare to storage keys from un-selected buckets of entries, whereby buckets of entries are selected by the locator key. - View Dependent Claims (9, 10, 11, 12, 13, 14)
-
Specification