一、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.10.50,其中一台为web01的KVM虚拟机;
一台KVM服务器B:IP地址:192.168.10.51
(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_intel
irqbypass              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_intel
irqbypass              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 --allId    名称                         状态
----------------------------------------------------1     web01                          running
//可以正常开机表示没有问题,自行进行测试即可!

静态迁移迁移完成!

二、kvm虚拟机热迁移配置实例
1、环境准备:
我这里的环境如下:

三台Linux服务器,其中两台是KVM服务器,IP是192.168.10.50和192.168.10.51。
一台是NFS服务器,IP是192.168.10.12,用来做共享存储(要求三台服务器可互相ping通);
两台KVM虚拟机必须都有KVM环境。

我这的KVM环境是现成的,这里就不展示了,
2、配置NFS共享存储
nfs服务器192.168.10.12配置如下:

[root@nfs ~]# yum -y install nfs-utils rpcbind                 #安装所需软件包
[root@localhost ~]# systemctl enable nfs                               #设置NFS开机自启
[root@localhost ~]# systemctl enable rpcbind                       #设置rpcbind开机自启
[root@nfs ~]# mkdir -p /nfsshare                  #创建需要共享的目录
[root@nfs ~]# vim /etc/exports       #编辑NFS的配置文件,默认为空
/nfsshare       *(rw,sync,no_root_squash)
#第一列代表共享的目录
#第二列的星号代表允许所有网络访问;
#rw代表读写权限;sync代表同步写入磁盘;
#no_root_squash表示当前客户机以root身份访问时赋予本地root权限
#(默认是root_squash,将作为nfsnobody用户对待),若不加no_root_squash,
#可能会导致被降权,而无法进行读写(wr)。
[root@nfs ~]# systemctl restart rpcbind      #启动该服务
[root@nfs ~]# systemctl restart nfs      #启动该服务
[root@nfs ~]# netstat -anpt | grep rpc      #确认服务已启动
[root@nfs ~]# showmount -e         #查看本机共享的目录
Export list for nfs:
/nfsshare *
[root@nfs ~]# firewall-cmd --add-service=rpc-bind --permanent
[root@nfs ~]# firewall-cmd --add-service=nfs --permanent
[root@nfs ~]# firewall-cmd --add-service=mountd --permanent
[root@nfs ~]# systemctl restart firewalld     #重启防火墙,使配置生效

NFS服务器至此配置完成!!!
两台KVM服务器配置如下(两台kvm主机都需要进行下面的配置):
1.安装rpcbind软件包,并启动rpcbind服务,为了使用showmount查询工具,所以将nfs-utils也一起装上:

[root@localhost ~]# yum -y install nfs-utils rpcbind
[root@localhost ~]# systemctl enable rpcbind
[root@localhost ~]# systemctl start rpcbind
[root@kvm ~]# showmount -e 192.168.10.12   #查询nfs服务器共享的目录
Export list for 192.168.10.12:
/nfsshare *
[root@kvm ~]# mkdir -p /kvm/disk/
[root@kvm ~]# mount -t nfs 192.168.10.12:/nfsshare /kvm/disk/   #进行挂载
[root@kvm ~]# df -hT /kvm/disk/
文件系统               类型  容量  已用  可用 已用% 挂载点
192.168.10.12:/nfsshare nfs4   50G   33M   50G    1% /kvm/disk
#在其中一台服务器上写入一个测试文件,看看在其他服务器上是否可以看到
[root@kvm1 ~]# touch /kvm/disk/test        #在其中一个kvm服务器上创建测试文件
[root@kvm2 ~]# ls /kvm/disk         #保证在第二台kvm服务器的目录下也可以看到
test

至此,就保证了两台kvm服务器使用的目录都是同一块磁盘存储的(注意:两台kvm虚拟机的挂载nfs文件系统的目录路径必须一致,我这里两台kvm虚拟机都是挂载到了/kvm/disk/目录下,否则会在后面的操作中发生错误)。

3.测试完要取消挂载,不让下面操作进行不了

[root@kvm2 ~]# umount -t nfs 192.168.10.12:/nfsshare /kvm/disk/

4、在两个kvm服务器上分别创建存储卷:

[root@kvm1 ~]# virt-manager         #打开虚拟机控制台




下面对话框中,目标路径是KVM本机的“/kvm/disk”,主机名写的是nfs服务器的IP地址,源路径是nfs服务器共享的目录。


**以上操作同样需要在第二台KVM上进行操作,最好定义的存储池名字等都一致。以免发生不必要的麻烦。**

3、在kvm1上新建一个虚拟机以便进行迁移测试



自行上传一个centos的iso系统文件,这里需要指定要安装的iso文件:






至此,正常的自行安装虚拟机即可。

**安装完成后进行接下来的操作**
4、将新建的虚拟机网络配置为Bridge模式,可以ping通外网
以下操作主要是为了模拟虚拟机为公网用户提供服务中进行热迁移。
1)kvm1操作如下:

[root@kvm ~]#  systemctl stop NetworkManager    #停止此服务
[root@kvm ~]# virsh iface-bridge ens33 br0    #执行此命令时,若提示以下信息,不用在意,因为其已经存在了
使用附加设备 br0 生成桥接 ens33 失败
已启动桥接接口 br0
[root@kvm ~]# ls /etc/sysconfig/network-scripts/ | grep br0
ifcfg-br0        #确定有此文件就行
[root@kvm ~]# virsh destroy centos7.0     #关闭新建的虚拟机
域 centos7.0 被删除
[root@kvm ~]# virsh edit centos7.0      #编辑虚拟机的配置文件,定位到interface
<interface type='bridge'>      #将此处改为bridge<mac address='52:54:00:a9:cc:5f'/>      #删除Mac地址这行<source bridge='br0'/>          #将此处更改为这样
#保存退出即可
[root@kvm1 ~]# virsh start centos7.0
域 centos7.0 已开始

开启虚拟机后,配置虚拟机的网卡配置文件,默认网卡文件为ifcfg-eth0:

重启网络服务,并且确认IP地址:

2)kvm2操作如下:

[root@kvm ~]#  systemctl stop NetworkManager    #停止此服务
[root@kvm ~]# virsh iface-bridge ens33 br0    #执行此命令时,若提示以下信息,不用在意,因为其已经存在了
使用附加设备 br0 生成桥接 ens33 失败
已启动桥接接口 br0
[root@kvm ~]# ls /etc/sysconfig/network-scripts/ | grep br0
ifcfg-br0        #确定有此文件就行
#由于kvm2没有虚拟机,所以只需将网络更改为桥接模式即可,。
#以上配置是为了防止虚拟机迁移到这台服务器后,无法和公网进行联系。

5、开始准备对新建的centos 7进行热迁移
1)kvm1服务器上进行以下操作:

[root@kvm1 ~]# virt-manager         #打开虚拟机控制台


填写如下,填写完成后,单击“连接”:

因为没有安装使用SSH协议连接所需的询问密码的软件包!
接下来的操作需要在两台KVM都进行操作:

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

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


根据弹出的对话框提示,输入“yes”:

输入目标主机的root密码:


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

6、开始进行热迁移


迁移完成后,发现虚拟机跑到了192.168.10.51服务器上

查看KVM虚拟机的访问是否存在终端现象,上面一直在ping baidu.com,发现访问并没有中断,至此,动态迁移成功


当然也可以吧kvm2上的centos7.0在迁移回去,按照上面操作就行

KVM——迁移KVM虚拟机相关推荐

  1. 迁移 VMware 虚拟机到 KVM

    前言 随着虚拟化技术的不断发展,虚拟机的应用也越来越广泛.日常应用中可能出现资源不足,系统管理调整或者系统备份等原因,希望将某一虚拟机从原来物理主机迁移到另一个物理主机上,即 V2V(Virtual- ...

  2. kvm虚拟化学习笔记(十七)之KVM到KVM之v2v迁移

    1.源KVM虚拟主机node1 (1).查看源KVM虚拟主机上的虚拟机列表,本文计划将CentOS6.5-01虚拟机迁移到其它KVM虚拟主机中. [root@node1 ~]# virsh list ...

  3. Linux KVM迁移与存储

    Linux KVM迁移与存储 1.环境描述: 如图1所示的网络环境,存储挂接到了NFS服务器上,通过交换机共享给了两台服务器KVM1和KVM2,操作系统均为64位的RHEL6.5,均运行着KVM虚拟机 ...

  4. KVM 安装windows 虚拟机

    KVM 安装windows 虚拟机 家里有台linux电脑, 一直当文件服务器和下载机使用. 所谓下载机就是装1个xware用迅雷远程下载, 但是最近迅雷关闭了第三方机器的远程下载功能, 简单来将就是 ...

  5. kvm安装ubuntu虚拟机错误总结

    知识点:kvm的使用,vnc的使用,和错误总结 一,安装虚拟机 1,查看已经安装的虚拟机列表及状态 virsh -c qemu:///system list --all 2,定义虚拟机映像 qemu- ...

  6. 转载 2020-02-18 在KVM主机和虚拟机之间共享目录

    转载于:https://blog.51cto.com/aishangwei/2124526 在KVM主机和虚拟机之间共享目录 (1)在host OS上面创建新的目录和在这个目录里面创建一个文件. mk ...

  7. Ubuntu20.4系统下安装kvm并创建虚拟机

    Ubuntu20.4系统下安装kvm并创建虚拟机 一.安装Ubuntu20.4系统 二.在Ubuntu20.4系统下安装KVM 三.kvm虚拟机及其磁盘映像文件(CentOS 7.9)制作 一.安装U ...

  8. kvm 安装 windows 虚拟机

    作者:SRE运维博客 博客地址: https://www.cnsre.cn/ 文章地址:https://www.cnsre.cn/posts/211108848062/ 相关话题:https://ww ...

  9. 使用KVM服务创建虚拟机

    目录 1.KVM的概念 2.前期准备 3.案例实施 kvm的概念 KVM(Kernel-based Virtual Machine)是一个开源软件,基于内核的虚拟化技术,实际是嵌入系统的一个虚拟化模块 ...

最新文章

  1. .Net Core MVC初学习
  2. ifm virtual check in part 2
  3. 推荐 10 个你没见过的 VsCode 的高效开源神器,YYDS
  4. clodeblocks debug断点调试_idea debug调试————简单常用,适合初学者
  5. C++(STL):20---deque容器访问元素
  6. pycharm无缘无故打开Nosetest
  7. python中计算列表的平均值_如何计算python中元组列表的平均值?
  8. Red Hat 6.5 版本虚拟机安装
  9. (转载)Android studio 导入或依赖第三方库失败
  10. ROI坐标点提取(python)
  11. AI 时代,为什么程序员很贵?
  12. 桌面云的四大协议解析
  13. Java或Web中解决所有路径问题
  14. FISCO BCOS 控制台 部署合约 调用 查看已部署合约的地址
  15. C#弹出窗体、C#导出Excel、C#数据展示框、C#弹出框
  16. 在html种颜色的代码,html颜色代码生成器
  17. 安卓移动办公软件_安卓免费办公软件套装 速度快功能强大 WPS Office 12.6.4 解锁高级版特权...
  18. 华为的服务器固态硬盘LE系列和VE系列,02311TJY 800GB SSD FusionServer RH5885 V3华为服务器硬盘...
  19. 升级安卓6.0.1后wifi出现的已连接 但无法访问互联网的问题
  20. 疫情下跨越一万公里的友情:熊超与飒特电子哨兵的故事

热门文章

  1. 关于SQL的不等于表示
  2. LeetCode 第187场周赛 题解
  3. 硬件之路——校招面试避雷Tips
  4. ubuntu安装下载工具Deluge
  5. 南京大学计算机专业课,南京大学计算机专业厉害吗?
  6. 【自监督论文阅读笔记】Self-Supervised Learning from Images with a Joint-Embedding Predictive Architecture
  7. smtp邮件格式(附件)
  8. PhotoSweeper for Mac v4.3.0 – 重复照片查找删除工具
  9. Linphone的相关入门
  10. html像pho传递表单信息,表单剧本