# US 12,007,944 B2 · Reducing stable data eviction with synthetic baseline snapshot and eviction state refresh

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

- Number: US 12,007,944 B2
- Document ID: US12007944B2
- Status: Granted
- Kind: B2
- Application number: 17/536,515
- Filed: 2021-11-29
- Published: 2022-03-17
- Granted: 2024-06-11
- Earliest claimed: 2016-10-28
- Assignees: NetApp, Inc.
- Applicants: NetApp Inc.
- Inventors: Ajay Pratap Singh Kushwah; Ling Zheng; Sharad Jain
- Web page: https://patentgrep.com/patent/US12007944B2

## 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/1448: {Management of the data involved in backup or backup restore}
- G06F 11/1464: {for networked environments}
- G06F 12/121: using replacement algorithms
- G06F 16/13: File access structures, e.g. distributed indices (arrangements of input from, or output to, record carriers G06F3/06)
- H04L 67/568: Storing data temporarily at an intermediate stage, e.g. caching
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

With a forever incremental snapshot configuration and a typical caching policy (e.g., least recently used), a storage appliance may evict stable data blocks of an older snapshot, perhaps unchanged data blocks of the snapshot baseline. If stable data blocks have been evicted, restore of a recent snapshot will suffer the time penalty of downloading the stable blocks for restoring the recent snapshot. Creating synthetic baseline snapshots and refreshing eviction data of stable data blocks can avoid eviction of stable data blocks and reduce the risk of violating a recovery time objective.

## Claims

### Claim 1

A method comprising:
in response to receiving a restore request for a data collection and a snapshot, identifying a snapshot key-value store for the data collection and an identifier of the snapshot;
utilizing a global map, tracking snapshots that are represented in the key-value store, to retrieve records from the key-value store using the identifier of the snapshot as a key prefix for identify the records that include a snapshot metadata record comprising inode attributes of the data collection; and
communicating a data file of the snapshot through a buffer and communicating the records to the restore target to restore the data collection based upon the snapshot.

### Claim 2 (depends on 1)

The method of claim 1, comprising:
retrieving inode records and directory records as a portion of the records; and
transmitting the inode records and directory records to the restore target.

### Claim 3 (depends on 1)

The method of claim 1, comprising:
retrieving data map records as a portion of the records; and
assembling the data file into the buffer according to the data map records.

### Claim 4 (depends on 1)

The method of claim 1, comprising:
in response to the snapshot not being a baseline snapshot:
creating an inode attribute structure with inode records of the snapshot;
transmitting directory records to the restore target and track parent inode and child name pairs of the directory records;
creating a restore data map with data map records of the snapshot;
merging the records of the snapshot to the baseline snapshot;
transmitting inode attribute structure to the restore target; and
communicating valid data blocks to restore target based on the restore data map.

### Claim 5 (depends on 1)

The method of claim 1, comprising:
in response to receiving a request to delete the snapshot for the data collection, marking the snapshot for deletion;
in response to a reclamation threshold being satisfied for the data collection, identifying identifiers of snapshots marked for deletion; and
for each selected snapshot marked for deletion:
retrieving a first set of records from the key-value store for a valid snapshot subsequent a selected snapshot using a first identifier of the valid snapshot as a first key prefix;
retrieving a second set of records from the key-value store for the selected snapshot using a second identifier of the selected snapshot as a second key prefix;
transferring ownership of valid inode and directory records of the selected snapshot to the valid snapshot;
determining valid data ranges of the selected snapshot and transfer the valid data ranges to the valid snapshot; and
deleting the selected snapshot.

### Claim 6 (depends on 1)

The method of claim 1, comprising:
receiving a request to delete the snapshot for the data collection;
retrieving a first set of records from the key-value store for a valid snapshot subsequent a selected snapshot using a first identifier of the valid snapshot as a first key prefix;
retrieving a second set of records from the key-value store for the selected snapshot using a second identifier of the selected snapshot as a second key prefix;
transferring ownership of valid inode and directory records of the selected snapshot to the valid snapshot;
determining valid data ranges of the selected snapshot and transfer the valid data ranges to the valid snapshot; and
deleting the selected snapshot.

### Claim 7 (depends on 1)

The method of claim 1, comprising:
in response to receiving a file restore request specifying the snapshot, the data collection, and the file, identifying the snapshot key-value store for the data collection and the identifier of the snapshot;
incrementally searching directory records of snapshots for an inode number of the file in reverse time order; and
in response to the snapshot being a baseline snapshot, retrieving data map records using the identifier of the snapshot and inode node as a first key prefix and reconstruct the file according to the data map records.

### Claim 8 (depends on 1)

The method of claim 1, comprising:
in response to receiving a file restore request specifying the snapshot, the data collection, and the file, identifying the snapshot key-value store for the data collection and the identifier of the snapshot;
incrementally searching directory records of snapshots for an inode number of the file in reverse time order; and
in response to the snapshot not being a baseline snapshot, merging data map records across snapshots and reconstruct the file according to merged data map records.

### Claim 9

A non-transitory machine readable medium comprising instructions for performing a method, which when executed by a machine, causes the machine to:
in response to receiving a restore request for a data collection and a snapshot, identify a snapshot key-value store for the data collection and an identifier of the snapshot;
utilize a global map, tracking snapshots that are represented in the key-value store, to retrieve records from the key-value store using the identifier of the snapshot as a key prefix for identify the records that include a snapshot metadata record comprising inode attributes of the data collection; and
communicate a data file of the snapshot through a buffer and communicating the records to the restore target to restore the data collection based upon the snapshot.

### Claim 10 (depends on 9)

The non-transitory machine readable medium of claim 9, wherein the instructions cause the machine to:
retrieve inode records and directory records as a portion of the records; and
transmit the inode records and directory records to the restore target.

### Claim 11 (depends on 9)

The non-transitory machine readable medium of claim 9, wherein the instructions cause the machine to:
retrieve data map records as a portion of the records; and
assemble the data file into the buffer according to the data map records.

### Claim 12 (depends on 9)

The non-transitory machine readable medium of claim 9, wherein the instructions cause the machine to:
in response to the snapshot not being a baseline snapshot:
create an inode attribute structure with inode records of the snapshot;
transmit directory records to the restore target and track parent inode and child name pairs of the directory records;
create a restore data map with data map records of the snapshot;
merge the records of the snapshot to the baseline snapshot;
transmit inode attribute structure to the restore target; and
communicate valid data blocks to restore target based on the restore data map.

### Claim 13 (depends on 9)

The non-transitory machine readable medium of claim 9, wherein the instructions cause the machine to:
in response to receiving a request to delete the snapshot for the data collection, mark the snapshot for deletion;
in response to a reclamation threshold being satisfied for the data collection, identify identifiers of snapshots marked for deletion; and
for each selected snapshot marked for deletion:
retrieve a first set of records from the key-value store for a valid snapshot subsequent a selected snapshot using a first identifier of the valid snapshot as a first key prefix;
retrieve a second set of records from the key-value store for the selected snapshot using a second identifier of the selected snapshot as a second key prefix;
transfer ownership of valid inode and directory records of the selected snapshot to the valid snapshot;
determine valid data ranges of the selected snapshot and transfer the valid data ranges to the valid snapshot; and
delete the selected snapshot.

### Claim 14 (depends on 9)

The non-transitory machine readable medium of claim 9, wherein the instructions cause the machine to:
receive a request to delete the snapshot for the data collection;
retrieve a first set of records from the key-value store for a valid snapshot subsequent a selected snapshot using a first identifier of the valid snapshot as a first key prefix;
retrieve a second set of records from the key-value store for the selected snapshot using a second identifier of the selected snapshot as a second key prefix;
transfer ownership of valid inode and directory records of the selected snapshot to the valid snapshot;
determine valid data ranges of the selected snapshot and transfer the valid data ranges to the valid snapshot; and
delete the selected snapshot.

### Claim 15 (depends on 9)

The non-transitory machine readable medium of claim 9, wherein the instructions cause the machine to:
in response to receiving a file restore request specifying the snapshot, the data collection, and the file, identify the snapshot key-value store for the data collection and the identifier of the snapshot;
incrementally search directory records of snapshots for an inode number of the file in reverse time order; and
in response to the snapshot being a baseline snapshot, retrieve data map records using the identifier of the snapshot and inode node as a first key prefix and reconstruct the file according to the data map records.

### Claim 16 (depends on 9)

The non-transitory machine readable medium of claim 9, wherein the instructions cause the machine to:
in response to receiving a file restore request specifying the snapshot, the data collection, and the file, identify the snapshot key-value store for the data collection and the identifier of the snapshot;
incrementally search directory records of snapshots for an inode number of the file in reverse time order; and
in response to the snapshot not being a baseline snapshot, merge data map records across snapshots and reconstruct the file according to merged data map records.

### Claim 17

A computing device comprising:
a memory comprising machine executable code for performing a method; and
a processor coupled to the memory, the processor configured to execute the machine executable code to cause the processor to:
in response to receiving a restore request for a data collection and a snapshot, identify a snapshot key-value store for the data collection and an identifier of the snapshot;
utilize a global map, tracking snapshots that are represented in the key-value store, to retrieve records from the key-value store using the identifier of the snapshot as a key prefix for identify the records that include a snapshot metadata record comprising inode attributes of the data collection; and
communicate a data file of the snapshot through a buffer and communicating the records to the restore target to restore the data collection based upon the snapshot.

### Claim 18 (depends on 17)

The computing device of claim 17, wherein the machine executable code to causes the processor to:
retrieve inode records and directory records as a portion of the records; and
transmit the inode records and directory records to the restore target.

### Claim 19 (depends on 17)

The computing device of claim 17, wherein the machine executable code to causes the processor to:
retrieve data map records as a portion of the records; and
assemble the data file into the buffer according to the data map records.

### Claim 20 (depends on 17)

The computing device of claim 17, wherein the machine executable code to causes the processor to:
in response to the snapshot not being a baseline snapshot:
create an inode attribute structure with inode records of the snapshot;
transmit directory records to the restore target and track parent inode and child name pairs of the directory records;
create a restore data map with data map records of the snapshot;
merge the records of the snapshot to the baseline snapshot;
transmit inode attribute structure to the restore target; and
communicate valid data blocks to restore target based on the restore data map.
