内容简介:虚拟机迁移主要有三种方式:P2V、V2V和V2P。P2V指迁移物理服务器上的操作系统及其上的应用软件和数据到VMM(Virtual Machine Monitor)管理的虚拟服务器中。V2V迁移是在虚拟机之间移动操作系统和数据。V2P 指把一个操作系统、应用程序和数据从一个虚拟机中迁移到物理机的主硬盘上,是 P2V 的逆操作。V2V迁移又分为离线迁移和在线迁移。离线迁移也叫做常规迁移、静态迁移,在迁移之前需要将虚拟机关闭。在线迁移又称为实时迁移,是指保持虚拟机正常运行的同时进行迁移。本文要研究的,就是虚拟
虚拟机迁移主要有三种方式:P2V、V2V和V2P。P2V指迁移物理服务器上的操作系统及其上的应用软件和数据到VMM(Virtual Machine Monitor)管理的虚拟服务器中。V2V迁移是在虚拟机之间移动操作系统和数据。V2P 指把一个操作系统、应用程序和数据从一个虚拟机中迁移到物理机的主硬盘上,是 P2V 的逆操作。
V2V迁移又分为离线迁移和在线迁移。离线迁移也叫做常规迁移、静态迁移,在迁移之前需要将虚拟机关闭。在线迁移又称为实时迁移,是指保持虚拟机正常运行的同时进行迁移。本文要研究的,就是虚拟机的在线迁移。更多详细内容,请参考 虚拟机迁移技术漫谈,第 1 部分 。
迁移相关命令
本文研究的是OpenStack集群中的虚拟机迁移,那么先研究一下OpenStack的虚拟机迁移命令。主要参考 Live-migrate instances 、 Block Live Migration in OpenStack environment 。
1、查看实例ID
openstack server list
PS: openstack server
可以换成 nova
。
2、查看实例详情
openstack server show 180617ec-1348-4144-a496-8751d12e84bf
PS:实例ID可以换成demo1。
3、查看可以迁移的节点
openstack compute service list
4、查看其它节点资源使用情况
openstack host list
openstack host show compute2
5、迁移
nova live-migration 180617ec-1348-4144-a496-8751d12e84bf compute2
啊嘞,没有反应是闹哪样?查看实例详情,依然位于compute节点。
6、调试迁移
nova live-migration 180617ec-1348-4144-a496-8751d12e84bf compute2 --debug
信息很多,找不到重点。在 openstack热迁移和冷迁移 一文中发现,在线迁移又可以分为两种:live migration和block migration。live migration需要实例保存在NFS共享存储中,这种迁移主要是实例的内存状态的迁移,速度应该会很快。block migration除了实例内存状态要迁移外,还得迁移磁盘文件,速度会慢些,但是它不要求实例存储在共享文件系统中。
而我们的这个集群,没有共享存储,所以应该用block migration?
7、再次迁移
nova live-migration --block-migrate 180617ec-1348-4144-a496-8751d12e84bf compute2
修改后的命令,在 shell 中同样没有更多提示,但是查看horizon,发现了惊喜,正在迁移。等到迁移完成,查看实例详情,却发现,实例所在主机依然没有发生变化!
是因为nova没有配置好吗?很有可能,那么修改一下nova的配置试试。
nova配置
因为是使用kolla部署的OpenStack,所以修改配置重启服务的方法,和传统方法有所不同。参考 kolla(Ocata)部署nova组件关键配置和volume映射 和 Openstack 之 调整nova相关参数 。可以知道,主机中的/etc/kolla/nova-compute/nova.conf,对应容器中的/etc/nova/nova.conf。修改后重启容器,nova-compute服务配置就会发生改变。
1、在两个计算节点,修改nova.conf
vim /etc/kolla/nova-compute/nova.conf
,添加:
live_migration_flag=VIR_MIGRATE_UNDEFINE_SOURCE,VIR_MIGRATE_PEER2PEER,VIR_MIGRATE_LIVE
2、重启nova-compute
docker stop nova_compute docker start nova_compute
3、进入容器
docker exec -it nova_compute /bin/bash
4、查看配置是否生效
vi /etc/nova/nova.conf
再次迁移
1、在控制节点执行迁移命令
nova live-migration --block-migrate 180617ec-1348-4144-a496-8751d12e84bf compute2
满怀期望,但是依然失败。
2、在计算节点查看日志
tail -n 20 /var/lib/docker/volumes/kolla_logs/_data/nova/nova-compute.log
日志报错部分如下:
2018-11-13 19:12:04.614 6 ERROR nova.virt.libvirt.driver [req-e6654355-fcec-4b93-a662-c758a03766fa b2edc935f89d4d2684ec4039c02a21cc ab7e3eb8c00d4299afd8572e1ec437bf - default default] [instance: 180617ec-1348-4144-a496-8751d12e84bf] Live Migration failure: operation failed: Failed to connect to remote libvirt URI qemu+tcp://compute2/system: Unable to resolve address 'compute2' service '16509': Name or service not known: libvirtError: operation failed: Failed to connect to remote libvirt URI qemu+tcp://compute2/system: Unable to resolve address 'compute2' service '16509': Name or service not known
由日志可以看出,问题出现在libvirt上,那么修改一下libvirt的配置。
libvirt配置
参考 OpenStack虚拟机冷迁移与热迁移 、 虚拟机在 OpenStack 里没有共享存储条件下的在线迁移 、 虚拟化之KVM virsh常用命令篇 ,对libvirt的配置进行修改。
1、查看libvirtd.conf
vim /etc/kolla/nova-libvirt/libvirtd.conf
修改配置如下:
listen_tcp = 1 listen_tls = 0 auth_tcp = "none" ca_file = "" log_level = 3 log_outputs = "3:file:/var/log/kolla/libvirt/libvirtd.log" listen_addr = "0.0.0.0"
2、重启libvirt服务
docker stop nova_libvirt docker start nova_libvirt
3、查看libvirt服务
netstat -anpt | grep libvirt
看到libvirtd监听在0.0.0.0:16509端口即为正常。
PS:可以在其他节点使用virsh命令测试连通性
virsh -c qemu+tcp://compute2/system
第三次迁移
1、在控制节点执行迁移命令
nova live-migration --block-migrate 180617ec-1348-4144-a496-8751d12e84bf compute2
2、查看实例详情
openstack server show demo1
迁移成功了,nice。
其他命令
1、查看迁移任务
nova server-migration-list 180617ec-1348-4144-a496-8751d12e84bf
该命令查看到迁移任务的ID,然后根据这个ID就可以看到更详细的迁移过程。
2、查看迁移过程
nova server-migration-show 180617ec-1348-4144-a496-8751d12e84bf 2
3、查看警告或者出错日志
grep WARNING.*180617ec-1348-4144-a496-8751d12e84bf /var/lib/docker/volumes/kolla_logs/_data/nova/nova-compute.log
4、取消迁移
nova live-migration-abort 180617ec-1348-4144-a496-8751d12e84bf 2
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 虚拟机在线迁移实验结果绘图
- OpenStack中共享存储的虚拟机在线迁移
- 使用云和虚拟化实现数据迁移的最佳实践
- vSPhere使用vMotion实现虚拟机热迁移详解
- 银行核心海量数据无损迁移:TDSQL数据库多源异构迁移方案
- 再无需从头训练迁移学习模型!亚马逊开源迁移学习数据库 Xfer
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。