千家信息网

KVM虚拟平台——迁移KVM虚拟机

发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,博文大纲:一、KVM虚拟机迁移的方式二、实现KVM虚拟机静态迁移三、实现KVM虚拟机动态迁移一、KVM虚拟机迁移的方式KVM平台中的KVM虚拟机迁移分为以下两种:(1)冷迁移(静态迁移)我们存放虚拟机
千家信息网最后更新 2025年12月02日KVM虚拟平台——迁移KVM虚拟机

博文大纲:
一、KVM虚拟机迁移的方式
二、实现KVM虚拟机静态迁移
三、实现KVM虚拟机动态迁移

一、KVM虚拟机迁移的方式

KVM平台中的KVM虚拟机迁移分为以下两种:

(1)冷迁移(静态迁移)

我们存放虚拟机磁盘的目录都是挂在的一个nfs文件系统的磁盘,进行冷迁移时,只要在目标主机上挂载这个nfs文件系统,就可以看到要迁移的那个虚拟机的磁盘文件,通常以.qcow2或.raw结尾的,然后,只需将虚拟机的.xml配置文件发送到目标服务器上,然后重新定义一下迁移过来的虚拟机即可!

(2)热迁移(动态迁移)

如果源宿主机和目的宿主机共享存储系统,则只需要通过网络发送客户机的 vCPU 执行状态、内存中的内容、虚机设备的状态到目的主机上。否则,还需要将客户机的磁盘存储发到目的主机上。共享存储系统指的是源和目的虚机的镜像文件目录是在一个共享的存储上的。

基于共享存储系统,动态迁移的具体过程:
(1)迁移开始时,客户端依然在宿主机上运行,与此同时,客户机的内存页被传输到目的主机上;
(2)QEMU/KVM 会监控并记录下迁移过程中所有已被传输的内存页的任何修改,并在所有内存页都传输完成后即开始传输在前面过程中内存页的更改内容;
(3)QEMU/KVM 会估计迁移过程中的传输速度,当剩余的内存数据量能够在一个可以设定的时间周期(默认 30 毫秒)内传输完成时,QEMU/KVM 会关闭源宿主机上的客户机,再将剩余的数据量传输到目的主机上,最后传输过来的内存内容在目的宿主机上恢复客户机的运行状态;
(4)至此,KVM的动态迁移操作完成!迁移后的客户机尽可能与迁移前一致,除非目的主机上缺少一些配置,比如网桥等。注意,当客户机中内存使用率非常大而且修改频繁时,内存中数据不断被修改的速度大于KVM能够传输的内存速度时,动态迁移的过程是完成不了的,这时候只能静态迁移。

(3)注意事项

(1)迁移的服务器CPU品牌最好一致;
(2)64位只能在64位宿主机间迁移,32位可以迁移32位和64位宿主机;
(3)宿主机中的虚拟机名字不能冲突;
(4)目的宿主机和源宿主机软件配置尽可能相同;

(4)总结

静态迁移:
(1)复制镜像文件和虚拟机配置文件;
(2)重新定义虚拟机即可!

动态迁移:
(1)创建共享存储;
(2)两台KVM宿主机挂载共享存储;
(3)启动动态迁移;
(4)创建迁移后的虚拟配置文件;
(5)重新定义虚拟机;

二、实现KVM虚拟机静态迁移

(1)环境要求
  • 一台KVM服务求A:IP地址:192.168.1.7,其中一台为web01的KVM虚拟机;
  • 一台KVM服务器B:IP地址:192.168.1.8;
(2)实现步骤

KVM服务器A的操作:

由于实验环境,简单起见,这里就略过了,有兴趣可以自行创建文件或目录进行测试!

[root@localhost ~]# systemctl stop firewalld[root@localhost ~]# setenforce 0//实验环境,简单起见关闭防火墙与SElinux[root@localhost ~]# lsmod | grep kvm          //确认虚拟机支持kvm环境kvm_intel             174841  0 kvm                   578518  1 kvm_intelirqbypass              13503  1 kvm[root@localhost ~]# virsh list --all     //确认虚拟机存在,而且是关机的状态 Id    名称                         状态---------------------------------------------------- -     web01                          关闭

KVM服务器B的操作:

[root@localhost ~]# systemctl stop firewalld[root@localhost ~]# setenforce 0//实验环境,简单起见关闭防火墙与SElinux[root@localhost ~]# lsmod | grep kvm          //确认虚拟机支持kvm环境kvm_intel             174841  0 kvm                   578518  1 kvm_intelirqbypass              13503  1 kvm[root@localhost ~]# virsh list --all           //确认没有kvm虚拟机 Id    名称                         状态----------------------------------------------------[root@localhost ~]# scp 192.168.1.7:/etc/libvirt/qemu/web01.xml /etc/libvirt/qemu/web01.xml//复制KVM宿主机A的虚拟机配置文件[root@localhost ~]# scp 192.168.1.7:/kvm/disk/web01.raw /kvm/disk/web01.raw//复制KVM宿主机的虚拟机磁盘文件[root@localhost ~]#  cd /etc/libvirt/qemu/[root@localhost qemu]# virsh define web01.xml定义域 web01(从 web01.xml)//根据配置文件生成虚拟机[root@localhost qemu]# virsh start web01     //开启虚拟机进行测试域 web01 已开始[root@localhost qemu]# virsh list --all Id    名称                         状态---------------------------------------------------- 1     web01                          running//可以正常开机表示没有问题,自行进行测试即可!

静态迁移迁移完成!

静态迁移其实没什么好说的,说白了,跟克隆其实差不多!

三、实现KVM虚拟机动态迁移

(1)环境要求
  • 一台NFS服务器:IP地址:192.168.1.6;
  • 一台KVM服务器A:IP地址:192.168.1.7;
  • 一台KVM服务器B:IP地址:192.168.1.8;

注意:KVM宿主机不需要KVM虚拟机!

(2)实现步骤

NFS服务器的操作:

[root@localhost ~]# systemctl stop firewalld[root@localhost ~]# setenforce 0//实验环境,简单起见关闭防火墙与SElinux[root@localhost ~]# yum -y install nfs-utils rpcbind//安装NFS所需软件[root@localhost ~]# mkdir /kvmshare          //创建共享目录[root@localhost ~]# echo "/kvmshare  *(rw,sync,no_root_squash)" >> /etc/exports//配置共享目录的权限,共享的用户//no_root_squash:使其获取NFS服务器的root权限[root@localhost ~]# systemctl start rpcbind           //启动远程传输控制服务[root@localhost ~]# systemctl start nfs       //启动NFS共享服务

两台KVM进行验证:

[root@localhost ~]# showmount -e 192.168.1.6Export list for 192.168.1.6:/kvmshare *

KVM服务器A的操作:

[root@localhost ~]# systemctl stop firewalld[root@localhost ~]# setenforce 0//实验环境,简单起见关闭防火墙与SElinux[root@localhost ~]# lsmod | grep kvm          //确认虚拟机支持kvm环境kvm_intel             174841  0 kvm                   578518  1 kvm_intelirqbypass              13503  1 kvm[root@localhost ~]# virsh list --all           //确认没有kvm虚拟机 Id    名称                         状态----------------------------------------------------[root@localhost ~]# virt-manager          //打开图像化界面管理KVM

首选创建存储池,如图:




接下来基于存储池创建存储卷,如图:


接下来创建虚拟机,如图:







接下来根据自己实际情况创建适合的虚拟机!

虚拟机重启完成之后,将其关机,配置其为桥接网络,方法如下:

[root@localhost ~]# virsh destroy centos7.0             //实验环境,就采取强制关机了,但不建议使用域 centos7.0 被删除[root@localhost ~]# systemctl stop NetworkManager       //关闭网络管理工具[root@localhost ~]# virsh iface-bridge ens33 br0       //通过ens33生成br0使用附加设备 br0 生成桥接 ens33 失败            //提示失败没有关系已启动桥接接口 br0[root@localhost ~]# virsh edit centos7.0      //使用"edit"命令编辑虚拟机的配置文件定位到interface,修改一下内容:              修改为bridge                 修改为 bridge='br0'[root@localhost ~]# virsh start centos7.0         //启动centos7虚拟机



KVM服务器B的操作:

[root@localhost ~]# systemctl stop firewalld[root@localhost ~]# setenforce 0//实验环境,简单起见关闭防火墙与SElinux[root@localhost ~]# lsmod | grep kvm          //确认虚拟机支持kvm环境kvm_intel             174841  0 kvm                   578518  1 kvm_intelirqbypass              13503  1 kvm[root@localhost ~]# virsh list --all           //确认没有kvm虚拟机 Id    名称                         状态----------------------------------------------------[root@localhost ~]# virt-manager          //打开图像化界面管理KVM

创建存储池,跟KVM服务器A的操作一模一样,如图:





生成桥接网卡br0,便于一会进行热迁移操作,操作如下:

[root@localhost ~]# systemctl stop NetworkManager[root@localhost ~]#  virsh iface-bridge ens33 br0 使用附加设备 br0 生成桥接 ens33 失败已启动桥接接口 br0//因为本地现在并没有虚拟机,所以只需生成桥接网卡即可![root@localhost ~]# hostname kvmB[root@localhost ~]# su -上一次登录:三 12月  4 20:05:59 CST 2019从 192.168.1.253pts/1 上[root@kvmB ~]#                        //修改主机名,否则一会可能会出现错误

KVM服务器A进行以下操作:


如果出现以下错误,如图:

那是因为没有安装使用SSH协议连接所需的询问密码的软件包!

接下来的操作需要在两台KVM都进行操作:

[root@localhost ~]# yum -y install openssh-askpass[root@kvmB ~]#  yum -y install openssh-askpass //安装询问密码的依赖包,注意两台KVM服务器都需安装

安装完成之后,在KVM服务器A上再次进行连接:


打开KVM虚拟机,使其一直访问百度,如图:

接下来进行热迁移操作,如图:



查看KVM虚拟机的访问是否存在终端现象,如图:

根据显示结果,发现访问并没有中断,至此,动态迁移成功!

-------- 本文至此结束,感谢阅读 --------

服务 服务器 宿主 文件 环境 宿主机 存储 内存 传输 配置 动态 状态 目的 客户 如图 主机 客户机 静态 实验 生成 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 新疆泰克软件开发有限公司首页 宁波半刻网络技术有限公司 浦东新区智能软件开发质量保障 品高软件开发公司 业绩 服务器机柜使用说明书 长沙电子软件开发学校 查询数据库没有注释的表 国内服务器排名销量排名 光明区网络技术转移技术指导 三大中文数据库都可以二次检索吗 我的世界mod服务器显示旧版 安全产品平台软件开发 大学生软件开发项目 包头市计算机软件开发 华硕rs100服务器安装 新洲软件开发与定制 江苏品质软件开发价钱 山东必爱网络技术有限公司 网站服务器租外地还是本地好 服务器网络连接失败怎么解决 近代报纸数据库下载 广州荔支网络技术有限公司位置 软件开发一个组几个人 自己电脑当做服务器 宁波市鄞州区互联网科技 棱镜计划及网络安全的看法 杰理软件开发 网络安全管理工作建言献策 服务器 vim 安仁学计算机软件开发
0