A Lightweight Proposal for Fast Booting Many Homogeneous Virtual Machines

Registered by vmThunder

Nova supports to boot virtual machines (VMs) atop the Cinder volumes. However,
in the current implementation (version i), booting up a large number of
homogeneous VMs is time-consuming. To overcome this drawback, we propose a
lightweight patch for Nova, which adopts a third-party library, called
VMThunder, for fast booting homogeneous VMs. VMThunder accelerates the booting
process through on-demand data transfer in a P2P manner.

Blueprint information

Status:
Started
Approver:
vmThunder
Priority:
Undefined
Drafter:
vmThunder
Direction:
Needs approval
Assignee:
vmThunder
Definition:
Pending Approval
Series goal:
None
Implementation:
Good progress
Milestone target:
None
Started by
vmThunder

Related branches

Sprints

Whiteboard

We propose to add a new method, named "Boot from VMThunder", for fast booting
multiple homogeneous VMs. This method uses a third-party library (VMThunder) to
support simultaneous booting of a large number of VMs.

VMThunder configures each VM with two volumes (the figure can be found here
http://www.kylinx.com/vmthunder/vmthunder.png): a (read-only) template volume
exactly the same as the pre-created original volume and a (writable) snapshot
volume storing each VM's difference to the template. The original volume is the
root of a template volume relay tree, and each VM fetches only the necessary
data from its parent over the multi-path iSCSI protocol. In addition, VMThunder
makes use of a compute node's local storage as a cache to accelerate the image
transferring process and avoid a repetitive data transfer. The P2P-style,
on-demand data transfer dramatically accelerates VMs' booting process.

Our modification to Nova is light-weighted (about 80 lines of insertions and
deletions). Two major functions, i.e., the creation and deletion of the
template and snapshot volumes, are implemented as following: (i) creation: We
add a volume-driver class (about 50 lines, depends on VMThunder's API) in file
"nova/virt/block_device.py" to prepare the template and snapshot volumes.
(ii) deletion: We add a delete method (about 20 lines, depends on VMThunder's
API) in file "nova/compute/manager.py' to destroy the unused template and
snapshot volumes.

More details of the implementation can be found in the following links:
Paper, http://www.computer.org/csdl/trans/td/preprint/06719385.pdf
Modification diff file, http://www.kylinx.com/vmthunder/diff2.txt
VMThunder demo videos,
http://www.kylinx.com/vmthunder/boot_vmthunder_win7_success-V2.mp4
Image booting demo videos,
http://www.kylinx.com/vmthunder/boot_image_test_win7_success-V2.mp4

Mailing-list: http://lists.openstack.org/pipermail/openstack-dev/2014-April/032883.html

Gerrit topic: https://review.openstack.org/#q,topic:bp/thunderboost,

2014-07-21

Addressed by https://review.openstack.org/#/c/94060/

add the major version: bp/thunderboost

Change-Id: I174bff2a96ff82adb5894a84f33da91417df5b5f

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.