[libvirt] vm live storage migration with snapshots

Edward Young edward.and.young at gmail.com
Wed Feb 11 21:45:11 UTC 2015


Hi Eric,

Please see the blew:

On Wed, Feb 11, 2015 at 3:12 PM, Eric Blake <eblake at redhat.com> wrote:

> On 02/11/2015 02:07 PM, Edward Young wrote:
> >>> What if this vm has a number of disk-only external snapshots? In the
> >>> current version, how can live migrate this vm?
> >>
> >> Are the snapshots based on shared storage, or local-only storage?
> >>
> >
> > Yes, I'm talking about the local-only storage.
>
> Okay, glad I guessed as much, then.
>
> >
> > Yes, I agree with you. In this case, we need to migrate the entire disk
> > state. In this case, there is no snapshot involved. we just perform the
> > regular migration with 'virsh migrate....'. Is this correct?
>
> Using 'virsh migrate --copy-storage-all' would indeed migrate the entire
> disk, if you can't supply shared storage.
>
> >>> Or is it possible to iteratively transfer all the snapshots to the
> >>> destination and later live migrate only the latest new data?
> >>>
> >>
> >> Yes, that works too, and is probably faster, especially if you have
> >> out-of-band means for sharing read-only state between source and
> >> destination.
> >>
> >
> > My question is here. If we do not have any shared storage resource
> between
> > source and destination (eg. long distance VM migration), how can we
> migrate
> > the latest new data to the destination? we can copy the base, mid to
> > destination manually, then how can we migrate the active snapshot( new
> data
> > goes in)? I learned that drive_mirror in qemu is built to finish this,
> but
> > do not understand clearly. Could you elaborate for me, or provide an
> > example?
>
> Use 'virsh migrate --copy-storage-inc' to migrate only the incremental
> changes, which assumes that the destination can already see the same
> read-only backing data that the source sees.


I perform a simple test, but failed.

In the source, I create:   base <- mid <- active (2 snapshots, the active
one is the current one)
In order to migrate this vm to the destination, I manually copy both base
and mid to the destination, and put them in the sam e directory
/var/lib/libvirt/images/
Then I call the following commands:
'sudo virsh migrate --live --unsafe --verbose --copy-storage-inc vm1
qemu+ssh://192.168.1.3/system tcp://192.168.1.3'

The error I got is:
error: Requested operation is not valid: cannot migrate domain with 2
snapshots.

I do not know the reason for this.


> In fact, modern
> libvirt/qemu does this for you by setting up an NBD server on the
> destination, doing a data mirror from the source into the destination
> (so that you DO have shared storage, at least for the duration of the
> migration), then doing the live migration, then tearing down the NBD
> mirroring link.
>

Sounds interesting! Can you provide me an example or point me to a link
about how to use this function?

Sorry to take you so much time to answer my questions. I appreciate it
deeply. After I solve this issue, I will write a blog and share these
knowledge with other people.

Best,
Ed


> --
> Eric Blake   eblake redhat com    +1-919-301-3266
> Libvirt virtualization library http://libvirt.org
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20150211/e6cdea96/attachment-0001.htm>


More information about the libvir-list mailing list