Hi Kashyap,
Thanks a lot for clarifying.
If there's an open issue for this improvement, please let me so that I
will subscribe to it.
Cheers :)
Richard Gomes
;: +883(5100)0800-9804
sip:rgomes@ippi.fr
On 31/01/14 18:31, Kashyap Chamarthy wrote:
On 01/29/2014 08:21 PM, Richard Gomes wrote:
> Hello
>
> If I'm not terribly mistaken, looks like libvirt 1.2.1 does not provide
> ability of merging only a subset of the entire chain of backing files.
> So, if I have a chain like this:
>
> root <- a <-b <- c <- d <- active
>
> ... and I'd like to obtain a chain like this:
>
> root <- c <- d <- active
>
> ... looks like it's not supported, since I'm trying the command
>
> / //virsh blockpull domain --path /path/to/c
> --bandwidth 30 --base /path/to/root// (1)
> /
> ... but it complains because /--path /path/to/c/ is not recognized,
> since only /--path /path/to/active/ is acceptable:
>
> / //virsh blockpull domain --path /path/to/active
> --bandwidth 30 --base /path/to/root// (2)
> /
> So, command (1) fails but command (2) succeeds.
>
> The point is: How could I obtain the results I'm trying to achieve via
> command (1) ?
>
> I'm new to libvirt, but the article below made me think that what I'm
> trying to do would be possible:
>
>
http://kashyapc.fedorapeople.org/virt/lc-2012/snapshots-handout.html (
> see section on /blockpull/ )
I still have to make to time to submit a V2 of that that patch[1] with
reflecting latest upstream status.
Apart from what Eric said in painstakingly-detailed way, here's some old
notes from a previous discussion with Eric on mailing lists/IRC. Eric,
please point out if something is wrong below.
- "blockpull" can only pull into the *active* layer.
- Support to pull into an intermediate/arbitrary layer is in
progress.
- NOTES:
- Pulling into intermediate images requires opening the
intermediate file read/write, as well as ensuring that any
reads done in the active layer get correct data.
- Case of 'reading data' - In the chain base <- snap1 <- active
if you pull base into snap1, reading active has to know whether
the data comes from base or from snap1 . But if you pull into
active, you already have the destination read/write, and once
the data is pulled, you don't have to worry about keeping the
chain consistent.
- Case of 'writing data' -- If you pull into the active layer,
then a write eliminates the need to pull that cluster from the
backing file, thanks to copy-on-write semantics. But, if you
pull into an intermediate layer, a write at the active layer
doesn't affect the fac t that you still have to pull into the
intermediate layer. Even though the active layer won't use that
cluster from the intermediate layer.
- At the moment, virsh blockpull cannot be done 'offline' (although,
'qemu-img' can do that.)
[1]
http://www.redhat.com/archives/libvir-list/2013-January/msg01903.html