一、热迁移描述:
相比KVM虚拟机冷迁移中需要拷贝虚拟机虚拟磁盘文件,kvm虚拟机热迁移无需拷贝虚拟磁盘文件,但是需要迁移到的宿主机之间需要有相同的目录结构虚拟机磁盘文件,也就是共享存储,本文这部分内容通过nfs来实现,当然也可以采用Glusterfs集群文件系统来实现.
热迁移流程:
在kvm01上挂起虚拟机vm01,发送vm的虚拟机配置文件和运行时内存中的数据到kvm02, 接受完毕,kvm02恢复vm01,热迁移完成。
架构图如下:
环境要求:
主机名 | ip | 内存 | 网络 | 软件需求 | 虚拟化 |
kvm01 | 10.0.0.11 | 2G | 创建br0桥接网卡 | kvm和nfs | 开启虚拟化 |
kvm02 | 10.0.0.12 | 2G | 创建br0桥接网卡 | kvm和nfs | 开启虚拟化 |
nfs01 | 10.0.0.31 | 1G | 无 | nfs | 无 |
注意:需要互相做好host解析
二、操作步骤:
2.1:在kvm01和kvm02上安装kvm和nfs,配置桥接网卡
yum install libvirt* virt-* qemu-kvm* nfs-utils openssh-askpass -y systemctl start libvirtd.service virsh iface-bridge eth0 br0
2.2:在nfs01上安装配置nfs
yum install nfs-utils -y mkdir /data vim /etc/exports /data 10.0.0.0/24(rw,async,no_root_squash,no_all_squash) systemctl restart rpcbind systemctl restart nfs
2.3:kvm01和kvm02挂载共享目录/opt
mount -t nfs 10.0.0.31:/data /opt
2.4:安装一台基于桥接模式的虚拟机
virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web04 --memory ,maxmemory= --vcpus --disk /data/web04.qcow2 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole
热迁移的命令:
virsh migrate --live --verbose oldboy qemu+ssh://10.0.0.12/system --unsafe
将宿主机10.0.0.11上的kvm虚拟机oldboy迁移到10.0.0.12
2.5:在kvm01上安装图形界面、vnc服务端和virt-manager
yum groups install "GNOME Desktop" -y yum install tigervnc-server.x86_64 -y yum install virt-manager -y
2.6:启动vnc服务端
vncserver :1 启动5901端口的vnc服务端
vncserver -kill :1 关闭5901端口的vnc服务端
2.7:使用vnc连接宿主机,使用virt-manager进行迁移
这时候会提醒输入密码,就是之前第6步的时候设置的vnc连接密码
迁移成功!
在迁移的过程中,使用ping虚拟机的ip,发现只丢了一个包
至此热迁移完成!