IP Library Granted Patent US 9,563,633
Granted Patent B1
US 9,563,633 · App. 15/085,743 · Granted Feb 7, 2017

Trimming unused blocks from a versioned image backup of a source storage that is stored in a sparse storage

Inventors: Nathan S. Bushman (Pleasant Grove, UT); Thomas Frank Christensen (Salt Lake City, UT); David Merrill McConkie, Jr. (Salt Lake City, UT)
Assignee: STORAGECRAFT TECHNOLOGY CORPORATION
G06F17/30138G06F3/0608G06F3/0643G06F3/0683G06F17/30085G06F17/30088
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,563,633
App. No.
15/085,743
Granted
Feb 7, 2017
Kind
B1
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 of a source storage that is stored in a sparse storage. The method may further include deleting the first version of the versioned image backup from the sparse storage during a retention process, identifying a first set of blocks, identifying a second set of blocks, 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.

Claims (49)

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 supporting versioning using a snapshot process, 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 to include blocks that are indicated as allocated in a second file system block allocation map (FSBAM) that indicates blocks that were allocated in the source storage at the second point in time;

identifying a second set of blocks to include blocks that are indicated as allocated in a second sparse storage block allocation map (SSBAM) that indicates the 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.

2. The method of claim 1 , wherein the second FSBAM is stored separately from the second version of the versioned image backup.

3. 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.

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

5. The method of claim 4 , 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.

6. 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.

7. 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.

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 1 .

9. 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 supporting versioning using a snapshot process, 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 file system block allocation map (FSBAM) that indicates blocks that were allocated in the source storage at the second point in time;

identifying a third FSBAM that indicates 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 FSBAM or the third FSBAM;

identifying a second set of blocks to include blocks that are indicated as allocated in a third sparse storage block allocation map (SSBAM) that indicates the blocks that are allocated in the sparse storage for the third 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 third version of the versioned image backup that is stored in the sparse storage.

10. The method of claim 9 , 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.

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

12. The method of claim 11 , wherein the trimming of the third set of blocks includes trimming the third 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.

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

14. The method of claim 9 , wherein the trimming of the third set of blocks includes trimming the third 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.

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 9 .

16. 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 supporting versioning using a snapshot process, 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.

17. The method of claim 16 , 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.

18. The method of claim 17 , 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.

19. The method of claim 16 , 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.

20. 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 16 .

Assignments (6)
CHANGE OF NAME Recorded Aug 16, 2024
From: STORAGECRAFT TECHNOLOGY CORPORATION
To: STORAGECRAFT TECHNOLOGY LLC
Reel/Frame 068660/0176 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 16, 2024
From: MONROE CAPITAL MANAGEMENT ADVISORS, LLC; ARCSTOR MIDCO LLC; ARCSERVE ACQUISITION COMPANY LLC; ARCSERVE (USA) LLC; STORAGECRAFT TECHNOLOGY, LLC
To: STORAGECRAFT, LLC
Reel/Frame 068660/0208 →
SECURITY INTEREST Recorded Mar 16, 2021
From: ARCSERVE (USA) LLC; STORAGECRAFT TECHNOLOGY LLC; ZETTA, LLC
To: MONROE CAPITAL MANAGEMENT ADVISORS, LLC, AS COLLATERAL AGENT
Reel/Frame 055603/0219 →
TERMINATION AND RELEASE OF PATENT SECURITY AGREEMENT Recorded Mar 16, 2021
From: SILICON VALLEY BANK, AS ADMINISTRATIVE AGENT
To: STORAGECRAFT TECHNOLOGY CORPORATION
Reel/Frame 055614/0607 →
SECURITY AGREEMENT Recorded Apr 18, 2016
From: STORAGECRAFT TECHNOLOGY CORPORATION
To: SILICON VALLEY BANK, AS ADMINISTRATIVE AGENT
Reel/Frame 038449/0943 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 30, 2016
From: BUSHMAN, NATHAN S.; CHRISTENSEN, THOMAS FRANK; MCCONKIE, DAVID MERRILL, JR
To: STORAGECRAFT TECHNOLOGY CORPORATION
Reel/Frame 038142/0864 →