[Libvir] save/restore support for KVM

Jim Paris jim at jtan.com
Sat Aug 11 19:16:38 UTC 2007


Daniel Veillard wrote:
> On Fri, Aug 10, 2007 at 12:36:05PM -0400, Jim Paris wrote:
> > I think appending unrelated data to the migration image is a bit of a
> > hack anyway.  A better plan would be a file containing
> >   <header> <XML config> <migration data>
> 
>   Hum, beware you then need to make sure that you indicate in the
> header the lenght of the XML config, because you can't ask the XML parser
> to tell you when the XML file ends. Should not be hard but it's a pitfall
> I have seen too many people trip on :-)

Remembering to null-terminate the XML config before passing it to
qemudParseVMDef is also helpful :)

I have it mostly working now.  Saving works fine, but restoring is a
bit buggy with regards to multiple copies of the same domain, config
files, etc.  This is what I'm using for resuming:

  xml = read XML
  def = qemudParseVMDef(xml)
  vm = qemudAssignVMDef(def)
  if (qemudStartVMDaemon(vm) < 0)
      qemudRemoveInactiveVM(vm)

My questions:

Should I add qemudSaveVMDef somewhere?  Currently, if I undefine a
domain and then restore from an image, I don't think there's any way
to then save that domain back to a config file.

What should happen if one tries to resume the same image twice?
Currently I think qemudAssignVMDef returns a pointer to the first vm,
the start fails, and then RemoveInactiveVM removes the running one --
not good.  Should I try to detect when the name/UUID already exists
and refuse?  

The "test" driver seems to also be broken in this regard:
  $ virsh --connect test:///default
  virsh > save test /tmp/test
  virsh > restore /tmp/test
  virsh > shutdown 2
  virsh > list --all
   Id Name                 State
  ----------------------------------
    - test                 shut off
    - test                 shut off

There's no way to uniquely refer to either of those now.
Does the xen driver handle this any better?

Also, is there a reason qemudAssignVMDef match by name rather than
UUID?  Are names supposed to be unique?

-jim




More information about the libvir-list mailing list