Hi Andrija,

thank you so much for your detailled explanation! Looks like the my
problem can be solved. :)

To summarize the information you provided:

As long as CloudStack does not support volume live migration I could be
using 

virsh with --copy-storage --xml.

BUT: CentOS7 is lacking necessary features! Bad luck. I started out
with CentOS7 as Disto.

You suggest, that it could be worth trying the qemu/libvirt packages
from the oVirt repository. I will look into this now.

But if that gets complicated: Cloudstack documentation lists CentOS7
and Ubuntu 14.04 as supported Distros. Are there other not officially
supported Distros/Version I could be using? I wanted to avoid the quite
outdated Ubuntu 14.04 and did for that reason decide towards CentOS7.

And another general question: How is CloudStack getting along with the
Volumes of its VMs changing the storage repository without beeing
informed about it. Does it get this information through polling, or do
I have to manipulate the database?

And to make things clearer: At the moment I am using storage attached
through Gibrechannel using clustered LVM logic. Could also be changing
to GFS2 on cLVM. Never heard anyone mentioning such a setup by now. Am
I the only one running KVM on a proprietary storage system over
Fibrechannel, are there limitation/problems to be expected from such a
setup?

Greetings,

Melanie 


Am Mittwoch, den 25.09.2019, 11:46 +0200 schrieb Andrija Panic:
> So, let me explain.
> 
> Doing "online storage migration" aka live storage migration is
> working for
> CEPH/NFS --> SolidFire, starting from 4.11+
> Internally it is done in the same way as "virsh with --copy-storage-
> all
> --xml" in short
> 
> Longer explanation:
> Steps:
> You create new volumes on the destination storage (SolidFire in this
> case),
> set QoS etc - simply prepare the destination volumes (empty volumes
> atm).
> On source host/VM, dump VM XML, edit XML, change disk section to
> point to
> new volume path, protocol, etc - and also the IP address for the VNC
> (cloudstack requirement), save XMLT
> Then you do "virsh with --copy-storage-all --xml. myEditedVM.xml ..."
> stuff
> that does the job.
> Then NBD driver will be used to copy blocks from the source volumes
> to the
> destination volumes while that virsh command is working... (here's my
> demo,
> in details..
> https://www.youtube.com/watch?v=Eo8BuHBnVgg&list=PLEr0fbgkyLKyiPnNzPz7XDjxnmQNxjJWT&index=5&t=2s
> )
> 
> This is yet to be extended/coded to support NFS-->NFS or CEPH-->CEPH
> or
> CEPH/NFS-->CEPH/NFS... should not be that much work, the logic is
> there
> (bit part of the code)
> Also, starting from 4.12, you can actually  (I believe using
> identical
> logic) migrate only ROOT volume that are on the LOCAL storage (local
> disks)
> to another host/local storage - but DATA disks are not supported.
> 
> Now...imagine the feature is there - if using CentOS7, our friends at
> RedHat have removed support for actually using live storage migration
> (unless you are paying for RHEV - but it does work fine on CentOS6,
> and
> Ubuntu 14.04+
> 
> I recall "we" had to use qemu/libvirt from the "oVirt" repo which
> DOES
> (DID) support storage live migration (normal EV packages from the
> Special
> Interest Group (2.12 tested) - did NOT include this...)
> 
> I can send you step-by-step .docx guide for manually mimicking what
> is done
> (in SolidFire, but identical logic for other storages) - but not sure
> if
> that still helps you...
> 
> 
> Andrija
> 
> On Wed, 25 Sep 2019 at 10:51, Melanie Desaive <
> m.desa...@heinlein-support.de>
> wrote:
> 
> > Hi all,
> > 
> > I am currently doing my first steps with KVM as hypervisor for
> > CloudStack. I was shocked to realize that currently live volume
> > migration between different shared storages is not supported with
> > KVM.
> > This is a feature I use intensively with XenServer.
> > 
> > How do you get along with this limitation? I do really expect you
> > to
> > use some workarounds, or do you all only accept vm downtimes for a
> > storage migration?
> > 
> > With my first investigation I found three techniques mentioned and
> > would like to ask for suggestions which to investigate deeper:
> > 
> >  x Eric describes a technique using snapshosts and pauses to do a
> > live
> > storage migration in this mailing list tread.
> >  x Dag suggests using virsh with --copy-storage-all --xml.
> >  x I found articles about using virsh blockcopy for storage live
> > migration.
> > 
> > Greetings,
> > 
> > Melanie
> > 
> > Am Freitag, den 02.02.2018, 15:55 +0100 schrieb Andrija Panic:
> > > @Dag, you might want to check with Mike Tutkowski, how he
> > > implemented
> > > this
> > > for the "online storage migration" from other storages (CEPH and
> > > NFS
> > > implemented so far as sources) to SolidFire.
> > > 
> > > We are doing exactly the same demo/manual way (this is what Mike
> > > has
> > > sent
> > > me back in the days), so perhaps you want to see how to translate
> > > this into
> > > general things (so ANY to ANY storage migration) inside
> > > CloudStack.
> > > 
> > > Cheers
> > > 
> > > On 2 February 2018 at 10:28, Dag Sonstebo <
> > > dag.sonst...@shapeblue.com
> > > wrote:
> > > 
> > > > All
> > > > 
> > > > I am doing a bit of R&D around this for a client at the moment.
> > > > I
> > > > am
> > > > semi-successful in getting live migrations to different storage
> > > > pools to
> > > > work. The method I’m using is as follows – this does not take
> > > > into
> > > > account
> > > > any efficiency optimisation around the disk transfer (which is
> > > > next
> > > > on my
> > > > list). The below should answer your question Eric about moving
> > > > to a
> > > > different location – and I am also working with your steps to
> > > > see
> > > > where I
> > > > can improve the following. Keep in mind all of this is external
> > > > to
> > > > CloudStack – although CloudStack picks up the destination KVM
> > > > host
> > > > automatically it does not update the volume tables etc.,
> > > > neither
> > > > does it do
> > > > any housekeeping.
> > > > 
> > > > 1) Ensure the same network bridges are up on source and
> > > > destination
> > > > –
> > > > these are found with:
> > > > 
> > > > [root@kvm1 ~]# virsh dumpxml 9 | grep source
> > > >       <source file='/mnt/00e88a7b-985f-3be8-b717-
> > > > 0a59d8197640/d0ab5dd5-
> > > > e3dd-47ac-a326-5ce3d47d194d'/>
> > > >       <source bridge='breth1-725'/>
> > > >       <source path='/dev/pts/3'/>
> > > >       <source path='/dev/pts/3'/>
> > > > 
> > > > So from this make sure breth1-725 is up on the destionation
> > > > host
> > > > (do it
> > > > the hard way or cheat and spin up a VM from same account and
> > > > network on
> > > > that host)
> > > > 
> > > > 2) Find size of source disk and create stub disk in destination
> > > > (this part
> > > > can be made more efficient to speed up disk transfer – by doing
> > > > similar
> > > > things to what Eric is doing):
> > > > 
> > > > [root@kvm1 ~]# qemu-img info /mnt/00e88a7b-985f-3be8-b717-
> > > > 0a59d8197640/d0ab5dd5-e3dd-47ac-a326-5ce3d47d194d
> > > > image: /mnt/00e88a7b-985f-3be8-b717-0a59d8197640/d0ab5dd5-e3dd-
> > > > 47ac-a326-5ce3d47d194d
> > > > file format: qcow2
> > > > virtual size: 8.0G (8589934592 bytes)
> > > > disk size: 32M
> > > > cluster_size: 65536
> > > > backing file: /mnt/00e88a7b-985f-3be8-b717-
> > > > 0a59d8197640/3caaf4c9-
> > > > eaec-
> > > > 11e7-800b-06b4a401075c
> > > > 
> > > > ######################
> > > > 
> > > > [root@kvm3 50848ff7-c6aa-3fdd-b487-27899bf2129c]# qemu-img
> > > > create
> > > > -f
> > > > qcow2 d0ab5dd5-e3dd-47ac-a326-5ce3d47d194d 8G
> > > > Formatting 'd0ab5dd5-e3dd-47ac-a326-5ce3d47d194d', fmt=qcow2
> > > > size=8589934592 encryption=off cluster_size=65536
> > > > [root@kvm3 50848ff7-c6aa-3fdd-b487-27899bf2129c]# qemu-img info
> > > > d0ab5dd5-e3dd-47ac-a326-5ce3d47d194d
> > > > image: d0ab5dd5-e3dd-47ac-a326-5ce3d47d194d
> > > > file format: qcow2
> > > > virtual size: 8.0G (8589934592 bytes)
> > > > disk size: 448K
> > > > cluster_size: 65536
> > > > 
> > > > 3) Rewrite the new VM XML file for the destination with:
> > > > a) New disk location, in this case this is just a new path
> > > > (Eric –
> > > > this
> > > > answers your question)
> > > > b) Different IP addresses for VNC – in this case 10.0.0.1 to
> > > > 10.0.0.2
> > > > and carry out migration.
> > > > 
> > > > [root@kvm1 ~]# virsh dumpxml 9 | sed -e 's/00e88a7b-985f-3be8-
> > > > b717-
> > > > 0a59d8197640/50848ff7-c6aa-3fdd-b487-27899bf2129c/g' | sed -e
> > > > 's/
> > > > 10.0.0.1/10.0.0.2/g' > /root/i-2-14-VM.xml
> > > > 
> > > > [root@kvm1 ~]# virsh migrate --live --persistent --copy-
> > > > storage-all
> > > > --xml
> > > > /root/i-2-14-VM.xml i-2-14-VM qemu+tcp://10.0.0.2/system --
> > > > verbose
> > > > --abort-on-error
> > > > Migration: [ 25 %]
> > > > 
> > > > 4) Once complete delete the source file. This can be done with
> > > > extra
> > > > switches on the virsh migrate command if need be.
> > > > = = =
> > > > 
> > > > In the simplest tests this works – destination VM remains
> > > > online
> > > > and has
> > > > storage in new location – but it’s not persistent – sometimes
> > > > the
> > > > destination VM ends up in a paused state, and I’m working on
> > > > how to
> > > > get
> > > > around this. I also noted virsh migrate has a  migrate-
> > > > setmaxdowntime which
> > > > I think can be useful here.
> > > > 
> > > > Regards,
> > > > Dag Sonstebo
> > > > Cloud Architect
> > > > ShapeBlue
> > > > 
> > > > On 01/02/2018, 20:30, "Andrija Panic" <andrija.pa...@gmail.com>
> > > > wrote:
> > > > 
> > > >     Actually,  we have this feature (we call this internally
> > > >     online-storage-migration) to migrate volume from CEPH/NFS
> > > > to
> > > > SolidFire
> > > >     (thanks to Mike Tutkowski)
> > > > 
> > > >     There is libvirt mechanism, where basically you start
> > > > another
> > > > PAUSED
> > > > VM on
> > > >     another host (same name and same XML file, except the
> > > > storage
> > > > volumes
> > > > are
> > > >     pointing to new storage, different paths, etc and maybe VNC
> > > > listening
> > > >     address needs to be changed or so) and then you issue on
> > > > original
> > > > host/VM
> > > >     the live migrate command with few parameters... the libvirt
> > > > will
> > > >     transaprently handle the copy data process from Soruce to
> > > > New
> > > > volumes,
> > > > and
> > > >     after migration the VM will be alive (with new XML since
> > > > have
> > > > new
> > > > volumes)
> > > >     on new host, while the original VM on original host is
> > > > destroyed....
> > > > 
> > > >     (I can send you manual for this, that is realted to SF, but
> > > > idea is the
> > > >     same and you can exercies this on i.e. 2 NFS volumes on 2
> > > > different
> > > >     storages)
> > > > 
> > > >     This mechanism doesn't exist in ACS in general (AFAIK),
> > > > except
> > > > for when
> > > >     migrating to SolidFire.
> > > > 
> > > >     Perhaps community/DEV can help extend Mike's code to do
> > > > same
> > > > work on
> > > >     different storage types...
> > > > 
> > > >     Cheers
> > > > 
> > > > 
> > > > dag.sonst...@shapeblue.com
> > > > www.shapeblue.com
> > > > 53 Chandos Place, Covent Garden, London  WC2N 4HSUK
> > > > @shapeblue
> > > > 
> > > > 
> > > > 
> > > > On 19 January 2018 at 18:45, Eric Green <
> > > > eric.lee.gr...@gmail.com>
> > > > wrote:
> > > > 
> > > >     > KVM is able to live migrate entire virtual machines
> > > > complete
> > > > with
> > > > local
> > > >     > volumes (see 'man virsh') but does require nbd (Network
> > > > Block
> > > > Device) to be
> > > >     > installed on the destination host to do so. It may need
> > > > installation
> > > > of
> > > >     > later libvirt / qemu packages from OpenStack repositories
> > > > on
> > > > Centos
> > > > 6, I'm
> > > >     > not sure, but just works on Centos 7. In any event, I
> > > > have
> > > > used this
> > > >     > functionality to move virtual machines between
> > > > virtualization
> > > > hosts
> > > > on my
> > > >     > home network. It works.
> > > >     >
> > > >     > What is missing is the ability to live-migrate a disk
> > > > from
> > > > one shared
> > > >     > storage to another. The functionality built into virsh
> > > > live-
> > > > migrates
> > > > the
> > > >     > volume ***to the exact same location on the new host***,
> > > > so
> > > > obviously is
> > > >     > useless for migrating the disk to a new location on
> > > > shared
> > > > storage. I
> > > >     > looked everywhere for the ability of KVM to live migrate
> > > > a
> > > > disk from
> > > > point
> > > >     > A to point B all by itself, and found no such thing.
> > > > libvirt/qemu
> > > > has the
> > > >     > raw capabilities needed to do this, but it is not
> > > > currently
> > > > exposed
> > > > as a
> > > >     > single API via the qemu console or virsh. It can be
> > > > emulated
> > > > via
> > > > scripting
> > > >     > however:
> > > >     >
> > > >     > 1. Pause virtual machine
> > > >     > 2. Do qcow2 snapshot.
> > > >     > 3. Detach base disk, attach qcow2 snapshot
> > > >     > 4. unpause virtual machine
> > > >     > 5. copy qcow2 base file to new location
> > > >     > 6. pause virtual machine
> > > >     > 7. detach snapshot
> > > >     > 8. unsnapshot qcow2 snapshot at its new location.
> > > >     > 9. attach new base at new location.
> > > >     > 10. unpause virtual machine.
> > > >     >
> > > >     > Thing is, if that entire process is not built into the
> > > > underlying
> > > >     > kvm/qemu/libvirt infrastructure as tested functionality
> > > > with
> > > > a
> > > > defined API,
> > > >     > there's no guarantee that it will work seamlessly and
> > > > will
> > > > continue
> > > > working
> > > >     > with the next release of the underlying infrastructure.
> > > > This
> > > > is using
> > > >     > multiple different tools to manipulate the qcow2 file and
> > > > attach/detach
> > > >     > base disks to the running (but paused) kvm domain, and
> > > > would
> > > > have to
> > > > be
> > > >     > tested against all variations of those tools on all
> > > > supported
> > > > Cloudstack
> > > >     > KVM host platforms. The test matrix looks pretty grim.
> > > >     >
> > > >     > By contrast, the migrate-with-local-storage process is
> > > > built
> > > > into
> > > > virsh
> > > >     > and is tested by the distribution vendor and the set of
> > > > tools
> > > > provided with
> > > >     > the distribution is guaranteed to work with the virsh /
> > > > libvirt/ qemu
> > > >     > distributed by the distribution vendor. That makes the
> > > > test
> > > > matrix
> > > > for
> > > >     > move-with-local-storage look a lot simpler -- "is this
> > > > functionality
> > > >     > supported by that version of virsh on that distribution?
> > > > Yes?
> > > > Enable
> > > > it.
> > > >     > No? Don't enable it."
> > > >     >
> > > >     > I'd love to have live migration of disks on shared
> > > > storage
> > > > with
> > > > Cloudstack
> > > >     > KVM, but not at the expense of reliability. Shutting down
> > > > a
> > > > virtual
> > > > machine
> > > >     > in order to migrate one of its disks from one shared
> > > > datastore to
> > > > another
> > > >     > is not ideal, but at least it's guaranteed reliable.
> > > >     >
> > > >     >
> > > >     > > On Jan 19, 2018, at 04:54, Rafael Weingärtner <
> > > >     > rafaelweingart...@gmail.com> wrote:
> > > >     > >
> > > >     > > Hey Marc,
> > > >     > > It is very interesting that you are going to pick this
> > > > up
> > > > for KVM.
> > > > I am
> > > >     > > working in a related issue for XenServer [1].
> > > >     > > If you can confirm that KVM is able to live migrate
> > > > local
> > > > volumes
> > > > to
> > > >     > other
> > > >     > > local storage or shared storage I could make the
> > > > feature I
> > > > am
> > > > working on
> > > >     > > available to KVM as well.
> > > >     > >
> > > >     > >
> > > >     > > [1] 
> > > > https://issues.apache.org/jira/browse/CLOUDSTACK-10240
> > > >     > >
> > > >     > > On Thu, Jan 18, 2018 at 11:35 AM, Marc-Aurèle Brothier
> > > > <
> > > >     > ma...@exoscale.ch>
> > > >     > > wrote:
> > > >     > >
> > > >     > >> There's a PR waiting to be fixed about live migration
> > > > with
> > > > local
> > > > volume
> > > >     > for
> > > >     > >> KVM. So it will come at some point. I'm the one who
> > > > made
> > > > this PR
> > > > but I'm
> > > >     > >> not using the upstream release so it's hard for me to
> > > > debug the
> > > > problem.
> > > >     > >> You can add yourself to the PR to get notify when
> > > > things
> > > > are
> > > > moving on
> > > >     > it.
> > > >     > >>
> > > >     > >> https://github.com/apache/cloudstack/pull/1709
> > > >     > >>
> > > >     > >> On Wed, Jan 17, 2018 at 10:56 AM, Eric Green <
> > > > eric.lee.gr...@gmail.com>
> > > >     > >> wrote:
> > > >     > >>
> > > >     > >>> Theoretically on Centos 7 as the host KVM OS it could
> > > > be
> > > > done
> > > > with a
> > > >     > >>> couple of pauses and the snapshotting mechanism built
> > > > into
> > > > qcow2, but
> > > >     > >> there
> > > >     > >>> is no simple way to do it directly via virsh, the
> > > > libvirtd/qemu
> > > > control
> > > >     > >>> program that is used to manage virtualization. It's
> > > > not
> > > > as with
> > > >     > issuing a
> > > >     > >>> simple vmotion 'migrate volume' call in Vmware.
> > > >     > >>>
> > > >     > >>> I scripted out how it would work without that direct
> > > > support in
> > > >     > >>> libvirt/virsh and after looking at all the points
> > > > where
> > > > things
> > > > could go
> > > >     > >>> wrong, honestly, I think we need to wait until there
> > > > is
> > > > support
> > > > in
> > > >     > >>> libvirt/virsh to do this. virsh clearly has the
> > > > capability
> > > > internally
> > > >     > to
> > > >     > >> do
> > > >     > >>> live migration of storage, since it does this for
> > > > live
> > > > domain
> > > > migration
> > > >     > >> of
> > > >     > >>> local storage between machines when migrating KVM
> > > > domains
> > > > from
> > > > one host
> > > >     > >> to
> > > >     > >>> another, but that capability is not currently exposed
> > > > in
> > > > a way
> > > >     > Cloudstack
> > > >     > >>> could use, at least not on Centos 7.
> > > >     > >>>
> > > >     > >>>
> > > >     > >>>> On Jan 17, 2018, at 01:05, Piotr Pisz <
> > > > pp...@pulab.pl>
> > > > wrote:
> > > >     > >>>>
> > > >     > >>>> Hello,
> > > >     > >>>>
> > > >     > >>>> Is there a chance that one day it will be possible
> > > > to
> > > > migrate
> > > > volume
> > > >     > >>> (root disk) of a live VM in KVM between storage pools
> > > > (in
> > > > CloudStack)?
> > > >     > >>>> Like a storage vMotion in Vmware.
> > > >     > >>>>
> > > >     > >>>> Best regards,
> > > >     > >>>> Piotr
> > > >     > >>>>
> > > >     > >>>
> > > >     > >>>
> > > >     > >>
> > > >     > >
> > > >     > >
> > > >     > >
> > > >     > > --
> > > >     > > Rafael Weingärtner
> > > >     >
> > > >     >
> > > > 
> > > > 
> > > >     --
> > > > 
> > > >     Andrija Panić
> > > > 
> > > > 
> > > > 
> > --
> > --
> > Heinlein Support GmbH
> > Schwedter Str. 8/9b, 10119 Berlin
> > 
> > https://www.heinlein-support.de
> > 
> > Tel: 030 / 40 50 51 - 62
> > Fax: 030 / 40 50 51 - 19
> > 
> > Amtsgericht Berlin-Charlottenburg - HRB 93818 B
> > Geschäftsführer: Peer Heinlein - Sitz: Berlin
> > 
> 
> 
-- 
-- 
Heinlein Support GmbH
Schwedter Str. 8/9b, 10119 Berlin
  
https://www.heinlein-support.de
 
Tel: 030 / 40 50 51 - 62
Fax: 030 / 40 50 51 - 19
  
Amtsgericht Berlin-Charlottenburg - HRB 93818 B
Geschäftsführer: Peer Heinlein - Sitz: Berlin

Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to