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

现象:执行迁移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/uuid 
4165c128-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服务,再执行迁移即可成功!


优秀的个人博客,低调大师

微信关注我们

原文链接:https://blog.51cto.com/tianhunyongheng/1758195

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
Mario,低调大师唯一一个Java游戏作品

Mario,低调大师唯一一个Java游戏作品

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。

Eclipse(集成开发环境)

Eclipse(集成开发环境)

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。

Sublime Text 一个代码编辑器

Sublime Text 一个代码编辑器

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。