From: Saman Behnam <saman.behnam@opensoft24.com>
To: kvm@vger.kernel.org
Subject: init scripts for KVM guests UPDATE!
Date: Sat, 18 Jul 2009 02:13:44 +0200 [thread overview]
Message-ID: <4A6113B8.20507@opensoft24.com> (raw)
Hi there,
here is an update for the "init scripts for KVM guests"I've wrote for
starting and stopping the KVM guest machines either by saving and
restoring or by gracefully shutdown and start. My question, is there an
option within "libvirt" to make the KVM guest mashines get saved when
the KVM host shuts down? I had problems to gracefully shutdown Windows
VM's!!!
Right now I had to write these scripts to save and restore the machines
upon starting and stopping the KVM host.
Many Thanks for your response
vim /etc/init.d/kvm-win0-rcs
###################################################################################################
#!/bin/sh
### BEGIN INIT INFO
# Provides: kvm-win0-rcs
# Required-Start: $kvm $libvirtd
# Required-Stop: $kvm $libvirtd
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Starting/Saving, Stopping/Restoring kvm-win0-rcs
KVM guest.
# Description: Starting/Saving, Stopping/Restoring KVM guest "win0".
# kvm-win0-rcs KVM guest.
### END INIT INFO#
# Please copy the init scripts of the KVM VM's in to "/etc/init.d" and
then run! "for i in `cd /etc/init.d && ls kvm-*` ; do update-rc.d $i
defaults 21 19 ; done"
# U need per VM a separate start-stop-script!
VM_NAME="win0" # Name of ur guest VM
TIMEOUT=300
VM_SAVE_DIR="/kvm/tmp/vm_save_dir" # Directory for storing the guest VM
save data..
DEVNULL="/dev/null"
#ACTION="shutdown"
ACTION="save" # ACTION takes one argument, either "save" or "shutdown".
In the "save" case it will save the VM and restore it while stopping or
starting. In the "shtudown" case it will sutdown then VM and start it
while stopping or starting.
vmshutdown () {
if ! virsh list|grep running|grep -v grep|grep "$VM_NAME" >
"$DEVNULL" 2>&1; then
echo "VM "$VM_NAME" is not running!!! Exiting."
exit 1
fi
COUNT=0
echo "kvmshutdown \: Shutting down "$VM_NAME" with pid $PID"
virsh shutdown "$VM_NAME" &
while [ "$COUNT" -lt "$TIMEOUT" ]; do
if ! virsh list|grep running|grep -v grep|grep
"$VM_NAME" > "$DEVNULL" 2>&1; then
exit 0
fi
sleep 5
COUNT=$(($COUNT+5))
done
echo "kvmshutdown \: Timeout happend. Destroying VM "$VM_NAME""
virsh destroy "$VM_NAME" && exit 1
}
vmstart () {
if virsh list|grep running|grep -v grep|grep "$VM_NAME" >
"$DEVNULL" 2>&1; then
echo "VM "$VM_NAME" is allready running!!! Exiting."
exit 1
fi
virsh start "$VM_NAME" && exit 0
exit 1
}
vmsave () {
if ! virsh list|grep running|grep -v grep|grep "$VM_NAME" >
"$DEVNULL" 2>&1; then
echo "VM "$VM_NAME" is not running!!! Exiting."
exit 1
fi
COUNT=0
echo "vmsave \: Saving VM "$VM_NAME""
if [ ! -d "$VM_SAVE_DIR" ]; then
echo "creating "$VM_SAVE_DIR""
mkdir -p "$VM_SAVE_DIR"
fi
virsh save "$VM_NAME" "$VM_SAVE_DIR/$VM_NAME.kvm.save" &
while [ "$COUNT" -lt "$TIMEOUT" ]; do
if ! virsh list|grep running|grep -v grep|grep
"$VM_NAME" > "$DEVNULL" 2>&1; then
exit 0
fi
sleep 5
COUNT=$(($COUNT+5))
done
echo "vmsave \: Timeout happend. Destroying VM "$VM_NAME""
virsh destroy "$VM_NAME"
exit 1
}
vmrestore () {
if virsh list|grep running|grep -v grep|grep "$VM_NAME" >
"$DEVNULL" 2>&1; then
echo "VM "$VM_NAME" is allready running!!! Exiting."
exit 1
fi
if ! ls "$VM_SAVE_DIR"/"$VM_NAME".kvm.save > "$DEVNULL" 2>&1 ; then
echo "Restore file "$VM_NAME".kvm.save in "$VM_SAVE_DIR"
not found! Starting VM!!!"
vmstart
exit 1
fi
cd "$VM_SAVE_DIR"
echo "vmrestore \: Restoring VM "$VM_NAME""
virsh restore "$VM_SAVE_DIR"/"$VM_NAME".kvm.save && rm -f
"$VM_SAVE_DIR"/"$VM_NAME".kvm.save
exit 0
}
# Here is the start of the main "program" :-)
case "$1" in
start)
case "$ACTION" in
save)
vmrestore
;;
shutdown)
vmstart
;;
esac
;;
stop)
case "$ACTION" in
save)
vmsave
;;
shutdown)
vmshutdown
;;
esac
;;
*)
N="$0"
echo "Usage: "$N" {start|stop}" >&2
exit 1
;;
esac
exit 0
###################################################################################################
Please tell also if there is an official script for gracefully stopping
/ starting KVM VM's???
greets
saman
--
mit freundlichen Grüßen / Kind regards
Saman Behnam
--
opensoft24-Systems
Lena-Christ-Str. 3
80807 München
Tel.: +49 (0) 89 69397631
Fax.: +49 (0) 89 69397631
info@opensoft24.de
www.opensoft24.de
www.opensoft24.com
Bankverbindung:
Postbank München
BLZ.: 70010080
Kto.: 279702806
Steuer-Nr.: 135 70442
UST-IdNr.: 76 158 941 031
IBAN.: PBNKDEFF
SWIFT.: DE21700100800279702806
Diese Nachricht und/oder Anhänge sind vertraulich und können der Geheimhaltungspflicht unterliegen. Wenn Sie nicht der vorgesehene Adressat sind, weisen wir Sie hiermit darauf hin, dass jegliche Nutzung, Weiterleitung und Kopien unzulässig sind. Benachrichtigen Sie uns bitte unverzüglich per E-Mail und löschen Sie diese Nachricht und/oder Anhänge aus Ihrem System.
This mail and/or attachments are confidential and may also be legally privileged. If you are not the intended recipient, you are hereby notified, that any review, dissemination, distribution or copying of this email and/or attachments is strictly prohibited. Please notify us immediately by email and delete this message and all its attachments.
next reply other threads:[~2009-07-18 0:14 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-07-18 0:13 Saman Behnam [this message]
2009-07-18 5:25 ` init scripts for KVM guests UPDATE! Michael Tokarev
2009-07-18 16:03 ` Daniel Bareiro
2009-07-19 5:01 ` Charles Duffy
2009-07-19 9:51 ` Ján ONDREJ (SAL)
2009-07-19 9:53 ` Ján ONDREJ (SAL)
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4A6113B8.20507@opensoft24.com \
--to=saman.behnam@opensoft24.com \
--cc=kvm@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox