howto control VM from outside (shutdown...)
Ciao,
the question was posted here:
http://www.linux-kvm.com/content/daemonize-vs-monitor-commands
"The original post asked about gracefully shutting down KVM guest using scripts"
When I shutdown the host machine, I want to hibernate/shutdown/screendump/savevm/senkeys/system_powerdown(/migrate?) also all the VM running (without using libvirt)
I could ssh to each VM and halt it, but does exist a better/cleaner solution?
How can I communicate to kvm console?
thank you
Signature · 2 lines
/* Paolo Pedaletti, * [email protected] www.pedaletti.it */
Quoted 8 lines · Paolo Pedaletti
Ciao,
the question was posted here:
http://www.linux-kvm.com/content/daemonize-vs-monitor-commands"The original post asked about gracefully shutting down KVM guest using scripts"
Quoted 8 lines
When I shutdown the host machine, I want to hibernate/shutdown/screendump/savevm/senkeys/system_powerdown(/migrate?) also all the VM running (without using libvirt)
I could ssh to each VM and halt it, but does exist a better/cleaner solution?
How can I communicate to kvm console?
Take a look at the qemu -monitor option. You can use it to re-direct the monitor console to a large number of character devices, including sockets. The settings are the same as for the -serial option. I've used it to access the monitor console from a telnet client.
Signature · 1 line
David.
Ciao David,
thank you for the answer
Quoted 4 lines
Take a look at the qemu -monitor option. You can use it to re-direct the monitor console to a large number of character devices, including sockets. The settings are the same as for the -serial option. I've used it to access the monitor console from a telnet client.
ok, I have found this:
http://www.linux-kvm.com/content/multiplexing-your-monitor-and-serial-port
http://www.linux-kvm.com/content/two-ways-access-your-virtual-machine-monitor-across-network
and it works, BUT ... why this command doesn't works:
echo -e "info name \n" | nc 127.0.0.1 4444 echo -e "info name \n" | nc 127.0.0.1 4445 neither: echo "info name" | nc 127.0.0.1 4444 echo "info name" | nc 127.0.0.1 4445
(output:
��������QEMU 0.9.1 monitor - type 'help' for more information )
with this command line option:
-monitor telnet:127.0.0.1:4444,server,nowait \ -serial mon:telnet:127.0.0.1:4445,server,nowait
?
Signature · 1 line
Paolo Pedaletti
Quoted 4 lines · David Mair
Take a look at the qemu -monitor option. You can use it to re-direct the monitor console to a large number of character devices, including sockets. The settings are the same as for the -serial option. I've used it to access the monitor console from a telnet client.
I use the the telnet option:
-monitor telnet::[port],server,nowait
For interactive control I use telnet:
$ telnet localhost [port]
and I can connect to it to run any commands I want. Just be aware that you should exit with Ctrl-C or by making sure you are at the telnet prompt when you issue quit. If you issue quit to the VM, the entire VM will shutdown very, very quickly and ungracefully.
To send commands through a script, I use netcat:
echo "system_powerdown" | netcat -T -c localhost [port]
I also have a PHP script that opens a socket connection to the telnet port, sends the command, and parses the output for errors. I'll be happy to share it. Let me know if you want it.
ciao Alberto,
Quoted 1 line
-monitor telnet::[port],server,nowait
ok
Quoted 2 lines
For interactive control I use telnet:
$ telnet localhost [port]
ok, it works, thank you
Quoted 2 lines
To send commands through a script, I use netcat:
echo "system_powerdown" | netcat -T -c localhost [port]
no, it doesn't work :-(
$ while : ; do echo "info name" | netcat -T lowdelay -C \ 127.0.0.1 10101 ; sleep 1 ; done
��������QEMU 0.9.1 monitor - type 'help' for more information (qemu) info name��������QEMU 0.9.1 monitor - type 'help' for more information
(qemu) info name��������QEMU 0.9.1 monitor - type 'help' for more information
(qemu) info name��������QEMU 0.9.1 monitor - type 'help' for more information
(qemu) info name��������QEMU 0.9.1 monitor - type 'help' for more information
(qemu) info name��������QEMU 0.9.1 monitor - type 'help' for more information
(qemu) info name��������QEMU 0.9.1 monitor - type 'help' for more information
(qemu) info name��������QEMU 0.9.1 monitor - type 'help' for more information
command line: (kvm-82, ubuntu 8.10 2.6.27-9-server x86_64)
/usr/local/bin/qemu-system-x86_64 -name marco \ -vnc :10 -monitor telnet:127.0.0.1:10101,server,nowait \ -cpu qemu64 -m 512 -smp 1 -vga std \ -drive file=/dev/mapper/vm-vm_marco,if=virtio,cache=off,boot=on\ -k it -usb -usbdevice tablet -localtime -daemonize \ -net nic,vlan=1,model=e1000,macaddr=52:10:11:01:01:01 \ -net vde,vlan=1,sock=/var/run/vde2/kvm1_vde.ctl \ -net nic,vlan=2,model=virtio,macaddr=52:10:11:02:01:01 \ -net vde,vlan=2,sock=/var/run/vde2/kvm2_vde.ctl \ -pidfile /home/vm/marco/marco.pid
do you know/understand why it doesn't works for me?
Quoted 3 lines
I also have a PHP script that opens a socket connection to the telnet port, sends the command, and parses the output for errors. I'll be happy to share it. Let me know if you want it.
yes, thank you.
Signature · 2 lines
/* Paolo Pedaletti, * [email protected] www.pedaletti.it */