IP Library Granted Patent US 12,367,106
Granted Patent B1
US 12,367,106 · App. 18/343,211 · Granted Jul 22, 2025

Methods and systems for space reclamation in immutable deduplication systems

Inventor: Chao Lei (Beijing, CN)
Assignee: Cohesity, Inc.
G06F11/1451G06F11/1435G06F11/1453
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 12,367,106
App. No.
18/343,211
Granted
Jul 22, 2025
Kind
B1
Abstract

Embodiments are disclosed that provide space reclamation in immutable deduplication systems, and can include selecting a unit of data of a backup image, determining whether a duplicate unit of data is stored in an existing data storage construct (the duplicate unit of data is a duplicate of the unit of data and the existing data storage construct is stored in immutable storage), and in response to a determination that the duplicate unit of data exists in the existing data storage construct, determining whether the existing data storage construct is designated as being available to be referenced, in response to the existing data storage construct being designated as being available to be referenced, updating a reference to the duplicate unit of data, and in response to the existing data storage construct being designated as being unavailable to be referenced, storing the unit of data in a new data storage construct.

Claims (122)

1. A method comprising:

performing an update process on at least one of a plurality of existing data storage constructs, comprising

determining a state of the at least one of the plurality of existing data storage constructs,

comparing the state of the at least one of the plurality of existing data storage constructs and one or more thresholds determined by performing a threshold determination process,

determining whether the state of the at least one of the plurality of existing data storage constructs meets the one or more thresholds, and

in response to the state of the at least one of the plurality of existing data storage constructs meeting the one or more thresholds, designating the at least one of the plurality of existing data storage constructs as being unavailable;

selecting a unit of data of a backup image;

determining whether a duplicate unit of data is stored in an existing data storage construct of the plurality of existing of data storage constructs, wherein

the duplicate unit of data is a duplicate of the unit of data, and

the existing data storage construct of the plurality of existing of data storage constructs is stored in immutable storage; and

in response to a determination that the duplicate unit of data exists in the existing data storage construct of the plurality of existing of data storage constructs,

determining whether the existing data storage construct of the plurality of existing of data storage constructs is designated as being available to be referenced,

in response to the existing data storage construct of the plurality of existing of data storage constructs being designated as being available to be referenced, updating a reference to the duplicate unit of data, and

in response to the existing data storage construct of the plurality of existing of data storage constructs being designated as being unavailable to be referenced, storing the unit of data in a new data storage construct.

2. The method of claim 1 , further comprising:

further in response to the existing data storage construct of the plurality of existing of data storage constructs being designated as being unavailable to be referenced, adding data object metadata to the new data storage construct, wherein the data object metadata is associated with the unit of data.

3. The method of claim 2 , further comprising:

further in response to the existing data storage construct of the plurality of existing of data storage constructs being designated as being unavailable to be referenced, updating a reference to the duplicate unit of data, wherein

the backup image comprises the reference.

4. The method of claim 1 , wherein

the backup image comprises the reference.

5. The method of claim 1 , wherein

the backup image is one of a plurality of backup images,

the immutable storage periodically permits deletion of the existing data storage construct of the plurality of existing of data storage constructs, and

the method further comprises

deleting the existing data storage construct of the plurality of existing of data storage constructs, if none of the plurality of backup images comprise any references to the existing data storage construct of the plurality of existing of data storage constructs.

6. The method of claim 1 , wherein the method further comprises:

determining the one or more thresholds, wherein

the determining the one or more thresholds comprises

performing the threshold determination process.

7. The method of claim 6 , further comprising:

determining whether the at least one of the plurality of existing data storage constructs is designated as being available; and

in response to a determination that the at least one of the plurality of existing data storage constructs is designated as being available, performing the update process on the at least one of the plurality of existing data storage constructs.

8. The method of claim 6 , wherein

the determining the one or more thresholds comprises

determining a retention period of a new container stored in the immutable storage, and

determining a remaining retention period, wherein

the remaining retention period is a portion of a retention period remaining for the at least one of the plurality of existing data storage constructs; and

the determining the state of the at least one of the plurality of existing data storage constructs comprises

determining a size of the at least one of the plurality of existing data storage constructs, and

determining an amount of expired data stored in the at least one of the plurality of existing data storage constructs.

9. The method of claim 8 , further comprising:

calculating the one or more thresholds, wherein

the one or more thresholds are calculated based, at least in part, on the retention period and the remaining retention period; and

determining the state of the at least one of the plurality of existing data storage constructs, wherein

the state of the at least one of the plurality of existing data storage constructs is determined based, at least in part, on the size of the at least one of the plurality of existing data storage constructs and the amount of expired data.

10. The method of claim 8 , wherein

the state of the at least one of the plurality of existing data storage constructs meets the one or more thresholds if

G/C>R R /R NEW

where

C=the size of the at least one of the plurality of existing data storage constructs,

G=the amount of expired data stored in the at least one of the plurality of existing data storage constructs,

R R =the remaining retention period, and

R NEW =the retention period.

11. The method of claim 8 , wherein

the state of the at least one of the plurality of existing data storage constructs meets the one or more thresholds if, for a cost function Cost (an amount of data, an input retention period),

Cost( C,R R )+Cost(( C−G ), R NEW )<Cost( C,R NEW )

where

C=the size of the at least one of the plurality of existing data storage constructs,

G=the amount of expired data stored in the at least one of the plurality of existing data storage constructs,

R R =the remaining retention period, and

R NEW =the retention period.

12. A non-transitory computer-readable storage medium, comprising program instructions, which, when executed by one or more processors of a computing system, perform a method comprising:

performing an update process on at least one of a plurality of existing data storage constructs, comprising

determining a state of the at least one of the plurality of existing data storage constructs,

comparing the state of the at least one of the plurality of existing data storage constructs and one or more thresholds determined by performing a threshold determination process,

determining whether the state of the at least one of the plurality of existing data storage constructs meets the one or more thresholds, and

in response to the state of the at least one of the plurality of existing data storage constructs meeting the one or more thresholds, designating the at least one of the plurality of existing data storage constructs as being unavailable;

selecting a unit of data of a backup image;

determining whether a duplicate unit of data is stored in an existing data storage construct, wherein

the duplicate unit of data is a duplicate of the unit of data, and

the existing data storage construct of the plurality of existing of data storage constructs is stored in immutable storage; and

in response to a determination that the duplicate unit of data exists in the existing data storage construct of the plurality of existing of data storage constructs,

determining whether the existing data storage construct of the plurality of existing of data storage constructs is designated as being available to be referenced,

in response to the existing data storage construct of the plurality of existing of data storage constructs being designated as being available to be referenced, updating a reference to the duplicate unit of data, and

in response to the existing data storage construct of the plurality of existing of data storage constructs being designated as being unavailable to be referenced, storing the unit of data in a new data storage construct.

13. The non-transitory computer-readable storage medium of claim 12 , wherein the method further comprises:

further in response to the existing data storage construct of the plurality of existing of data storage constructs being designated as being unavailable to be referenced, adding data object metadata to the new data storage construct, wherein the data object metadata is associated with the unit of data; and

further in response to the existing data storage construct of the plurality of existing of data storage constructs being designated as being unavailable to be referenced, updating a reference to the duplicate unit of data, wherein

the backup image comprises the reference.

14. The non-transitory computer-readable storage medium of claim 12 , wherein

the backup image comprises the reference,

the backup image is one of a plurality of backup images,

the immutable storage periodically permits deletion of the existing data storage construct of the plurality of existing of data storage constructs, and

the method further comprises

deleting the existing data storage construct of the plurality of existing of data storage constructs, if none of the plurality of backup images comprise any references to the existing data storage construct of the plurality of existing of data storage constructs.

15. The non-transitory computer-readable storage medium of claim 12 , wherein the method further comprises:

determining the one or more thresholds, wherein

the determining the one or more thresholds comprises

performing the threshold determination process.

16. The non-transitory computer-readable storage medium of claim 15 , wherein the method further comprises:

determining whether the at least one of the plurality of existing data storage constructs is designated as being available; and

in response to a determination that the at least one of the plurality of existing data storage constructs is designated as being available, performing the update process on the at least one of the plurality of existing data storage constructs.

17. The non-transitory computer-readable storage medium of claim 15 , wherein

the determining the one or more thresholds comprises

determining a retention period of a new container stored in the immutable storage, and

determining a remaining retention period, wherein

the remaining retention period is a portion of a retention period remaining for the at least one of the plurality of existing data storage constructs;

the determining the state of the at least one of the plurality of existing data storage constructs comprises

determining a size of the at least one of the plurality of existing data storage constructs, and

determining an amount of expired data stored in the at least one of the plurality of existing data storage constructs; and

the method further comprises

calculating the one or more thresholds, wherein

the one or more thresholds are calculated based, at least in part, on the retention period and the remaining retention period; and

determining the state of the at least one of the plurality of existing data storage constructs, wherein

the state of the at least one of the plurality of existing data storage constructs is determined based, at least in part, on the size of the at least one of the plurality of existing data storage constructs and the amount of expired data.

18. A computing system comprising:

one or more processors; and

a computer-readable storage medium coupled to the one or more processors, comprising program instructions, which, when executed by the one or more processors, perform a method comprising

performing an update process on at least one of a plurality of existing data storage constructs, comprising

determining a state of the at least one of the plurality of existing data storage constructs,

comparing the state of the at least one of the plurality of existing data storage constructs and one or more thresholds determined by performing a threshold determination process,

determining whether the state of the at least one of the plurality of existing data storage constructs meets the one or more thresholds, and

in response to the state of the at least one of the plurality of existing data storage constructs meeting the one or more thresholds, designating the at least one of the plurality of existing data storage constructs as being unavailable,

selecting a unit of data of a backup image,

determining whether a duplicate unit of data is stored in an existing data storage construct, wherein

the duplicate unit of data is a duplicate of the unit of data, and

the existing data storage construct of the plurality of existing of data storage constructs is stored in immutable storage, and

in response to a determination that the duplicate unit of data exists in the existing data storage construct of the plurality of existing of data storage constructs,

determining whether the existing data storage construct of the plurality of existing of data storage constructs is designated as being available to be referenced,

in response to the existing data storage construct of the plurality of existing of data storage constructs being designated as being available to be referenced, updating a reference to the duplicate unit of data, and

in response to the existing data storage construct of the plurality of existing of data storage constructs being designated as being unavailable to be referenced, storing the unit of data in a new data storage construct.

Assignments (4)
AMENDMENT NO. 1 TO PATENT SECURITY AGREEMENT Recorded Apr 8, 2025
From: VERITAS TECHNOLOGIES LLC; COHESITY, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 070779/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 26, 2025
From: VERITAS TECHNOLOGIES LLC
To: COHESITY, INC.
Reel/Frame 070335/0013 →
SECURITY INTEREST Recorded Dec 9, 2024
From: VERITAS TECHNOLOGIES LLC; COHESITY, INC.
To: JPMORGAN CHASE BANK. N.A.
Reel/Frame 069890/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 23, 2023
From: LEI, CHAO
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 065652/0953 →
References Cited (12)
US 8954398B1 · Zhang · 2015 [cited by examiner]
US 9158783B2 · Chhaunker · 2015 [cited by examiner]
US 9298723B1 · Vincent · 2016 [cited by examiner]
US 10649676B1 · De Smet · 2020 [cited by examiner]
US 11307937B1 · Cheng · 2022 [cited by examiner]
US 20070276878A1 · Zheng · 2007 [cited by examiner]
US 20120059800A1 · Guo · 2012 [cited by examiner]
US 20130144846A1 · Chhaunker · 2013 [cited by examiner]
US 20130346376A1 · Dmitriev · 2013 [cited by examiner]
US 20210042327A1 · Jia · 2021 [cited by examiner]
US 20210157777A1 · Yang · 2021 [cited by examiner]
US 20230376423A1 · Li · 2023 [cited by examiner]