VIRTUAL MACHINE MANAGEMENT IN A DATA STORAGE SYSTEM
Virtual machine (VM) proliferation may be reduced through the use of Virtual Server Agents (VSAs) assigned to a group of VM hosts that may determine the availability of a VM to perform a task. Tasks may be assigned to existing VMs instead of creating a new VM to perform the task. Furthermore, a VSA coordinator may determine a grouping of VMs or VM hosts based on one or more factors associated with the VMs or the VM hosts, such as VM type or geographical location of the VM hosts. The VSA coordinator may also assign one or more VSAs to facilitate managing the group of VM hosts. In some embodiments, the VSA coordinators may facilitate load balancing of VSAs during operation, such as during a backup operation, a restore operation, or any other operation between a primary storage system and a secondary storage system.
1 . A method of reducing virtual machine proliferation, the method comprising:
receiving a job request at a virtual server agent, the virtual server agent comprising computer hardware;
determining a load for each virtual machine from a set of virtual machines, the set of virtual machines at least partially managed by the virtual server agent;
determining whether the load of at least one virtual machine from the set of virtual machines is below a threshold load;
in response to determining that the load of at least one virtual machine from the set of virtual machines is below the threshold load, selecting a virtual machine from a set of virtual machines with a load that is below the threshold load and assigning a job associated with the job request to the selected virtual machine; and
in response to determining that no virtual machine from the set of virtual machines is below a threshold load, initiating creation of a new virtual machine and assigning the job associated with the job request to the new virtual machine.
2 . The method of claim 1 , wherein determining the load for each virtual machine from the set of virtual machines comprises accessing one or more virtual machine monitors to obtain the load for each virtual machine.
3 . The method of claim 1 , wherein the job request is received from a virtual server agent coordinator.
4 . The method of claim 1 , wherein the virtual server agent is one of a plurality of virtual server agents configured to at least partially manage the set of virtual machines.
5 . The method of claim 1 , wherein selecting the virtual machine comprises selecting the virtual machine based at least partially on a load balancing scheme.
6 . The method of claim 5 , wherein the load balancing scheme includes round robin.
7 . The method of claim 1 , further comprising:
identifying a job type of the job request; and
selecting the load threshold based at least partially on the job type.
8 . The method of claim 1 , further comprising:
determining an expected load for the job request; and
selecting the load threshold based at least partially on the expected load for the job request.
9 . The method of claim 1 , wherein the virtual server agent is part of a primary storage system.
10 . The method of claim 1 , wherein the virtual server agent is configured to communicate with one or more media agents of a secondary storage system via one or more streams between the virtual server agent and each media agent of the one or more media agents.
11 . The method of claim 1 , wherein initiating creation of the new virtual machine comprises:
selecting a computing system from a set of computing systems, the set of computing systems hosting the set of virtual machines; and
causing a virtual machine monitor of the selected computing system to create the new virtual machine.
12 . The method of claim 11 , wherein selecting the computing system is based at least partially on a job type of the job request.
13 . The method of claim 11 , wherein selecting the computing system comprises selecting the computing system based at least partially on a load balancing scheme.
14 . A system for reducing virtual machine proliferation, the system comprising:
a virtual server agent comprising computer hardware, the virtual server agent configured to:
receive a job request;
access load information for each virtual machine from a set of virtual machines assigned to the virtual server agent;
identify, based at least partially on the load information for each virtual machine, a subset of virtual machines from the set of virtual machines with a load below a threshold load; and
select a virtual machine from the subset of virtual machines and assign a job associated with the job request to the selected virtual machine when the subset of virtual machines is a non-empty set.
15 . The system of claim 14 , wherein the virtual server agent is further configured to initiate creation of a new virtual machine and to assign the job associated with the job request to the new virtual machine when the subset of virtual machines is an empty set.
16 . The system of claim 15 , wherein the virtual server agent is further configured to initiate the creation of the new virtual machine by:
selecting a computing system from a set of computing systems, the set of computing systems configured to host the set of virtual machines; and
causing a virtual machine monitor of the selected computing system to create the new virtual machine.
17 . The system of claim 15 , wherein the virtual server agent is further configured to provide information associated with the new virtual machine to a virtual machine management interface configured to present virtual machine status information to a user.
18 . The system of claim 14 , wherein the virtual server agent is further configured to access one or more virtual machine monitors to obtain the load information for each virtual machine.
19 . The system of claim 14 , wherein the virtual server agent is further configured to determine the threshold load based on the job request.
20 . The system of claim 14 , wherein the virtual server agent is further configured to communicate with one or more media agents of a secondary storage system via one or more streams between the virtual server agent and each media agent of the one or more media agents.