# kvm - Apagar y encender guest al apagar o encender host

## opotonil

Hola,

Estoy intentando hacer que se enciendan y apaguen, de forma correcta, las maquinas virtuales que tengo en el servidor cuando este se apague o encienda. Lo mas util imagino que fuera utilizar libvirt, que esta masked por cierto, pero el problema es que para la red de las VM utilizo vde y no he encontrado ninguna referencia del uso de libvir junto con vde, bueno... lo unico que he encontrado es:

http://tjworld.net/wiki/Linux/Ubuntu/VirtualMachinesWithVDENetworking (no se si estara obsoleto, porque no pone fecha)

 *Quote:*   

> 
> 
> Unfortunately libvirt doesn't currently support VDE networks, although it is possible for someone to implement a VDE interface using the libvirt network API.
> 
> 

 

Para encenderlas en principio no hay problema, imagino que baste con llamar al script de inicio de la VM desde el local.start. El script vendria a ser (tengo que quitar la parte de vnc para que no pueda apagarla cualquiera):

```

#!/bin/bash

kvm -name kvm-public -daemonize -vnc 192.168.0.2:1 \

    -monitor unix:/var/run/kvm/public.sock,server,nowait \

    -m 1024 -k es -usbdevice tablet \

    -drive file=/dev/vg-ide/kvm-public,index=0,media=disk,if=virtio,boot=on \

    -net nic,macaddr=52:54:00:12:33:55,model=virtio \

    -net vde,sock=/var/run/vde.ctl,port=3

```

El problema esta a la hora de apagarlas... lo unico que se me ha ocurrido es poner en el local.stop lo siguiente:

```

echo "system_powerdown" | unixterm /var/run/kvm/public.sock

```

pero con esto no se si le daria tiempo a apagarse a la VM...

Y ya de paso. Hay algo mas comodo, que permita autocompletado con la tabulacion, para conectarse a un socket.

Y bueno por ultimo. Imagino que sea mas seguro lanzar la VM como mi usuario que como root solo que con los permisos actuales del LV no me deja... baldria con hacer un "chown root:vde /dev/vg-ide/kvm-public" o los permisos dependen de udev ¿? A bueno, en este caso bastaria con poner en el local.start "script_vm && exit | su usuario".

Muchas gracias y salu2.

----------

## gringo

creo que no voy a aportar nada nuevo pero :

 *Quote:*   

> echo "system_powerdown" | unixterm /var/run/kvm/public.sock 

 

esto creo que es lo primero que probaría si lo tuviera montado como tu, has probao a ver que pasa ?

Si no cuela, una solución cochina que se me ocurre es que le metas un sleep al local.stop para que espera los segundos que tu creas que te hacen falta.

 *Quote:*   

> baldria con hacer un "chown root:vde /dev/vg-ide/kvm-public" o los permisos dependen de udev ¿? 

 

igual cuela si lo haces en cada carga del sistema, pero como bien apuntas, udev es el que se encarga de todo este tinglao hasta donde yo sé.

saluetes

----------

## opotonil

 *Quote:*   

> 
> 
> Y bueno por ultimo. Imagino que sea mas seguro lanzar la VM como mi usuario que como root solo que con los permisos actuales del LV no me deja... baldria con hacer un "chown root:vde /dev/vg-ide/kvm-public" o los permisos dependen de udev ¿? A bueno, en este caso bastaria con poner en el local.start "script_vm && exit | su usuario". 
> 
> 

 

Finalmente he creado una regla udev y funciona sin problemas:

```

# cat /etc/udev/rules.d/99-custom.rules

ENV{DM_NAME}=="vg-kvm--linux", ACTION=="change", GROUP="kvm"

ENV{DM_NAME}=="vg-kvm--windows", ACTION=="change", GROUP="kvm"

```

Por supuesto el usuario que lance la VM tiene que pertenecer al grupo "kvm" y en el script de encendido hay que modificar el "-drive":

```

de: -drive file=/dev/vg-ide/kvm-public,index=0,media=disk,if=virtio,boot=on

a:  -drive file=/dev/mapper/vg-kvm--linux,index=0,media=disk,if=virtio,boot=on

```

 *Quote:*   

> 
> 
> echo "system_powerdown" | unixterm /var/run/kvm/public.sock 
> 
> 

 

Funciona, asi a ojo, un 60% de las veces, no entiendo por que. Seguire mirando, que ultimamente no dispongo de mucho tiempo.

Salu2.

----------

