Erasure Coded Storage Write Coalescing via Two-Tier Segmentation
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Distributed storage systems employing erasure coding face inefficiencies in write operations due to high write amplification from partial stripe writes, which are exacerbated by the need for large NVRAM for caching and the complexity of managing metadata in log-structured file systems.
Innovation Solution
The system creates separate metadata and capacity objects, with the capacity object using an erasure coding scheme and a log-structured file system layout, and the metadata object using mirroring and an overwrite-based file system layout, allowing for efficient coalescing of partial stripe writes into full stripe writes without requiring extensive NVRAM or complex metadata management.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Productivity
If partial stripe writes are executed in erasure coded storage systems, then data can be updated efficiently, but write amplification increases significantly
Solution Approach 1:
The patent segments the storage system into two distinct tiers: a performance tier with high-speed storage devices for caching and a capacity tier with larger, slower storage devices for bulk storage. This segmentation allows partial stripe writes to be buffered in the performance tier and consolidated into full stripe writes before being issued to the capacity tier, reducing write amplification while maintaining write efficiency.
Solution Approach 2:
The system performs preliminary actions by buffering partial stripe writes in the performance tier storage devices before consolidating and issuing them as full stripe writes to the capacity tier. This preliminary buffering and consolidation process reduces the immediate write amplification impact on the storage system.
2Productivity
If NVRAM is used to cache partial stripe writes, then write performance improves, but hardware cost and complexity increase
Solution Approach 1:
The patent uses cheaper, more readily available storage devices in the performance tier (such as SSDs or memory buffers) instead of expensive NVRAM. These temporary storage objects are sufficient for the caching function and can be easily replaced or expanded, avoiding the need for expensive non-volatile memory hardware while achieving the same write performance improvement.
3Productivity
If log-structured file system is used to coalesce writes, then partial stripe writes can be merged, but metadata management becomes complex
Solution Approach 1:
The patent extracts the metadata management complexity from the capacity tier by handling all metadata operations in the performance tier. The performance tier maintains its own metadata for tracking partial stripe writes and consolidation, while the capacity tier uses simpler overwrite-based file system metadata. This separation removes the complexity of managing log-structured metadata across the entire system.
4Loss of energy
If full stripe writes are always issued, then write amplification is minimized, but write flexibility is reduced
Solution Approach 1:
The system dynamically adapts its behavior based on the write pattern received. When partial stripe writes are detected, they are buffered in the performance tier and then consolidated into full stripe writes for issuance to the capacity tier. This dynamic buffering and consolidation process maintains write flexibility for the application while achieving write amplification reduction at the storage level.
Data Source
AI summary
Techniques for issuing efficient writes to an erasure coded storage object in a distributed storage system are provided. In one set of embodiments, a node of the system can receive a write request for updating a logical data block of the storage object, write data/metadata for the block to a record in a data log of a metadata object of the storage object (where the metadata object is stored on a performance storage tier), place the block data in a free slot of an in-memory bank, and determine whether the in-memory bank has become full. If the in-memory bank is full, the node can further allocate a segment in a capacity object of the storage object for holding contents of the in-memory bank (where the capacity object is stored on a capacity storage tier), and write the in-memory bank contents via a full stripe write to the allocated segment.


