[libvirt-users] Looks like blockpull does not accept a subset of the entire chain of backing files

Richard Gomes xkbm.net at gmail.com
Fri Jan 31 23:02:10 UTC 2014


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
http://rgomes.info
http://www.linkedin.com/in/rgomes
mobile: +44(77)9955-6813
inum <http://www.inum.net/>: +883(5100)0800-9804
sip:rgomes at 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
>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/libvirt-users/attachments/20140131/6899482f/attachment.htm>


More information about the libvirt-users mailing list