Hi,
I am using libvirt for qemu/kvm. I have following questions in terms of
save and restore (Version 0.6.2):
1) As I checked the libvirt code, restore command is asynchronous. There
is a macro called VIR_EXEC_NONBLOCK but there is no macro called
VIR_EXEC_BLOCK. Is it possible to execute the restore in blocking mode
so that I can measure the whole restore time?
2) I tried to measure the time spent to save the VM. I am executing save
command and getting a timing. However when I execute the following
operations in order I got an error right after script issues the
restore operation (No delay between them):
"save->restore->save"
... the error is:
20:19:02.478: error : internal error Unable to open monitor path /dev/pts/3
libvir: QEMU error : internal error Unable to open monitor path /dev/pts/3
20:19:02.478: error : internal error unable to start guest: char device
redirected to /dev/pts/3
inet_listen: bind(ipv4,127.0.0.1,5912): Address already in use
inet_listen: FAILED
libvir: QEMU error : internal error unable to start guest: char device
redirected to /dev/pts/3
inet_listen: bind(ipv4,127.0.0.1,5912): Address already in use
inet_listen: FAILED
20:19:02.482: error : operation failed: failed to start VM
libvir: QEMU error : operation failed: failed to start VM
error: Failed to restore domain from /path/to/the/save/file
error: operation failed: failed to start VM
(You can find the detailed error report in the attachement when
LIBVIRT_DEBUG flag is 1)
I think that some of the cleanup is non-blocking which are cleanup of
pty device and vncserver. However, I am not sure if destroying the qemu
process is asynchronous??
P.S.: If I put one second delay between first save and restore, there is
no error. Save and restore work fine.
Thanks,
Erkan Unal
20:26:07.506: debug : virInitialize:287 : register drivers
20:26:07.506: debug : virRegisterDriver:660 : registering Test as driver 0
20:26:07.506: debug : virRegisterNetworkDriver:560 : registering Test as
network driver 0
20:26:07.506: debug : virRegisterStorageDriver:591 : registering Test as
storage driver 0
20:26:07.506: debug : virRegisterDeviceMonitor:622 : registering Test as device
driver 0
20:26:07.506: debug : virRegisterDriver:660 : registering Xen as driver 1
20:26:07.506: debug : virRegisterDriver:660 : registering OPENVZ as driver 2
20:26:07.506: debug : virRegisterDriver:660 : registering remote as driver 3
20:26:07.506: debug : virRegisterNetworkDriver:560 : registering remote as
network driver 1
20:26:07.506: debug : virRegisterStorageDriver:591 : registering remote as
storage driver 1
20:26:07.506: debug : virRegisterDeviceMonitor:622 : registering remote as
device driver 1
20:26:07.506: debug : virConnectOpenAuth:1089 : name=qemu:///session,
auth=0x7fa21cbae660, flags=0
20:26:07.506: debug : do_open:909 : name "qemu:///session" to URI components:
scheme qemu
opaque (null)
authority (null)
server (null)
user (null)
port 0
path /session
20:26:07.506: debug : do_open:919 : trying driver 0 (Test) ...
20:26:07.506: debug : do_open:925 : driver 0 Test returned
DECLINED
20:26:07.506: debug : do_open:919 : trying driver 1 (Xen) ...
20:26:07.506: debug : do_open:925 : driver 1 Xen returned DECLINED
20:26:07.506: debug : do_open:919 : trying driver 2 (OPENVZ) ...
20:26:07.506: debug : do_open:925 : driver 2 OPENVZ returned
DECLINED
20:26:07.506: debug : do_open:919 : trying driver 3 (remote) ...
20:26:07.506: debug : remoteOpen:974 : Auto-remote UNIX socket
20:26:07.506: debug : remoteOpen:992 : Auto-spawn user daemon
instance
20:26:07.506: debug : doRemoteOpen:511 : proceeding with name =
qemu:///session
20:26:07.507: debug : call:6473 : Doing call 66 (nil)
20:26:07.507: debug : call:6543 : We have the buck 66
0x7fa21bdb5010 0x7fa21bdb5010
20:26:07.507: debug : processCallRecvLen:6131 : Got length, now
need 36 total (32 more)
20:26:07.507: debug : processCalls:6399 : Giving up the buck 66
0x7fa21bdb5010 (nil)
20:26:07.507: debug : call:6574 : All done with our call 66 (nil)
0x7fa21bdb5010
20:26:07.507: debug : call:6473 : Doing call 1 (nil)
20:26:07.507: debug : call:6543 : We have the buck 1 0xf86d80
0xf86d80
20:26:07.509: debug : processCallRecvLen:6131 : Got length, now
need 28 total (24 more)
20:26:07.509: debug : processCalls:6399 : Giving up the buck 1
0xf86d80 (nil)
20:26:07.509: debug : call:6574 : All done with our call 1 (nil)
0xf86d80
20:26:07.509: debug : doRemoteOpen:822 : Adding Handler for
remote events
20:26:07.509: debug : doRemoteOpen:829 : virEventAddHandle
failed: No addHandleImpl defined. continuing without events.
20:26:07.509: debug : do_open:925 : driver 3 remote returned
SUCCESS
20:26:07.509: debug : do_open:945 : network driver 0 Test
returned DECLINED
20:26:07.509: debug : do_open:945 : network driver 1 remote
returned SUCCESS
20:26:07.509: debug : do_open:967 : storage driver 0 Test
returned DECLINED
20:26:07.509: debug : do_open:967 : storage driver 1 remote
returned SUCCESS
20:26:07.510: debug : do_open:988 : node driver 0 Test returned
DECLINED
20:26:07.510: debug : do_open:988 : node driver 1 remote returned
SUCCESS
20:26:07.510: debug : virDomainRestore:2012 : conn=0xf82430,
from=/path/to/save/file
20:26:07.510: debug : call:6473 : Doing call 54 (nil)
20:26:07.510: debug : call:6543 : We have the buck 54 0xf86d80
0xf86d80
20:26:07.625: error : internal error Unable to open monitor path
/dev/pts/3
libvir: QEMU error : internal error Unable to open monitor path
/dev/pts/3
20:26:07.625: error : internal error unable to start guest: char
device redirected to /dev/pts/3
inet_listen: bind(ipv4,127.0.0.1,5912): Address already in use
inet_listen: FAILED
libvir: QEMU error : internal error unable to start guest: char
device redirected to /dev/pts/3
inet_listen: bind(ipv4,127.0.0.1,5912): Address already in use
inet_listen: FAILED
20:26:07.629: error : operation failed: failed to start VM
libvir: QEMU error : operation failed: failed to start VM
20:26:07.629: debug : processCallRecvLen:6131 : Got length, now
need 160 total (156 more)
20:26:07.629: debug : processCalls:6399 : Giving up the buck 54
0xf86d80 (nil)
20:26:07.629: debug : call:6574 : All done with our call 54 (nil)
0xf86d80
error: Failed to restore domain from /path/to/save/file
error: operation failed: failed to start VM
20:26:07.629: debug : virConnectClose:1107 : conn=0xf82430
20:26:07.629: debug : call:6473 : Doing call 2 (nil)
20:26:07.629: debug : call:6543 : We have the buck 2 0xf86d80
0xf86d80
20:26:07.629: debug : processCallRecvLen:6131 : Got length, now
need 28 total (24 more)
20:26:07.629: debug : processCalls:6399 : Giving up the buck 2
0xf86d80 (nil)
20:26:07.629: debug : call:6574 : All done with our call 2 (nil)
0xf86d80
20:26:07.629: debug : virUnrefConnect:210 : unref connection
0xf82430 1
20:26:07.629: debug : virReleaseConnect:171 : release connection
0xf82430
--
Libvir-list mailing list
Libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list