IP Library Granted Patent US 10,891,154
Granted Patent B2
US 10,891,154 · App. 16/676,151 · Granted Jan 12, 2021

Hosting virtual machines on a secondary storage system

Inventors: Anand Bhat (Bangalore, IN); Anil Kumar Boggarapu (Bangalore, IN); Arvind Jagannath (San Jose, CA)
Assignee: Cohesity, Inc.
G06F9/4856G06F9/45533G06F9/45558G06F9/5088G06F2009/45562G06F2009/45583
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 10,891,154
App. No.
16/676,151
Granted
Jan 12, 2021
Kind
B2
Abstract

At least a portion of a virtual machine is hosted on at least one node of a first subset of a plurality of nodes of a secondary storage system. The virtual machine comprises a plurality of portions that can be distributed between the plurality of nodes and is configured into a first state of a plurality of states, such that, in the first state, the plurality of portions is distributed between a first subset of the plurality of nodes and each of the first subset of nodes stores a portion of the virtual machine in its corresponding storage device. A node from the second subset of the plurality of nodes to host the virtual machine in a second state of the plurality of states is selected based on at least one of storage, memory or processing resources of one or more nodes of a second subset of the plurality of nodes.

Claims (38)

1. A method comprising:

hosting at least a portion of a virtual machine on at least one node of a first subset of a plurality of nodes of a secondary storage system, wherein the secondary storage system stores data associated with one or more primary storages, and wherein, in a first state of a plurality of states, the virtual machine comprises a plurality of portions that are distributed between the first subset of the plurality of nodes of the secondary storage system;

moving to one or more selected nodes of a second subset of the plurality of nodes of the secondary storage system to host the plurality of portions of the virtual machine in a second state of the plurality of states the plurality of portions of the virtual machine hosted on the first subset of the plurality of nodes of the secondary storage system, wherein the plurality of portions of the virtual machine include one or more executable portions and one or more data portions; and

running the virtual machine in the second state of the plurality of states on the one or more selected nodes of the second subset of the plurality of nodes of the secondary storage system, wherein, in the second state of the plurality of states, a first node of the second subset of the plurality of nodes of the secondary storage system is selected to be configured to store one executable portion of the one or more executable portions of the virtual machine and a second node of the second subset of the plurality of nodes of the secondary storage system is selected to be configured to store one data portion of the one or more data portions of the virtual machine.

2. The method of claim 1 , wherein at least the portion of the virtual machine hosted on the at least one node of the first subset of the plurality of nodes of the secondary storage system includes a first executable portion of the one or more executable portions of the virtual machine and a first data portion of the one or more data portions of the virtual machine.

3. The method of claim 2 , wherein moving to one or more selected nodes of the second subset of the plurality of nodes of the secondary storage system to host the plurality of portions of the virtual machine in a second state of the plurality of states the plurality of portions of the virtual machine hosted on the first subset of the plurality of nodes of the secondary storage system includes moving the first executable portion of the one or more executable portions of the virtual machine to a memory of the first node of the second subset of the plurality of nodes of the secondary storage system, and wherein the first executable portion of the one or more executable portions of the virtual machine is the one executable portion of the one or more executable portions of the virtual machine.

4. The method of claim 2 , further comprising moving the first data portion of the one or more data portions of the virtual machine to the second node of the second subset of the plurality of nodes of the secondary storage system.

5. The method of claim 4 , wherein the first data portion of the one or more data portions of the virtual machine is the one data portion of the one or more data portions of the virtual machine.

6. The method of claim 1 , wherein the second subset of the plurality of nodes of the secondary storage system includes the at least one node of the first subset of the plurality of nodes of the secondary storage system.

7. The method of claim 1 , wherein the second subset of the plurality of nodes of the secondary storage system includes none of the at least one node of the first subset of the plurality of nodes of the secondary storage system.

8. The method of claim 1 , wherein the plurality of portions of the virtual machine are moved based on one or more trigger conditions.

9. The method of claim 8 , wherein the one or more trigger conditions include at least one of an out-of-memory condition, a change in operational condition, a failure or predicted failure of a node, an insertion or predicted insertion of a new node into the secondary storage system, load balancing between the plurality of nodes of the secondary storage system, or a round robin assignment of executables between the plurality of nodes of the secondary storage system.

10. The method of claim 1 , wherein the one or more selected nodes of the second subset of the plurality of nodes of the secondary storage system are selected based on an affinity between the virtual machine and the one or more selected nodes of the second subset of the plurality of nodes of the secondary storage system.

11. The method of claim 1 , wherein the one or more nodes of the second subset of the plurality of nodes of the secondary storage system are selected based on an affinity between an application hosted by the virtual machine and one or more applications hosted by one or more virtual machines hosted on the one or more selected nodes of the second subset of the plurality of nodes of the secondary storage system.

12. The method of claim 1 , further comprising:

determining that the virtual machine is offline, wherein a memory of the at least one node of the first subset of the plurality of nodes of the secondary storage system stores one or more stale writes associated with the offline virtual machine; and

cloning a volume associated with the offline virtual machine.

13. The method of claim 12 , further comprising associating the cloned volume with the second subset of the plurality of nodes of the secondary storage system.

14. The method of claim 13 , further comprising removing the volume associated with the offline virtual machine.

15. The method of claim 1 , wherein the one or more selected nodes of the second subset of the plurality of nodes of the secondary storage system receive at least one change to the virtual machine as part of one or more test and development operations and store new data resulting from the at least one change to the virtual machine as a portion of the virtual machine in at least one node of the second subset of the plurality of nodes of the secondary storage system.

16. The method of claim 1 , further comprising:

determining that at least one of memory and processor of the one or more selected nodes of the second subset of the plurality of nodes of the secondary storage system has met a related condition; and

in response to determining that the at least one of the memory and the processor of the one or more selected nodes of the second subset of the plurality of nodes of the secondary storage system has met the related condition, selecting the first node from the second subset of the plurality of nodes of the secondary storage system to run the one executable portion of the one or more executable portions of the virtual machine in the second state of the plurality of states.

17. The method of claim 16 , wherein the related condition is a decrease in an available memory or processing resource on the first node of the second subset of the plurality of nodes of the secondary storage system.

18. The method of claim 1 , further comprising:

determining that the virtual machine has stopped running on the first node of the second subset of the plurality of nodes of the secondary storage system;

selecting another node from the second subset of the plurality of nodes of the secondary storage system to run the virtual machine based on at least one of storage, memory, and processing resources across other nodes of the second subset of the plurality of nodes of the secondary storage system; and

restarting the virtual machine on the selected another node of the second subset of the plurality of nodes of the secondary storage system.

19. A system comprising:

a processor configured to:

host at least a portion of a virtual machine on at least one node of a first subset of a plurality of nodes of a secondary storage system, wherein the secondary storage system stores data associated with one or more primary storages, and wherein, in a first state of a plurality of states, the virtual machine comprises a plurality of portions that are distributed between the first subset of the plurality of nodes of the secondary storage system;

move to one or more selected nodes of a second subset of the plurality of nodes of the secondary storage system to host the plurality of portions of the virtual machine in a second state of the plurality of states the plurality of portions of the virtual machine hosted on the first subset of the plurality of nodes of the secondary storage system, wherein the plurality of portions of the virtual machine include one or more executable portions and one or more data portions; and

run the virtual machine in the second state of the plurality of states on the one or more selected nodes of the second subset of the plurality of nodes of the secondary storage system, wherein, in the second state of the plurality of states, a first node of the second subset of the plurality of nodes of the secondary storage system is selected to be configured to store one executable portion of the one or more executable portions of the virtual machine and a second node of the second subset of the plurality of nodes of the secondary storage system is selected to be configured to store one data portion of the one or more data portions of the virtual machine; and

a memory coupled to the processor and configured to provide the processor with instructions.

20. A computer program product, the computer program product being embodied in a non-transitory computer readable storage medium and comprising computer instructions to:

host at least a portion of a virtual machine on at least one node of a first subset of a plurality of nodes of a secondary storage system, wherein the secondary storage system stores data associated with one or more primary storages, and wherein, in a first state of a plurality of states, the virtual machine comprises a plurality of portions that are distributed between the first subset of the plurality of nodes of the secondary storage system;

move to one or more selected nodes of a second subset of the plurality of nodes of the secondary storage system to host the plurality of portions of the virtual machine in a second state of the plurality of states the plurality of portions of the virtual machine hosted on the first subset of the plurality of nodes of the secondary storage system, wherein the plurality of portions of the virtual machine include one or more executable portions and one or more data portions; and

run the virtual machine in the second state of the plurality of states on the one or more selected nodes of the second subset of the plurality of nodes of the secondary storage system, wherein, in the second state of the plurality of states, a first node of the second subset of the plurality of nodes of the secondary storage system is selected to be configured to store one executable portion of the one or more executable portions of the virtual machine and a second node of the second subset of the plurality of nodes of the secondary storage system is selected to be configured to store one data portion of the one or more data portions of the virtual machine.

Assignments (4)
TERMINATION AND RELEASE OF INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Dec 10, 2024
From: FIRST-CITIZENS BANK & TRUST COMPANY (AS SUCCESSOR TO SILICON VALLEY BANK)
To: COHESITY, INC.
Reel/Frame 069584/0498 →
SECURITY INTEREST Recorded Dec 9, 2024
From: VERITAS TECHNOLOGIES LLC; COHESITY, INC.
To: JPMORGAN CHASE BANK. N.A.
Reel/Frame 069890/0001 →
SECURITY INTEREST Recorded Sep 23, 2022
From: COHESITY, INC.
To: SILICON VALLEY BANK, AS ADMINISTRATIVE AGENT
Reel/Frame 061509/0818 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 6, 2019
From: BHAT, ANAND; BOGGARAPU, ANIL KUMAR; JAGANNATH, ARVIND
To: COHESITY, INC.
Reel/Frame 050935/0604 →
Continuity (3)
Continuation 16389201 · Apr 19, 2019
Provisional Application 62800717 · Feb 4, 2019
Related Publication 20200249988A1 · Aug 6, 2020