[libvirt] [Qemu-devel] QEMU interfaces for image streaming and post-copy block migration
Anthony Liguori
aliguori at linux.vnet.ibm.com
Tue Sep 7 15:11:09 UTC 2010
On 09/07/2010 10:02 AM, Kevin Wolf wrote:
> Am 07.09.2010 16:49, schrieb Anthony Liguori:
>
>>> Shouldn't it be a runtime option? You can use the very same image with
>>> copy-on-read or copy-on-write and it will behave the same (execpt for
>>> performance), so it's not an inherent feature of the image file.
>>>
>>>
>> The way it's implemented in QED is that it's a compatible feature. This
>> means that implementations are allowed to ignore it if they want to.
>> It's really a suggestion.
>>
> Well, the point is that I see no reason why an image should contain this
> suggestion. There's really nothing about an image that could reasonably
> indicate "use this better with copy-on-read than with copy-on-write".
>
> It's a decision you make when using the image.
>
Copy-on-read is, in many cases, a property of the backing file because
it suggests that the backing file is either very slow or potentially
volatile.
IOW, let's say I'm an image distributor and I want to provide my images
in a QED format that actually streams the image from an http server. I
could provide a QED file without a copy-on-read bit set but I'd really
like to convey this information as part of the image.
You can argue that I should provide a config file too that contained the
copy-on-read flag set but you could make the same argument about backing
files too.
>> So yes, you could have a run time switch that overrides the feature bit
>> on disk and either forces copy-on-read on or off.
>>
>> Do we have a way to pass block drivers run time options?
>>
> We'll get them with -blockdev. Today we're using colons for format
> specific and separate -drive options for generic things.
>
That's right. I think I'd rather wait for -blockdev.
>> You need to understand the cluster boundaries in order to optimize the
>> metadata updates. Sure, you can expose interfaces to the block layer to
>> give all of this info but that's solving the same problem for doing
>> block level copy-on-write.
>>
>> The other challenge is that for copy-on-read to be efficiently, you
>> really need a format that can distinguish between unallocated sectors
>> and zero sectors and do zero detection during the copy-on-read
>> operation. Otherwise, if you have a 10G virtual disk with a backing
>> file that's 1GB is size, copy-on-read will result in the leaf being 10G
>> instead of ~1GB.
>>
> That's a good point. But it's not a reason to make the interface
> specific to QED just because other formats would probably not implement
> it as efficiently.
>
You really can't do as good of a job in the block layer because you have
very little info about the characteristics of the disk image.
Regards,
Anthony Liguori
> Kevin
>
More information about the libvir-list
mailing list