冷迁移
获取虚拟机详细信息
1
2
3
4
5
6
7
8
9
|
$ nova list --all
#...
#这里会打印虚拟机列表
#...
$ nova show <虚拟机ID>
#...
#这里会打印虚拟机的详细信息
#...
|
停止对应的虚拟机
查看虚拟机节点
1
2
3
4
5
6
7
8
|
$ nova show <虚拟机ID> | grep 'OS-EXT-SRV-ATTR:hos'
#| OS-EXT-SRV-ATTR:host | <现在节点名>
# 找一个可用的节点
$ nova-manage service list
# 看看对应节点的资源占用
$ nova-manage service describe_resource <节点ID>
# 找到可用的节点
|
拷贝文件
登录上面查到的节点上,将虚拟机的数据拷贝到新节点(上面找到的)上。
1
2
3
4
5
6
7
8
|
$ cd /var/lib/nova/instances
$ ls
#008700ed-8c4f-4928-9954-817d2b6725e5 47665d14-5c5e-4af3-a1de-ef456870835d 8e121afb-58c8-46d4-89db-14d3b1c01d11 d37d3323-2f07-4ca0-a492-62256bc7cca6
#09124146-5fda-42d0-9279-23310d7af6d8 48af9798-cee7-45e9-9ecb-0936b7f35698 905a099a-6c70-4ee9-91fc-62d70ba7a5a7 d4de74a6-d46f-4975-8dbd-b06754d94232
# 就是虚拟机实例目录,我就打两个意思一下
#...
$ rsync -e "ssh -p22" -avpgolr <虚拟机ID> <新节点IP>:/var/lib/nova/instances/
# 一些rsync的信息
|
修改权限
登录到新节点机器上,我们看看数据过来没有.
1
|
$ ls -lh /var/lib/nova/instances/<虚拟机ID>/
|
如果没问题,我们把权限修改一下
1
2
|
$ chown nova:nova -R /var/lib/nova/instances/<虚拟机ID>/
$ ls -lh /var/lib/nova/instances/<虚拟机ID>/
|
修改数据库记录
登录openstack的数据库,你可以服务器登录,如果你开放出去了也可以用工具连。
1
2
|
use nova;
update instances set host='<新节点>', node='<新节点>' where uuid='<虚拟机ID>';
|
重启openstack-compute
启动前重启一下该计算节点的compute服务,然后主节点拉起虚拟机就可以了
1
2
|
# 虚拟机节点执行这个
$ systemctl restart openstack-nova-compute
|
1
2
|
# 主节点执行这个
$ nova start <虚拟机ID>
|
热迁移
执行1.3的操作
执行迁移命令
1
|
$ nova live-migration <虚拟机ID> <新节点>
|
验证
1
2
|
$ nova show <虚拟机ID> | grep 'OS-EXT-SRV-ATTR:hos'
#| OS-EXT-SRV-ATTR:host | <节点名>
|