IP Library Granted Patent US 12,197,297
Granted Patent B2
US 12,197,297 · App. 18/497,219 · Granted Jan 14, 2025

Data backup and recovery management using allocated data blocks

Inventor: Li Ding (Cupertino, CA)
Assignee: Rubrik, Inc.
G06F11/1469G06F9/45558G06F9/544G06F2009/45583G06F2201/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,197,297
App. No.
18/497,219
Granted
Jan 14, 2025
Kind
B2
Abstract

A data backup and recovery method and system using allocated data blocks include identifying a first snapshot associated with a virtual machine; accessing changed block tracking data associated with data changes occurred in the virtual machine, the data changes corresponding to a set of changed data blocks; accessing block allocation status data associated with the set of changed data blocks; identifying one or more allocated data blocks from the set of changed data blocks that are associated with allocated status based on the block allocation status data; and storing the one or more allocated data blocks to a storage device.

Claims (46)

1. A system comprising:

one or more memories storing instructions; and

one or more hardware processors communicatively coupled to the one or more memories and configured by the instructions to perform operations comprising:

accessing, in response to a first request sent via an application programming interface (API), changed block tracking data indicating one or more data changes that have occurred between a first point in time and a second point in time subsequent to the first point in time;

accessing, in response to a second request sent via the API and subsequent to accessing the changed block tracking data, block allocation status data associated with a set of changed data blocks of the changed block tracking data;

identifying, based on the block allocation status data, one or more allocated data blocks from the set of changed data blocks that are also associated with an allocated status; and

storing the one or more allocated data blocks to a storage device.

2. The system of claim 1 , wherein the operations comprise:

sending, via the second request via the API and after identifying the one or more allocated data blocks from the set of changed data blocks, a request to read the one or more allocated data blocks before storing the one or more allocated data blocks to the storage device.

3. The system of claim 1 , wherein the operations comprise:

sending, via the first request sent via the API, a request for a first data snapshot of the system including the set of changed data blocks.

4. The system of claim 1 , wherein the operations comprise:

accessing, in response to the first request sent via the API, a subset of the set of changed data blocks that are available to the system at the first point in time.

5. The system of claim 1 , wherein the API comprises an external third-party system associated with data stored in the system.

6. The system of claim 1 , wherein the set of changed data blocks include one or more unallocated data blocks, and wherein the one or more unallocated data blocks comprise data blocks that have been deleted based on a user request.

7. The system of claim 1 , wherein the operations comprise:

generating a second snapshot based on the one or more allocated data blocks and associated metadata;

receiving a request to restore a virtual machine of the system to a requested version corresponding to the second point in time; and

restoring the virtual machine to the requested version using the second snapshot.

8. The system of claim 7 , wherein the associated metadata include configuration properties of the virtual machine at the second point in time, and wherein the configuration properties include a number of virtual central processing units (CPUs), memory of the virtual machine, a number of virtual disks of the virtual machine, one or more disk formats associated with the number of virtual disks of the virtual machine, or any combination thereof.

9. The system of claim 1 , wherein a virtual machine included as part of the system is communicatively coupled to one or more virtual disks, the one or more virtual disks including a first virtual disk associated with a disk format that allows on demand disk space allocation.

10. The system of claim 9 , wherein the first virtual disk is associated with a thin provision virtual disk format or a thick provision lazy zeroed virtual disk format.

11. A method comprising:

identifying a first snapshot associated with a virtual machine, the first snapshot corresponding to a first point in time;

accessing, in response to a first request sent via an application programming interface (API), changed block tracking data indicating one or more data changes that have occurred between a first point in time and a second point in time subsequent to the first point in time;

accessing, in response to a second request sent via the API and subsequent to accessing the changed block tracking data, block allocation status data associated with a set of changed data blocks of the changed block tracking data;

identifying, based on the block allocation status data, one or more allocated data blocks from the set of changed data blocks that are also associated with an allocated status; and

storing the one or more allocated data blocks to a storage device.

12. The method of claim 11 , comprising:

sending, via the second request sent via the API and after identifying the one or more allocated data blocks from the set of changed data blocks, a request to read the one or more allocated data blocks before storing the one or more allocated data blocks to the storage device.

13. The method of claim 11 , comprising:

sending, via the first request sent via the API, a request for a first data snapshot including the set of changed data blocks.

14. The method of claim 11 , wherein the API comprises an external third-party system.

15. The method of claim 11 , wherein the set of changed data blocks include one or more unallocated data blocks, and wherein the one or more unallocated data blocks comprise data blocks that have been deleted based on a user request.

16. The method of claim 11 , comprising:

generating a second snapshot based on the one or more allocated data blocks and associated metadata;

receiving a request to restore the virtual machine to a requested version corresponding to the second point in time; and

restoring the virtual machine to the requested version using the second snapshot.

17. The method of claim 16 , wherein the associated metadata include configuration properties of the virtual machine at the second point in time, and wherein the configuration properties include a number of virtual central processing units (CPUs), memory of the virtual machine, a number of virtual disks of the virtual machine, one or more disk formats associated with the number of virtual disks of the virtual machine, or any combination thereof.

18. The method of claim 11 , wherein the virtual machine is communicatively coupled to one or more virtual disks, the one or more virtual disks including a first virtual disk associated with a disk format that allows on demand disk space allocation.

19. The method of claim 18 , wherein the first virtual disk is associated with a thin provision virtual disk format or a thick provision lazy zeroed virtual disk format.

20. A non-transitory computer-readable storage medium comprising instructions that, when executed by a processing device, cause the processing device to perform operations comprising:

accessing, in response to a first request sent via a first application programming interface (API), changed block tracking data indicating one or more data changes that have occurred between a first point in time and a second point in time subsequent to the first point in time;

accessing, in response to a second request sent via the API and subsequent to accessing the changed block tracking data, block allocation status data associated with a set of changed data blocks of the changed block tracking data;

identifying, based on the block allocation status data, one or more allocated data blocks from the set of changed data blocks that are also associated with an allocated status; and

storing the one or more allocated data blocks to a storage device.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 13, 2023
From: DING, LI
To: RUBRIK, INC.
Reel/Frame 065541/0217 →
Continuity (2)
Continuation 17443618 · Jul 27, 2021
Related Publication 20240061753A1 · Feb 22, 2024
References Cited (25)
US 6732293B1 · Schneider · 2004 [cited by examiner]
US 8443166B2 · Czezatke · 2013 [cited by examiner]
US 8799618B2 · Cilibrasi · 2014 [cited by examiner]
US 8856078B2 · Knowles · 2014 [cited by examiner]
US 9396004B1 · Bester · 2016 [cited by examiner]
US 9430272B2 · Bezbaruah · 2016 [cited by examiner]
US 9514002B2 · Christopher · 2016 [cited by examiner]
US 9547555B2 · Starks · 2017 [cited by examiner]
US 9710386B1 · Zhang · 2017 [cited by examiner]
US 9727426B2 · Starks · 2017 [cited by examiner]
US 9772907B2 · Christopher · 2017 [cited by examiner]
US 9800569B2 · Edwards, Jr. · 2017 [cited by examiner]
US 9836340B2 · Bello · 2017 [cited by examiner]
US 9851918B2 · Tsirkin · 2017 [cited by examiner]
US 10001933B1 · Johnson · 2018 [cited by examiner]
US 10496431B2 · Aravot · 2019 [cited by examiner]
US 10929238B2 · Horowitz · 2021 [cited by examiner]
US 11073986B2 · Krause · 2021 [cited by examiner]
US 11221768B2 · Koester · 2022 [cited by examiner]
US 20100106691A1 · Preslan · 2010 [cited by examiner]
US 20110082972A1 · Cherkasova · 2011 [cited by examiner]
US 20120084517A1 · Post · 2012 [cited by examiner]
US 20140149984A1 · Takahashi · 2014 [cited by examiner]
US 20180039434A1 · Balcha · 2018 [cited by applicant]
US 20210191629A1 · Mbhor et al. · 2021 [cited by applicant]