mirror of
https://github.com/izzy2lost/xemu.git
synced 2026-07-06 00:20:22 -07:00
Merge remote-tracking branch 'remotes/cody/tags/block-pull-request' into staging
# gpg: Signature made Tue 18 Jul 2017 05:15:03 BST # gpg: using RSA key 0xBDBE7B27C0DE3057 # gpg: Good signature from "Jeffrey Cody <jcody@redhat.com>" # gpg: aka "Jeffrey Cody <jeff@codyprime.org>" # gpg: aka "Jeffrey Cody <codyprime@gmail.com>" # Primary key fingerprint: 9957 4B4D 3474 90E7 9D98 D624 BDBE 7B27 C0DE 3057 * remotes/cody/tags/block-pull-request: live-block-ops.txt: Rename, rewrite, and improve it bitmaps.md: Convert to rST; move it into 'interop' dir Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,72 +0,0 @@
|
||||
LIVE BLOCK OPERATIONS
|
||||
=====================
|
||||
|
||||
High level description of live block operations. Note these are not
|
||||
supported for use with the raw format at the moment.
|
||||
|
||||
Note also that this document is incomplete and it currently only
|
||||
covers the 'stream' operation. Other operations supported by QEMU such
|
||||
as 'commit', 'mirror' and 'backup' are not described here yet. Please
|
||||
refer to the qapi/block-core.json file for an overview of those.
|
||||
|
||||
Snapshot live merge
|
||||
===================
|
||||
|
||||
Given a snapshot chain, described in this document in the following
|
||||
format:
|
||||
|
||||
[A] <- [B] <- [C] <- [D] <- [E]
|
||||
|
||||
Where the rightmost object ([E] in the example) described is the current
|
||||
image which the guest OS has write access to. To the left of it is its base
|
||||
image, and so on accordingly until the leftmost image, which has no
|
||||
base.
|
||||
|
||||
The snapshot live merge operation transforms such a chain into a
|
||||
smaller one with fewer elements, such as this transformation relative
|
||||
to the first example:
|
||||
|
||||
[A] <- [E]
|
||||
|
||||
Data is copied in the right direction with destination being the
|
||||
rightmost image, but any other intermediate image can be specified
|
||||
instead. In this example data is copied from [C] into [D], so [D] can
|
||||
be backed by [B]:
|
||||
|
||||
[A] <- [B] <- [D] <- [E]
|
||||
|
||||
The operation is implemented in QEMU through image streaming facilities.
|
||||
|
||||
The basic idea is to execute 'block_stream virtio0' while the guest is
|
||||
running. Progress can be monitored using 'info block-jobs'. When the
|
||||
streaming operation completes it raises a QMP event. 'block_stream'
|
||||
copies data from the backing file(s) into the active image. When finished,
|
||||
it adjusts the backing file pointer.
|
||||
|
||||
The 'base' parameter specifies an image which data need not be
|
||||
streamed from. This image will be used as the backing file for the
|
||||
destination image when the operation is finished.
|
||||
|
||||
In the first example above, the command would be:
|
||||
|
||||
(qemu) block_stream virtio0 file-A.img
|
||||
|
||||
In order to specify a destination image different from the active
|
||||
(rightmost) one we can use its node name instead.
|
||||
|
||||
In the second example above, the command would be:
|
||||
|
||||
(qemu) block_stream node-D file-B.img
|
||||
|
||||
Live block copy
|
||||
===============
|
||||
|
||||
To copy an in use image to another destination in the filesystem, one
|
||||
should create a live snapshot in the desired destination, then stream
|
||||
into that image. Example:
|
||||
|
||||
(qemu) snapshot_blkdev ide0-hd0 /new-path/disk.img qcow2
|
||||
|
||||
(qemu) block_stream ide0-hd0
|
||||
|
||||
|
||||
Reference in New Issue
Block a user