首页 > 网络 > 其他 >

OpenStack虚机迁移live-migration失败(error: internal error Attempt to migrate guest to the same host)

2016-04-01

现象:执行迁移live-migration操作后,显示成功迁移,但是实际没有执行迁移动作解决过程:在dashboard执行虚机热迁移操作,提示操作成功,但是实际虚机没有迁移;之前遇到过内存不足导致迁移失败,但是经过查看发

现象:执行迁移live-migration操作后,显示成功迁移,但是实际没有执行迁移动作

解决过程:

在dashboard执行虚机热迁移操作,提示操作成功,但是实际虚机没有迁移;

之前遇到过内存不足导致迁移失败,但是经过查看发现源和目的节点资源充足;

然后在nova的log看到如下内容:DestinationDiskExists_Remote: The supplied disk path (/var/lib/nova/instances/e40708e3-7f19-4f9c-8d19-3e600037c067) already exists, it is expected not to exist.,初步怀疑对端已经建立了该目录,但是由于未知原因没有迁移成功,再次迁移触发这个报错,但是实际发现目的节点并没有该目录,然后继续翻查log。

然后找到log如下:2016-03-24 15:44:21.003 3164 ERROR nova.virt.libvirt.driver [-] [instance: e40708e3-7f19-4f9c-8d19-3e600037c067] Live Migration failure: internal error: Attempt to migrate guest to the same host 00020003-0004-0005-0006-000700080009,初步怀疑虚机之所以没有迁移是因为它认为目的主机就是自己,所以我看了下hosts,主机解析正常。

这让我想起很早遇到的一个VMware迁移的问题,就是很多厂商都是OEM服务器,导致UUID一样。

使用virsh sysinfo | grep uuid或者dmidecode -s system-uuid都可以查询服务器的UUID,结果查询到计算节点的UUID都是一样的,所以导致迁移的时候源主机认为目的主机就是自己。

KVM并不是直接查找这个硬件的UUID而是先到/etc/libvirt/libvirtd.conf内找host_uuid字段,但是此字段是被默认注释掉的,所以找到对方硬件的UUID。

解决方法:

先随机生成一个UUID,如下:

[root@node-1 ~]# cat /proc/sys/kernel/random/uuid4165c128-e7ba-45cd-a26f-325d221c2ace

然后使用上面的uuid替换/etc/libvirt/libvirtd.conf中的host_uuid字段

#host_uuid = "00000000-0000-0000-0000-000000000000" 改为

host_uuid = "4165c128-e7ba-45cd-a26f-325d221c2ace"

所有计算节点都修改完成后,重启libvirt服务,再执行迁移即可成功!

相关文章
最新文章
热点推荐