On Fri, Sep 23, 2011 at 04:41:40PM +0800, huachao yao wrote: > Hi, when I try to use such API: > > virDomainPtr <http://www.libvirt.org/html/libvirt-libvirt.html#virDomainPtr> virDomainMigrate (virDomainPtr > <http://www.libvirt.org/html/libvirt-libvirt.html#virDomainPtr> > domain, > virConnectPtr > <http://www.libvirt.org/html/libvirt-libvirt.html#virConnectPtr> > dconn, > unsigned long flags, > const char * dname, > const char * uri, > unsigned long bandwidth) > to achieve the domain to the remote host. I set the "const char * uri" > as "qemu+ssh://root@116.56.142.199/system". > But the Error "libvir: QEMU error : invalid argument in only tcp URIs > are supported for KVM/QEMU migrations" happened. > > I want to know when i want the migrate ,how can i set the URI ? offer > a example is better. :-) The answer depends on the way you invoke migration. There are essentially two ways libvirt supports - "Normal" - the libvirt client co-ordinates the process, talking to both the source and target libvirtd daemons. - "Peer2Peer" - the libvirt client talks to the source libvirtd daemon. The source libvirtd daemon co-ordinates the process directly with the target libvirtd. In the Normal case, the URI you need to give is a QEMU migration URI such as 'tcp://hostname-of-target-host'. In the Peer2Peer case (if you set VIR_MIGRATE_PEER2PEER in the flags parameter), the URI you need is a normal libvirt URI such as the 'qemu+ssh://root@hostname-of-target-host/system'. >From the error message you are attempting a normal migration, so need to give the tcp style URI i show above. Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|