[libvirt] [PATCH/RFC] Introduce VIR_MIGRATE_FORCE flag to allow for risky migration
Daniel P. Berrange
berrange at redhat.com
Tue Oct 25 09:17:13 UTC 2011
On Mon, Oct 24, 2011 at 04:12:08PM -0600, Eric Blake wrote:
> On 10/24/2011 02:00 AM, Daniel P. Berrange wrote:
> >On Fri, Oct 21, 2011 at 08:16:24PM +0200, Guido Günther wrote:
> >>Hi,
> >>Migration will be disallowed when the vm uses host devices or has
> >>snapshots (qemuMigrationIsAllowed)[1]. Would it make sense to introduce
> >>a VIR_MIGRATE_FORCE similar to VIR_REVERT_FORCE here? We could then
> >>introduce error codes similar to the snapshot case
> >>(VIR_ERR_MIGRATE_RISKY).
> >
> >I'm not sure this will actually work out in practice because QEMU
> >itself also checks some of these scenarios and blocks them. So even
> >if libvirt didn't check, the user still wouldnt' be able to force
> >it to migrate.
>
> That's true for hostdev passthrough (qemu refuses that, because you
> don't have the same hostdevs on the destination), but not so for
> snapshots (where right now, the only reason we don't permit it is
> due to a lack of implementation in libvirt - it has no bearing on
> qemu).
>
> Regarding the scenario of snapshot metadata, the biggest problem is
> that v3 cookies are not large enough to send the description of each
> snapshot in one rpc call. I've been thinking about that some more;
> it may be possible to use migrate v3 to send the migration after
> all, by adding the following to the cookies:
>
> in Begin, an fdstream is opened, then cookie includes details about
> the fdstream identifier. Then that fdstream is used to send a count
> of the total number of snapshots, followed by a length of each
> snapshot then the xml for that snapshot. Thus, the cookie is used
> to set up a second channel between source and destination, where
> that channel has a defined format for passing an arbitrary amount of
> data needed to reconstruct the snapshot hierarchy on the
> destination. I don't know if the fdstream can be run in parallel
> with the rest of the migration, or if it should be completed prior
> to the rest of the Prepare steps; at any rate, coordinating overall
> success or any failures on receiving the fdstream will have to be
> communicated from the destination back to the source in another
> cookie.
>
> But if we can teach migration v3 to send snapshots, then it might
> mean that we don't need VIR_MIGRATE_FORCE after all; the only place
> where snapshots would prevent migration is when either side of the
> equation doesn't know the new cookie, but those are the same
> situations where a new flag would not be recognized to have any
> effect. Besides, you can still manage snapshot migration manually,
> (albiet painfully), via a series of snapshot-dumpxml on the source,
> then snapshot-create --redefine on the destination.
I can't help feeling that this is getting ridiculously complicated,
which in turn makes me question whether it is really worth doing.
Daniel
--
|: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org -o- http://virt-manager.org :|
|: http://autobuild.org -o- http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|
More information about the libvir-list
mailing list