Storage System Data Loss Prevention via Persistent Memory Initialization
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Enterprise-class storage servers face challenges in preventing data loss during system crashes or disk failures, as they must either operate with degraded performance or discard acknowledged user data, due to the uncertainty of when a failing mass storage device will become accessible again.
Innovation Solution
During system initialization, uncommitted data records are identified and saved to accessible storage aggregates or stored in a file for later use, allowing data to be replayed when the aggregates become available, thus preventing data loss and freeing up persistent memory for ongoing operations.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If uncommitted data is held in persistent memory during system initialization, then data integrity is maintained, but system performance degrades due to memory being occupied
Solution Approach 1:
The system performs preliminary identification of uncommitted data records during initialization and saves them to accessible storage aggregates before they are needed. This advance preparation allows the persistent memory to be freed for ongoing operations while ensuring data can be recovered when aggregates become available.
Solution Approach 2:
Uncommitted data records are extracted from persistent memory and saved to accessible storage aggregates during initialization. This separation allows the persistent memory to be released for normal operations while the extracted data remains preserved in the storage aggregate for later recovery.
2Reliability
If the system waits for storage aggregates to become available before processing, then data can be written safely, but system responsiveness deteriorates
Solution Approach 1:
The system performs preliminary saving of uncommitted data to accessible storage aggregates during initialization, before the aggregates are officially brought online. This advance action allows normal operations to proceed without waiting for aggregate availability, while data safety is maintained through the preliminary save operation.
Solution Approach 2:
Accessible storage aggregates serve as an intermediary storage location during initialization. Data is temporarily saved to these aggregates while they are being prepared, allowing the system to maintain data safety without blocking normal operations until the aggregates are fully available.
3Productivity
If persistent memory is freed during initialization, then system performance improves, but data loss risk increases
Solution Approach 1:
Uncommitted data records are extracted from persistent memory and saved to accessible storage aggregates during initialization. This extraction allows persistent memory to be freed for improved system performance while the extracted data remains preserved in the storage aggregate, preventing data loss.
Solution Approach 2:
The system creates a copy of uncommitted data records in accessible storage aggregates during initialization. This copying mechanism allows the original persistent memory to be freed while a preserved copy remains available for recovery, thus improving performance without increasing data loss risk.
Data Source
AI summary
Storage servers use a fast, non-volatile or persistent memory to store data until it can be written to slower mass storage devices such as disk drives. If the server crashes before a write can complete, the data remains safely stored in non-volatile memory. If the data cannot be committed to disk when the server reboots (e.g. because the destination mass storage device is unavailable), it is stored in a file. When the disk reappears, the data in the file may be used to restore a file or filesystem on the disk to a consistent state.


