On 01/14/2015 02:44 AM, Zhang Haoyu wrote: > Hi, > > Someone can help detail the the flow of live migration with non-shared storage in libvirt? > Especially, the flow of migration of non-shared storage part? The code is in src/qemu/qemu_migration.c. Also, read src/qemu/MIGRATION.txt. Libvirt probes whether both source and destination are new enough to support NBD storage migration as part of the cookies it passes during the Begin and Prepare phases. When that is the case, the Prepare side sets up the destination disks, as well as starts an NBD server for each disk. The Perform side on the source then uses drive-mirror to clone the contents of the source disk into the destination NBD disks; once things are in the mirroring stage, then it can proceed with the live migration. When everything is migrated, the Finish stage then breaks the drive-mirror syncing (the source no longer needs to push writes), and the destination side can stop the NBD server (the disk has been cloned and is ready to use directly). Things get tricky with correct error handling, and a Confirm phase is required to make sure the source side cleans up correctly. -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
Attachment:
signature.asc
Description: OpenPGP digital signature
-- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list