Distributed Storage Cluster Erasure Coding Offload
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Traditional distributed storage systems face issues such as high network bandwidth consumption, CPU burden from erasure coding, data cache degradation due to frequent writing, and increased costs from using high-performance flash storage, as they require multiple copies of data blocks to be written across multiple storage nodes.
Innovation Solution
Implementing a distributed storage cluster where a front-end server sends data chunks to backend storage nodes, which use a data cache controller to encode and divide codewords into portions, storing one portion locally and distributing the rest, reducing network bandwidth usage and CPU load by offloading erasure coding to the data cache controller, and migrating data to high-latency storage only when necessary.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If multiple copies of data blocks are written at each storage node, then data reliability is improved, but network bandwidth consumption increases
Solution Approach 1:
The data block is divided into multiple data chunks, and erasure coding is applied to generate codeword portions that are distributed across different storage nodes. This segmentation allows the system to achieve the same reliability as storing multiple full copies while reducing the total data volume that needs to be transmitted over the network.
Solution Approach 2:
The system changes the parameter of data representation from storing complete duplicate copies to storing encoded portions of the data. By transforming the data through erasure coding, the system maintains reliability (ability to reconstruct original data from lost portions) while reducing the amount of data that must be written to each node and transmitted across the network.
2Productivity
If CPU handles erasure coding and decoding, then data processing capability is improved, but CPU load increases
Solution Approach 1:
The erasure coding and decoding functions are extracted from the CPU and implemented as dedicated hardware circuits within the storage controller. This extraction offloads the computationally intensive encoding and decoding operations from the general-purpose CPU, reducing CPU load while maintaining data processing capability through specialized hardware acceleration.
3Speed
If data is frequently written to flash storage cache, then data write speed is improved, but data cache degrades over time
Solution Approach 1:
By segmenting the data into chunks and applying erasure coding, the system reduces the total amount of data that must be written to the flash storage cache. Each storage node stores only a portion of the encoded data rather than complete copies, which reduces write amplification and extends the lifespan of the flash storage while maintaining acceptable write speeds.
4Speed
If high-performance flash storage is used, then data write performance is improved, but system cost increases
Solution Approach 1:
The system changes the data storage parameter from storing full data copies to storing encoded portions, which reduces the total data volume written to flash storage. This parameter change allows the use of flash storage for performance-critical operations while reducing the overall amount of flash capacity required, thereby lowering system cost while maintaining data write performance.
Data Source
AI summary
Storing data is described herein, including: receiving a first data, wherein the first data comprises a portion of a data block; encoding at least a portion of the first data to generate a codeword; dividing the codeword into a plurality of codeword portions; storing a first codeword portion; and sending at least a subset of codeword portions other than the first codeword portion among the plurality of the codeword portions to a plurality of nodes. Receiving acknowledgement of storage of data is also described herein, including: determining whether a first acknowledgement from a first node is received, wherein the first data comprises a portion of a data block; determining whether a second acknowledgement from the first node is received; and in response to receipt of the first acknowledgement and receipt of the second acknowledgment, determining that the first data has been stored.


