Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Vm_commit
or How to Easily Handle
An Infinite Number of Versions
of Running QEMU/KVM
Virtual Machines
Dominique Rodrigues
...
Nanocloud Software?
Turn any software into a
cloud solution.
Any legacy application. Any device. Any cloud.
HOW WE DO IT
• Cloud
• Virtualization
• Scalability
• API
• Multi-tenant
• Collaborative
• Statistics usage
• HTML5 display
Main techno...
About Virtualization
VIRTUALIZATION USE
Server consolidation
Foundation for elasticity & instant deployment
in cloud computing
Massively used i...
About Containerization
DOCKER
DOCKER
New orchestration of containers
° clone, pull/push, run, commit °
Hub to share application based containers
VCS ori...
Versioning?
GIT
GIT
THE VCS software!
° git clone / commit / push / pull / merge / rebase °
Could VMs be versioned
à la git
or like a Docker container?
INTRODUCING NC_POWER
Internal Nanocloud tools suite
for QEMU & KVM
(Linux based)
CLI
Written in C++
NC_POWER GOALS
Help our developers to fast run any VM
Internal needs of Nanocloud
KISS based
NC_POWER FEATURES
VM management (create, run, stop)
Vm_commit
VM COMMIT - GOALS
Keep a version for any change in a VM
Rollback to any version
Make only incremental changes
Replay any v...
Using NC_Power
(some examples)
CREATING A VM
JSON definition file (vm.json)
{
"VMs": [
{
"client_id": "docky",
"instance": "nano",
"persistent": "no",
"r...
ENTERING A VM
ENTERING A VM
ENTERING A VM
ENTERING A VM
ENTERING A VM
ENTERING A VM
RUNNING IN A VM
RUNNING IN A VM
RUNNING IN A VM
RUNNING IN A VM
RUNNING IN A VM
RUNNING IN A VM
RUNNING IN A VM
RUNNING IN A VM
RUNNING IN A VM
RUNNING IN A VM
RUNNING IN A VM
RUNNING IN A VM
RUNNING IN A VM
RUNNING IN A VM
RUNNING IN A VM
RUNNING IN A VM
RUNNING IN A VM
RUNNING IN A VM
RUNNING IN A VM
RUNNING IN A VM
RUNNING IN A VM
RUNNING IN A VM
RUNNING IN A VM
RUNNING IN A VM
RUNNING IN A VM
RUNNING IN A VM
RUNNING IN A VM
RUNNING IN A VM
VM_COMMIT
VM COMMIT - HELP
VM_COMMIT
building blocks
BUILDING BLOCK #1: QEMU-IMG
qemu-img create -f qcow2 
-b vm_basis.qcow2 
vm_delta_commit.qcow2
BUILDING BLOCK #2: QEMU CONSOLE
echo 
'snapshot_blkdev -n vm_delta_commit.qcow2' 
| socat stdio unix:vm.socket
VM COMMIT
VM COMMIT
VM COMMIT
VM COMMIT
VM COMMIT
VM COMMIT
VM COMMIT
VM COMMIT
VM COMMIT
VM COMMIT -> VM ENV
VM COMMIT -> VM ENV
VM COMMIT -> VM ENV
VM COMMIT -> VM ENV
VM COMMIT -> VM ENV
VM COMMIT -> VM ENV
VM COMMIT -> VM ENV
VM COMMIT -> VM ENV
VM COMMIT -> VM ENV
VM COMMIT -> VM ENV
VM COMMIT -> VM ENV
VM COMMIT -> VM ENV
VM COMMIT -> VM ENV
VM COMMIT -> VM ENV
VM COMMIT - ROLLBACK
VM COMMIT - ROLLBACK
VM COMMIT - ROLLBACK
VM COMMIT - ROLLBACK
VM COMMIT - ROLLBACK
VM COMMIT - ROLLBACK
VM COMMIT - ROLLBACK
VM COMMIT - ROLLBACK
VM COMMIT - ROLLBACK
VM COMMIT - ROLLBACK
VM COMMIT - ROLLBACK
VM COMMIT - ROLLBACK
VM COMMIT - ROLLBACK
VM COMMIT - REBASE
USE CASES
Incremental backups (on the fly, as in Docker)
Application development (versioning, as in Git)
OS upgrades (roll...
POSSIBILITIES
Backup strategy
Use VMs the same way as containers
Thanks for your attention!
dominique.rodrigues@nanocloud.com
Please commit your (last) questions 
Vm_Commit or How to Easily Handle An Infinite Number of Versions of Running QEMU/KVM Virtual Machines
Vm_Commit or How to Easily Handle An Infinite Number of Versions of Running QEMU/KVM Virtual Machines
Vm_Commit or How to Easily Handle An Infinite Number of Versions of Running QEMU/KVM Virtual Machines
Vm_Commit or How to Easily Handle An Infinite Number of Versions of Running QEMU/KVM Virtual Machines
Vm_Commit or How to Easily Handle An Infinite Number of Versions of Running QEMU/KVM Virtual Machines
Vm_Commit or How to Easily Handle An Infinite Number of Versions of Running QEMU/KVM Virtual Machines
Vm_Commit or How to Easily Handle An Infinite Number of Versions of Running QEMU/KVM Virtual Machines
Vm_Commit or How to Easily Handle An Infinite Number of Versions of Running QEMU/KVM Virtual Machines
Vm_Commit or How to Easily Handle An Infinite Number of Versions of Running QEMU/KVM Virtual Machines
Vm_Commit or How to Easily Handle An Infinite Number of Versions of Running QEMU/KVM Virtual Machines
Vm_Commit or How to Easily Handle An Infinite Number of Versions of Running QEMU/KVM Virtual Machines
Vm_Commit or How to Easily Handle An Infinite Number of Versions of Running QEMU/KVM Virtual Machines
Vm_Commit or How to Easily Handle An Infinite Number of Versions of Running QEMU/KVM Virtual Machines
Vm_Commit or How to Easily Handle An Infinite Number of Versions of Running QEMU/KVM Virtual Machines
Vm_Commit or How to Easily Handle An Infinite Number of Versions of Running QEMU/KVM Virtual Machines
Vm_Commit or How to Easily Handle An Infinite Number of Versions of Running QEMU/KVM Virtual Machines
Vm_Commit or How to Easily Handle An Infinite Number of Versions of Running QEMU/KVM Virtual Machines
Upcoming SlideShare
Loading in …5
×

Vm_Commit or How to Easily Handle An Infinite Number of Versions of Running QEMU/KVM Virtual Machines

815 views

Published on

This presentation describes the way to create commits of VM, for versioning and rollback of complete applications environment.

Published in: Software
  • Be the first to comment

  • Be the first to like this

Vm_Commit or How to Easily Handle An Infinite Number of Versions of Running QEMU/KVM Virtual Machines

  1. 1. Vm_commit or How to Easily Handle An Infinite Number of Versions of Running QEMU/KVM Virtual Machines Dominique Rodrigues Cloud Expo 2015 – Santa Clara
  2. 2. Nanocloud Software?
  3. 3. Turn any software into a cloud solution. Any legacy application. Any device. Any cloud.
  4. 4. HOW WE DO IT
  5. 5. • Cloud • Virtualization • Scalability • API • Multi-tenant • Collaborative • Statistics usage • HTML5 display Main technologies used Open source version: https://github.com/Nanocloud
  6. 6. About Virtualization
  7. 7. VIRTUALIZATION USE Server consolidation Foundation for elasticity & instant deployment in cloud computing Massively used in enterprises
  8. 8. About Containerization
  9. 9. DOCKER
  10. 10. DOCKER New orchestration of containers ° clone, pull/push, run, commit ° Hub to share application based containers VCS oriented (like git) ° edit, share, deploy applications °
  11. 11. Versioning?
  12. 12. GIT
  13. 13. GIT THE VCS software! ° git clone / commit / push / pull / merge / rebase °
  14. 14. Could VMs be versioned à la git or like a Docker container?
  15. 15. INTRODUCING NC_POWER Internal Nanocloud tools suite for QEMU & KVM (Linux based) CLI Written in C++
  16. 16. NC_POWER GOALS Help our developers to fast run any VM Internal needs of Nanocloud KISS based
  17. 17. NC_POWER FEATURES VM management (create, run, stop) Vm_commit
  18. 18. 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
  19. 19. Using NC_Power (some examples)
  20. 20. 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
  21. 21. ENTERING A VM
  22. 22. ENTERING A VM
  23. 23. ENTERING A VM
  24. 24. ENTERING A VM
  25. 25. ENTERING A VM
  26. 26. ENTERING A VM
  27. 27. RUNNING IN A VM
  28. 28. RUNNING IN A VM
  29. 29. RUNNING IN A VM
  30. 30. RUNNING IN A VM
  31. 31. RUNNING IN A VM
  32. 32. RUNNING IN A VM
  33. 33. RUNNING IN A VM
  34. 34. RUNNING IN A VM
  35. 35. RUNNING IN A VM
  36. 36. RUNNING IN A VM
  37. 37. RUNNING IN A VM
  38. 38. RUNNING IN A VM
  39. 39. RUNNING IN A VM
  40. 40. RUNNING IN A VM
  41. 41. RUNNING IN A VM
  42. 42. RUNNING IN A VM
  43. 43. RUNNING IN A VM
  44. 44. RUNNING IN A VM
  45. 45. RUNNING IN A VM
  46. 46. RUNNING IN A VM
  47. 47. RUNNING IN A VM
  48. 48. RUNNING IN A VM
  49. 49. RUNNING IN A VM
  50. 50. RUNNING IN A VM
  51. 51. RUNNING IN A VM
  52. 52. RUNNING IN A VM
  53. 53. RUNNING IN A VM
  54. 54. RUNNING IN A VM
  55. 55. VM_COMMIT
  56. 56. VM COMMIT - HELP
  57. 57. VM_COMMIT building blocks
  58. 58. BUILDING BLOCK #1: QEMU-IMG qemu-img create -f qcow2 -b vm_basis.qcow2 vm_delta_commit.qcow2
  59. 59. BUILDING BLOCK #2: QEMU CONSOLE echo 'snapshot_blkdev -n vm_delta_commit.qcow2' | socat stdio unix:vm.socket
  60. 60. VM COMMIT
  61. 61. VM COMMIT
  62. 62. VM COMMIT
  63. 63. VM COMMIT
  64. 64. VM COMMIT
  65. 65. VM COMMIT
  66. 66. VM COMMIT
  67. 67. VM COMMIT
  68. 68. VM COMMIT
  69. 69. VM COMMIT -> VM ENV
  70. 70. VM COMMIT -> VM ENV
  71. 71. VM COMMIT -> VM ENV
  72. 72. VM COMMIT -> VM ENV
  73. 73. VM COMMIT -> VM ENV
  74. 74. VM COMMIT -> VM ENV
  75. 75. VM COMMIT -> VM ENV
  76. 76. VM COMMIT -> VM ENV
  77. 77. VM COMMIT -> VM ENV
  78. 78. VM COMMIT -> VM ENV
  79. 79. VM COMMIT -> VM ENV
  80. 80. VM COMMIT -> VM ENV
  81. 81. VM COMMIT -> VM ENV
  82. 82. VM COMMIT -> VM ENV
  83. 83. VM COMMIT - ROLLBACK
  84. 84. VM COMMIT - ROLLBACK
  85. 85. VM COMMIT - ROLLBACK
  86. 86. VM COMMIT - ROLLBACK
  87. 87. VM COMMIT - ROLLBACK
  88. 88. VM COMMIT - ROLLBACK
  89. 89. VM COMMIT - ROLLBACK
  90. 90. VM COMMIT - ROLLBACK
  91. 91. VM COMMIT - ROLLBACK
  92. 92. VM COMMIT - ROLLBACK
  93. 93. VM COMMIT - ROLLBACK
  94. 94. VM COMMIT - ROLLBACK
  95. 95. VM COMMIT - ROLLBACK
  96. 96. VM COMMIT - REBASE
  97. 97. USE CASES Incremental backups (on the fly, as in Docker) Application development (versioning, as in Git) OS upgrades (rollback in case of trouble)
  98. 98. POSSIBILITIES Backup strategy Use VMs the same way as containers
  99. 99. Thanks for your attention! dominique.rodrigues@nanocloud.com Please commit your (last) questions 

×