IP Library Granted Patent US 12,271,267
Granted Patent B2
US 12,271,267 · App. 18/133,864 · Granted Apr 8, 2025

Snapshot range filters

Inventors: Vijay Karthik (Sunnyvale, CA); Abdullah Reza (Gilroy, CA)
Assignee: Rubrik, Inc.
G06F11/1451G06F11/1464G06F11/1469G06F2201/84
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,271,267
App. No.
18/133,864
Granted
Apr 8, 2025
Kind
B2
Abstract

In some examples, a method comprises: receiving a request to read data within a specified range from a backup file storing at least one base snapshot and at least one incremental snapshot; looking up the specified range in range filters from the backup file, the range filters corresponding to snapshots stored in the backup file and each range filter comprising bits indicating whether data exists at respective ranges within the snapshot corresponding to the respective range filter; and in response to the looking up, reading the requested data from the looked-up range in the backup file.

Claims (51)

1. A method, comprising:

receiving a request to read data within a specified logical address range from a backup file that includes a set of snapshots;

accessing a set of range filters that span at least the specified logical address range to determine one or more snapshots of the set of snapshots that include the requested data, wherein the set of range filters corresponds to the set of snapshots, and wherein a respective range filter of the set of range filters comprises bits indicating whether a corresponding snapshot includes data within a corresponding logical address range of the backup file that is spanned by the range filter; and

reading the requested data from the one or more snapshots based at least in part on accessing the set of range filters.

2. The method of claim 1 , further comprising:

determining that one or more second snapshots of the set of snapshots lack the requested data based at least in part on accessing the set of range filters; and

skipping accessing the one or more second snapshots in association with reading the requested data based at least in part on the one or more second snapshots lacking the requested data.

3. The method of claim 1 , further comprising:

generating the set of range filters in accordance with a range filter size, the range filter size indicating a size of a respective portion of the corresponding logical address range to which the bits correspond, wherein respective bits of the respective range filter indicate whether the corresponding snapshot includes respective data within respective portions of the corresponding logical address range.

4. The method of claim 3 , wherein generating a range filter of the set of range filters comprises:

scanning the set of snapshots or indices of the set of snapshots for the presence or absence of the respective data within the respective portions of the corresponding logical address range; and

setting the respective bits in accordance with the scanning.

5. The method of claim 3 , further comprising:

adjusting a size of a logical address range spanned by a range filter of the set of range filters;

adjusting the range filter size associated with the range filter based at least in part on adjusting the size of the logical address range; and

updating respective bits included in the range filter based at least in part on adjusting the range filter size.

6. The method of claim 5 , wherein updating the respective bits comprises:

performing a respective logical OR operation on respective subsets of two or more contiguous bits of the respective bits to merge the respective subsets of two or more contiguous bits into a single respective bit corresponding to a respective portion of the logical address range associated with the respective subset of two or more contiguous bits.

7. The method of claim 5 , wherein a size of memory associated with the range filter is unchanged after adjusting the size of the logical address range based at least in part on updating the respective bits.

8. The method of claim 3 , wherein the range filter size is a default range filter size.

9. The method of claim 3 , wherein respective range filters of the set of range filters are generated concurrent with generating snapshots of the set of snapshots or concurrent with generating a two-level index key value associated with the backup file.

10. The method of claim 1 , wherein accessing the set of range filters to determine the one or more snapshots comprises:

determining, for the one or more snapshots, that at least one bit of a corresponding range filter indicates that the corresponding snapshot includes data for a portion of the corresponding logical address range that overlaps with at least a portion of the specified logical address range.

11. The method of claim 1 , wherein the set of range filters are stored as a set of range filter bit vectors.

12. The method of claim 1 , wherein accessing the set of range filters comprises:

accessing a root index that stores the set of range filters without reading snapshot indices into memory.

13. The method of claim 1 , further comprising:

reading a range filter size associated with the set of range filters, wherein the set of range filters are accessed in accordance with the range filter size.

14. An apparatus comprising:

a processor; and

a memory storing instructions executable by the processor to cause the apparatus to:

receive a request to read data within a specified logical address range from a backup file that includes a set of snapshots;

access a set of range filters that span at least the specified logical address range to determine one or more snapshots of the set of snapshots that include the requested data, wherein the set of range filters corresponds to the set of snapshots, and wherein a respective range filter of the set of range filters comprises bits indicating whether a corresponding snapshot includes data within a corresponding logical address range of the backup file that is spanned by the range filter; and

read the requested data from the one or more snapshots based at least in part on accessing the set of range filters.

15. The apparatus of claim 14 , wherein the instructions are further executable by the processor to cause the apparatus to:

determine that one or more second snapshots of the set of snapshots lack the requested data based at least in part on accessing the set of range filters; and

skip accessing the one or more second snapshots in association with reading the requested data based at least in part on the one or more second snapshots lacking the requested data.

16. The apparatus of claim 14 , wherein the instructions are further executable by the processor to cause the apparatus to:

generate the set of range filters in accordance with a range filter size, the range filter size indicating a size of a respective portion of the corresponding logical address range to which the bits correspond, wherein respective bits of the respective range filter indicate whether the corresponding snapshot includes respective data within respective portions of the corresponding logical address range.

17. The apparatus of claim 16 , wherein the instructions are further executable by the processor to cause the apparatus to:

adjust a size of a logical address range spanned by a range filter of the set of range filters;

adjust the range filter size associated with the range filter based at least in part on adjusting the size of the logical address range; and

update respective bits included in the range filter based at least in part on adjusting the range filter size.

18. The apparatus of claim 17 , wherein the instructions are further executable by the processor to cause the apparatus to:

perform a respective logical OR operation on respective subsets of two or more contiguous bits of the respective bits to merge the respective subsets of two or more contiguous bits into a single respective bit corresponding to a respective portion of the logical address range associated with the respective subset of two or more contiguous bits.

19. The apparatus of claim 14 , wherein the instructions to access the set of range filters to determine the one or more snapshots are executable by the processor to cause the apparatus to:

determine, for the one or more snapshots, that at least one bit of a corresponding range filter indicates that the corresponding snapshot includes data for a portion of the corresponding logical address range that overlaps with at least a portion of the specified logical address range.

20. A non-transitory computer-readable medium storing instructions executable by a processor to:

receive a request to read data within a specified logical address range from a backup file that includes a set of snapshots;

access a set of range filters that span at least the specified logical address range to determine one or more snapshots of the set of snapshots that include the requested data, wherein the set of range filters corresponds to the set of snapshots, and wherein a respective range filter of the set of range filters comprises bits indicating whether a corresponding snapshot includes data within a corresponding logical address range of the backup file that is spanned by the range filter; and

read the requested data from the one or more snapshots based at least in part on accessing the set of range filters.

Assignments (3)
RELEASE OF SECURITY INTEREST IN PATENT COLLATERAL AT REEL/FRAME NO. 64659/0236 Recorded Jun 13, 2025
From: GOLDMAN SACHS BDC, INC., AS COLLATERAL AGENT
To: RUBRIK, INC.
Reel/Frame 071566/0187 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 14, 2024
From: KARTHIK, VIJAY; REZA, ABDULLAH
To: RUBRIK, INC.
Reel/Frame 069263/0312 →
GRANT OF SECURITY INTEREST IN PATENT RIGHTS Recorded Aug 21, 2023
From: RUBRIK, INC.
To: GOLDMAN SACHS BDC, INC., AS COLLATERAL AGENT
Reel/Frame 064659/0236 →
Continuity (2)
Continuation 17473130 · Sep 13, 2021
Related Publication 20230251934A1 · Aug 10, 2023
References Cited (21)
US 9733862B1 · Klemm · 2017 [cited by examiner]
US 10853314B1 · Shemer et al. · 2020 [cited by applicant]
US 11886226B2 · Karthik et al. · 2024 [cited by applicant]
US 20110119459A1 · Satoyama et al. · 2011 [cited by applicant]
US 20120221527A1 · Huang · 2012 [cited by examiner]
US 20120254848A1 · Robertson et al. · 2012 [cited by applicant]
US 20140149698A1 · Ezra et al. · 2014 [cited by applicant]
US 20140196124A1 · Wang et al. · 2014 [cited by applicant]
US 20150112935A1 · French et al. · 2015 [cited by applicant]
US 20150234712A1 · Fei et al. · 2015 [cited by applicant]
US 20170220427A1 · Fu et al. · 2017 [cited by applicant]
US 20180004656A1 · Battaje et al. · 2018 [cited by applicant]
US 20180041483A1 · Smith et al. · 2018 [cited by applicant]
US 20190213123A1 · Agarwal · 2019 [cited by applicant]
US 20200019532A1 · Kashi et al. · 2020 [cited by applicant]
US 20200174692A1 · Dave et al. · 2020 [cited by applicant]
US 20210173749A1 · Ki · 2021 [cited by examiner]
US 20220066882A1 · Wang et al. · 2022 [cited by applicant]
US 20230080500A1 · Karthik et al. · 2023 [cited by applicant]
US 20230168968A1 · Karthik et al. · 2023 [cited by applicant]
CN 104573089A · 2015 [cited by examiner]