虚拟化,简单来说就是把一台服务器/PC电脑,虚拟成多台独立的虚拟机,每台虚拟机之间相互隔离,每个虚拟机都有自己独立的操作系统,磁盘,网络资源。虚拟化是一个很庞大的系统,我的介绍主要是帮助你入门,让你了解基本技术原理,具备搭建操作虚拟化的能力。
上一小节我们介绍了冷迁移和故障迁移,本小节将介绍热迁移。
热迁移是指在虚拟机保持运行状态的同时将其从一个宿主服务器迁移到另一个宿主服务器。热迁移要求两个宿主服务器之间有足够的网络带宽来传输虚拟机的内存状态,并且虚拟机的磁盘必须位于共享存储上或者使用其他机制来保证数据的一致性。热迁移的过程大致如下:
下面我们将基于共享存储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的目标主机没有中断,也没感知虚拟机发生了迁移。