Hash-Based Directory Storage Indexing for Space and Time Optimization

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Storage systems face inefficiencies in managing and optimizing the storage of millions of directory entries, leading to suboptimal use of storage space and increased processing time due to the rapid growth of index blocks.

Innovation Solution

The implementation of a hash-based directory management system that allocates and reuses storage blocks efficiently, generating multiple hash values for new directory entries and dynamically allocating or reusing third-level storage blocks when second-level blocks reach a threshold, allowing for effective searching and storage of directory entries.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Quantity of substance

If traditional directory management systems store millions of directory entries using conventional indexing methods, then the system can maintain basic directory functionality, but the number of index blocks grows rapidly exceeding the number of name blocks, leading to suboptimal storage space usage and increased processing time

Engineering Contradiction:
Improvestorage space usageVSAvoidprocessing time
Core Design Contradiction:
Quantity of substanceVSLoss of time

Solution Approach 1:

The patent segments the directory entry storage into multiple hierarchical levels (first-level storage blocks, second-level storage blocks, and third-level storage blocks). Each level stores a portion of the directory entries or references to them, distributing the storage burden across multiple organized segments rather than using a single flat structure. This segmentation prevents the rapid growth of index blocks by organizing entries in a tree-like hierarchy where each level manages a subset of the total entries.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent transitions from a conventional single-dimensional or two-dimensional indexing structure to a multi-dimensional hierarchical storage structure. By introducing multiple levels of storage blocks (first-level, second-level, third-level), the system adds dimensional layers to the organization of directory entries. This multi-dimensional approach allows efficient navigation and reduces the number of index blocks needed compared to traditional flat or single-level hierarchical structures.

Inventive Principle:
Principle #17Another dimension (Dimensionality change)

2Adaptability or versatility

If the storage system allocates new third level storage blocks whenever second level storage blocks reach threshold levels, then the system can accommodate growing directory entries, but it increases device complexity and reduces storage efficiency due to potential fragmentation

Engineering Contradiction:
Improvedirectory entry capacityVSAvoidstorage block management complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent implements a mechanism where third-level storage blocks that have reached their capacity thresholds are identified and recovered for reuse. Instead of continuously allocating new third-level blocks whenever thresholds are reached, the system recycles existing blocks by transferring their contents to newly allocated blocks and then reusing the original blocks. This discarding and recovering approach reduces the total number of active storage blocks needed, simplifies management, and prevents fragmentation while maintaining adaptability to growing directory entry requirements.

Inventive Principle:
Principle #34Discarding and recovering

Data Source

PatentUS9336255B2Techniques for traversal and storage of directory entries of a storage volume
Publication Date: 2016.05.10 NETAPP INC
  • US9336255B2 patent drawing
  • US9336255B2 patent drawing
  • US9336255B2 patent drawing

AI summary

Techniques for adding a directory entry to an existing directory data structure maintained by a storage system for storing a plurality of directory entries are provided. A first storage index block is used for storing a pointer to a first hash value from among a plurality of hash values. A second storage index block is allocated when the first storage index block has reached a threshold level for storing pointers to hash values for the plurality of directory entries. A group of pointers including a pointer to a second hash value from among the plurality of hash values is selected. The group of pointers is stored in the second storage index block with a pointer to a third hash value from among the plurality of hash values such that the directory entry can be searched using the plurality of hash values.