# 什么叫动态迁移?
动态迁移(Live Migration):也叫在线迁移(Online Migration)。就是在保证虚拟机上服务正常运行的同时,将一个虚拟机系统从一个物理主机移动到另一个物理主机的过程。该过程不会对最终用户造成明 显的影响,从而使得管理员能够在不影响用户正常使用的情况下,对物理服务器进行离线维修或者升级。与静态迁移不同的是,为了保证迁移过程中虚拟机服务的可用,迁移过程仅有非常短暂的停机时间。迁移的前面阶段,服务在源主机的虚拟机上运行,当迁移进行到一定阶段,目的主机已经具备了运行虚拟机系统的必须资源,经过一个非常短暂的切换,源主机将控制权转移到目的主机,虚拟机系统在目的主机上继续运行。对于虚拟机服务本身而言,由于切换的时间非常短暂,用户感 觉不到服务的中断,因而迁移过程对用户是透明的。动态迁移适用于对虚拟机服务可用性要求很高的场合。
动态迁移需要将原有的虚拟机镜像放在采用 SAN(storage area network)或 NAS(network-attached storage)之类的集中式共享外存设备,这样迁移的时候,不是迁移整个硬盘镜象,而是迁移内存的信息.所以迁移起来,速度比较快,停顿时间少。
动态迁移实际上是把虚拟机的配置封装在一个文件中,然后通过高速网络,把虚拟机配置和内存运行状态从一台物理机迅速传送到另外一台物理机上,期间虚拟机一直保持运行状态。现有技术条件下,大多虚拟机软件如 VMware、Hyper-V、Xen 进行动态迁移都需要共享存储的支持。典型的共享存储包括 NFS 和 SMB/CIFS 协议的网络文件系统,或者通过 iSCSI 连接到 SAN 网络。选用哪一种网络文件系统,需要根据具体情况而定,本文使用NFS 共享存储!
虚拟化平台架构
![1.83](http://oxysobnip.bkt.clouddn.com/1.83.png)
# 虚拟化环境介绍
(1)kvm虚拟化服务器节点:kvm-1
操作系统:CentOS7.2
kvm虚拟化:自带版本
Ip地址:192.168.0.40
nfs挂载目录:/mnt
-----------------------------------------
(2)kvm虚拟化服务器节点kvm-2
操作系统:CentOS7.2
kvm虚拟化:自带版本
ip地址:192.168.0.15
nfs挂载目录:/mnt
测试虚拟机:share
虚拟机磁盘文件:/mnt/kvm/share.qcow2
----------------------------------------
(3)nfs服务器
操作系统:CentOS7.2
ip地址:192.168.0.12
nfs服务目录:/home/image
# 三台虚拟机都关闭SElinux和防火墙
systemctl stop firewalld
systemctl disable firewalld
vim /etc/selinux/config
将enforcing改为disabled
# 共享存储的配置
(1))NFS共享存储虚拟机安装NFS服务
yum –y install nfs-utils
(2)创建并加载挂载目录
mkdir /home/image
vim /etc/exports
![1.84](http://oxysobnip.bkt.clouddn.com/1.84.png)
(3)查看是否共享目录,并重启nfs服务
<pre>
exportfs -av
systemctl enable rpcbind.service
systemctl enable nfs-server.service
systemctl start rpcbind.service
systemctl start nfs-server.service
showmount –e
</pre>
![1.85](http://oxysobnip.bkt.clouddn.com/1.85.png)
(4)先确保两台宿主机的虚拟机全部呈关闭状态,目的是将之前的磁盘镜像目录移动到/mnt 外的其他位置,好将NFS 目录挂载到 /mnt 目录下:
![1.86](http://oxysobnip.bkt.clouddn.com/1.86.png)
![1.87](http://oxysobnip.bkt.clouddn.com/1.87.png)
(5)将kvm-2和kvm-2的虚拟机磁盘镜像目录移动到 /mnt 目录以外的地方:
![1.88](http://oxysobnip.bkt.clouddn.com/1.88.png)
![1.89](http://oxysobnip.bkt.clouddn.com/1.89.png)
# kvm虚拟主机配置准备
(1)节点1挂载nfs目录
mount -t nfs 192.168.0.12:/home/image /mnt/
![1.90](http://oxysobnip.bkt.clouddn.com/1.90.png)
(2)节点2挂载nfs目录
![1.91](http://oxysobnip.bkt.clouddn.com/1.91.png)
(3)将kvm-2的虚拟机磁盘镜像目录移回到NFS,因为kvm-1的虚拟机之前是静态迁移过来的,kvm-2上也有一份,所以就不移回了(如果kvm-1上有不同于kvm-2上的虚拟机,则也要移回)
![1.92](http://oxysobnip.bkt.clouddn.com/1.92.png)
# kvm虚拟机迁移
(1)kvm-2虚拟机状态,share虚拟机开机状态
![1.93](http://oxysobnip.bkt.clouddn.com/1.93.png)
(2) kvm-1虚拟机状态,无虚拟机运行
![1.94](http://oxysobnip.bkt.clouddn.com/1.94.png)
(3)kvm-2上执行迁移命令
virsh migrate --live --verbose share qemu+ssh://192.168.0.40/system tcp://192.168.0.40 --unsafe
![1.95](http://oxysobnip.bkt.clouddn.com/1.95.png)
(4) 为了在验证过程中,虚拟主机不中断,我们开启ping 虚拟主机,没有出现超时状态,迁移成功。
![1.96](http://oxysobnip.bkt.clouddn.com/1.96.png)
(5)迁移完成,验证kvm-2上的share呈关闭状态
![1.97](http://oxysobnip.bkt.clouddn.com/1.97.png)
kvm-1上,可以看到虚拟机share已经启动了。
![1.98](http://oxysobnip.bkt.clouddn.com/1.98.png)
(6) 虽然share虚拟机已经在kvm-1上启动了,但是虚拟主机上还没有share虚拟机的配置文件。所以需要创建配置文件并定义虚拟机。
![1.99](http://oxysobnip.bkt.clouddn.com/1.99.png)
Kvm-1上,通过迁移过来的虚拟机内存状态创建虚拟机配置文件,并通过xml配置文件定义虚拟机。
![1.100](http://oxysobnip.bkt.clouddn.com/1.100.png)
在kvm-1上进入虚拟机没有问题。
![1.101](http://oxysobnip.bkt.clouddn.com/1.101.png)
到此,kvm虚拟机动态迁移成功。
- 献给我的朋友们
- 一、个人对学习的看法
- 二、运维技能图谱
- 三、运维常用技能
- 3.1 Vim(最好用的编辑器)
- 3.2 Nginx & Tengine(Web服务)
- 1. Nginx介绍和部署
- 2. Nginx配置解析
- 3. Nginx常用模块
- 4. Nginx 的session 一致性问题
- 3.3 Tomcat(Web中间件)
- 3.4 Keepalived(负载均衡高可用)
- 3.5 Memcache(分布式缓存)
- 3.6 Zookeeper(分布式协调系统)
- 3.7 KVM(开源虚拟化)
- 1. 虚拟化介绍
- 2. KVM基础
- 3. 设置VNC和时间同步
- 4. kvm虚拟机快照备份
- 5. kvm虚拟机在线扩展磁盘
- 6. kvm虚拟机静态迁移
- 7. kvm虚拟机动态迁移
- 8. kvm虚拟机存储池配置
- 9. cpu添加虚拟化功能
- 3.8 GitLab(版本控制)
- 3.8.1 GitLab安装与汉化
- 3.9 Jenkins(运维自动化)
- 3.10 WAF(Web防火墙)
- 3.10.1初探WAF
- 四、常用数据库
- 4.1 MySQL(关系型数据库)
- 1. MySQL源码安装
- 4.2 Mongodb(适用与大数据分析的数据库)
- 4.3 Redis(非关系数据库)
- 五、自动化运维工具
- 5.1 Cobbler(系统自动化部署)
- 5.2 Ansible(自动化部署)
- 5.3 Puppet(自动化部署)
- 5.4 SaltStack(自动化运维)
- 六、存储
- 6.1 GFS(文件型存储)
- 6.2 Ceph(后端存储)
- 七、运维监控工具
- 7.1 对监控的理解
- 7.2 Zabbix(运维监控)
- 7.2.1 Zabbix简介
- 7.2.2 Zabbix服务部署
- 1. Zabbix服务端部署
- 2. Zabbix客服端部署
- 3. 配置前端展示
- 4. zabbix告警配置
- 7.2.3 Zabbix监控服务
- 1. 监控网络设备
- 2. 自定义Nginx监控
- 7.3 云镜(安全监控)
- 7.4 ELK(日志收集展示)
- 八、运维云平台
- 8.1 OpenStack(开源云操作系统)
- 8.1.1 OpenStack简介
- 8.1.2 实验架构设计
- 8.1.3 集群环境准备
- 8.1.4 controller节点部署
- 1. 安装Mariadb Galera Cluster集群
- 2. 安装RabbitMQ Cluster集群
- 3. 安装Pacemaker
- 4. 安装HAProxy
- 5. 安装配置Keystone
- 6. 安装配置glance
- 1. 制作镜像模板
- 7. 安装配置nova
- 8. 安装配置neutron
- 1. 配置虚拟机网络
- 9. 安装Dashboard
- 10. 安装配置cinder
- 8.1.5 compute节点部署
- 1. 安装相关软件包
- 2. 安装Neutron
- 3. 配置cinder
- 4. 创建第一个虚拟机
- 8.1.6 OpenStack报错处理
- 1. cinder僵尸卷删除
- 8.1.7 快速孵化虚拟机方案
- 8.1.8 Kolla容器化部署OpenStack
- 1. 单点部署
- 2. 多节点部署
- 8.2 Tstack(腾讯云平台)
- 8.3 K8s(微服务容器化)
- 九、运维编程技能
- 9.1 Shell(运维必会语言)
- 9.2 Python(万能的胶水语言)
- 十、Devops运维
- 10.1 理念
- 10.2 Devops实战