Page 1
Vm_commitor How to Easily Handle
An Infinite Number of Versions
of Running QEMU/KVM
Virtual Machines
Dominique Rodrigues
Cloud Expo 2015 – Santa Clara
Page 2
Nanocloud Software?
Page 4
Turn any software into a
cloud solution.
Any legacy application. Any device. Any cloud.
Page 6
• Cloud
• Virtualization
• Scalability
• API
• Multi-tenant
• Collaborative
• Statistics usage
• HTML5 display
Main technologies used
Open source version: https://github.com/Nanocloud
Page 7
About Virtualization
Page 8
VIRTUALIZATION USE
Server consolidation
Foundation for elasticity & instant deployment
in cloud computing
Massively used in enterprises
Page 9
About Containerization
Page 11
DOCKER
New orchestration of containers
° clone, pull/push, run, commit °
Hub to share application based containers
VCS oriented (like git)
° edit, share, deploy applications °
Page 14
GIT
THE VCS software!
° git clone / commit / push / pull / merge / rebase °
Page 15
Could VMs be versioned
à la git
or like a Docker container?
Page 16
INTRODUCING NC_POWER
Internal Nanocloud tools suite
for QEMU & KVM
(Linux based)
CLI
Written in C++
Page 17
NC_POWER GOALS
Help our developers to fast run any VM
Internal needs of Nanocloud
KISS based
Page 18
NC_POWER FEATURES
VM management (create, run, stop)
Vm_commit
Page 19
VM COMMIT - GOALS
Keep a version for any change in a VM
Rollback to any version
Make only incremental changes
Replay any version
All on the fly
Page 20
Using NC_Power(some examples)
Page 21
CREATING A VM
JSON definition file (vm.json)
{
"VMs": [
{
"client_id": "docky",
"instance": "nano",
"persistent": "no",
"rental_mod": "free_use",
"os": "linux",
"osversion": "coreos",
"osrelease": "717.3.0",
"local_ip": "",
"public_ip": ""
}
]
}
nc_create_vm --file vm.json
Page 58
VM_COMMIT
building blocks
Page 59
BUILDING BLOCK #1: QEMU-IMG
qemu-img create -f qcow2 \
-b vm_basis.qcow2 \
vm_delta_commit.qcow2
Page 64
BUILDING BLOCK #2: QEMU CONSOLE
echo \
'snapshot_blkdev -n vm_delta_commit.qcow2' \
| socat stdio unix:vm.socket
Page 77
VM COMMIT -> VM ENV
Page 78
VM COMMIT -> VM ENV
Page 79
VM COMMIT -> VM ENV
Page 80
VM COMMIT -> VM ENV
Page 81
VM COMMIT -> VM ENV
Page 82
VM COMMIT -> VM ENV
Page 83
VM COMMIT -> VM ENV
Page 84
VM COMMIT -> VM ENV
Page 85
VM COMMIT -> VM ENV
Page 86
VM COMMIT -> VM ENV
Page 87
VM COMMIT -> VM ENV
Page 88
VM COMMIT -> VM ENV
Page 89
VM COMMIT -> VM ENV
Page 90
VM COMMIT -> VM ENV
Page 100
VM COMMIT - ROLLBACK
Page 101
VM COMMIT - ROLLBACK
Page 102
VM COMMIT - ROLLBACK
Page 103
VM COMMIT - ROLLBACK
Page 104
VM COMMIT - ROLLBACK
Page 105
VM COMMIT - ROLLBACK
Page 106
VM COMMIT - ROLLBACK
Page 107
VM COMMIT - ROLLBACK
Page 108
VM COMMIT - ROLLBACK
Page 109
VM COMMIT - ROLLBACK
Page 110
VM COMMIT - ROLLBACK
Page 111
VM COMMIT - ROLLBACK
Page 112
VM COMMIT - ROLLBACK
Page 113
VM COMMIT - REBASE
Page 114
USE CASES
Incremental backups (on the fly, as in Docker)
Application development (versioning, as in Git)
OS upgrades (rollback in case of trouble)
Page 115
POSSIBILITIES
Backup strategy
Use VMs the same way as containers
Page 116
Thanks for your attention!
[email protected]
Please commit your (last) questions