Recovery Cache for Redundant Storage Data Efficiency
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Distributed storage systems face challenges in efficiently managing data recovery and I/O operations when a storage device fails, particularly in redundant arrays like RAID, where rebuilding the array and handling I/O commands require efficient data retrieval and storage strategies to prevent resource wastage and maintain system consistency.
Innovation Solution
Implementing a recovery cache that stores recovered data blocks from failed storage devices, allowing for the execution of I/O commands using this cache, which includes processes for foreground and background data recovery, prioritizing type-1 and type-2 stripes for write commands, and utilizing a recovery cache to prevent duplicate calculations of data blocks.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Productivity
If data blocks are recovered and stored in a recovery cache during array rebuild, then I/O operation efficiency is improved, but system complexity increases due to additional cache management
Solution Approach 1:
The patent implements foreground data recovery that proactively recovers data blocks before I/O commands are executed. When a storage device fails, the system recovers data blocks from failed devices and stores them in a recovery cache in advance, so that subsequent read commands can be served from the cache rather than performing recovery calculations at the time of I/O execution. This preliminary action eliminates redundant recovery operations and improves I/O efficiency.
Solution Approach 2:
The recovery cache acts as an intermediary between the failed storage devices and the I/O command processing system. Instead of directly recovering data blocks at the time of I/O requests, the system uses the recovery cache to store pre-recovered data blocks, mediating between the recovery process and I/O operations. This intermediary structure allows the system to separate recovery operations from I/O processing, improving overall system efficiency.
2Reliability
If redundant data recovery calculations are performed, then data consistency is maintained, but computational resources are wasted
Solution Approach 1:
The patent implements a feedback mechanism where the system tracks which data blocks have been recovered and stored in the recovery cache. Before performing recovery calculations, the system checks whether the data blocks are already present in the cache, preventing redundant recovery operations. This feedback loop ensures that each data block is recovered only once while maintaining data consistency across the storage system.
Solution Approach 2:
The system recovers data blocks from failed storage devices and stores them in the recovery cache, effectively discarding the need for repeated recovery calculations. Once data blocks are recovered and cached, they are reused for subsequent I/O operations without requiring additional recovery computations, thereby eliminating computational resource waste while maintaining data integrity.
3Productivity
If write commands are prioritized during array rebuild, then system availability is improved, but recovery process complexity increases
Solution Approach 1:
The patent segments I/O commands into different types (read commands and write commands) and applies different processing strategies to each segment. Write commands are prioritized and directed to the recovery cache, while read commands are served from the cache or undergo recovery processing. This segmentation allows the system to optimize for write operations during array rebuild, improving system availability while managing recovery complexity through structured command handling.
Data Source
AI summary
A method for use in a storage system, comprising: detecting that at least one storage device in a redundant storage device array has failed, the redundant storage device array including a plurality of storage devices; storing, in a memory, a recovery cache containing recovered data blocks, the recovered data blocks containing data previously stored on the failed storage device that has been calculated as part of executing read commands before the redundant storage device array is rebuilt; receiving an I/O command that is associated with the redundant storage device array, the I/O command including one of a read command or a write command; and executing the I/O command by using the recovery cache, wherein the redundant storage device array includes a plurality of storage regions, wherein any of the storage regions includes a respective portion of each of the plurality of storage devices.


