Methods and systems for concurrently taking snapshots of a plurality of virtual machines
First Claim
1. A method for creating snapshots of a plurality of virtual machines instantiated on one or more hosts, each of the virtual machines (i) managed by one of a plurality of hypervisors instantiated on the one or more hosts, and (ii) storing data on a storage system communicatively coupled to the one or more hosts, the method comprising:
- creating, by a storage controller of the storage system, a plurality of queues having a one-to-one mapping to the plurality of hypervisors;
placing by the storage controller a request to create a snapshot of one of the virtual machines in the queue mapped to the hypervisor which manages the virtual machine; and
concurrently executing by the storage controller one or more software threads, wherein the execution of the one or more software threads causes the storage controller to perform the following for each of the one or more software threads;
(i) select one of the queues based on a queue preference order assigned to the software thread;
(ii) retrieve one of the snapshot requests from the selected queue; and
(iii) process the retrieved snapshot request,wherein at a first time instance, a first one of the one or more software threads is assigned to a first one of the queues, and at a second time instance, the first software thread is assigned to a second one of the queues based on the queue preference order assigned to the first software thread.
2 Assignments
0 Petitions
Accused Products
Abstract
Techniques are described herein which minimize the impact of virtual machine snapshots on the performance of virtual machines and hypervisors. In the context of a volume snapshot which may involve (i) taking virtual machine snapshots of all virtual machines associated with the volume, (ii) taking the volume snapshot, and (iii) removing all the virtual machine snapshots, multiple virtual machine snapshots may be created in parallel. In the process of creating virtual machine snapshots, a storage system may determine which snapshots to create in parallel. The storage system may also prioritize snapshots from certain hypervisors in order to avoid the problem of “starvation”, in which busy hypervisors prevent less busy hypervisors from creating snapshots. The techniques described herein, while mainly described in the context of snapshot creation, are readily applied to snapshot removal.
42 Citations
20 Claims
-
1. A method for creating snapshots of a plurality of virtual machines instantiated on one or more hosts, each of the virtual machines (i) managed by one of a plurality of hypervisors instantiated on the one or more hosts, and (ii) storing data on a storage system communicatively coupled to the one or more hosts, the method comprising:
-
creating, by a storage controller of the storage system, a plurality of queues having a one-to-one mapping to the plurality of hypervisors; placing by the storage controller a request to create a snapshot of one of the virtual machines in the queue mapped to the hypervisor which manages the virtual machine; and concurrently executing by the storage controller one or more software threads, wherein the execution of the one or more software threads causes the storage controller to perform the following for each of the one or more software threads; (i) select one of the queues based on a queue preference order assigned to the software thread; (ii) retrieve one of the snapshot requests from the selected queue; and (iii) process the retrieved snapshot request, wherein at a first time instance, a first one of the one or more software threads is assigned to a first one of the queues, and at a second time instance, the first software thread is assigned to a second one of the queues based on the queue preference order assigned to the first software thread. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A storage system, comprising:
-
a storage volume storing data from a plurality of virtual machines which are instantiated on one or more hosts communicatively coupled to the storage system, each of the virtual machines being managed by one of a plurality of hypervisors instantiated on the one or more hosts; a main memory; a processor communicatively coupled to the storage volume and the main memory; and software instructions on the main memory that, when executed by the processor, cause the processor to; create a plurality of queues having a one-to-one mapping to the plurality of hypervisors; place a request to create a snapshot of one of the virtual machines in the queue mapped to the hypervisor which manages the virtual machine; and concurrently execute one or more software threads, wherein the execution of the one or more software threads causes the processor to perform the following for each of the one or more software threads; (i) select one of the queues based on a queue preference order assigned to the software thread; (ii) retrieve one of the snapshot requests from the selected queue; and (iii) process the retrieved snapshot request, wherein at a first time instance, a first one of the one or more software threads is assigned to a first one of the queues, and at a second time instance, the first software thread is assigned to a second one of the queues based on the queue preference order assigned to the first software thread. - View Dependent Claims (9, 10, 11, 12, 13, 14)
-
-
15. A non-transitory machine-readable storage medium for a storage system having (i) a storage volume storing data from a plurality of virtual machines which are instantiated on one or more hosts communicatively coupled to the storage system, each of the virtual machines being managed by one of a plurality of hypervisors instantiated on the one or more hosts, (ii) a main memory, and (iii) a processor communicatively coupled to the storage volume and the main memory, the non-transitory machine-readable storage medium comprising software instructions that, when executed by the processor, cause the processor to:
-
create a plurality of queues having a one-to-one mapping to the plurality of hypervisors; place a request to create a snapshot of one of the virtual machines in the queue mapped to the hypervisor which manages the virtual machine; and concurrently execute one or more software threads, wherein the execution of the one or more software threads causes the processor to perform the following for each of the one or more software threads; (i) select one of the queues based on a queue preference order assigned to the software thread; (ii) retrieve one of the snapshot requests from the selected queue; and (iii) process the retrieved snapshot request, wherein at a first time instance, a first one of the one or more software threads is assigned to a first one of the queues, and at a second time instance, the first software thread is assigned to a second one of the queues based on the queue preference order assigned to the first software thread. - View Dependent Claims (16, 17, 18, 19, 20)
-
Specification