虚拟机热迁移一直处于迁移中的状态-v4-20210308_124243

虚拟机热迁移一直处于迁移中的状态

企业云平台产品中心共享知识库

Exported on 03/08/2021

Table of Contents

问题现象:

对虚拟机进行热迁移操作,Dashboard和云服务自助平台上一直处于迁移中的状态

问题原因:

虚拟机存在频繁的数据读写操作,导致虚拟机迁移的速度追不上数据读写的速度,每次迁移完内存数据又产生大量新数据,导致虚拟机一直处于迁移中的状态

解决办法:

一、虚拟机在迁移的时候可以在源宿主机上执行下面命令查看对应虚拟机的迁移进度

watch -n 1 virsh domjobinfo <id>

如果发现迁移速度一直追不上写入的速度(如果Data remaining字段的值一直降到0后又出现新的迁移数据,但数据量不大,只要几十M的话)可以考虑在源计算节点上执行virsh suspend id暂停下虚拟机,这样就可以顺利迁移过去了。但不要一上来就直接suspend,要观察下确认是真的迁移不过去再暂停。

二、通过上述的观察如果底层虚拟机正常迁移过去了,那就观察Dashboard是否可以正常的更新虚拟机的状态为运行中,并且宿主机信息也更新了。一般都是可以正常更新的,如果出现请求超时,无法自动更新便按照下面的步骤手动更新数据库。

1、Dashboard上查看仍然处于迁移中的虚拟机的id,以下用<instance_uuid>表示 2、在任意一台控制节点执行如下指令将虚拟机重置为运行中的状态

source /root/keystonerc_admin

nova reset-state <instance_uuid> --active

3、登录基础云任意一台控制节点,访问mysql数据,修改nova.instances库的host和node字段值为新宿主机主机名,<new_compute_node>替换为新宿主机主机名

select * from nova.instances where uuid='<instance_uuid>'\G

update nova.instances set node='<new_compute_node>' where uuid='<instance_uuid>'; update nova.instances set host='<new_compute_node>' where uuid='<instance_uuid>';

4、通过虚拟机ip(<instance_ip>)查看虚拟机ip的port id,以下用<port_id>表示

neutron port-list |grep <instance_ip>

5、登录基础云任意一台控制节点,访问mysql数据库,修改neutron.ml2_port_bindings库的host字段值为新宿主机主机名,<new_compute_node>替换为新宿主机主机名

select * from neutron.ml2_port_bindings where port_id='<port_id>'\G

update neutron.ml2_port_bindings set host='<new_compute_node>' where port_id='<port_id>';

验证步骤:

1、重新登录Dashboard或刷新页面查看虚拟机的状态和宿主机信息是否更新

2、登录源计算节点执行如下执行确认源宿主机上已无虚拟机的进程,防止虚拟机出现脑裂的情况

ps -ef |grep <instance_uuid>

posted @ 2023-04-25 11:04  XU-NING  阅读(137)  评论(0)    收藏  举报