mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-10-20 21:19:19 +00:00
kbase: incrementalbackupinternals: Describe 'block commit'
oVirt does merge images out of libvirt in some cases. Add docs outlining how it's done from a high level. Signed-off-by: Peter Krempa <pkrempa@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com>
This commit is contained in:
parent
4d064f9787
commit
c014e11191
@ -245,3 +245,40 @@ the snapshot.
|
|||||||
continue
|
continue
|
||||||
|
|
||||||
create RECORDING bitmap named BITMAP in OVERLAY with GRANULARITY
|
create RECORDING bitmap named BITMAP in OVERLAY with GRANULARITY
|
||||||
|
|
||||||
|
Committing external snapshots manually
|
||||||
|
--------------------------------------
|
||||||
|
|
||||||
|
``block commit`` refers to an operation where data from a subchain of the
|
||||||
|
backing chain is merged down into the backing image of the subchain removing all
|
||||||
|
images in the subchain.
|
||||||
|
|
||||||
|
``COMMIT_TOP`` refers to the top of the subchain to merge into ``COMMIT_BASE``
|
||||||
|
(which stays in the new chain).
|
||||||
|
|
||||||
|
It's strongly advised to use ``virDomainBlockCommit`` API in libvirt directly if
|
||||||
|
possible. Inactive VMs can be started with ``VIR_DOMAIN_START_PAUSED`` flag
|
||||||
|
(``virsh start --paused``) to prevent OS from running.
|
||||||
|
|
||||||
|
Otherwise the following pseudo-algorithm can be used:
|
||||||
|
|
||||||
|
Note: A ``valid`` bitmap chain is a set of images containing bitmaps which
|
||||||
|
conform to the rules about valid bitmaps mentioned above.
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
commit data from COMMIT_TOP to COMMIT_BASE
|
||||||
|
|
||||||
|
let BITMAPS = valid bitmap chains in COMMIT_TOP
|
||||||
|
|
||||||
|
for each BITMAP in BITMAPS
|
||||||
|
let GRANULARITY = granularity of BITMAP in ACTIVE
|
||||||
|
|
||||||
|
if BITMAP is not present in COMMIT_BASE:
|
||||||
|
create RECORDING bitmap named BITMAP in COMMIT_BASE with GRANULARITY
|
||||||
|
|
||||||
|
for each IMAGE between COMMIT_TOP(inclusive) and COMMIT_BASE(exclusive):
|
||||||
|
if BITMAP is not present in IMAGE:
|
||||||
|
break
|
||||||
|
|
||||||
|
merge BITMAP in IMAGE into BITMAP in COMMIT_BASE
|
||||||
|
Loading…
Reference in New Issue
Block a user