# US 2017/0286232 A1 · Trimming unused blocks from a versioned image backup of a source storage that is stored in a sparse storage

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

- Number: US 2017/0286232 A1
- Document ID: US20170286232A1
- Status: Published application
- Kind: A1
- Application number: 15/284,306
- Filed: 2016-10-03
- Published: 2017-10-05
- Earliest claimed: 2016-03-30
- Assignees: Storagecraft Technology Corporation
- Applicants: Storagecraft Technology Corporation
- Inventors: Nathan S. Bushman; Thomas Frank Christensen; David Merrill McConkie, JR.
- Web page: https://patentgrep.com/patent/US20170286232A1

## CPC

- G06F 11/1451: {by selection of backup contents}
- G06F 3/0608: {Saving storage space on storage systems}
- G06F 3/0643: {Management of files}
- G06F 3/0683: {Plurality of storage devices}
- G06F 11/00: Error detection; Error correction; Monitoring (error detection, correction or monitoring in information storage based on relative movement between record carrier and transducer G11B20/18; monitoring, i.e. supervising the progress of recording or reproducing G11B27/36; in static stores G11C29/00)
- G06F 11/1448: {Management of the data involved in backup or backup restore}
- G06F 16/125: {characterised by the use of retention policies (retention policies for HSM systems G06F16/185)}
- 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 16/1727: {Details of free space management performed by the file system (saving storage space on storage systems G06F3/0608; management of blocks in storage devices G06F3/064)}
- G06F 8/71: Version control (security arrangements therefor G06F21/57); Configuration management
- G06F 2201/81: Threshold
- G06F 2201/815: Virtual
- 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

Trimming unused blocks from a versioned image backup of a source storage that is stored in a sparse storage. In one example embodiment, a method may include identifying a versioned image backup that is stored in a sparse storage. The sparse may store first and second versions of the versioned image backup representing states of the source storage at successive first and second points in time, respectively. The method may further include deleting the first version, identifying a first set of blocks that were allocated in the source storage at the second point in time, identifying a second set of blocks that are allocated in the sparse storage for the second version, determining a third set of blocks that are included in the second set of blocks but are not included in the first set of blocks, and trimming the third set of blocks from the second version.

## Claims

### Claim 1

A method for pruning unused blocks from a versioned image backup of a source storage that is stored in a sparse storage, the method comprising:
identifying a versioned image backup of a source storage that is stored in a sparse storage, the sparse storage storing first and second versions of the versioned image backup representing states of the source storage at successive first and second points in time, respectively;
during a retention process, deleting the first version of the versioned image backup from the sparse storage;
identifying a first set of blocks that were allocated in the source storage at the second point in time;
identifying a second set of blocks that are allocated in the sparse storage for the second version of the versioned image backup;
determining a third set of blocks that are included in the second set of blocks but are not included in the first set of blocks; and
after the retention process, trimming the third set of blocks from the second version of the versioned image backup that is stored in the sparse storage.

### Claim 2 (depends on 1)

The method of claim 1, wherein:
the sparse storage is a sparse block device;
the versioned image backup is stored in the sparse block device as a sparse partition of the sparse block device; and
the identifying of the first set of blocks further includes calculating offsets for the first set of blocks that correspond to actual positions of the blocks as stored in the sparse block device.

### Claim 3 (depends on 2)

The method of claim 2, wherein the sparse block device is a RADOS sparse Block Device (RBD), a ZFS sparse block device, or a BTRFS sparse block device.

### Claim 4 (depends on 3)

The method of claim 3, wherein the trimming of the third set of blocks includes trimming the third set of blocks from the second version of the versioned image backup that is stored in the sparse storage by sending one or more trim commands to a storage system of the RBD, of the ZFS sparse block device, or of the BTRFS sparse block device.

### Claim 5 (depends on 1)

The method of claim 1, wherein the sparse storage is a sparse file configured to be presented to a virtual machine as a block device by a hypervisor.

### Claim 6 (depends on 1)

The method of claim 1, wherein the trimming of the third set of blocks includes trimming the third set of blocks from the second version of the versioned image backup that is stored in the sparse storage when a system resource utilization falls below a predefined threshold.

### Claim 7 (depends on 1)

One or more non-transitory computer-readable media storing one or more programs that are configured, when executed, to cause one or more processors to perform the method as recited in claim 1.

### Claim 8

A method for pruning unused blocks from a versioned image backup of a source storage that is stored in a sparse storage, the method comprising:
identifying a versioned image backup of a source storage that is stored in a sparse storage, the sparse storage storing first, second, and third versions of the versioned image backup representing states of the source storage at successive first, second, and third points in time, respectively;
during a retention process, deleting the first version of the versioned image backup from the sparse storage;
identifying a second set of blocks that were allocated in the source storage at the second point in time;
identifying a third set of blocks that were allocated in the source storage at the third point in time;
determining a first set of blocks to include blocks that are indicated as allocated in either of the second set of blocks or the third set of blocks;
identifying a fourth set of blocks that are allocated in the sparse storage for the third version of the versioned image backup;
determining a fifth set of blocks that are included in the fourth set of blocks but are not included in the first set of blocks; and
after the retention process, trimming the fifth set of blocks from the third version of the versioned image backup that is stored in the sparse storage.

### Claim 9 (depends on 8)

The method of claim 8, wherein:
the sparse storage is a sparse block device;
the versioned image backup is stored in the sparse block device as a sparse partition of the sparse block device; and
the determining of the first set of blocks further includes calculating offsets for the first set of blocks that correspond to actual positions of the blocks as stored in the sparse block device.

### Claim 10 (depends on 9)

The method of claim 9, wherein the sparse block device is a RADOS sparse Block Device (RBD), a ZFS sparse block device, or a BTRFS sparse block device.

### Claim 11 (depends on 10)

The method of claim 10, wherein the trimming of the fifth set of blocks includes trimming the fifth set of blocks from the third version of the versioned image backup that is stored in the sparse storage by sending one or more trim commands to a storage system of the RBD, of the ZFS sparse block device, or of the BTRFS sparse block device.

### Claim 12 (depends on 8)

The method of claim 8, wherein the sparse storage is a sparse file configured to be presented to a virtual machine as a block device by a hypervisor.

### Claim 13 (depends on 8)

The method of claim 8, wherein the trimming of the fifth set of blocks includes trimming the fifth set of blocks from the third version of the versioned image backup that is stored in the sparse storage when a system resource utilization falls below a predefined threshold.

### Claim 14 (depends on 8)

One or more non-transitory computer-readable media storing one or more programs that are configured, when executed, to cause one or more processors to perform the method as recited in claim 8.

### Claim 15

A method for pruning unused blocks from a versioned image backup of a source partition that is stored in a sparse block device, the method comprising:
identifying a versioned image backup of a source partition that is stored as a sparse partition in a sparse block device, the sparse block device storing first and second versions of the versioned image backup representing states of the source partition at successive first and second points in time, respectively, a size of the source partition being reduced between the first and second points in time;
during a retention process, deleting the first version of the versioned image backup from the sparse block device;
identifying a first set of blocks to include blocks that are included in the source partition at the second point in time;
identifying a second set of blocks to include blocks that are included in the sparse partition at the second point in time;
determining a third set of blocks that are included in the second set of blocks but are not included in the first set of blocks; and
after the retention process, trimming the third set of blocks from the second version of the versioned image backup that is stored in the sparse block device.

### Claim 16 (depends on 15)

The method of claim 15, wherein:
the determining of the first set of blocks further includes calculating offsets for the first set of blocks that correspond to actual positions of the blocks as stored in the sparse block device.

### Claim 17 (depends on 16)

The method of claim 16, wherein:
the sparse block device is a RADOS sparse Block Device (RBD), a ZFS sparse block device, or a BTRFS sparse block device; and
the trimming of the third set of blocks includes trimming the third set of blocks from the second version of the versioned image backup that is stored in the sparse block device by sending one or more trim commands to a storage system of the RBD, of the ZFS sparse block device, or of the BTRFS sparse block device.

### Claim 18 (depends on 15)

The method of claim 15, wherein the trimming of the third set of blocks includes trimming the third set of blocks from the second version of the versioned image backup that is stored in the sparse block device when a system resource utilization falls below a predefined threshold.

### Claim 19 (depends on 15)

One or more non-transitory computer-readable media storing one or more programs that are configured, when executed, to cause one or more processors to perform the method as recited in claim 15.
