[libvirt] [PATCH v4 0/9] Selective block device migration implementation

Kashyap Chamarthy kchamart at redhat.com
Thu Jun 18 16:11:24 UTC 2015


On Wed, Jun 17, 2015 at 05:31:03PM +0200, Kashyap Chamarthy wrote:
> On Tue, Jun 16, 2015 at 01:42:02AM +0300, Pavel Boldin wrote:
> 
> [. . .]
> 
> > Michal Privoznik (3):
> >   virDomainDiskGetSource: Mark passed disk as 'const'
> >   qemuMigrationBeginPhase: Fix function header indentation
> >   qemuMigrationDriveMirror: Force raw format for NBD
> > 
> > Pavel Boldin (6):
> >   util: multi-value virTypedParameter
> >   util: multi-value parameters in virTypedParamsAdd*
> >   util: virTypedParams{Filter,GetAllStrings}
> >   util: add virTypedParamsAddStringList
> >   qemu: migration: selective block device migration
> >   virsh: selective block device migration
> > 
> >  include/libvirt/libvirt-domain.h |   9 ++
> >  include/libvirt/libvirt-host.h   |  11 ++
> >  src/conf/domain_conf.c           |   2 +-
> >  src/conf/domain_conf.h           |   2 +-
> >  src/libvirt_public.syms          |   6 +
> >  src/qemu/qemu_driver.c           |  78 ++++++++---
> >  src/qemu/qemu_migration.c        | 264 +++++++++++++++++++++++++----------
> >  src/qemu/qemu_migration.h        |  24 ++--
> >  src/util/virtypedparam.c         | 259 +++++++++++++++++++++++++++-------
> >  src/util/virtypedparam.h         |  19 +++
> >  tests/Makefile.am                |   6 +
> >  tests/virtypedparamtest.c        | 295 +++++++++++++++++++++++++++++++++++++++
> >  tools/virsh-domain.c             |  23 +++
> >  tools/virsh.pod                  |  21 +--
> >  14 files changed, 854 insertions(+), 165 deletions(-)
> >  create mode 100644 tests/virtypedparamtest.c
> > 
> 
> New test with this revision of patches applied.
> 
 
[. . .]

> Probably I should test by building local RPMs.
 

I missed to apply the diff from Michal earlier. So, I tested again from
git, now that Michal pushed them already :-). With both
--copy-storage-all and --copy-storage-inc.

Simple test seems to work:

  - On source:
  
      $ virsh domblklist cvm1
      Target     Source
      ------------------------------------------------
      vda        /var/lib/libvirt/images/cirros-0.3.3-x86_64-disk.img
      vdb        /export/disk2.img
  
  - On destination, /export/disk2.img (vdb) already exists.
  
  - On source, just migrate the 'vda' device:
  
      $ virsh migrate --verbose --p2p --copy-storage-all \
          --migrate-disks vda \
          --live cvm1 qemu+tcp://root@devstack3/system
      Migration: [100 %]
  
  - On source, cvm1 is down (as expected).
  
  - On destination, cvm1 is running, and both the block devices (vda,
    vdb) are enumerated.


As a test 2, I tried the opposite:

    - Ensured the vda
      (/var/lib/libvirt/images/cirros-0.3.3-x86_64-disk.img) is in place
      on destination.

    - Did a `virsh pool-refresh` on both existing pools on destination,
      for good measure.
 
    - This time, tried to migrate only 'vdb', and the result is the
      migrate command just hung on source:

        $ virsh migrate --verbose --p2p --copy-storage-all \
            --migrate-disks vdb \
            --live cvm1 qemu+tcp://root@devstack3/system
        # Here the command is just hung
    
    - On destination, the guest is in paused state:
   
        $ virsh list
         Id    Name                           State
        ----------------------------------------------------
         15    cvm1                           paused

Here's the libvirt debug log from *destination*, if anyone is
interested:

    https://kashyapc.fedorapeople.org/virt/temp/libvirtd-log-dst-hung-blockdev-mig.log

-- 
/kashyap




More information about the libvir-list mailing list