File System Cache Deduplication for Shared Block Access

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Modern file systems face inefficiencies due to duplicate I/O requests and content in page caches when multiple files access shared data blocks, leading to issues like 'boot storms' and increased storage costs, especially in environments with virtual machine images and file system checkpoints.

Innovation Solution

Implementing a cache management system that uses deduplication information to identify shared data blocks and maintain a cache configured to store these blocks, allowing the operating system to service requests using shared file identifiers without accessing storage devices, thereby reducing duplicate requests and content in the cache.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If the file system processes each file access request independently without checking for shared blocks, then the simplicity of the access process is maintained, but the storage device capacity is burdened by duplicate requests for the same data blocks

Engineering Contradiction:
Improvestorage device capacity efficiencyVSAvoidcache management complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The system performs preliminary deduplication analysis before processing file access requests. By pre-identifying shared data blocks and creating a deduplication information data structure that maps shared blocks to multiple file identifiers, the system prepares the groundwork for efficient request handling. When a request arrives, the system checks this pre-prepared information to determine if the requested block is shared, avoiding redundant storage device accesses.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent introduces an intermediary cache structure that sits between the file system and the storage device. This cache stores deduplication information including shared block identifiers and their associated file identifiers. When a file access request is received, the system queries this intermediary cache to check if the requested block is shared, and if so, retrieves it from the cache rather than accessing the storage device directly, thus reducing storage device burden.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Productivity

If the system sends multiple requests to the storage device for the same shared data block accessed through different file names, then the file system maintains simple access logic, but the system performance deteriorates due to repeated I/O operations

Engineering Contradiction:
Improvesystem performanceVSAvoidI/O operation time
Core Design Contradiction:
ProductivityVSLoss of time

Solution Approach 1:

The system performs preliminary deduplication analysis before processing file access requests. By pre-identifying shared data blocks and creating a deduplication information data structure that maps shared blocks to multiple file identifiers, the system prepares the groundwork for efficient request handling. When a request arrives, the system checks this pre-prepared information to determine if the requested block is shared, avoiding redundant storage device accesses.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent uses different identifiers (file identifiers versus shared block identifiers) to distinguish between unique file access and shared block access. By tagging data blocks with shared block identifiers and maintaining a mapping between file identifiers and shared block identifiers, the system can quickly recognize when multiple files reference the same underlying data, thereby optimizing the access path to avoid redundant I/O operations.

Inventive Principle:
Principle #32Color changes

3Speed

If the cache stores duplicate copies of shared data blocks for different files, then the file access speed is improved, but the cache memory usage increases unnecessarily

Engineering Contradiction:
Improvefile access speedVSAvoidcache memory usage
Core Design Contradiction:
SpeedVSQuantity of substance

Solution Approach 1:

The patent merges multiple references to the same shared data block into a single cache entry. By using shared block identifiers to index cache entries and maintaining a mapping between file identifiers and shared block identifiers, the system ensures that when a shared block is loaded into cache, it is stored once with the shared block identifier. Subsequent requests for the same block through different files are served from the same cache entry, eliminating duplicate storage while maintaining fast access.

Inventive Principle:
Principle #5Merging (Combining)

Solution Approach 2:

The patent makes the cache universally applicable to multiple files by using shared block identifiers instead of file-specific identifiers. A single cache entry with a shared block identifier can serve multiple files that reference the same underlying data block. This multi-functional cache structure allows the system to service requests from different files through a unified cache interface, maximizing cache utility while minimizing memory consumption.

Inventive Principle:
Principle #6Universality (Multi-functionality)

Data Source

PatentUS8639658B1Cache management for file systems supporting shared blocks
Publication Date: 2014.01.28 ARCTERA US LLC
  • US8639658B1 patent drawing
  • US8639658B1 patent drawing
  • US8639658B1 patent drawing

AI summary

Techniques relating to data deduplication at the file system level are disclosed. A system may include a block cache configured to store data blocks indicated as being shared by multiple files. The system may be coupled to a storage configured to permanently store data for the multiple files. The computer system may receive a file request, and, upon determining that the file request includes shared data, the computer system may service the request wholly or in part using the block cache. When multiple requests including multiple file identifiers (but referring to the same underlying shared data) are received, a shared (common) file identifier may be used in looking up data for the multiple requests, reducing block cache storage, and improving block cache performance and overall system operation.