[libvirt-users] About live migration with snapshots

Edward Young edward.and.young at gmail.com
Wed Feb 11 05:24:26 UTC 2015


Hi All,

Sorry, I do not know to reply the previous message directly, so I have to
manually copy them here.

I have two questions about the following issue?

1. I follow the instructions blew to migrate a vm with snapshots. When I
perform 'virsh snapshot-create --redefine $dom file' on the destination.' I
got an error saying that "no domain with matching name $dom". I'm wondering
during the mgiration, what do we need to do in the destination? create a
new base file?

2. What does the following instruction do?

"you then loop over 'virsh snapshot-delete --metadata $dom
$name' on the source, at which point, live migration will now work."

3. Also, could you explain a little about the high level techniques for
this function.
suppose we have a vm with one base file and two snapshots. How does the
following instructions do to migrate all of them?

Thanks!
Edward

------------------------------

   - *From*: Eric Blake <eblake redhat com>
   - *To*: Chiang Hubert <clhtwn gmail com>
   - *Cc*: libvirt-users redhat com
   - *Subject*: Re: [libvirt-users] About live migration with snapshots
   - *Date*: Wed, 20 Mar 2013 21:40:26 -0600

------------------------------

On 03/20/2013 08:45 PM, Chiang Hubert wrote:
> Hello,
>
> I'd like to live migration with snapshots.
>
> But it doesn't work. It comes out a message "cannot migrate domain with 1
> snapshots"

Unfortunately, figuring out how to migrate snapshot information at the
libvirt API level requires some engineering work - the current RPC
protocol for migration is not set up to migrate an arbitrary amount of
snapshots in a single call.

On the other hand, if you are allowed to make more than one API call,
the solution is already available; maybe we should patch virsh to learn
how to make the series of API calls, to automate what I will describe below.

>
> Then I try to trace the code(Libvirt 0.9.8 to 1.0.3), I find out the code
> in src/qemu/qemu_migration.c @ Line 1395 - 1440 (Libvirt 1.0.3)

It's still unimplemented at the libvirt level, even in libvirt.git.

>
> It will check the VM which has snapshots or not.
>
> I just curious about this limitation, why the VM can't live migration with
> snapshots?

Doing it all in one RPC call would be a potential denial-of-service
(RPCs are bounded in length to avoid consuming server resources, and
taking lots of snapshots on the source could easily be made to exceed
bounds).  If someone can design a way to set up a series of RPC
handshakes, then we could do it at the libvirt level in a single API
call, but I'm not sure it is worth it.

>
> What happen if I skip this check?
>
> Does it has any suggestion way or virsh command with options to do live
> migration with snapshots?

The existing solution at the management tool layer is to migrate the
snapshot information first, and then to migrate the domain.  For each
snapshot in 'virsh snapshot-list --name $dom', you will want to 'virsh
snapshot-dumpxml $dom $name > file' on the source, then 'virsh
snapshot-create --redefine $dom file' on the destination.  Next,
determine 'virsh snapshot-current --name $dom' on the source, and use
'virsh snapshot-current $dom $name' on the destination to set it as
current (if there is a current snapshot).  After the destination has all
the snapshots, you then loop over 'virsh snapshot-delete --metadata $dom
$name' on the source, at which point, live migration will now work.

Patches to teach virsh how to do all this work in a single 'virsh
migrate' are welcome.

-- 
Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

*Attachment: signature.asc
<https://www.redhat.com/archives/libvirt-users/2013-March/pgpmxFegVXm2O.pgp>*
*Description:* OpenPGP digital signature
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/libvirt-users/attachments/20150210/2bedf50b/attachment.htm>


More information about the libvirt-users mailing list