小编给大家分享一下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云主机如何手动迁移”有了一定的了解,如果想了解更多相关知识,欢迎关注天达云行业资讯频道,感谢各位的阅读!