IP Library Granted Patent US 12,475,004
Granted Patent B2
US 12,475,004 · App. 18/470,276 · Granted Nov 18, 2025

Application migration between environments

Inventors: Zhicong Wang (San Francisco, CA); Benjamin Meadowcroft (San Jose, CA); Biswaroop Palit (Mountain View, CA); Atanu Chakraborty (New Delhi, IN); Hardik Vohra (Mountain View, CA); Abhay Mitra (Bangalore Karnataka, IN); Saurabh Goyal (Bangalore Karnataka, IN); Sanjari Srivastava (Bangalore Karnataka, IN); Swapnil Agarwal (Bangalore Karnataka, IN); Rahil Shah (Mumbai, IN); Mudit Malpani (Mountain View, CA); Janmejay Singh (Bangalore Karnataka, IN); Ajay Arvind Bhave (Bangalore Karnataka, IN); Prateek Pandey (Santa Clara, CA)
Assignee: Rubrik, Inc.
G06F11/1469G06F9/45558G06F11/2023G06F11/203G06F2009/45575G06F2201/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,475,004
App. No.
18/470,276
Filed
Sep 19, 2023
Granted
Nov 18, 2025
Kind
B2
Art Unit
2113
USPC
714/19
Abstract

A data management and storage (DMS) cluster of peer DMS nodes manages migration of an application between a primary compute infrastructure and a secondary compute infrastructure. The secondary compute infrastructure may be a failover environment for the primary compute infrastructure. Primary snapshots of virtual machines of the application in the primary compute infrastructure are generated, and provided to the secondary compute infrastructure. During a failover, the primary snapshots are deployed in the secondary compute infrastructure as virtual machines. Secondary snapshots of the virtual machines are generated, where the secondary snapshots are incremental snapshots of the primary snapshots. In failback, the secondary snapshots are provided to the primary compute infrastructure, where they are combined with the primary snapshots into construct a current state of the application, and the application is deployed in the current state by deploying virtual machines on the primary compute infrastructure.

Claims (65)

1 . A method, comprising:

generating a plurality of data fetch jobs for a plurality of virtual machines within a compute infrastructure, wherein the plurality of virtual machines are configured to execute an application, and wherein the plurality of data fetch jobs are associated with generating a snapshot of the application;

determining whether the plurality of data fetch jobs are ready for execution;

delaying execution of at least one data fetch job of the plurality of data fetch jobs based at least in part on at least one other data fetch job of the plurality of data fetch jobs not being ready for execution; and

generating, after the plurality of data fetch jobs are ready for execution, the snapshot of the application based at least in part on parallel execution of the plurality of data fetch jobs, wherein:

executing the plurality of data fetch jobs comprises transferring captured images of the plurality of virtual machines to a data management and storage (DMS) system; and

the snapshot of the application is generated based at least in part on combining the captured images at the DMS system.

2 . The method of claim 1 , further comprising:

adding the plurality of data fetch jobs to a job queue accessible to peer DMS nodes in the DMS system; and

retrieving, by the peer DMS nodes, the plurality of data fetch jobs from the job queue for execution at the plurality of virtual machines within the compute infrastructure.

3 . The method of claim 2 , further comprising:

associating one or more service level agreements with the plurality of virtual machines, wherein the plurality of data fetch jobs are added to the job queue according to the one or more service level agreements.

4 . The method of claim 2 , wherein the plurality of data fetch jobs are associated with a start time, the method further comprising:

determining whether the plurality of data fetch jobs are ready for execution based at least in part on whether the peer DMS nodes are ready to execute the plurality of data fetch jobs at the start time.

5 . The method of claim 1 , wherein generating the snapshot of the application is based at least in part on combining an incremental snapshot of a virtual machine with a full snapshot of the virtual machine.

6 . The method of claim 1 , further comprising:

allocating the plurality of data fetch jobs to peer DMS nodes in the DMS system based at least in part on respective processing and data storage resources of the peer DMS nodes.

7 . The method of claim 1 , further comprising:

determining that a data fetch job of the plurality of data fetch jobs failed to successfully execute at a first virtual machine;

generating one or more additional data fetch jobs for the first virtual machine associated with the failed data fetch job and a second virtual machine associated with a successful data fetch job;

executing the one or more additional data fetch jobs to generate a full snapshot of the first virtual machine and an incremental snapshot of the second virtual machine;

generating the snapshot of the application by combining the full snapshot of the first virtual machine with the incremental snapshot of the second virtual machine; and

storing the snapshot of the application in a distributed data store.

8 . The method of claim 1 , further comprising:

storing the snapshot of the application in a distributed data store in response to determining that the plurality of data fetch jobs were successfully executed at the plurality of virtual machines.

9 . The method of claim 1 , wherein the plurality of virtual machines comprise at least:

a database server configured to execute the application;

a file server configured to execute the application; and

a web server configured to execute the application.

10 . The method of claim 1 , wherein determining whether the plurality of data fetch jobs are ready for execution comprises:

determining whether one or more job engines are ready to execute the plurality of data fetch jobs.

11 . The method of claim 1 , wherein determining whether the plurality of data fetch jobs are ready for execution is based at least in part on determining whether the plurality of data fetch jobs have been retrieved from a job queue.

12 . A system, comprising:

at least one processor; and

memory coupled to the at least one processor, the memory storing instructions that are executable by the at least one processor to cause the system to:

generate a plurality of data fetch jobs for a plurality of virtual machines within a compute infrastructure, wherein the plurality of virtual machines are configured to execute an application, and wherein the plurality of data fetch jobs are associated with generating a snapshot of the application;

determine whether the plurality of data fetch jobs are ready for execution;

delay execution of at least one data fetch job of the plurality of data fetch jobs based at least in part on at least one other data fetch job of the plurality of data fetch jobs not being ready for execution; and

generate, after the plurality of data fetch jobs are ready for execution, the snapshot of the application based at least in part on parallel execution of the plurality of data fetch jobs, wherein:

executing the plurality of data fetch jobs comprises transferring captured images of the plurality of virtual machines to a data management and storage (DMS) system; and

the snapshot of the application is based at least in part on a combination of the captured images.

13 . The system of claim 12 , wherein the instructions are further executable by the at least one processor to cause the DMS system to:

add the plurality of data fetch jobs to a job queue accessible to peer DMS nodes in the DMS system; and

retrieve, by the peer DMS nodes, the plurality of data fetch jobs from the job queue for execution at the plurality of virtual machines within the compute infrastructure.

14 . The system of claim 13 , wherein the plurality of data fetch jobs are associated with a start time, and wherein the instructions are further executable by the at least one processor to cause the DMS system to:

determine whether the plurality of data fetch jobs are ready for execution based at least in part on whether the peer DMS nodes are ready to execute the plurality of data fetch jobs at the start time.

15 . The system of claim 12 , wherein, to generate the snapshot of the application, the instructions are executable by the at least one processor to cause the DMS system to combine an incremental snapshot of a virtual machine with a full snapshot of the virtual machine.

16 . The system of claim 12 , wherein the instructions are further executable by the at least one processor to cause the DMS system to:

allocate the plurality of data fetch jobs to peer DMS nodes in the DMS system based at least in part on processing and data storage resources of the peer DMS nodes.

17 . The system of claim 12 , wherein the instructions are further executable by the at least one processor to cause the DMS system to:

determine that a data fetch job of the plurality of data fetch jobs failed to successfully execute at a first virtual machine;

generate one or more additional data fetch jobs for the first virtual machine associated with the failed data fetch job and a second virtual machine associated with a successful data fetch job;

execute the one or more additional data fetch jobs to generate a full snapshot of the first virtual machine and an incremental snapshot of the second virtual machine;

generate the snapshot of the application by combining the full snapshot of the first virtual machine with the incremental snapshot of the second virtual machine; and

store the snapshot of the application in a distributed data store.

18 . The system of claim 12 , wherein the instructions are further executable by the at least one processor to cause the DMS system to:

store the snapshot of the application in a distributed data store in response to determining that the plurality of data fetch jobs were successfully executed at the plurality of virtual machines.

19 . The system of claim 12 , wherein the instructions are further executable by the at least one processor to cause the DMS system to determine whether the plurality of data fetch jobs are ready for execution based at least in part on whether one or more job engines are ready to execute the plurality of data fetch jobs, whether the plurality of data fetch jobs have been retrieved from a job queue, or any combination thereof.

20 . A non-transitory computer-readable medium comprising instructions, wherein the instructions are executable by at least one processor to:

generate a plurality of data fetch jobs for a plurality of virtual machines within a compute infrastructure, wherein the plurality of virtual machines are configured to execute an application, and wherein the plurality of data fetch jobs are associated with generating a snapshot of the application;

determine whether the plurality of data fetch jobs are ready for execution;

delay execution of at least one data fetch job of the plurality of data fetch jobs based at least in part on at least one other data fetch job of the plurality of data fetch jobs not being ready for execution; and

generate, after the plurality of data fetch jobs are ready for execution, the snapshot of the application based at least in part on parallel execution of the plurality of data fetch jobs, wherein:

executing the plurality of data fetch jobs comprises transferring captured images of the plurality of virtual machines to a data management and storage (DMS) system; and

the snapshot of the application is based at least in part on a combination of the captured images.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 5, 2023
From: WANG, ZHICONG; MEADOWCROFT, BENJAMIN; PALIT, BISWAROOP; CHAKRABORTY, ATANU; VOHRA, HARDIK; MITRA, ABHAY; GOYAL, SAURABH; SRIVASTAVA, SANJARI; AGARWAL, SWAPNIL; SHAH, RAHIL; MALPANI, MUDIT; SINGH, JANMEJAY; BHAVE, AJAY ARVIND; PANDEY, PRATEEK
To: RUBRIK, INC.
Reel/Frame 065138/0938 →
Continuity (4)
Continuation 18097081 · Jan 13, 2023
Continuation 16660262 · Oct 22, 2019
Continuation 16018013 · Jun 25, 2018
Related Publication 20240012720A1 · Jan 11, 2024
References Cited (44)
US 6981114B1 · Wu et al. · 2005 [cited by applicant]
US 7146439B1 · Ofer et al. · 2006 [cited by applicant]
US 7181574B1 · Lele · 2007 [cited by applicant]
US 7444459B2 · Johnson · 2008 [cited by examiner]
US 8577842B1 · Nagargadde et al. · 2013 [cited by applicant]
US 9176871B1 · Serlet · 2015 [cited by applicant]
US 9417976B2 · Sugabrahmam et al. · 2016 [cited by applicant]
US 10120764B1 · Ramachandran et al. · 2018 [cited by applicant]
US 10152386B1 · Ramachandran et al. · 2018 [cited by applicant]
US 10185637B2 · Deng et al. · 2019 [cited by applicant]
US 10248619B1 · Kumar · 2019 [cited by applicant]
US 10503612B1 · Wang et al. · 2019 [cited by applicant]
US 11663085B2 · Wang · 2023 [cited by examiner]
US 11669409B2 · Wang et al. · 2023 [cited by applicant]
US 20020049778A1 · Bell et al. · 2002 [cited by applicant]
US 20070283358A1 · Kasahara et al. · 2007 [cited by applicant]
US 20100107158A1 · Chen et al. · 2010 [cited by applicant]
US 20100228819A1 · Wei · 2010 [cited by applicant]
US 20130198557A1 · Bensinger · 2013 [cited by applicant]
US 20140006858A1 · Helfman et al. · 2014 [cited by applicant]
US 20140115706A1 · Silva et al. · 2014 [cited by applicant]
US 20140337294A1 · Karonde et al. · 2014 [cited by applicant]
US 20150212893A1 · Pawar et al. · 2015 [cited by applicant]
US 20150261514A1 · Fu et al. · 2015 [cited by applicant]
US 20150312335A1 · Ying et al. · 2015 [cited by applicant]
US 20150317222A1 · Mahindru et al. · 2015 [cited by applicant]
US 20150324260A1 · Mutalik et al. · 2015 [cited by applicant]
US 20160048408A1 · Madhu et al. · 2016 [cited by applicant]
US 20160062858A1 · Gallagher et al. · 2016 [cited by applicant]
US 20160063014A1 · Chelur · 2016 [cited by examiner]
US 20160103738A1 · Forgette · 2016 [cited by examiner]
US 20160117163A1 · Fukui et al. · 2016 [cited by applicant]
US 20160239396A1 · Deng et al. · 2016 [cited by applicant]
US 20170262520A1 · Mitkar et al. · 2017 [cited by applicant]
US 20180060373A1 · Foebel et al. · 2018 [cited by applicant]
US 20180088986A1 · Williams · 2018 [cited by applicant]
US 20190065322A1 · Chakankar et al. · 2019 [cited by applicant]
US 20190114230A1 · Ramachandran et al. · 2019 [cited by applicant]
US 20190140905A1 · Vembuli et al. · 2019 [cited by applicant]
US 20190179711A1 · Luo et al. · 2019 [cited by applicant]
US 20190179918A1 · Singh et al. · 2019 [cited by applicant]
US 20190213123A1 · Agarwal · 2019 [cited by applicant]
US 20190391880A1 · Wang et al. · 2019 [cited by applicant]
Anderton, Chris. Creating a new EC2 AMI from within Vmware or from VMDK files. Oct. 15, 2015 (retrieved on Sep. 16, 2018). Retrieved from the Internet <URL: https://thewebfellas.com/blog/creating-an-new-ec2-ami-from-wit… [cited by applicant]