🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 什么叫动态迁移? 动态迁移(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虚拟机动态迁移成功。