openstack云主机如何手动迁移
更新:HHH   时间:2023-1-7


小编给大家分享一下openstack云主机如何手动迁移,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

1、手动将vm数据镜像文件从一个主机迁移到另一个主机(仅仅是拷贝就可以了)

一般在/var/lib/docker/volumes/nova_compute/_data/instances/这个目录下,uuid对应相应的文件目录

将云主机所对应的目录全部拷贝到目标主机虚机所在目录

scp -r 767adf2f-b1ee-4121-a90d-baf025dd9e40 10.200.100.17:/var/lib/docker/volumes/nova_compute/_data/instances   (UUID)

进入目标主机   更改目录属主属组

docker exec -it nova_libvirt bash

cd /var/lib/nova/instances

chown -R nova:nova 767adf2f-b1ee-4121-a90d-baf025dd9e40

2、更改数据库

登陆控制节点数据库更改三张表的内容

instances

ml2_port_bindings

ml2_port_binding_levels

记住以前的配置,虚机在那个主机上(以便出错回滚)

更新vm的主机信息

use nova //使用nova数据库

select *from instances where uuid='767adf2f-b1ee-4121-a90d-baf025dd9e40'; //读取uuid为后边那个的云主机的信息,找个地拷贝存储一下

update instances set launched_on='10-200-100-17',host='10-200-100-17',node='10-200-100-17' where uuid='767adf2f-b1ee-4121-a90d-baf025dd9e40';//更新该云主机所在的主机为目标机器(10.200.100.17)

device_id 和云主机uuid是同一个

use neutron //使用neutron 数据库

找到云主机所使用port_id

select *from ports where device_id='767adf2f-b1ee-4121-a90d-baf025dd9e40'\G//port_id是输出的结果中对应的值那个

找到云主机port_id绑定的主机

select *from ml2_port_bindings where port_id='266fc080-cb1c-4ff3-87a6-7bd0b59c47c6'\G //port_id是上个查询的结果// 结果同样保存一下

更新绑定的主机host

update ml2_port_bindings set host='10-200-100-17' where port_id='266fc080-cb1c-4ff3-87a6-7bd0b59c47c6'; //更新主机 目标(10.200.100.17)

更新ml2_port_binding_levels

select *from ml2_port_binding_levels where port_id='266fc080-cb1c-4ff3-87a6-7bd0b59c47c6'\G';//同样保存一样

update ml2_port_binding_levels set host='10-200-100-17' where port_id='266fc080-cb1c-4ff3-87a6-7bd0b59c47c6';

nova reset-state --active 767adf2f-b1ee-4121-a90d-baf025dd9e40

最后硬重起vm,就可以成功启动该vm

假若vm启动失败

vm的instances表vm_state将会被值为error,如果这时想恢复,则需要将该状态设置为stopped,或者其他状态

上述操作回滚即可

看完了这篇文章,相信你对“openstack云主机如何手动迁移”有了一定的了解,如果想了解更多相关知识,欢迎关注天达云行业资讯频道,感谢各位的阅读!

返回云计算教程...