XenDomUStartscript
Aus Xen-Forum-Wiki
Inhaltsverzeichnis |
Init-Script zum Starten und Stoppen der DomUs
Mit den XEN-Utils kommt ein DomU Start/Stop-Script mit. Dieses hat jedoch bei mir nie funktioniert, daher habe ich selber ein solches erstellt. Es ist einfach gehalten und erfüllt seinen Zweck - das Starten der DomUs beim Systemstart und Stoppen, wenn der Rechner herunter gefahren wird.
Es wird noch etwas weiter entwickelt, läuft aber erstmal soweit, dass dafür keine Eile besteht. :-)
Das Script besteht aus 2 Teilen. Eine Konfigurationsdatei, welche in /etc/default liegt und dem Start/Stop-Script in /etc/init.d.
Derzeit heißt das Script xen-all-dom.
Konfigurationsdatei
Mit einem Editor wird eine neue Datei geöffnet/angelegt:
vi /etc/default/xen-all-dom
Es beinhaltet nur eine Variable mit deren Werten:
DOMAINS="domU1 domU2 domU3"
Es werden zwischen die Hochkommas die Namen der Konfigurationsdateien der DomUs eingetragen, jeweils durch Leerzeichen getrennt. Dabei ist es wichtig, dass die Domains den gleichen Namen tragen wie die Konfigurationsdateien, sonst funktioniert es nicht.
Init-Script
Start
Das Initscript durchläuft die Werte in der Variablen $DOMAINS, welche aus der Datei /etc/default/xen-all-dom eingelesen werden, und startet die Domains.
Stop
Beim Herunterfahren des Systems werden die Domains ebenfalls anhand ihrer Namen gestoppt. Dazu wird die Ausgabe von xm list verwendet.
Bevor eine der Aktionen für eine Domain durchgeführt wird, wird eine festgesetzte Zeit gewartet.
Hier nun der Inhalt des Init-Scriptes.
vi /etc/init.d/xen-all-dom
#! /bin/sh
# Starting all XEN Domains
set -e
DESC="all XEN Domains"
NAME="xen-all-dom"
SCRIPTNAME=/etc/init.d/$NAME
if [ -r /etc/default/$NAME ]
then
source /etc/default/$NAME
else
echo "Keine Konfigurationsdatei in /etc/default gefunden. Abbruch!"
exit 1
fi
d_start() {
echo
for i in $DOMAINS; do
sleep 50
xm create $i
done
sleep 30
}
d_stop() {
echo
LISTE=`xm list | tail -n +3 | cut -d " " -f1`
for i in $LISTE; do
sleep 50
xm shutdown $i
echo "shutdown domain $i"
done
sleep 30
}
d_reload() {
d_stop
d_start
}
case "$1" in
start)
echo -n "Starting $DESC: $NAME"
d_start
echo "... done"
;;
stop)
echo -n "Stopping $DESC: $NAME"
d_stop
echo "... done"
;;
restart)
echo -n "Restarting $DESC: $NAME"
d_stop
sleep 1
d_start
echo "... done"
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|restart|}" >&2
exit 1
;;
esac
exit 0
Nun muss das Script noch ausführbar gemacht werden.
chmod +x /etc/init.d/xen-all-dom
Runlevels updaten
Damit das Script beim Systemstart ausgeführt wird, muß es noch in den Runleveln verlinkt werden. Dabei hat sich bewährt, es nach allen anderen Einträgen zu starten (S99) und mit als erstes zu stoppen (K19).
Dies kann mit folgendem Aufruf erledigt werden:
update-rc.d xen-all-dom defaults 99 19
Damit das originale DomU-Startscript nicht dazwischen funkt, habe ich es aus den Runleveln entfernt.
update-rc.d -f xendomains remove
ToDo
- Namen der DomUs unabhängig vom Namen der Konfigurationsdatei
-
Anzeigen des DomU-Namen beim herunterfahren (im Moment nur ID)
-
Stoppen der DomUs anhand der vorhanden IDs
--McAldo 18:29, 23. Sep 2006 (CEST)
