Pour utiliser KVM comme j'en avais envie il fallait que ces machines puissent démarrer lors de la séquence de boot de la machine hôte. Or, a priori, le lancement demande un écran ! Heureusement l'option --nographic est là.
Cette machine virtuelle est destinée à contenir la MV qui héberge ce site, vu qu'il y a peu de machines et services à surveiller une puissance importante n'est pas nécessaire.
L'ajout de la notion "GUEST" permet d'initier une commande liant la MV à la machine physique par l'intermédiaire d'un socket et cela permet de déclencher le shutdown de l'extérieur en utilisant le script suivant :
#!/bin/bash
SOCK=/tmp/monitor_$1
echo system_powerdown | socat - UNIX-CONNECT:${SOCK}
Cette commande s'exécute fort bien depuis un script "systemd" ...
Le script de lancement devient alors :
#!/bin/bash
PATH=/root/bin:$PATH
ORIG=$(dirname $0)
cd ${ORIG}
ORIG=$(pwd)
echo 'ORIG=('$ORIG')'
cd $ORIG
HDA=/dev/mapper/VG00-WEB_PHP7
DISKA=' -drive file='${HDA}',if=virtio,format=raw,cache=none,aio=native '
HDB=/dev/mapper/VG01-WEB_PHP7_SAUVE
DISKB=' -drive file='${HDB}',if=virtio,format=raw,cache=none,aio=native '
EXEC='qemu-system-x86_64 -enable-kvm -machine type=pc,accel=kvm:tcg -mem-path /dev/hugepages '
EXEC=${EXEC}' --mem-prealloc'
NOM=web-php7
RAM=1792M
OPTION=' '
# clavier FR
OPTION=' -k fr -smp 2'
# Pas de daemon (car nographic )
DEMON=' -daemonize '
DEMON=' '
# Appel des scripts de gestion de la "carte réseau" ces scripts sont présentés un peu plus loin
sudo ./bin/qemu-ifdown br1 tap10
sleep 1
sync
sudo ./bin/qemu-ifup br1 tap10
sudo /sbin/brctl show
# Creation port "Monitor" pour arrêt machine
GUEST=' -monitor unix:/tmp/monitor_web,server,nowait '
RESEAU=' -net nic,macaddr=00:16:3e:31:31:01 -net tap,ifname=tap10,script=no,downscript=no '
# Normal launch
COMMANDE="$EXEC $DEMON $SNAPSHOT -boot c $DISKA $DISKB -name $NOM -m $RAM $OPTION $RESEAU ${GUEST} "
# machine affectée sur les "processeurs" 10 et 11, la "belle" machine physique en a 12
taskset --cpu-list 10,11 ${COMMANDE} -nographic &
ret=$?
echo 'Retour:'${ret}
Ce script peut être lancé par systemd ...
Et ... le tour est joué.