# US 2018/0024759 A1 · Indirection-Based Storage System Backups

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

- Number: US 2018/0024759 A1
- Document ID: US20180024759A1
- Status: Published application
- Kind: A1
- Application number: 15/587,403
- Filed: 2017-05-05
- Published: 2018-01-25
- Earliest claimed: 2016-07-19
- Assignees: Western Digital Technologies, Inc.
- Applicants: Western Digital Technologies, Inc.
- Inventors: Ashish Singhai; Vijay Karamcheti; Ashwin Narasimha
- Web page: https://patentgrep.com/patent/US20180024759A1

## CPC

- G06F 11/1446: Point-in-time backing up or restoration of persistent data
- G06F 3/0619: {in relation to data integrity, e.g. data losses, bit errors}
- G06F 3/065: {Replication mechanisms}
- G06F 3/067: {Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]}
- G06F 11/1448: {Management of the data involved in backup or backup restore}
- G06F 11/1451: {by selection of backup contents}
- G06F 12/0253: {Garbage collection, i.e. reclamation of unreferenced memory}
- G06F 12/0269: {Incremental or concurrent garbage collection, e.g. in real-time systems (G06F12/0261 takes precedence)}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A data storage system comprising, a storage device having segments that are configured to store data, and a storage logic coupled to the storage device that manages storage of data on the storage device using a translation table. The storage logic is executable to receive a first marker as part of a backup request, generate a second marker encapsulating a state of the storage device at a second time, calculate a difference between the first marker and the second marker, and generate a backup of data stored in the storage device based on the calculated difference between the first marker and the second marker.

## Claims

### Claim 1

A data storage system comprising:
a storage device having segments that are configured to store data; and
a storage logic coupled to the storage device that manages storage of data on the storage device using a translation table, the storage logic executable to:
receive a first marker as part of a backup request, the first marker encapsulating a state of the storage device at a first time, the first marker including a first set of serial numbers, the first set of serial numbers being associated with a first set of segments, and the first marker being based on the translation table at the first time;
generate a second marker encapsulating a state of the storage device at a second time, the second marker including a second set of serial numbers, the second set of serial numbers being associated with a second set of segments, and the second marker being based on the translation table at the second time;
calculate a difference between the first marker and the second marker; and
generate a backup of data stored in the storage device based on the calculated difference between the first marker and the second marker.

### Claim 2 (depends on 1)

The data storage system of claim 1, wherein the storage logic is further executable to:
determine a set of backup segments based on the calculated difference;
set a garbage collection barrier based on the serial numbers associated with the backup segments; and
incrementally release the garbage collection barrier in association with the backup.

### Claim 3 (depends on 2)

The data storage system of claim 2, wherein the storage logic incrementally releases the garbage collection barrier by releasing the garbage collection barrier for each segment of the set of backup segments after the segment has been backed up.

### Claim 4 (depends on 1)

The data storage system of claim 1, wherein the storage logic is further executable to generate serial numbers including the first set of serial numbers and the second set of serial numbers.

### Claim 5 (depends on 1)

The data storage system of claim 1, wherein the storage logic is further executable to generate the first marker based on the translation table at the first time.

### Claim 6 (depends on 1)

The data storage system of claim 1, wherein generating the second marker includes utilizing the translation table that translates logical addresses to physical addresses in the storage device to capture the second set of serial numbers of the second set of segments.

### Claim 7 (depends on 1)

The data storage system of claim 1, wherein
the storage logic is further executable to:
determine a deletion of a storage unit from the storage device; and
record the deletion of the storage unit from the storage device in a deletion table; and
generating the backup is further based on the deletion table.

### Claim 8 (depends on 7)

The data storage system of claim 7, wherein the storage logic is further executable to retire deleted storage unit mappings in the deletion table responsive to generating the backup.

### Claim 9 (depends on 1)

The data storage system of claim 1, wherein the storage logic is further configured to calculate the difference between the first marker and the second marker by:
determining a first serial number having a first value;
determining a second serial number having a second value that is different from the first value; and
enumerating serial numbers between the first serial number and the second serial number.

### Claim 10 (depends on 9)

The data storage system of claim 9, wherein the first marker includes a first set of offsets and the second marker includes a second set of offsets, and to generate the backup includes:
backing up segments referenced in the first marker, from the offsets of the first set of offsets to an end of the segments referenced in the first marker;
backing up segments with serial number references occurring between the first serial number and the second serial number; and
backing up segments referenced in the second marker, from a beginning of the segments to an end of the offsets of the second set of offsets.

### Claim 11 (depends on 1)

The data storage system of claim 1, wherein the first marker is initialized as an empty set.

### Claim 12

A method comprising:
receiving a first marker as part of a backup request, the first marker encapsulating a state of a storage device at a first time, the first marker including a first set of serial numbers, the first set of serial numbers being associated with a first set of segments, and the first marker being based on a translation table of a storage logic associated with the storage device at the first time;
generating a second marker encapsulating a state of the storage device at a second time, the second marker including a second set of serial numbers, the second set of serial numbers being associated with a second set of segments, and the second marker being based on the translation table at the second time;
calculating a difference between the first marker and the second marker; and
generating a backup of data stored in the storage device based on the calculated difference between the first marker and the second marker.

### Claim 13 (depends on 12)

The method of claim 12, further comprising:
determining a set of backup segments based on the calculated difference;
setting a garbage collection barrier based on serial numbers associated with the backup segments; and
releasing the garbage collection barrier incrementally in association with the backup by releasing the garbage collection barrier for each segment of the set of backup segments after the segment has been backed up.

### Claim 14 (depends on 12)

The method of claim 12, further comprising generating the first marker based on the translation table at the first time.

### Claim 15 (depends on 12)

The method of claim 12, wherein generating the second marker comprises:
initializing the second marker;
querying the translation table for a set of segments being filled; and
adding an index, a serial number, and a fill offset of each of the segments being filled to the second marker.

### Claim 16 (depends on 12)

The method of claim 12, further comprising:
determining a deletion of a storage unit from the storage device; and
recording the deletion of the storage unit from the storage device in a deletion table, wherein generating the backup is further based on the deletion table.

### Claim 17 (depends on 12)

The method of claim 12, wherein calculating the difference between the first marker and the second marker comprises:
determining a first serial number having a first value;
determining second serial number having a second value that is different from the first value; and
enumerating serial numbers between the first serial number and the second serial number.

### Claim 18 (depends on 17)

The method of claim 17, wherein the first marker includes a first set of offsets and the second marker includes a second set of offsets, and generating the backup comprises:
backing up segments referenced in the first marker, from the offsets of the first set of offsets to an end of the segments referenced in the first marker;
backing up segments on the storage device with serial number references occurring between the first serial number and the second serial number; and
backing up segments referenced in the second marker, from a beginning of the segments referenced in the second marker to an end of the offsets of the second set of offsets.

### Claim 19 (depends on 12)

The method of claim 12, wherein the first marker is initialized as an empty set.

### Claim 20

A data storage system comprising:
means for storing data having addressable segments;
means for translating logical data storage addresses to physical storage addresses;
means for receiving a first marker, the first marker encapsulating a state of the storage device at a first time;
means for generating a second marker based on the means for translating logical data storage addresses to physical storage addresses;
means for calculating a difference between the first marker and the second marker; and
means for generating a backup of data based on the calculated difference between the first marker and the second marker.
