-
-
Notifications
You must be signed in to change notification settings - Fork 53
Description
The problem you're addressing (if any)
Currently starting any AppVM will create a snapshot of a private volume. This snapshot is used for many features, including:
- making a backup when VM is running
- starting DispVM out of AppVM that is still running
- cloning of a running AppVM
But on the other hand, it takes space, which may be significant when AppVM is changing a lot of data. And also, its copy-on-write nature does affect performance.
The solution you'd like
An option to disable making a snapshot on AppVM start, so the single private volume is connected to an AppVM directly. This will need to disable features listed above for such AppVM (or have some other approach for them).
Depending on final design and interaction with other features, it may be even considered a default for some AppVMs (like "personal" or "untrusted").
The value to a user, and who that user might be
Reduced disk usage, easier disk usage monitoring. And possibly slightly better disk performance.
Completion criteria checklist
- add the volume property (
disable-snapshot? ), applicable only to volumes withsnap_on_start=False(a bit counter-intuitive...) andsave_on_stop=True - adjust volume startup code to not create the snapshot and attach the volume directly - do this for all in-tree storage pool implementations
- ensure the incompatible features (listed above) are blocked if the property is set
- disallow setting the property if the VM is running or if any conflicting feature is in use
- disallow starting a VM that has a volume with
disable-snapshot=Trueand is a "source" for some other volume (for example: if DispVM's private volume hasdisable-snapshot=True, it shouldn't be possible to start related disposable template when any DispVM based on it is running) - disallow starting a VM that has a volume with
source.disable-snapshot=Trueand that source volume is running (symmetric case to the point above) - alternative to the two points above: forbid using
disable-snapshotfeature for volumes that are source for any other - make it configurable using
qvm-volumetool (add relevant Admin API parts) - add unit tests for all the cases listed here
- document in
qvm-volumeman page (for users) - document in
qubes-doc(for users) - document in
core-admin/doc/qubes-storage.rst(for developers)
Metadata
Metadata
Assignees
Labels
Type
Projects
Status
Status