# US 12,216,614 B2 · Data restore system

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 12,216,614 B2
- Document ID: US12216614B2
- Status: Granted
- Kind: B2
- Application number: 18/096,065
- Filed: 2023-01-12
- Published: 2023-07-13
- Granted: 2025-02-04
- Earliest claimed: 2022-01-13
- Assignees: Druva Inc.
- Applicants: Druva Inc.
- Inventors: Anand Apte; Harshit Rai
- Web page: https://patentgrep.com/patent/US12216614B2

## CPC

- G06F 16/128: {Details of file system snapshots on the file-level, e.g. snapshot creation, administration, deletion (error detection or correction of the data by redundancy in operations or in hardware G06F11/14, G06F11/16)}
- G06F 11/1435: {using file system or storage system metadata}
- G06F 11/1451: {by selection of backup contents}
- G06F 11/1453: {using de-duplication of the data}
- G06F 11/1466: {to make the backup process non-disruptive}
- G06F 11/1469: {Backup restoration techniques}
- G06F 16/125: {characterised by the use of retention policies (retention policies for HSM systems G06F16/185)}
- G06F 16/13: File access structures, e.g. distributed indices (arrangements of input from, or output to, record carriers G06F3/06)
- G06F 16/162: {Delete operations (erasing in storage systems G06F3/0652)}
- G06F 16/172: Caching, prefetching or hoarding of files
- G06F 16/1744: {using compression, e.g. sparse files}
- G06F 16/1748: {De-duplication implemented within the file system, e.g. based on file segments (de-duplication techniques in storage systems for the management of data blocks G06F3/0641)}
- G06F 16/90335: {Query processing}
- G06F 2201/81: Threshold
- G06F 2201/84: Using snapshots, i.e. a logical point-in-time copy of the data
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A data restore system is provided. The data restore system includes a backup data storage configured to store data for a client and a data restore module configured to receive a restore trigger from the client and to initiate restore operation for selected data from the backup data storage in response to the received trigger. The data restore module is further configured to receive information regarding the selected data to be restored and access a metadata store to receive metadata information for the selected data and provide the metadata information and the downloaded data blocks to a controller to facilitate sorting of the downloaded data blocks based on the files they belong to and store the downloaded restored data to a target data storage. The data restore module is further configured to interact with the checkpointing module to track the progress of restore operation in persistent storage and to minimize rework when restore operation is restarted from interrupt.

## Claims

### Claim 1

A data restore system, comprising:
a backup data storage configured to store data for a client;
a data restore module configured to receive a restore trigger from the client and to initiate restore operation for selected data from the backup data storage in response to the received trigger, wherein the data restore module is further configured to:
receive information regarding the selected data to be restored;
access a metadata storage to receive metadata information for the selected data;
access the metadata storage to receive one or more urls to download data blocks for selected data based on their respective block identifications (BlockIDs);
access an object storage to concurrently download data blocks using the urls corresponding to the selected data;
concurrently provide the metadata information and the downloaded data blocks to a controller to facilitate sorting of the downloaded data blocks based on the files they belong to; and
store the downloaded restored data to a target data storage,
wherein the urls for obtaining data blocks for the selected data are received in response to one or more API calls, made concurrently by the restore system to the metadata storage, and
wherein the controller is further configured to close the file and set corresponding file attributes of the one or more files if it is detected that all the data blocks for a particular file are restored.

### Claim 2 (depends on 1)

The data restore system of claim 1, wherein the data restore system is configured to restore files, folders, emails, virtual machine images, databases, or combinations thereof.

### Claim 3 (depends on 1)

The data restore system of claim 1, wherein the metadata information comprises at least one of file path, file properties, a list of offset and block identification (BlockID) for one or more files of the selected data.

### Claim 4 (depends on 1)

The data restore system of claim 1, wherein the metadata information for the selected data is received in response to one or more API calls, and wherein the API calls are repeated until the files and metadata block information is exhausted.

### Claim 5 (depends on 1)

The data restore system for claim 1, wherein a sequence of file and block metadata information received from the metadata storage is selected such that the sequence is aligned with an index structure used to store metadata at the metadata storage.

### Claim 6 (depends on 1)

The data restore system for claim 1, wherein the data blocks for the selected data are received in response to concurrent API calls made to the object storage, with blockID and url information obtained from the prior API calls.

### Claim 7 (depends on 1)

The data restore system of claim 1, wherein the controller is further configured to:
create one or more files on the target data storage using the file path and file properties;
receive downloaded data blocks along with file offset and blockID for the one or more files; and
sort data blocks based on the file path and store the sorted data blocks on the target data storage.

### Claim 8 (depends on 1)

The data restore system of claim 1, wherein the target data storage is configured to support sparse file IO operations and the controller is configured to use the sparse file IO operations to write the data blocks for a particular file in the order in which the block download network IO operations are completed.

### Claim 9 (depends on 1)

The data restore system of claim 1, wherein the controller is further configured to provide block map entries of inflight and restored data blocks to a checkpoint module, wherein the checkpoint module is configured to determine if all the data blocks of the files of the selected data are restored.

### Claim 10 (depends on 1)

The data restore system of claim 1, wherein the checkpoint module is configured to track real-time progress of the restore operation from the backup data storage to the target data storage and to facilitate restore in an event of restart of the system, wherein the checkpoint module is configured to:
get a copy of a page of file path information, file properties and block map information corresponding to files being restored, when the page is fetched by the data restore system from metadata storage;
prepare in-memory entries of a Nextpage token used to fetch the page along with files and blocks to be in-flight.

### Claim 11 (depends on 10)

The data restore system of claim 10, wherein the checkpoint module is further configured to:
mark entries as done for blocks when restore operation comprising of downloading the block from object storage and writing it to the target store is complete;
discard the state for this page once all the entries for blocks in the page and the previous pages are done; and
reflect the state of each of the files and blocks for selected data as they are downloaded and stored to destination.

### Claim 12 (depends on 11)

The data restore system of claim 11, wherein the checkpoint module is further configured to serialise an in-memory checkpoint state comprising of Nextpage token used to fetch the page and a list of block metadata entries for blocks successfully written to target storage in a periodic manner and store the checkpoint state.

### Claim 13 (depends on 12)

The data restore system of claim 12, wherein the checkpoint module is further configured to:
read the checkpoint state from persistent storage as the restore operation resumes from an interrupt from the checkpoint state;
use the Nextpage token for the oldest incomplete page to fetch the list of metadata entries from metadata storage;
for the obtained metadata entries, manage download and write operation to target store for data blocks that were not previously downloaded as per the entries available in the checkpoint state.

### Claim 14

A data restore system, comprising:
a memory storing one or more processor-executable routines; and
a processor communicatively coupled to the memory, the processor configured to execute the one or more processor-executable routines to:
receive a restore trigger to initiate restore operation for selected data from a backup data storage;
access metadata information for the selected data;
concurrently receive urls for accessing data blocks for the selected data;
use the urls to concurrently download data blocks corresponding to the selected data;
provide the metadata information and the downloaded data blocks to a controller to sort blocks based on files they belong to;
store the downloaded restored data to a target data storage;
track real-time progress of the restore operation from the backup storage to the target data storage;
fetch a page of file path information, file properties, and block map information corresponding to files being restored;
prepare in-memory entries of a Nextpage token used to fetch the page along with files and blocks to be in-flight;
concurrently fetch download uniform resource locators (urls) for each blockID of the file data blocks;
concurrently download blocks from the object storage using the downloaded urls; and
write the downloaded blocks to the target data storage.

### Claim 15 (depends on 14)

The data restore system of claim 14, wherein the processor is configured to execute the one or more processor-executable routines to facilitate real-time restore operation from the backup storage to the target data storage in an event of restart of the system.

### Claim 16 (depends on 14)

The data restore system of claim 14, wherein the processor is further configured to execute the one or more processor-executable routines to fetch the metadata information and data blocks for the selected data in response to one or more API calls, and wherein the API calls are repeated until the files and metadata block information is exhausted.

### Claim 17 (depends on 14)

The data restore system of claim 14, wherein the processor is further configured to execute the one or more processor-executable routines to:
mark entries for each of the downloaded blocks of the page to the target data storage as done in the checkpoint module;
discard the state for this page once all the entries for the page and the previous pages are done; and
reflect the state of each of the files and blocks for selected data as they are downloaded and stored to destination.

### Claim 18 (depends on 14)

The data restore system of claim 14, wherein the processor is further configured to execute the one or more processor-executable routines to display a restore status of a checkpoint state of the restore operation and details of the restored data at any desired point in time.

### Claim 19

A data restore method, comprising:
receiving a restore trigger to initiate restore operation for selected data from a backup data storage;
accessing metadata information for the selected data;
concurrently receive uniform resource locations (urls) for accessing data blocks for the selected data;
concurrently downloading data blocks corresponding to the selected data;
concurrently providing the metadata information and the data blocks to a controller to sort the data blocks based on files they belong to;
storing the downloaded restored data to a target data storage;
tracking real-time progress of the restore operation from the backup data storage to the target data storage using a checkpointing module;
fetch a page of file path information, file properties, and block map information corresponding to files being restored;
prepare in-memory entries of a Nextpage token used to fetch the page along with files and blocks to be in-flight;
concurrently fetch download uniform resource locators (urls) for each blockID of the file data blocks;
concurrently download blocks from the object storage using the downloaded urls; and
write the downloaded blocks to the target data storage.

### Claim 20 (depends on 19)

The method of claim 19, wherein the method comprises restarting the restore operation in a restart event of the system.

### Claim 21 (depends on 19)

The method of claim 19, wherein the method further comprises
creating one or more files on the target data storage using a file path and file properties of the selected data;
fetching data blocks using an offset and a blockID for the one or more files; and
sorting data blocks based on the file path and store the sorted data blocks on the target data storage.

### Claim 22 (depends on 21)

The method of claim 21, further comprising determining if all the data blocks of the files of the selected data are restored using block map entries of restored data blocks.
