NAMESPACE MANAGEMENT IN DISTRIBUTED STORAGE SYSTEMS
First Claim
1. A system, comprising:
- one or more computing devices configured to;
generate, at a metadata subsystem of a distributed multi-tenant file storage service, a directed acyclic graph (DAG) to represent a namespace of a directory, wherein each node of a plurality of nodes of the DAG comprises one of;
(a) an array of node identifiers (NIArray) of a lower level of the DAG or (b) a list of namespace entries, and wherein at least one node of the DAG is stored at a different storage device than another node of the DAG;
in response to a lookup request for a file store object,apply a hash function to a name of the file store object to obtain a particular hash value expressible as a first bit sequence of a selected length;
navigate, using successive subsequences of the first bit sequence to identify DAG nodes to be examined at each level, a plurality of levels of the DAG starting from a root level of the DAG, to identify a target node of the DAG that includes a namespace entry of the file store object; and
utilize contents of the namespace entry to determine one or more attributes of the file store object; and
in response to a request to create a new file store object with a specified name,apply the hash function to the specified name to obtain another hash value expressible as a second bit sequence of the selected length;
navigate, using successive subsequences of the second bit sequence, a plurality of levels of the DAG to identify a candidate node of the DAG for storing a new entry corresponding to the new file store object, wherein the candidate node comprises a particular list of entries; and
in response to a determination that the candidate node meets a split criterion, distribute, using respective bit sequences obtained by applying the hash function for each entry, the new entry and at least a selected subset of entries of the particular list of entries among a plurality of DAG nodes including at least one new DAG node.
1 Assignment
0 Petitions
Accused Products
Abstract
A directed acyclic graph (DAG) is generated to represent a namespace of a directory. In response to a request to create a new object with a specified name, a hash value bit sequence is computed for the name. A plurality of levels of the DAG are navigated using successive subsequences of the bit sequence to identify a candidate node for storing a new entry corresponding to the specified name. If the candidate node meets a split criterion, the new entry and at least a selected subset of entries of the candidate node'"'"'s list of entries are distributed among a plurality of DAG nodes, including at least one new DAG node, using respective bit sequences obtained by applying the hash function for each distributed entry.
-
Citations
22 Claims
-
1. A system, comprising:
one or more computing devices configured to; generate, at a metadata subsystem of a distributed multi-tenant file storage service, a directed acyclic graph (DAG) to represent a namespace of a directory, wherein each node of a plurality of nodes of the DAG comprises one of;
(a) an array of node identifiers (NIArray) of a lower level of the DAG or (b) a list of namespace entries, and wherein at least one node of the DAG is stored at a different storage device than another node of the DAG;in response to a lookup request for a file store object, apply a hash function to a name of the file store object to obtain a particular hash value expressible as a first bit sequence of a selected length; navigate, using successive subsequences of the first bit sequence to identify DAG nodes to be examined at each level, a plurality of levels of the DAG starting from a root level of the DAG, to identify a target node of the DAG that includes a namespace entry of the file store object; and utilize contents of the namespace entry to determine one or more attributes of the file store object; and in response to a request to create a new file store object with a specified name, apply the hash function to the specified name to obtain another hash value expressible as a second bit sequence of the selected length; navigate, using successive subsequences of the second bit sequence, a plurality of levels of the DAG to identify a candidate node of the DAG for storing a new entry corresponding to the new file store object, wherein the candidate node comprises a particular list of entries; and in response to a determination that the candidate node meets a split criterion, distribute, using respective bit sequences obtained by applying the hash function for each entry, the new entry and at least a selected subset of entries of the particular list of entries among a plurality of DAG nodes including at least one new DAG node. - View Dependent Claims (2, 3, 4, 5)
-
6. A method, comprising:
performing, by one or more computing devices; generating a directed acyclic graph (DAG) to represent a namespace of a directory, wherein each node of a plurality of nodes of the DAG comprises one of;
(a) an array of node identifiers (NIArray) of a lower level of the DAG or (b) a list of namespace entries;in response to a lookup request for a file store object, applying a hash function to a name of the file store object to obtain a particular hash value expressible as a first bit sequence; navigating, using successive subsequences of the first bit sequence to identify DAG nodes to be examined at each level, a plurality of levels of the DAG starting from a root level of the DAG, to identify a target node of the DAG that includes a namespace entry of the file store object; and utilizing contents of the namespace entry to determine one or more attributes of the file store object; and in response to a request to create a new file store object with a specified name, applying the hash function to the specified name to obtain another hash value expressible as a second bit sequence; navigating, using successive subsequences of the second bit sequence, a plurality of levels of the DAG to identify a candidate node of the DAG for storing a new entry corresponding to the new file store object, wherein the candidate node comprises a particular list of entries; and in response to determining that the candidate node meets a split criterion, distributing the new entry and at least a selected subset of entries of the particular list of entries among a plurality of DAG nodes including at least one new DAG node, wherein said distributing comprises using respective bit sequences obtained by applying the hash function for each distributed entry. - View Dependent Claims (7, 8, 9, 10, 11, 12, 13, 14, 15, 16)
-
17. A non-transitory computer-accessible storage medium storing program instructions that when executed on one or more processors:
-
generate a directed acyclic graph (DAG) to represent a namespace of a directory, wherein each node of a plurality of nodes of the DAG comprises one of; (a) an array of node identifiers (NIArray) of a lower level of the DAG or (b) a list of namespace entries; in response to a request to create a new file store object with a specified name, apply a hash function to the specified name to obtain a hash value expressible as a first bit sequence; navigate, a plurality of levels of the DAG to identify a candidate node of the DAG for storing a new entry corresponding to the new file store object, wherein the candidate node comprises a particular list of entries, and wherein, to navigate a particular level of the plurality of levels, a selected subsequence of the bit sequence is used as an index; and in response to a determination that the candidate node meets a split criterion, distribute the new entry and at least a selected subset of entries of the particular list of entries among a plurality of DAG nodes including at least one new DAG node using respective bit sequences obtained by applying the hash function for each distributed entry. - View Dependent Claims (18, 19, 20, 21, 22)
-
Specification