Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.
Sign upDesign for multiple disposable VMs, improved template VMs, snapshots, savestates #1155
Comments
This comment has been minimized.
Show comment
Hide comment
This comment has been minimized.
marmarek
Sep 4, 2015
Member
I don't think we need such advanced storage system - the current one level template is enough for most cases (and already quite hard to understand for "normal user"...). But we've discussed internally somehow related idea - rework of Disposable VMs to split the current concept into two separate properties:
- Define Disposable VM by its stateless - VM which don't have any persistent storage, all the changes are lost after its termination; in fact it would be somehow similar to your Immutable VM
- Add an option to have savefile with preloaded VM state (snapshot of just started VM) - to speedup VM startup
Anyway any such major change needs to be postponed until after R4.0, where we will introduce new core (Qubes*VM classes). The current core is getting too hacky, the new one is mostly rewrite from scratch. Some work is already done here:
https://github.com/marmarek/qubes-core-admin/tree/core3-wip
|
I don't think we need such advanced storage system - the current one level template is enough for most cases (and already quite hard to understand for "normal user"...). But we've discussed internally somehow related idea - rework of Disposable VMs to split the current concept into two separate properties:
Anyway any such major change needs to be postponed until after R4.0, where we will introduce new core (Qubes*VM classes). The current core is getting too hacky, the new one is mostly rewrite from scratch. Some work is already done here: |
qubesuser commentedAug 31, 2015
This is a suggestion for several independent features that are useful on their own, and allow to replace the current Disposable VM and template VM code with more flexible systems, and provide support for template trees, snapshot trees, saving running VMs and trees of running snapshots.
Building blocks
Replacing the current disposable VMs
With the new features, instead of the current system, a VM can be turned into a disposable VM factory by configuring it as versioned and having hot savestates.
To launch a disposable VM, simply start the "vmname" VM alias referring to the latest version immutable clone of the disposable VM factory.
To modify the disposable VM factory, start the "vmname-next" versioned VM itself, change it and shut it down. Disposable VMs can still be started during this thanks to the VM versioning mechanism.
This allows to have multiple disposable VM factories.
Replacing the current template VMs
With the new features, instead of the current system, any standalone versioned VM can be used as a template.
When a templated AppVMs is started without a manual savestate, the "vmname-current" version is used. If it is started with a savestate, then the "vmname-v#" version recorded in the savestate is
used, which allows to support savestates properly.
Since template versions are immutable, there is no need for the root.img/root-cow.img mechanism (the linked cloning does that internally).
New use cases