使用libvirt API和perl失败迁移Xen域

我正在尝试在perl中使用libvirt API进行工作离线迁移。 我有两台服务器(都是):
– debian挤
xen-hypervisor-4.0-i386
– libvirt(第一台服务器 – 0.8.7和第二台服务器 – 0.8.3)
在我设置的两台服务器上的xend-config.sxp中:
– (xend-relocation-server是)
– (xend-relocation-port 8002)
– (xend-relocation-address'')
我也从第三台服务器运行这个脚本:

use Sys::Virt; my $vmm1 = Sys::Virt->new( uri=> "xen://hostA/" ); my $vmm2 = Sys::Virt->new( uri=> "xen://hostB/" ); my $dom = $vmm1->get_domain_by_name("test1"); my $ddom = $dom->migrate($vmm2,0,undef,"xenmigr://hostB/",0); 

当我运行脚本时,在执行xm list后在hostA上看到:

 migrating-test1 17 128 1 ---s-- 9.9 

在hostB上,我可以在'xm list'输出中看到迁移域test1,但是从输出开始,它会消失,因为perl脚本会失败,并显示以下错误:

 libvirt error code: 42, message: Domain not found: xenUnifiedDomainLookupByName 

我试图寻找一些解决scheme,但我没有成功。 我也尝试从hostA运行'xm migrate'将域迁移到hostB,但是这个操作也启动了,但是没有完成(完成之后,我知道域将从hostA迁移到hostB并保持在hostB上运行)。

编辑:我是否也需要共享存储离线迁移?

发现这个问题后几天,我发现它是如何工作的。

为了使离线和实时迁移共享存储是必要的。 因此,脱机或实时迁移是否正在运行并不重要,因为需要两种types的共享存储(例如NFS,…)。

libvirt错误代码42是在不使用共享存储的情况下进行脱机迁移导致的。 脚本尝试将域从hostA迁移到hostB,但脚本无法在hostB上find该域(由于未使用共享存储而导致脱机迁移失败),因为hostA上没有迁移域hostB。