From Fedora Project Wiki

< FWN‎ | Beats

Line 136: Line 136:
 
==== Snapshot Support ====
 
==== Snapshot Support ====
 
In an attempt to make it easier to backup <code>KVM</code> windows guests,
 
In an attempt to make it easier to backup <code>KVM</code> windows guests,
Matt McCowan
+
[[MattMcCowan| Matt McCowan]]
 
created<ref>http://www.redhat.com/archives/libvir-list/2009-March/msg00177.html</ref>
 
created<ref>http://www.redhat.com/archives/libvir-list/2009-March/msg00177.html</ref>
 
a checkpoint <code>virsh</code> function.  "Modelled on the <code>virDomainSave</code><ref>http://libvirt.org/html/libvirt-libvirt.html#virDomainSave</ref> function it takes
 
a checkpoint <code>virsh</code> function.  "Modelled on the <code>virDomainSave</code><ref>http://libvirt.org/html/libvirt-libvirt.html#virDomainSave</ref> function it takes
 
an optional script which it will execute (and pass the name of the
 
an optional script which it will execute (and pass the name of the
 
domain as an argument) while the domain is paused, then resume the
 
domain as an argument) while the domain is paused, then resume the
domain."
+
domain." Within this script, a backup of the guest domain could be created.
  
Daniel Veillard
+
The patch was seen as too ad-hoc, and not accepted as-is.
 +
[[DanielVeillard|Daniel Veillard]]
 
commented<ref>http://www.redhat.com/archives/libvir-list/2009-March/msg00199.html</ref>
 
commented<ref>http://www.redhat.com/archives/libvir-list/2009-March/msg00199.html</ref>
 
"I think this can help administrators in a controlled situation,
 
"I think this can help administrators in a controlled situation,
Line 151: Line 152:
 
an error if that's not possible."
 
an error if that's not possible."
  
Daniel P. Berrange
+
[[DanielBerrange|Daniel P. Berrange]]
http://www.redhat.com/archives/libvir-list/2009-March/msg00205.html
+
described<ref>http://www.redhat.com/archives/libvir-list/2009-March/msg00205.html</ref>
<pre>
+
what he would like to see.
"In terms of API I think I'd like to see snapshotting available as part
+
"In terms of API I think I'd like to see
of a more generic save/restore API. I tend to think of the current API
+
snapshotting<ref>http://wiki.libvirt.org/page/TodoVMSnapshots</ref> available as part
as providing 'unmanaged save/restore', in so much as libvirt / users
+
of a more generic save/restore API. I tend to think of the current API
of libvirt have no way of knowing whether there is a saved image for
+
as providing 'unmanaged save/restore'". Libvirt does not track saved images,
the guest available currently.  As an example of why this is a problem,
+
so does not know if a snapshot is available to be started at the restart of
consider the often requested ability to save/restore guests across
+
<code>libvirtd</code>."
host reboot.
 
  
When libvirtd starts, it looks at the autostart flag for a guest, and
+
"Thus I think the first step towards a general snapshot facility would
decides may thus automatically boot the guest at that time. libvirtd
 
has no way of knowing whether there was an existing saved image of the
 
guest available to restore, since it doesn't track saved images.
 
 
 
Thus I think the first step towards a general snapshot facility would
 
 
be to provide an API for 'managed save/restore' where we explicitly
 
be to provide an API for 'managed save/restore' where we explicitly
track saved images.
+
track saved images."
 
+
"With this, you could configure <code>libvirtd</code>, so that when starting up, it"
 
+
would "see if the guest was suspended before
- To save a guest:
 
 
 
    enum {
 
      VIR_DOMAIN_SAVE_LIVE, /* Don't shutdown guest after saving */
 
    } virDomainSaveFlags;
 
 
 
    virDomainCreateSaveImage(virDomainPtr dom,
 
                            const char *imagename,
 
                            unsigned int flags);
 
 
 
  By default, imagename would be NULL, and flags would be zero. In this
 
  case we'd simply be saving to
 
 
 
      /var/lib/libvirt/saved/qemu/$VMNAME.img
 
 
 
  Providing equivalence to current virDomainSave(dom, filename), but
 
  with libvirt deciding the actual filename used.
 
 
 
  Now to do snapshots in this scenario, you'd pass a 'imagename' for
 
  the snapshot - give each snapshot you take some meaningful name as
 
  you desire. And if VIR_DOMAIN_SAVE_LIVE is set then the guest will
 
  be allowed to continue running after the snapshot is saved.
 
 
  Obviously this capability would require some way to take a snapshot
 
  of the storage, as well as the memory image. We could allow a script
 
  to do this, or implement it directly for a handful of storage types
 
  we know can do this (eg, LVM, qcow2).
 
 
 
- Next, we'd need a way to list saved images
 
     
 
        virDomainListSaveImages(virDomainPtr dom,
 
                                const char **imagenames,
 
                                unsigned int *numimagenames);
 
 
 
  This would just give back a list of all known imagenames for
 
  the VM.
 
 
 
- Then a way to restore from an image
 
 
 
        enum {
 
          VIR_DOMAIN_RESTORE_DELETE
 
        } virDomainRestoreFlags;
 
 
 
        virDomainRestoreSaveImage(virDomainPtr dom,
 
                                  const char *imagename,
 
                                  unsigned int flags);
 
 
 
    This would restore from the named image. If the VIR_DOMAIN_RESTORE_DELETE
 
    flag was given, the named image would be deleted after restore (eg to
 
    prevent accidental duplicated restore attempts)
 
 
 
- Perhaps also need a way to delete saved imaged
 
 
 
 
 
        virDomainDeleteSaveImage(virDomainPtr dom,
 
                                  const char *imagename);
 
 
 
  If VIR_DOMAIN_SAVE_LIVE is set, the guest won't be shutdown after
 
  saving its state.
 
 
 
 
 
- Perhaps also need a wa yto get more metaata about the save image
 
 
 
          struct virDomainSaveImageInfo {
 
                int savedDate;
 
                unsigned long long imageSize;
 
          };
 
          virDomainGetSaveImgeInfo(virDomainptr dom,
 
                                    const char *imagename,
 
                                    virDomainSaveImageInfoPtr info);
 
 
 
  Then again, perhaps the virDomainListSaveImages should just return
 
  a list of virDomainSaveImageInfoPtr instances directly, instead of
 
  requiring this extra API call - it'd be faster for remote usage
 
  in particular because it'd have less round-trips.
 
 
 
With this, you could configure libvirtd, so that when starting up, it
 
used virDomainListSaveImages to see if the guest was suspended before
 
 
the previous host shutdown, and if so, then restore from that saved
 
the previous host shutdown, and if so, then restore from that saved
image automatically. Or make it skip autostart completely, if any save
+
image automatically.<ref>http://wiki.libvirt.org/page/TodoDaemonRestart</ref> Or make it skip autostart completely, if any save
 
images exist, and allow an admin defined initscript to do auto restore
 
images exist, and allow an admin defined initscript to do auto restore
from the save image.
+
from the save image."
"
+
 
</pre>
 
 
<references />
 
<references />
  

Revision as of 01:58, 16 March 2009


Virtualization

In this section, we cover discussion on the @et-mgmnt-tools-list, @fedora-xen-list, @libvirt-list and @ovirt-devel-list of Fedora virtualization technologies.

Contributing Writer: Dale Bewley

Enterprise Management Tools List

This section contains the discussion happening on the et-mgmt-tools list

New Release virt-manager 0.7.0

Cole Robinson announce[1] a new Package-x-generic-16.pngvirt-manager[2] release, version 0.7.0.

Virtual Machine Manager provides a graphical tool for administering virtual machines for KVM, Xen, and QEmu. Start, stop, add or remove virtual devices, connect to a graphical or serial console, and see resource usage statistics for existing VMs on local or remote machines. Uses Package-x-generic-16.pnglibvirt as the backend management API.

New features:

  • Redesigned 'New Virtual Machine' wizard (Jeremy Perry, Tim Allen, Cole Robinson)
  • Option to remove storage when deleting a virtual machine.
  • File browser for libvirt storage pools and volumes, for use when attaching storage to a new or existing guest.
  • Physical device assignment (PCI, USB) for existing virtual machines.
  • Bug fixes and minor improvements.

New Release virtinst 0.4.3

Cole Robinson announce[1] a new Package-x-generic-16.pngpython-virtinst release, version 0.400.3.

virtinst is a module that helps build and install libvirt based virtual machines. It currently supports KVM, QEmu and Xen virtual machines. Package includes several command line utilities, including virt-install (build and install new VMs) and virt-clone (clone an existing virtual machine).

This is largely a bug fix release.


Fedora Virtualization List

This section contains the discussion happening on the fedora-virt list.

Serial Console Support in virt-manager

Jan ONDREJ tested[1] the new Package-x-generic-16.pngvirt-manager 0.7.0 on Fedora 10, and had some suggestions.

Note.png
TODO
Starting an domain starts my serial console owned by root and is not
accesssible from virt-manager (virt-viewer). After changing ownership it's
immediatelly available. Is it possible to change this in time of virtual
machine creation? (in libvirt or where?)

  Another feature enhacement can be adding "Serial 0" tab automatically,
when there is no Console available for guest. Message "Console not
configured for guest" can be sometimes misinterpretated, because I can have
serial console for my guest. I prefer to use serial consoles, because they
do not need to install graphical environment on host. They have multiple
advantages, like access from another machine using serial or ipmi console,
viewing crash status, when host crashes, ...

  And last possible enhancement: when pressing F10 key in guest's serial
console, is it possible to avoid opening of "File menu" and send this key to
serial 0, as it is done in VGA console?

Cole [2]

Yes, this is one of the drawbacks of not running virt-manager as root:
since the qemu:///system libvirt connection will launch your guests as
root, a regular user won't be able to access ptys.

I don't know of a proper solution to it all, other then running the app
as root or changing the the pty permissions as you did.

>   Another feature enhacement can be adding "Serial 0" tab automatically,
> when there is no Console available for guest. Message "Console not
> configured for guest" can be sometimes misinterpretated, because I can have
> serial console for my guest. 

I see what you mean. The wording could certainly be better, and It would
make sense to try to connect to the serial console if no graphics device
is attached. Thanks for the idea.

> 
>   And last possible enhancement: when pressing F10 key in guest's serial
> console, is it possible to avoid opening of "File menu" and send this key to
> serial 0, as it is done in VGA console?
> 

We would probably need some sort of keygrab process like we do for VNC
to get this right. Not sure if that's even an option for the VTE widget
though.

Fedora Xen List

This section contains the discussion happening on the fedora-xen list.

dom0 Kernel: Better, Still Not Ready

Itamar Reis Peixoto reported[1] success with Michael Young's latest Package-x-generic-16.pngkernel build[2] and wondered when it could be released.

Michael explained, "The current plan is to wait until basic dom0 support makes it into the vanilla kernel, which should happen for 2.6.30, and then decide if dom0 can be enabled and if the patches for full dom0 support can safely be added without affecting ordinary operation."

"At the moment there are still things that are broken such as X support in some cases, and there are also Fedora patches that have been omitted because they were tricky to merge, so it is too early to start adding dom0 support to official Fedora kernels."

Missing Hypervisor Capabilities Restored

There was progress on a bug discovered[1] last week. This missing file /sys/hypervisor/properties/capabilities has been restored[2], however a bug[3] remained[4] in libvirt or virt-install.

Libvirt List

This section contains the discussion happening on the libvir-list.

Snapshot Support

In an attempt to make it easier to backup KVM windows guests, Matt McCowan created[1] a checkpoint virsh function. "Modelled on the virDomainSave[2] function it takes an optional script which it will execute (and pass the name of the domain as an argument) while the domain is paused, then resume the domain." Within this script, a backup of the guest domain could be created.

The patch was seen as too ad-hoc, and not accepted as-is. Daniel Veillard commented[3] "I think this can help administrators in a controlled situation, but I'm hoping a real snapshotting API will be possible at some point where Package-x-generic-16.pnglibvirt goes though the list of storage resources used by the domain and properly make a snapshot using a storage API or return an error if that's not possible."

Daniel P. Berrange described[4] what he would like to see. "In terms of API I think I'd like to see snapshotting[5] available as part of a more generic save/restore API. I tend to think of the current API as providing 'unmanaged save/restore'". Libvirt does not track saved images, so does not know if a snapshot is available to be started at the restart of libvirtd."

"Thus I think the first step towards a general snapshot facility would be to provide an API for 'managed save/restore' where we explicitly track saved images." "With this, you could configure libvirtd, so that when starting up, it" would "see if the guest was suspended before the previous host shutdown, and if so, then restore from that saved image automatically.[6] Or make it skip autostart completely, if any save images exist, and allow an admin defined initscript to do auto restore from the save image."

Memory Ballooning Support for QEMU

Daniel P. Berrange patched[1] the QEMU driver to fully suport full memory ballooning.