Patent ID: 8769105

Claim:
A method of establishing a software-defined network attachable storage system in a plurality of logical computer systems, each computer system having memory, a processor, and a storage system, the method comprising: running a set of programs in the logical computer systems that establish (i) a first set of at least two logical computer systems, each logical computer system in the first set configured as a namespace server that operates autonomously in a distinct partition of a namespace, and (ii) a second set of at least two logical computer systems, each logical computer system in the second set configured as a dataspace server that operates in an assigned partition of a dataspace associated with the storage system; wherein: (i) in order to process a given pathname request from at least one requesting client computer, a specific one of the namespace servers is identified by the at least one requesting client computer, which (a) computes a hash value of at least a portion of the given pathname and uses the hash value as an index into a hash table to obtain the identity of the specific one of the namespace servers and, (b) when mounting the namespace, receives the hash table from the storage system and stores the hash table locally; (ii) the specific one of the namespace servers is configured: (a) to store persistently, in its memory, filesystem metadata associated with the distinct partition of the namespace corresponding to the specific one of the namespace servers, the metadata including file names and information on where user data associated with the file names resides, and to store, in a non-volatile namespace store associated with the specific one of the namespace servers, a dynamically updated copy of the filesystem metadata; and (b) to use the metadata that is persistently stored in its memory in processing the given storage system pathname request from the at least one requesting client computer to return to the at least one requesting client computer a handle that identifies a particular one of the dataspace servers and identifies a particular logical block index in the dataspace; and (iii) the handle is used by the at least one requesting client computer to select the particular one of the dataspace servers; and (iv) the particular one of the dataspace servers satisfies the given pathname request by accessing the particular logical block index in the dataspace identified by the handle.