Incremental Restore List Construction via Directory Stack
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing methods for building a restore list are slow and memory-intensive, often exceeding memory capacity and causing system crashes due to the need to create a complete up-to-date directory structure in memory, especially when dealing with large storage systems and incremental backups.
Innovation Solution
The solution involves bypassing the creation of a complete directory structure in memory by directly building a restore list, using a directory stack to traverse the directory structure iteratively, querying versioned backups for up-to-date contents, and employing coalescing to combine adjacent data files, thereby reducing memory and network overhead.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If a complete up-to-date directory structure is created in memory from full backup and modified with incremental backup changes, then the restore list can be generated, but the system becomes slow and memory-intensive, often exceeding memory capacity and causing crashes
Solution Approach 1:
The patent extracts only the necessary directory information and file metadata from the complete directory structure, rather than loading the entire structure into memory. By taking out only the essential elements (directory paths, file names, timestamps, and locations) and processing them incrementally, the system avoids memory overflow while still being able to generate accurate restore lists for point-in-time recovery.
Solution Approach 2:
The patent segments the directory structure processing into incremental chunks corresponding to each backup level. Instead of processing the complete directory structure at once, the system processes the full backup directory structure first, then applies changes from incremental backups sequentially. This segmentation allows the system to handle large directory structures without requiring all data to be in memory simultaneously.
2Productivity
If a complete up-to-date directory structure is created in memory, then the restore list can be traversed to create the restore list, but the process becomes slow
Solution Approach 1:
The patent performs preliminary actions by pre-processing the full backup directory structure and storing it in a compressed or indexed format. This preliminary processing allows the system to quickly retrieve and apply only the necessary changes from incremental backups without having to traverse the entire directory structure from scratch, significantly reducing restore list generation time.
Solution Approach 2:
The patent skips unnecessary processing steps by directly applying incremental backup changes to the restore list rather than rebuilding the entire directory structure. The system rushes through the incremental backup application process by processing only the changed files and directories, omitting the time-consuming step of reconstructing the complete directory hierarchy when not needed.
3Reliability
If the directory structure is traversed to create the restore list after building in memory, then all files can be identified, but the process is memory-intensive and prone to stack overflow
Solution Approach 1:
The patent implements dynamic memory management by adjusting the memory footprint based on the actual size of the restore list and the number of files to be restored. The system dynamically allocates and deallocates memory as it processes incremental backups, avoiding fixed large memory allocations that could cause overflow. This dynamic approach allows the system to handle varying data set sizes without stack overflow errors.
Data Source
AI summary
A system for building a restore list for a restore includes a processor and a memory. The processor is configured to determine whether a next sibling record of a directory index record of a root directory includes a subdirectory or a file, wherein the content of the directory index is determined from an incremental backup of the root directory. In the event that the next sibling record comprises a subdirectory of the root directory, the processor is configured to push a directory path associated with the next sibling record onto a directory stack. In the event that the next sibling record comprises a file, the processor is configured to add the latest index record associated with the file to a restore list in the event that the file is not already in the restore list. The restore list is provided for a restore of the state of data of the root directory at a desired time.


