[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: Patch Re: [Libvir] save and restore guest



Farkas Levente wrote:
> Daniel P. Berrange wrote:
>> On Mon, Oct 08, 2007 at 04:27:00PM +0200, Farkas Levente wrote:
>>> Daniel P. Berrange wrote:
>>>> On Sat, Oct 06, 2007 at 02:29:39PM +0200, Farkas Levente wrote:
>>>>> hi,
>>>>> if i use xen with xendomain it's possible to save and restore guest
>>>>> state. if i use libvirt it's not working (at least by default with kvm).
>>>>> i mean if i stop or restart libvirtd all guests a stopped and even if i
>>>>> restart libvirtd i've to start all guests manually. imho this's a very
>>>>> essential feature. what is the reason this not working with libvirtd?:
>>>>> - this feature is missing from libvirtd? or
>>>> You can set KVM/QEMU guests to autostart with
>>>>
>>>>   virsh autostart {NAME|ID|UUID}
>>> thanks, but go back to my first question. afais /etc/init.d/libvirtd
>>> simple kill libvirtd, but virsh has a command save/restore. wouldn't be
>>> it's much better to save guest's state on stop, restore on start in
>>> stead of start if there is a saved state. i can send a patch to the
>>> /etc/init.d/libvirtd, just would like to know is there any reason it's
>>> not that way? anyway xendomains do it in the save way.
>> The save/restore capability is currently only available in the KVM-ified
>> version of QEMU. We could make it try to save, and failing that destroy
>> the guest. The xendomains scripts isn't a good model to emulate though.
>> The autostart/kill functionality is part of the libvirt daemon itself. Any
>> save/restore capability would be best integrated there
> 
> for those who like to save and restore guest at libvirtd stop and start
> i attached a patch we use to for it. it's based on xen's sripts.
> LIBVIRTD_AUTO_ONLY still not implemented but the sysconfig file already
> contains it. if you like to set the default behavior to the current then
> set LIBVIRTD_RESTORE to false.
> imho it'd be useful to include in the upstream libvirtd too.
> 
and the patch:-)

-- 
  Levente                               "Si vis pacem para bellum!"
--- /etc/init.d/libvirtd.ori	2007-10-17 13:57:29.000000000 +0200
+++ /etc/init.d/libvirtd	2007-10-19 13:30:26.000000000 +0200
@@ -45,6 +45,7 @@
 then
     LIBVIRTD_CONFIG_ARGS="--config $LIBVIRTD_CONFIG"
 fi
+[ "$LIBVIRTD_RESTORE" != "true" ] || [ -d $LIBVIRTD_SAVE ] || mkdir -p $LIBVIRTD_SAVE
 
 RETVAL=0
 
@@ -53,12 +54,25 @@
     daemon --check $SERVICE $PROCESS --daemon $LIBVIRTD_CONFIG_ARGS $LIBVIRTD_ARGS
     RETVAL=$?
     echo
+    if [ $RETVAL -eq 0 -a "$LIBVIRTD_RESTORE" = "true" ]; then
+        for i in `ls $LIBVIRTD_SAVE`; do
+            echo "Restore guest from: $i"
+            virsh restore $LIBVIRTD_SAVE/$i >/dev/null
+            rm $LIBVIRTD_SAVE/$i
+        done
+    fi
     [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$SERVICE
 }
 
 stop() {
+    if [ "$LIBVIRTD_RESTORE" = "true" ]; then
+        for i in `virsh list|grep running|awk '{ print $1 }'`; do
+            NAME="`virsh list|grep " $i "|awk '{ print $2 }'`"
+            echo "Save guest: $NAME"
+            virsh save $i $LIBVIRTD_SAVE/$NAME >/dev/null
+        done
+    fi
     echo -n $"Stopping $SERVICE daemon: "
-
     killproc $PROCESS
     RETVAL=$?
     echo
--- /etc/sysconfig/libvirtd.ori	2007-10-17 13:57:24.000000000 +0200
+++ /etc/sysconfig/libvirtd	2007-10-19 13:54:12.000000000 +0200
@@ -4,3 +4,33 @@
 # Listen for TCP/IP connections
 # NB. must setup TLS/SSL keys prior to using this
 #LIBVIRTD_ARGS="--listen"
+
+## Type: string
+## Default: /var/lib/libvirt/save
+#
+# Directory to save running guests to when the system (host) is
+# shut down or libvirtd stop. Will also be used to restore guests from if
+# LIBVIRTD_RESTORE is set (see below). Leave empty to disable guest saving 
+# on shutdown (e.g. because you rather shut guests down).
+# If guest saving does succeed, SHUTDOWN will not be executed.
+#
+LIBVIRTD_SAVE=/var/lib/libvirt/save
+
+## Type: boolean
+## Default: true
+#
+# This variable determines whether saved guests from LIBVIRTD_SAVE
+# will be restored on system startup. 
+#
+LIBVIRTD_RESTORE=true
+
+## Type: boolean
+## Default: false
+# 
+# If this variable is set to "true", only the guests started via config 
+# files in autostart will be treated according to LIBVIRTD_SYSRQ,
+# LIBVIRTD_MIGRATE, LIBVIRTD_SAVE, LIBVIRTD_SHUTDOWN; otherwise
+# all running guests will be. 
+# Note that the name matching is somewhat fuzzy.
+# 
+LIBVIRTD_AUTO_ONLY=false

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]