IP Library Granted Patent US 12,650,951
Granted Patent B2
US 12,650,951 · App. 19/177,314 · Granted Jun 9, 2026

Snapshot and restoration of distributed file system

Inventors: Vijay Karthik (Sunnyvale, CA); Anshul Gupta (Mountain View, CA); Abhay Mitra (Santa Clara, CA); Vivek Sanjay Jain (Palo Alto, CA); Satwant Rana (Mountain View, CA)
Assignee: Rubrik, Inc.
G06F16/128G06F16/164G06F16/1752G06F16/1844
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,650,951
App. No.
19/177,314
Granted
Jun 9, 2026
Kind
B2
Abstract

In some examples, a data management system processes snapshots of a distributed file system, the distributed file system having files, each file comprising multiple data chunks. The data management system performs operations including storing file-to-chunk mapping in file system metadata; creating, for each chunk, a chunk generation ID by associating each chunk with a file system generation ID; in a next-generation snapshot of the distributed file system, incrementing, for all chunks in the next-generation snapshot, the respective chunk generation IDs; and taking a snapshot of the file system metadata and storing an updated file-to-chunk mapping associated with the next-generation snapshot.

Claims (61)

1 . A method comprising:

updating, based at least in part on obtaining a second snapshot of a distributed file system at a second time, a file-to-chunk mapping that maps a file of the distributed file system to one or more data chunks and one or more file system generation identifiers (IDs) associated with the one or more data chunks, wherein updating the file-to-chunk mapping comprises:

changing, in the file-to-chunk mapping, metadata from a first mapping between the file, a first data chunk, and a first generation ID associated with a first time at which a first snapshot of the distributed file system is obtained to a second mapping between the file, a second data chunk, and a second generation ID associated with the second time at which the second snapshot of the distributed file system is obtained, the changing from the first mapping to the second mapping being based at least in part on the second data chunk comprising changes to the first data chunk that occurred between the first time and the second time;

receiving a request to restore the file to the first time associated with the first generation ID; and

updating the file-to-chunk mapping based at least in part on the request, wherein updating the file-to-chunk mapping comprises:

reverting, in the file-to-chunk mapping, the metadata from the second mapping back to the first mapping between the file, the first data chunk, and the first generation ID based at least in part on the request to restore the file to the first time associated with the first generation ID, wherein, after reverting the metadata to the second mapping, the file-to-chunk mapping excludes the second data chunk comprising the changes to the first data chunk that occurred between the first time and the second time.

2 . The method of claim 1 , further comprising:

obtaining, at the first time, the first snapshot of the distributed file system, wherein the file comprises the first data chunk at the first time; and

storing, based at least in part on obtaining the first snapshot, the file-to-chunk mapping comprising the first mapping between the file, the first data chunk, and the first generation ID associated with the first time based at least in part on the file comprising the first data chunk at the first time.

3 . The method of claim 1 , further comprising:

obtaining, at the second time that is after the first time, the second snapshot of the distributed file system, wherein the file includes the second data chunk at the second time, and wherein changing the metadata from the first mapping to the second mapping is based at least in part on obtaining the second snapshot at the second time.

4 . The method of claim 1 , further comprising:

generating, after the first time and in accordance with the changes to the first data chunk, the second data chunk associated with the second generation ID;

copying physical data stored in the first data chunk at the first time to the second data chunk based at least in part on generating the second data chunk; and

writing, to the second data chunk, data associated with the changes to the first data chunk that occurred between the first time and the second time, wherein the changes are not included in the file-to-chunk mapping after reverting the metadata from the second mapping back to the first mapping based at least in part on the request.

5 . The method of claim 1 , wherein updating the file-to-chunk mapping based at least in part on obtaining the second snapshot of the distributed file system at the second time comprises:

writing, to the file-to-chunk mapping, second metadata associated with a third mapping between the file, a third data chunk, and the second generation ID based at least in part on the file comprising the third data chunk at the second time.

6 . The method of claim 5 , wherein updating the file-to-chunk mapping based at least in part on the request comprises:

removing, from the file-to-chunk mapping, the second metadata associated with the third mapping between the file, the third data chunk, and the second generation ID based at least in part on the third data chunk being mapped to the second generation ID and being absent from the file at the first time.

7 . The method of claim 1 , wherein updating the file-to-chunk mapping based at least in part on obtaining the second snapshot of the distributed file system at the second time comprises:

maintaining, in the file-to-chunk mapping, a third mapping between the file, a third data chunk, and the first generation ID based at least in part on the file comprising the third data chunk at the first time and the second time and based at least in part on a state of the third data chunk being maintained between the first time and the second time.

8 . The method of claim 7 , wherein the third mapping is further maintained in the file-to-chunk mapping after reverting the metadata from the second mapping back to the first mapping based at least in part on the request.

9 . An apparatus, comprising:

one or more memories storing processor-executable code; and

one or more processors coupled with the one or more memories and individually or collectively operable to execute the code to cause the apparatus to:

update, based at least in part on obtaining a second snapshot of a distributed file system at a second time, a file-to-chunk mapping that maps a file of the distributed file system to one or more data chunks and one or more file system generation identifiers (IDs) associated with the one or more data chunks, wherein, to update the file-to-chunk mapping, the one or more processors are individually or collectively operable to execute the code to cause the apparatus to:

change, in the file-to-chunk mapping, metadata from a first mapping between the file, a first data chunk, and a first generation ID associated with a first time at which a first snapshot of the distributed file system is obtained to a second mapping between the file, a second data chunk, and a second generation ID associated with the second time at which the second snapshot of the distributed file system is obtained, the changing from the first mapping to the second mapping being based at least in part on the second data chunk comprising changes to the first data chunk that occurred between the first time and the second time;

receive a request to restore the file to the first time associated with the first generation ID; and

update the file-to-chunk mapping based at least in part on the request, wherein, to update the file-to-chunk mapping, the one or more processors are individually or collectively operable to execute the code to cause the apparatus to:

revert, in the file-to-chunk mapping, the metadata from the second mapping back to the first mapping between the file, the first data chunk, and the first generation ID based at least in part on the request to restore the file to the first time associated with the first generation ID, wherein, after reverting the metadata to the second mapping, the file-to-chunk mapping excludes the second data chunk comprising the changes to the first data chunk that occurred between the first time and the second time.

10 . The apparatus of claim 9 , wherein the one or more processors are individually or collectively further operable to execute the code to cause the apparatus to:

obtain, at the first time, the first snapshot of the distributed file system, wherein the file comprises the first data chunk at the first time; and

store, based at least in part on obtaining the first snapshot, the file-to-chunk mapping comprising the first mapping between the file, the first data chunk, and the first generation ID associated with the first time based at least in part on the file comprising the first data chunk at the first time.

11 . The apparatus of claim 9 , wherein the one or more processors are individually or collectively further operable to execute the code to cause the apparatus to:

obtain, at the second time that is after the first time, the second snapshot of the distributed file system, wherein the file includes the second data chunk at the second time, and wherein changing the metadata from the first mapping to the second mapping is based at least in part on obtaining the second snapshot at the second time.

12 . The apparatus of claim 9 , wherein the one or more processors are individually or collectively further operable to execute the code to cause the apparatus to:

generate, after the first time and in accordance with the changes to the first data chunk, the second data chunk associated with the second generation ID;

copy physical data stored in the first data chunk at the first time to the second data chunk based at least in part on generating the second data chunk; and

write, to the second data chunk, data associated with the changes to the first data chunk that occurred between the first time and the second time, wherein the changes are not included in the file-to-chunk mapping after reverting the metadata from the second mapping back to the first mapping based at least in part on the request.

13 . The apparatus of claim 9 , wherein, to update the file-to-chunk mapping based at least in part on obtaining the second snapshot of the distributed file system at the second time, the one or more processors are individually or collectively operable to execute the code to cause the apparatus to:

write, to the file-to-chunk mapping, second metadata associated with a third mapping between the file, a third data chunk, and the second generation ID based at least in part on the file comprising the third data chunk at the second time.

14 . The apparatus of claim 13 , wherein, to update the file-to-chunk mapping based at least in part on the request, the one or more processors are individually or collectively operable to execute the code to cause the apparatus to:

remove, from the file-to-chunk mapping, the second metadata associated with the third mapping between the file, the third data chunk, and the second generation ID based at least in part on the third data chunk being mapped to the second generation ID and being absent from the file at the first time.

15 . The apparatus of claim 9 , wherein, to update the file-to-chunk mapping based at least in part on obtaining the second snapshot of the distributed file system at the second time, the one or more processors are individually or collectively operable to execute the code to cause the apparatus to:

maintain, in the file-to-chunk mapping, a third mapping between the file, a third data chunk, and the first generation ID based at least in part on the file comprising the third data chunk at the first time and the second time and based at least in part on a state of the third data chunk being maintained between the first time and the second time.

16 . The apparatus of claim 15 , wherein the third mapping is further maintained in the file-to-chunk mapping after reverting the metadata from the second mapping back to the first mapping based at least in part on the request.

17 . A non-transitory computer-readable medium storing code, the code comprising instructions executable by one or more processors to:

update, based at least in part on obtaining a second snapshot of a distributed file system at a second time, a file-to-chunk mapping that maps a file of the distributed file system to one or more data chunks and one or more file system generation identifiers (IDs) associated with the one or more data chunks, wherein, to update the file-to-chunk mapping, the instructions are executable by the one or more processors to:

change, in the file-to-chunk mapping, metadata from a first mapping between the file, a first data chunk, and a first generation ID associated with a first time at which a first snapshot of the distributed file system is obtained to a second mapping between the file, a second data chunk, and a second generation ID associated with the second time at which the second snapshot of the distributed file system is obtained, the changing from the first mapping to the second mapping being based at least in part on the second data chunk comprising changes to the first data chunk that occurred between the first time and the second time;

receive a request to restore the file to the first time associated with the first generation ID; and

update the file-to-chunk mapping based at least in part on the request, wherein, to update the file-to-chunk mapping, the instructions are executable by the one or more processors to:

revert, in the file-to-chunk mapping, the metadata from the second mapping back to the first mapping between the file, the first data chunk, and the first generation ID based at least in part on the request to restore the file to the first time associated with the first generation ID, wherein, after reverting the metadata to the second mapping, the file-to-chunk mapping excludes the second data chunk comprising the changes to the first data chunk that occurred between the first time and the second time.

18 . The non-transitory computer-readable medium of claim 17 , wherein the instructions are further executable by the one or more processors to:

obtain, at the first time, the first snapshot of the distributed file system, wherein the file comprises the first data chunk at the first time; and

store, based at least in part on obtaining the first snapshot, the file-to-chunk mapping comprising the first mapping between the file, the first data chunk, and the first generation ID associated with the first time based at least in part on the file comprising the first data chunk at the first time.

19 . The non-transitory computer-readable medium of claim 17 , wherein the instructions are further executable by the one or more processors to:

obtain, at the second time that is after the first time, the second snapshot of the distributed file system, wherein the file includes the second data chunk at the second time, and wherein changing the metadata from the first mapping to the second mapping is based at least in part on obtaining the second snapshot at the second time.

20 . The non-transitory computer-readable medium of claim 17 , wherein the instructions are further executable by the one or more processors to:

generate, after the first time and in accordance with the changes to the first data chunk, the second data chunk associated with the second generation ID;

copy physical data stored in the first data chunk at the first time to the second data chunk based at least in part on generating the second data chunk; and

write, to the second data chunk, data associated with the changes to the first data chunk that occurred between the first time and the second time, wherein the changes are not included in the file-to-chunk mapping after reverting the metadata from the second mapping back to the first mapping based at least in part on the request.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 25, 2025
From: KARTHIK, VIJAY; GUPTA, ANSHUL; MITRA, ABHAY; JAIN, VIVEK SANJAY; RANA, SATWANT
To: RUBRIK, INC.
Reel/Frame 070947/0747 →
Continuity (4)
Continuation 18648223 · Apr 26, 2024
Continuation 17363694 · Jun 30, 2021
Provisional Application 63053146 · Jul 17, 2020
Related Publication 20250245196A1 · Jul 31, 2025
References Cited (37)
US 8370302B2 · Otani · 2013 [cited by applicant]
US 8527544B1 · Colgrove et al. · 2013 [cited by applicant]
US 8930648B1 · Storer · 2015 [cited by examiner]
US 9189342B1 · Von et al. · 2015 [cited by applicant]
US 9298723B1 · Vincent · 2016 [cited by applicant]
US 9715346B2 · Jain et al. · 2017 [cited by applicant]
US 10275321B1 · Bajaj · 2019 [cited by applicant]
US 10339016B2 · Juniwal · 2019 [cited by examiner]
US 10599524B2 · Zhang · 2020 [cited by examiner]
US 20060218364A1 · Kitamura · 2006 [cited by applicant]
US 20100070466A1 · Prahlad et al. · 2010 [cited by applicant]
US 20100070474A1 · Lad · 2010 [cited by applicant]
US 20140052706A1 · Misra · 2014 [cited by examiner]
US 20140129524A1 · Ueoka et al. · 2014 [cited by applicant]
US 20140201155A1 · Vijayan · 2014 [cited by examiner]
US 20150127618A1 · Alberti et al. · 2015 [cited by applicant]
US 20160124665A1 · Jain et al. · 2016 [cited by applicant]
US 20160125059A1 · Jain et al. · 2016 [cited by applicant]
US 20160274980A1 · Kim et al. · 2016 [cited by applicant]
US 20160292048A1 · Dolan · 2016 [cited by examiner]
US 20170153950A1 · Iwasaki · 2017 [cited by examiner]
US 20170262345A1 · Wang et al. · 2017 [cited by applicant]
US 20180018344A1 · Kilaru · 2018 [cited by examiner]
US 20180046553A1 · Okamoto · 2018 [cited by applicant]
US 20180089224A1 · Muthuswamy et al. · 2018 [cited by applicant]
US 20190050302A1 · Juniwal et al. · 2019 [cited by applicant]
US 20190108099A1 · Mazumdar · 2019 [cited by applicant]
US 20190171374A1 · Jain et al. · 2019 [cited by applicant]
US 20190213123A1 · Agarwal · 2019 [cited by applicant]
US 20200296100A1 · Prahlad · 2020 [cited by examiner]
US 20220027313A1 · George et al. · 2022 [cited by applicant]
Ma, Pengfei, et al., “A Distributed File System for Frequency Reading of Various File Sizes”, WISA '2013, Yangzhou, China, Nov. 10-15, 2013, pp. 339-344.Ma, Pengfei, et al., “A Distributed File System for Frequency Read… [cited by examiner]
Cao, Zhichao, et al., “A Tier-Aware Data Deduplication-Based File System”, ACM Transactions on Storage, vol. 15, No. 1, Article 4, Feb. 2019, 26 pages. [cited by applicant]
Song, Weijia, et al., “The Freeze-Frame File System”, SoCC '16, Santa Clara, CA, Oct. 5-7, 2016, pp. 307-320. [cited by applicant]
Soules, Craig A. N., et al., “Metadata Efficiency in a Comprehensive Versioning File System”, CMU-CS-01-145, Carnegie Mellon University, Pittsburgh, PA, May 2002, pp. 1-33. [cited by applicant]
Stender, Jan, “Snapshots in Large-Scale Distributed File Systems”, Dissertation, Humboldt-Universitat zu Berlin, 2013, 139 pages. [cited by applicant]
Zhang, Wei, et al., “VM-centric snapshot deduplication for cloud data backup”, MSST 2015, Santa Clara, CA, May 30-Jun. 5, 2015, 12 pages. [cited by applicant]