# US 11,442,768 B2 · Cross-hypervisor live recovery of virtual machines

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 11,442,768 B2
- Document ID: US11442768B2
- Status: Granted
- Kind: B2
- Application number: 16/816,934
- Filed: 2020-03-12
- Published: 2021-09-16
- Granted: 2022-09-13
- Earliest claimed: 2020-03-12
- Assignees: Commvault Systems, Inc.; Knobbe, Martens, Olson & Bear
- Applicants: Commvault Systems, Inc.
- Inventors: Sanjay Kumar
- Web page: https://patentgrep.com/patent/US11442768B2

## CPC

- G06F 9/45558: {Hypervisor-specific management and integration aspects}
- G06F 3/0604: {Improving or facilitating administration, e.g. storage management}
- G06F 3/0659: {Command handling arrangements, e.g. command buffers, queues, command scheduling}
- G06F 3/0664: {at device level, e.g. emulation of a storage device or system}
- G06F 3/0673: {Single storage device}
- G06F 9/4401: Bootstrapping (security arrangements therefor G06F21/57)
- G06F 11/1469: {Backup restoration techniques}
- G06F 11/1451: {by selection of backup contents}
- G06F 2009/45562: {Creating, deleting, cloning virtual machine instances}
- G06F 2009/45575: {Starting, stopping, suspending or resuming virtual machine instances}
- G06F 2009/45583: {Memory management, e.g. access or allocation}
- G06F 2201/815: Virtual
- G06F 2201/84: Using snapshots, i.e. a logical point-in-time copy of the data
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Certain embodiments described herein relate to an improved virtual machine restoration system. In one embodiment, an information management system receives a request to perform a restore of a virtual machine using virtual machine data stored on a secondary storage device. In response, the information management system boots up the virtual machine after restoring only a portion of the virtual machine data that is needed to boot up the virtual machine, thereby reducing latencies associated with virtual machine boot-up. The information management system continues to retrieve additional portions of the virtual machine data from the secondary storage device as such portions are requested by the virtual machine, thereby reducing or minimizing unnecessary data transfer from the secondary storage device.

## Claims

### Claim 1

A computer-implemented method comprising:
storing virtual machine data associated with a first virtual disk on a primary storage device onto a secondary storage device, wherein the first virtual disk is associated with a first disk identifier;
receiving a request from a client computing device to restore the virtual machine data stored in the secondary storage device onto a destination storage device;
creating a second virtual disk in a temporary storage device, wherein the second virtual disk is associated with a second disk identifier is accessible via a virtual network path;
creating a virtual machine configured to access the second virtual disk via the virtual network path;
generating a mapping of the second disk identifier associated with the second virtual disk to the first disk identifier associated with the first virtual disk;
prior to loading at least some of the virtual machine data from the secondary storage device onto the second virtual disk, booting up the virtual machine; and
moving the second virtual disk from the temporary storage device to the destination storage device.

### Claim 2 (depends on 1)

The computer-implemented method of claim 1, further comprising, prior to booting up the virtual machine, restoring boot data needed to boot up the virtual machine from the secondary storage device onto the second virtual disk.

### Claim 3 (depends on 1)

The computer-implemented method of claim 1, further comprising:
receiving a request to access executable data usable to execute an application on the virtual machine;
determining, based at least on the mapping of the second disk identifier to the first disk identifier, that the executable data is stored at a first location in the secondary storage device; and
restoring the executable data from the first location in the secondary storage device onto the second virtual disk such that the executable data usable to execute the application on the virtual machine is stored on the second virtual disk.

### Claim 4 (depends on 1)

The computer-implemented method of claim 1, further comprising:
receiving, from a hypervisor hosting the virtual machine, a request to access data from the second virtual disk;
determining, based at least on the mapping of the second disk identifier to the first disk identifier, that the requested data is stored at a second location in the secondary storage device;
restoring the requested data from the second location of the secondary storage device onto the secondary storage device; and
transmitting the requested data to the hypervisor hosting the virtual machine.

### Claim 5 (depends on 1)

The computer-implemented method of claim 1, further comprising storing an association between the first disk identifier and a location of the virtual machine data in the secondary storage device.

### Claim 6 (depends on 1)

The computer-implemented method of claim 1, further comprising:
subsequent to restoring all of the virtual machine data onto the second virtual disk, receiving, from the virtual machine, a request to access data on the second virtual disk; and
transmitting the requested data to the virtual machine without having to retrieve the requested data from the secondary storage device.

### Claim 7 (depends on 1)

The computer-implemented method of claim 1, further comprising, prior to moving the second virtual disk from the temporary storage device to the destination storage device, restoring all of the virtual machine data from the secondary storage device onto the second virtual disk.

### Claim 8

A networked information management system comprising:
a primary storage device configured to store data associated with one or more virtual disks;
a secondary storage device configured to store copies of the data associated with the one or more virtual disks; and
a destination computing device comprising physical hardware and associated with a destination storage device, wherein the destination computing device is configured to:
cause virtual machine data associated with a first virtual disk on the primary storage device to be stored onto the secondary storage device, wherein the first virtual disk is associated with a first disk identifier;
receive a request from a client computing device to restore the virtual machine data stored in the secondary storage device onto the destination storage device;
cause a second virtual disk to be created in a temporary storage device, wherein the second virtual disk is associated with a second disk identifier is accessible via a virtual network path;
cause a virtual machine to be created, wherein the virtual machine is configured to access the second virtual disk via the virtual network path;
generate a mapping of the second disk identifier associated with the second virtual disk to the first disk identifier associated with the first virtual disk;
prior to loading at least some of the virtual machine data from the secondary storage device onto the second virtual disk, cause the virtual machine to be booted up; and
cause the second virtual disk to be moved from the temporary storage device to the destination storage device.

### Claim 9 (depends on 8)

The networked information management system of claim 8, wherein the destination computing device is further configured to, prior to booting up the virtual machine, cause boot data needed to boot up the virtual machine to be restored from the secondary storage device onto the second virtual disk.

### Claim 10 (depends on 8)

The networked information management system of claim 8, wherein the destination computing device is further configured to:
receive a request to access executable data usable to execute an application on the virtual machine;
determine, based at least on the mapping of the second disk identifier to the first disk identifier, that the executable data is stored at a first location in the secondary storage device; and
cause the executable data to be restored from the first location in the secondary storage device onto the second virtual disk such that the executable data usable to execute the application on the virtual machine is stored on the second virtual disk.

### Claim 11 (depends on 8)

The networked information management system of claim 8, wherein the destination computing device is further configured to:
receive, from a hypervisor hosting the virtual machine, a request to access data from the second virtual disk;
determine, based at least on the mapping of the second disk identifier to the first disk identifier, that the requested data is stored at a second location in the secondary storage device;
cause the requested data to be restored from the second location of the secondary storage device onto the secondary storage device; and
cause the requested data to be transmitted to the hypervisor hosting the virtual machine.

### Claim 12 (depends on 8)

The networked information management system of claim 8, wherein the destination computing device is further configured to cause an association between the first disk identifier and a location of the virtual machine data in the secondary storage device to be stored.

### Claim 13 (depends on 8)

The networked information management system of claim 8, wherein the destination computing device is further configured to:
subsequent to restoring all of the virtual machine data onto the second virtual disk, receive, from the virtual machine, a request to access data on the second virtual disk; and
cause the requested data to be transmitted to the virtual machine without having to retrieve the requested data from the secondary storage device.

### Claim 14 (depends on 8)

The networked information management system of claim 8, wherein the destination computing device is further configured to, prior to moving the second virtual disk from the temporary storage device to the destination storage device, cause all of the virtual machine data to be restored from the secondary storage device onto the second virtual disk.

### Claim 15

A non-transitory computer-readable medium storing instructions that, when executed by at least one computing device comprising one or more processors and computer memory, cause the at least one computing device to perform operations comprising:
causing virtual machine data associated with a first virtual disk on the primary storage device to be stored onto the secondary storage device, wherein the first virtual disk is associated with a first disk identifier;
receiving a request from a client computing device to restore the virtual machine data stored in the secondary storage device onto the destination storage device;
causing a second virtual disk to be created in a temporary storage device, wherein the second virtual disk is associated with a second disk identifier is accessible via a virtual network path;
causing a virtual machine to be created, wherein the virtual machine is configured to access the second virtual disk via the virtual network path;
generating a mapping of the second disk identifier associated with the second virtual disk to the first disk identifier associated with the first virtual disk;
prior to loading at least some of the virtual machine data from the secondary storage device onto the second virtual disk, causing the virtual machine to be booted up; and
causing the second virtual disk to be moved from the temporary storage device to the destination storage device.

### Claim 16 (depends on 15)

The non-transitory computer-readable medium of claim 15, wherein the operations further comprise, prior to booting up the virtual machine, causing boot data needed to boot up the virtual machine to be restored from the secondary storage device onto the second virtual disk.

### Claim 17 (depends on 15)

The non-transitory computer-readable medium of claim 15, wherein the operations further comprise:
receiving a request to access executable data usable to execute an application on the virtual machine;
determining, based at least on the mapping of the second disk identifier to the first disk identifier, that the executable data is stored at a first location in the secondary storage device; and
causing the executable data to be restored from the first location in the secondary storage device onto the second virtual disk such that the executable data usable to execute the application on the virtual machine is stored on the second virtual disk.

### Claim 18 (depends on 15)

The non-transitory computer-readable medium of claim 15, wherein the operations further comprise:
receiving, from a hypervisor hosting the virtual machine, a request to access data from the second virtual disk;
determining, based at least on the mapping of the second disk identifier to the first disk identifier, that the requested data is stored at a second location in the secondary storage device;
causing the requested data to be restored from the second location of the secondary storage device onto the secondary storage device; and
causing the requested data to be transmitted to the hypervisor hosting the virtual machine.

### Claim 19 (depends on 15)

The non-transitory computer-readable medium of claim 15, wherein the operations further comprise causing an association between the first disk identifier and a location of the virtual machine data in the secondary storage device to be stored.

### Claim 20 (depends on 15)

The non-transitory computer-readable medium of claim 15, wherein the operations further comprise:
subsequent to restoring all of the virtual machine data onto the second virtual disk, receiving, from the virtual machine, a request to access data on the second virtual disk; and
causing the requested data to be transmitted to the virtual machine without having to retrieve the requested data from the secondary storage device.
