A Lightweight Proposal for Fast Booting Many Homogeneous Virtual Machines

Registered by vmThunder on 2014-04-15

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 on 2014-04-15

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.