Set-associative hash table organization for efficient storage and retrieval of data in a storage system
First Claim
1. A method comprising:
- receiving write requests having a plurality of extents at a cluster of nodes, each write request processed at a node having a processor and a memory, the memory configured to store a storage input/output (I/O) stack having a plurality of layers implemented as one or more instances executable by the processor, the node coupled to one or more solid state drives (SSDs);
applying a hash function to an extent of the plurality of extents to generate a hash value, the hash value including a hash table selector, a first hash table index, and a second hash table index;
mapping the hash value to an extent store instance of the storage I/O stack that is responsible for storing the extent on a SSD of the one or more SSDs;
selecting a hash table from a set of hash tables served by the extent store instance using the hash table selector, each hash table divided into one or more index address spaces;
selecting a first entry in an index address space of the hash table using the first hash table index, the first entry including a first set of slots having first keys;
matching one of the first keys of the first set of slots to the second hash table index; and
in response to matching one of the first keys, generating a candidate extent key including a candidate hash table index used to select a second entry of the set of hash tables for storing an identification of a storage location on SSD for the extent, the candidate hash table index resolving to the extent store instance serving the set of hash tables.
0 Assignments
0 Petitions
Accused Products
Abstract
The embodiments described herein are directed to the use of hashing in a file system metadata arrangement that reduces an amount of metadata stored in a memory of a node in a cluster and that reduces the amount of metadata needed to process an input/output (I/O) request at the node. Illustratively, the embodiments are directed to cuckoo hashing and, in particular, to a manner in which cuckoo hashing may be modified and applied to construct the file system metadata arrangement. In an embodiment, the file system metadata arrangement may be illustratively include a hash collision technique that employs a hash collision computation to determine a unique candidate extent key (having a candidate hash table index) in the event of a collision, i.e., a hash table index collides with a slot of a hash table matching a key found in the slot.
-
Citations
20 Claims
-
1. A method comprising:
-
receiving write requests having a plurality of extents at a cluster of nodes, each write request processed at a node having a processor and a memory, the memory configured to store a storage input/output (I/O) stack having a plurality of layers implemented as one or more instances executable by the processor, the node coupled to one or more solid state drives (SSDs); applying a hash function to an extent of the plurality of extents to generate a hash value, the hash value including a hash table selector, a first hash table index, and a second hash table index; mapping the hash value to an extent store instance of the storage I/O stack that is responsible for storing the extent on a SSD of the one or more SSDs; selecting a hash table from a set of hash tables served by the extent store instance using the hash table selector, each hash table divided into one or more index address spaces; selecting a first entry in an index address space of the hash table using the first hash table index, the first entry including a first set of slots having first keys; matching one of the first keys of the first set of slots to the second hash table index; and in response to matching one of the first keys, generating a candidate extent key including a candidate hash table index used to select a second entry of the set of hash tables for storing an identification of a storage location on SSD for the extent, the candidate hash table index resolving to the extent store instance serving the set of hash tables. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A system comprising:
-
a storage system of a cluster configured to receive write requests having a plurality of extents, the storage system having a memory connected to a processor via a bus, the storage system coupled to a storage array having one or more solid state drives (SSDs), the memory configured to store a storage input/output (I/O) stack having a plurality of layers implemented as one or more instances executable by the processor, the storage I/O stack configured to; apply a hash function to an extent of the plurality of extents to generate a hash value, the hash value including a hash table selector, a first hash table index, and a second hash table index; map the hash value to an extent store instance of the storage I/O stack that is responsible for storing the extent on a SSD of the one or more SSDs; select a hash table from a set of hash tables served by the extent store instance using the hash table selector, each hash table divided into one or more index address spaces; select a first entry in an index address space of the hash table using the first hash table index, the first entry including a first set of slots having first keys; match one of the first keys of the first set of slots to the second hash table index; and in response to matching one of the first keys, generate a candidate extent key including a candidate hash table index used to select a second entry of the set of hash tables for storing an identification of a storage location on SSD for the extent, the candidate hash table index resolving to the extent store instance serving the set of hash tables. - View Dependent Claims (9, 10, 11, 12, 13, 14)
-
-
15. A non-transitory computer readable medium including program instructions for execution on one or more processors of a cluster configured to process write requests having a plurality of extents, the cluster including a storage system coupled to one or more solid state drives (SSDs), the storage system having a memory configured to store a storage input/output (I/O) stack having a plurality of layers implemented as one or more instances executable by the processor, the program instructions configured to:
-
apply a hash function to an extent of the plurality of extents to generate a hash value, the hash value including a hash table selector, a first hash table index, and a second hash table index; map the hash value to an extent store instance of the storage I/O stack that is responsible for storing the extent on a SSD of the one or more SSDs; select a hash table from a set of hash tables served by the extent store instance using the hash table selector, each hash table divided into a plurality of index address spaces; select a first entry in an index address space of the hash table using the first hash table index, the first entry including a first set of slots having first keys; match one of the first keys of the first set of slots to the second hash table index; and in response to matching one of the first keys, generate a candidate extent key including a candidate hash table index used to select a second entry of the set of hash tables for storing an identification of a storage location on SSD for the extent, the candidate hash table index resolving to the extent store instance serving the set of hash tables. - View Dependent Claims (16, 17, 18, 19, 20)
-
Specification