[ovirt-devel] [VDSM] Live snapshot with ceph disks

Nir Soffer nsoffer at redhat.com
Thu Jun 25 18:40:49 UTC 2015


----- Original Message -----
> From: "Michal Skrivanek" <michal.skrivanek at redhat.com>
> To: "Nir Soffer" <nsoffer at redhat.com>
> Cc: "devel" <devel at ovirt.org>, "Eric Blake" <eblake at redhat.com>
> Sent: Thursday, June 25, 2015 3:44:59 PM
> Subject: Re: [ovirt-devel] [VDSM] Live snapshot with ceph disks
> 
> 
> On 19 Jun 2015, at 22:40, Nir Soffer wrote:
> 
> > Hi all,
> > 
> > For 3.6, we will not support live vm snapshot, but this is a must for the
> > next
> > release.
> > 
> > It is trivial to create a disk snapshot in ceph (using cinder apis). The
> > snapshot
> > is transparent to libvirt, qmeu and the guest os.
> > 
> > However, we want to create a consistent snapshot, so you can revert to the
> > disk
> > snapshot and get a consistent file system state.
> > 
> > We also want to create a complete vm snapshot, including all disks and vm
> > memory.
> > Libvirt and qemu provides that when given a new disk for the active layer,
> > but
> > when using ceph disk, we don't change the active layer - we continue to use
> > the
> > same disk.
> > 
> > Since 1.2.5, libvirt provides virDomainFSFreeze and virDomainFSThaw:
> > https://libvirt.org/hvsupport.html
> > 
> > So here is possible flows (ignoring engine side stuff like locking vms and
> > disks)
> > 
> > Disk snapshot
> > -------------
> > 
> > 1. Engine invoke VM.freezeFileSystems
> > 2. Vdsm invokes libvirt.virDomainFSFreeze
> > 3. Engine creates snapshot via cinder
> > 4. Engine invokes VM.thawFileSystems
> > 5. Vdsm invokes livbirt.virDomainFSThaw
> > 
> > Vm snapshot
> > -----------
> > 
> > 1. Engine invoke VM.freezeFileSystems
> > 2. Vdsm invokes libvirt.virDomainFSFreeze
> > 3. Engine creates snapshot via cinder
> > 4. Engine invokes VM.snapshot
> > 5. Vdsm creates snapshot, skipping ceph disks
> > 6. Engine invokes VM.thawFileSystems
> > 7. Vdsm invokes livbirt.virDomainFSThaw
> > 
> > API changes
> > -----------
> > 
> > New verbs:
> > - VM.freezeFileSystems - basically invokes virDomainFSFreeze
> > - VM.thawFileSystems - basically invokes virDomainFSThaw
> 
> once we do it explicitly we can drop the flag from libvirt api which does it
> "atomically" for us right now

We plan to add a "frozen" key in the snapshot description. If ture, it means
that engine freezed the file systems on the guest, and vdsm will skip the 
VIR_DOMAIN_SNAPSHOT_CREATE_QUIESCE flag.

> also note the dependency on functional qemu-ga (that's no different from
> today, but the current behavior is that when qemu-ga is not running we are
> quietly doing an unsafe snapshot)

We plan to keep this behavior, hopefully make it better, depending on
how libvirt communicate this condition.

Current code is assuming that *any* exception calling snapshotCreateXML()
means the guest is not running :-)

Nir



More information about the Devel mailing list