云计算&虚拟化-kvm-虚拟机迁移(热迁移)

41 阅读4分钟

作者介绍:简历上没有一个精通的运维工程师。希望大家多多关注作者,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

虚拟化,简单来说就是把一台服务器/PC电脑,虚拟成多台独立的虚拟机,每台虚拟机之间相互隔离,每个虚拟机都有自己独立的操作系统,磁盘,网络资源。虚拟化是一个很庞大的系统,我的介绍主要是帮助你入门,让你了解基本技术原理,具备搭建操作虚拟化的能力。由于涉及到内容较多,这里的目录就只是以简单分类介绍和说明,不再针对单个小节进行目录列出,主要涉及的分类包括以下几个方面:

1.虚拟化介绍

2.kvm基本使用

3.kvm进阶使用(本小节属于)

4.kvm技术原理

5.vmware介绍&使用

6.小结

上一小节我们介绍了冷迁移和故障迁移,本小节将介绍热迁移。

热迁移

热迁移是指在虚拟机保持运行状态的同时将其从一个宿主服务器迁移到另一个宿主服务器。热迁移要求两个宿主服务器之间有足够的网络带宽来传输虚拟机的内存状态,并且虚拟机的磁盘必须位于共享存储上或者使用其他机制来保证数据的一致性。热迁移的过程大致如下:

  1. 初始化传输:将虚拟机的内存状态从源服务器传送到目标服务器。

  2. 持续同步:在迁移过程中,源服务器继续向目标服务器发送内存页的更新。

  3. 最终切换:当迁移足够多的内存页后,虚拟机在目标服务器上被激活,同时源服务器上的虚拟机被停止。

下面我们将基于共享存储nfs,搭建请看Linux基础软件-nfs,然后2台宿主机分别挂载nfs到本地,然后创建一个虚拟机使用nfs,这样2个节点都可以读取这个镜像文件。

服务IP

角色

192.168.31.194

nfs共享存储

192.168.31.202

原宿主机

192.168.31.203

新宿主机

192.168.31.210

虚拟机

准备工作

202和203都必须配置桥接网络,方便210虚拟机在迁移以后可以正常使用,由于kvm虚拟机迁移命令并不会迁移本地数据,所以镜像文件必须是使用共享存储。

并且在虚拟机系统里面运行一个程序,确保该程序不受迁移影响。

原宿主机

目标主机

被迁移虚拟机

远程到虚拟机里面执行了一个shell脚本。

迁移

#为帮忙查看,所以把命令换成多行
virsh \
migrate \
--live \
myvm1 \
--unsafe \
qemu+ssh://kvm31.203.example.com/system

migrate 迁移参数

--live 在线迁移

myvm1 被迁移的主机名字

--unsafe 使用不安全模式,这个是由于涉及到虚拟机使用磁盘的几种模式

qemu+ssh://xx 使用ssh传输到目标主机

这里最好配置免密,避免手工输入密码,另外就是要原主机和目标主机都使用域名,并配置hosts,否则会提示你FQDN错误。

迁移后的目标主机

主机处于运行状态,但是在默认的目录里面是没有该主机xml文件,它处于/run/libvirt/qemu目录,这个目录我们之前讲tmpfs虚拟文件系统说过它是基于内存的,如果这个时候我把这个主机关机,则这个主机在目标主机就会消失。

[root@kvm31 qemu]# ll /run/libvirt/qemu
total 16
-rw------- 1 root root    4 Oct 31 12:37 myvm1.pid
-rw------- 1 root root 9126 Oct 31 12:37 myvm1.xml

虚拟机内部状态

可以看到我们迁移虚拟机的时间,ssh的目标主机没有中断,也没感知虚拟机发生了迁移。

运维小路

一个不会开发的运维!一个要学开发的运维!一个学不会开发的运维!欢迎大家骚扰的运维!

关注微信公众号《运维小路》获取更多内容。